Full Code of Azure/openapi-diff for AI

main 2a6eb2a08e99 cached
315 files
1.6 MB
388.0k tokens
301 symbols
1 requests
Download .txt
Showing preview only (1,742K chars total). Download the full file or copy to clipboard to get everything.
Repository: Azure/openapi-diff
Branch: main
Commit: 2a6eb2a08e99
Files: 315
Total size: 1.6 MB

Directory structure:
gitextract_lkzoy1ec/

├── .gitattributes
├── .github/
│   ├── CODEOWNERS
│   ├── copilot-instructions.md
│   ├── dependabot.yml
│   ├── matchers/
│   │   └── actionlint.json
│   └── workflows/
│       └── ci.yml
├── .gitignore
├── .markdownlint.jsonc
├── .prettierignore
├── .prettierrc
├── .vscode/
│   ├── launch.json
│   ├── settings.json
│   └── tasks.json
├── CHANGELOG.md
├── CONTRIBUTING.md
├── CredScanSuppressions.json
├── LICENSE
├── README.md
├── SECURITY.md
├── azure-pipelines.yml
├── docs/
│   ├── README.md
│   └── rules/
│       ├── 1000.md
│       ├── 1001.md
│       ├── 1002.md
│       ├── 1003.md
│       ├── 1004.md
│       ├── 1005.md
│       ├── 1006.md
│       ├── 1007.md
│       ├── 1008.md
│       ├── 1009.md
│       ├── 1010.md
│       ├── 1011.md
│       ├── 1012.md
│       ├── 1013.md
│       ├── 1014.md
│       ├── 1015.md
│       ├── 1016.md
│       ├── 1017.md
│       ├── 1019.md
│       ├── 1020.md
│       ├── 1021.md
│       ├── 1022.md
│       ├── 1023.md
│       ├── 1024.md
│       ├── 1025.md
│       ├── 1026.md
│       ├── 1027.md
│       ├── 1028.md
│       ├── 1029.md
│       ├── 1030.md
│       ├── 1031.md
│       ├── 1032.md
│       ├── 1033.md
│       ├── 1034.md
│       ├── 1035.md
│       ├── 1036.md
│       ├── 1037.md
│       ├── 1038.md
│       ├── 1039.md
│       ├── 1040.md
│       ├── 1041.md
│       ├── 1042.md
│       ├── 1043.md
│       ├── 1044.md
│       ├── 1045.md
│       ├── 1046.md
│       ├── 1047.md
│       ├── 1048.md
│       ├── 1049.md
│       └── 1050.md
├── eng/
│   ├── 1es-redirect.yml
│   ├── image.yml
│   ├── publish-1es-artifact.yml
│   └── test-steps.yml
├── eslint.config.js
├── openapi-diff/
│   ├── OpenApiDiff.sln
│   ├── src/
│   │   ├── common/
│   │   │   ├── common-package-references.proj
│   │   │   ├── common.proj
│   │   │   ├── copy-resource-to-output.proj
│   │   │   ├── enumerate-inputs.proj
│   │   │   ├── package-info.proj
│   │   │   ├── project-library.proj
│   │   │   └── project-xunittest.proj
│   │   ├── core/
│   │   │   ├── OpenApiDiff/
│   │   │   │   ├── HelpExample.cs
│   │   │   │   ├── HelpGenerator.cs
│   │   │   │   ├── OpenApiDiff.csproj
│   │   │   │   ├── Program.cs
│   │   │   │   └── Properties/
│   │   │   │       ├── Resources.Designer.cs
│   │   │   │       └── Resources.resx
│   │   │   └── OpenApiDiff.Core/
│   │   │       ├── JsonDocument.cs
│   │   │       ├── Logging/
│   │   │       │   ├── LogMessageSeverity.cs
│   │   │       │   └── ObjectPath.cs
│   │   │       ├── OpenApiDiff.Core.csproj
│   │   │       ├── Properties/
│   │   │       │   ├── Resources.Designer.cs
│   │   │       │   └── Resources.resx
│   │   │       ├── Settings.cs
│   │   │       ├── SettingsAliasAttribute.cs
│   │   │       └── SettingsInfoAttribute.cs
│   │   └── modeler/
│   │       ├── AutoRest.Swagger/
│   │       │   ├── AutoRest.Swagger.csproj
│   │       │   ├── ComparisonContext.cs
│   │       │   ├── ComparisonMessage.cs
│   │       │   ├── ComparisonMessages.cs
│   │       │   ├── JsonComparisonMessage.cs
│   │       │   ├── JsonLocation.cs
│   │       │   ├── MessageTemplate.cs
│   │       │   ├── MessageType.cs
│   │       │   ├── Model/
│   │       │   │   ├── ApiKeyLocation.cs
│   │       │   │   ├── DataType.cs
│   │       │   │   ├── ExternalDoc.cs
│   │       │   │   ├── Header.cs
│   │       │   │   ├── Info.cs
│   │       │   │   ├── OAuthFlow.cs
│   │       │   │   ├── Operation.cs
│   │       │   │   ├── ParameterLocation.cs
│   │       │   │   ├── Response.cs
│   │       │   │   ├── Schema.cs
│   │       │   │   ├── SecurityDefinition.cs
│   │       │   │   ├── SecuritySchemeType.cs
│   │       │   │   ├── ServiceDefinition.cs
│   │       │   │   ├── ServiceDefinitionMetadata.cs
│   │       │   │   ├── SpecObject.cs
│   │       │   │   ├── SwaggerBase.cs
│   │       │   │   ├── SwaggerObject.cs
│   │       │   │   ├── SwaggerParameter.cs
│   │       │   │   ├── TransferProtocolScheme.cs
│   │       │   │   └── XmsEnumExtension.cs
│   │       │   ├── PathLevelParameterConverter.cs
│   │       │   ├── Properties/
│   │       │   │   ├── Resources.Designer.cs
│   │       │   │   └── Resources.resx
│   │       │   ├── SwaggerModeler.cs
│   │       │   ├── SwaggerParser.cs
│   │       │   └── packages.config
│   │       └── AutoRest.Swagger.Tests/
│   │           ├── AutoRest.Swagger.Tests.csproj
│   │           ├── Resource/
│   │           │   └── Swagger/
│   │           │       ├── new/
│   │           │       │   ├── add_optional_property_01.json
│   │           │       │   ├── added_optional_property.json
│   │           │       │   ├── added_path.json
│   │           │       │   ├── added_property_in_response.json
│   │           │       │   ├── added_readonly_required_property.json
│   │           │       │   ├── added_required_property.json
│   │           │       │   ├── changed_operation_id.json
│   │           │       │   ├── common_parameter_check_01.json
│   │           │       │   ├── common_parameter_check_02.json
│   │           │       │   ├── common_parameter_check_03.json
│   │           │       │   ├── common_parameter_check_04.json
│   │           │       │   ├── default_changed_01.json
│   │           │       │   ├── enum_as_string.json
│   │           │       │   ├── enum_values_changed.json
│   │           │       │   ├── format_check_01.json
│   │           │       │   ├── format_check_02.json
│   │           │       │   ├── global_parameter_no_order_change.json
│   │           │       │   ├── global_parameter_order_change.json
│   │           │       │   ├── long_running_operation.json
│   │           │       │   ├── misc_checks_01.json
│   │           │       │   ├── misc_checks_02.json
│   │           │       │   ├── missing_operation_id.json
│   │           │       │   ├── operation_check_01.json
│   │           │       │   ├── operation_check_02.json
│   │           │       │   ├── operation_check_03.json
│   │           │       │   ├── operation_check_04.json
│   │           │       │   ├── operation_check_05.json
│   │           │       │   ├── optional_parameter.json
│   │           │       │   ├── param_check_01.json
│   │           │       │   ├── parameter_location_change.json
│   │           │       │   ├── parameter_order_change.json
│   │           │       │   ├── property_required_status_changed.json
│   │           │       │   ├── readonly_changes.json
│   │           │       │   ├── recursive_model.json
│   │           │       │   ├── removed_definition.json
│   │           │       │   ├── removed_operation.json
│   │           │       │   ├── removed_operation_id.json
│   │           │       │   ├── removed_parameter.json
│   │           │       │   ├── removed_path.json
│   │           │       │   ├── removed_property.json
│   │           │       │   ├── required_parameter.json
│   │           │       │   ├── response_check_01.json
│   │           │       │   ├── type_changed.json
│   │           │       │   ├── type_changed_01.json
│   │           │       │   ├── type_changed_02.json
│   │           │       │   ├── version_check_01.json
│   │           │       │   ├── version_check_02.json
│   │           │       │   ├── version_check_03.json
│   │           │       │   ├── version_check_04.json
│   │           │       │   ├── xms_client_name_changed.json
│   │           │       │   ├── xms_enum_added.json
│   │           │       │   └── xms_enum_changed.json
│   │           │       └── old/
│   │           │           ├── add_optional_property_01.json
│   │           │           ├── added_optional_property.json
│   │           │           ├── added_path.json
│   │           │           ├── added_property_in_response.json
│   │           │           ├── added_readonly_required_property.json
│   │           │           ├── added_required_property.json
│   │           │           ├── changed_operation_id.json
│   │           │           ├── common_parameter_check_01.json
│   │           │           ├── common_parameter_check_02.json
│   │           │           ├── common_parameter_check_03.json
│   │           │           ├── common_parameter_check_04.json
│   │           │           ├── default_changed_01.json
│   │           │           ├── enum_as_string.json
│   │           │           ├── enum_values_changed.json
│   │           │           ├── format_check_01.json
│   │           │           ├── format_check_02.json
│   │           │           ├── global_parameter_no_order_change.json
│   │           │           ├── global_parameter_order_change.json
│   │           │           ├── long_running_operation.json
│   │           │           ├── misc_checks_01.json
│   │           │           ├── misc_checks_02.json
│   │           │           ├── missing_operation_id.json
│   │           │           ├── operation_check_01.json
│   │           │           ├── operation_check_02.json
│   │           │           ├── operation_check_03.json
│   │           │           ├── operation_check_04.json
│   │           │           ├── operation_check_05.json
│   │           │           ├── optional_parameter.json
│   │           │           ├── param_check_01.json
│   │           │           ├── parameter_location_change.json
│   │           │           ├── parameter_order_change.json
│   │           │           ├── property_required_status_changed.json
│   │           │           ├── readonly_changes.json
│   │           │           ├── recursive_model.json
│   │           │           ├── removed_definition.json
│   │           │           ├── removed_operation.json
│   │           │           ├── removed_operation_id.json
│   │           │           ├── removed_parameter.json
│   │           │           ├── removed_path.json
│   │           │           ├── removed_property.json
│   │           │           ├── required_parameter.json
│   │           │           ├── response_check_01.json
│   │           │           ├── type_changed.json
│   │           │           ├── type_changed_01.json
│   │           │           ├── type_changed_02.json
│   │           │           ├── version_check_01.json
│   │           │           ├── version_check_02.json
│   │           │           ├── version_check_03.json
│   │           │           ├── version_check_04.json
│   │           │           ├── xms_client_name_changed.json
│   │           │           ├── xms_enum_added.json
│   │           │           └── xms_enum_changed.json
│   │           ├── SwaggerModelerCompareTests.cs
│   │           ├── app.config
│   │           └── packages.config
│   └── tools/
│       └── MSSharedLibKey.snk
├── package.json
├── src/
│   ├── cli.ts
│   ├── index.ts
│   ├── lib/
│   │   ├── commands/
│   │   │   └── oad.ts
│   │   ├── util/
│   │   │   ├── constants.ts
│   │   │   ├── logging.ts
│   │   │   ├── resolveSwagger.ts
│   │   │   └── utils.ts
│   │   ├── validate.ts
│   │   └── validators/
│   │       └── openApiDiff.ts
│   └── test/
│       ├── additionalPropertiesIsBooleanTest.ts
│       ├── commonParametersTest.ts
│       ├── compatiblePropertiesTest.ts
│       ├── expandsAllOfFullCoversTest.ts
│       ├── expandsAllOfModelsTest.ts
│       ├── fileUrl.ts
│       ├── full2ReversedTest.ts
│       ├── full2Test.ts
│       ├── fullReversedTest.ts
│       ├── fullTest.ts
│       ├── incompatiblePropertiesTest.ts
│       ├── moveIntoAllOfModelsTest.ts
│       ├── multipleLevelAllOfTest.ts
│       ├── operationLocationTest.ts
│       ├── requestBodyFormatNoLongerSupportedTest.ts
│       ├── responseBodyFormatNowSupportedTest.ts
│       ├── simpleTest.ts
│       ├── someChangesTest.ts
│       ├── specs/
│       │   ├── additional-properties/
│       │   │   ├── new.json
│       │   │   └── old.json
│       │   ├── common-parameters/
│       │   │   ├── new.json
│       │   │   └── old.json
│       │   ├── compatible-properties.json
│       │   ├── expandsAllOf/
│       │   │   ├── new/
│       │   │   │   ├── expand_allOf_model.json
│       │   │   │   ├── move_properties_into_allof_model.json
│       │   │   │   ├── multi_level_allOf.json
│       │   │   │   └── property_format_change.json
│       │   │   └── old/
│       │   │       ├── expand_allOf_model.json
│       │   │       ├── move_properties_into_allof_model.json
│       │   │       ├── multi_level_allOf.json
│       │   │       └── property_format_change.json
│       │   ├── full/
│       │   │   ├── new/
│       │   │   │   ├── openapi.json
│       │   │   │   ├── openapi2.json
│       │   │   │   └── readme.md
│       │   │   └── old/
│       │   │       ├── openapi.json
│       │   │       └── readme.md
│       │   ├── full2/
│       │   │   ├── source/
│       │   │   │   ├── Microsoft.Compute/
│       │   │   │   │   └── stable/
│       │   │   │   │       └── 2017-12-01/
│       │   │   │   │           ├── compute.json
│       │   │   │   │           └── runCommands.json
│       │   │   │   └── readme.md
│       │   │   └── target/
│       │   │       ├── Microsoft.Compute/
│       │   │       │   └── stable/
│       │   │       │       └── 2018-04-01/
│       │   │       │           ├── compute.json
│       │   │       │           ├── disk.json
│       │   │       │           └── runCommands.json
│       │   │       └── readme.md
│       │   ├── incompatible-properties/
│       │   │   ├── refstring-object.json
│       │   │   ├── refstring-refobject.json
│       │   │   ├── string-object.json
│       │   │   └── string-refobject.json
│       │   ├── operation-location.json
│       │   ├── rule-1003/
│       │   │   ├── case1.new.json
│       │   │   └── case1.old.json
│       │   ├── rule-1004/
│       │   │   ├── case1.new.json
│       │   │   └── case1.old.json
│       │   ├── simple.json
│       │   ├── some-changes/
│       │   │   ├── new.json
│       │   │   └── old.json
│       │   ├── xms-enum-name/
│       │   │   ├── new.json
│       │   │   └── old.json
│       │   └── xmspath/
│       │       ├── new.json
│       │       └── old.json
│       ├── utilTest.ts
│       ├── xmsEnumNameTest.ts
│       └── xmsPathTest.ts
└── tsconfig.json

================================================
FILE CONTENTS
================================================

================================================
FILE: .gitattributes
================================================
*.bmp binary
*.dll binary
*.gif binary
*.jpg binary
*.png binary
*.snk binary
*.exe binary
*.wmv binary
*.mp4 binary
*.ismv binary
*.isma binary

*.ascx text
*.cmd text
*.config text
*.cs text diff=csharp
*.csproj text merge=union
*.edmx text

*.htm text
*.html text

*.json text eol=lf
*.ts text eol=lf
*.js text eol=lf

*.msbuild text
*.nuspec text

*.resx text
*.ruleset text
*.StyleCop text
*.targets text
*.txt text
*.xml text

*.sln text eol=crlf merge=union


================================================
FILE: .github/CODEOWNERS
================================================
* @mikeharder @weshaggard @raych1 @scbedd @danieljurek


================================================
FILE: .github/copilot-instructions.md
================================================
# Copilot Instructions

## Project Overview

This repository contains the source code for `openapi-diff` (aka `oad`, aka `@azure/oad`), a breaking-change
detector tool for OpenAPI specifications. It is published as an npm package and is used internally by the
[azure-rest-api-specs](https://github.com/Azure/azure-rest-api-specs) and
[azure-rest-api-specs-pr](https://github.com/Azure/azure-rest-api-specs-pr) repos to validate PRs.

The core diff logic is written in C#/.NET and the CLI/validation layer is written in TypeScript.

## Tech Stack

- **TypeScript** (ES2017 target, CommonJS modules) — CLI, validation, and test code in `src/`
- **C#/.NET 6** — core diff engine in `openapi-diff/`
- **Node.js 20+**
- **Jest** with `ts-jest` for TypeScript tests
- **ESLint** (`typescript-eslint`) for linting
- **Prettier** for formatting
- **markdownlint** for Markdown style

## Setup

```sh
npm ci                # Install Node.js dependencies
npm run dn.restore    # Restore .NET dependencies (if working on C# code)
```

## Build

```sh
npm run tsc           # Build TypeScript code (outputs to dist/)
npm run dn.build      # Build C# code
```

## Lint and Format

```sh
npm run lint          # Run ESLint (zero warnings allowed)
npm run lint:fix      # Auto-fix ESLint issues
npm run prettier      # Check formatting with Prettier
npm run prettier:write # Auto-fix formatting
```

## Test

```sh
npm run ts.test       # Run TypeScript tests (Jest)
npm run dn.test       # Run C# tests (dotnet test)
npm test              # Run both C# and TypeScript tests
```

TypeScript tests live in `src/test/` and follow the naming pattern `*[tT]est.ts`.

## Code Conventions

- **No semicolons** — Prettier is configured with `"semi": false`
- **Print width** is 140 characters
- **Trailing commas** are not used (`"trailingComma": "none"`)
- **Arrow function parentheses** are avoided when possible (`"arrowParens": "avoid"`)
- **Strict TypeScript** — `tsconfig.json` has `"strict": true`
- **ESLint config** is in `eslint.config.js` (CommonJS format, not ESM)
- **Markdown line length** limit is 120 characters (tables and headings are exempt)
- Prefer `const` over `let` where possible

## Repository Structure

```
src/
  cli.ts              # CLI entry point
  index.ts            # Package entry point
  lib/
    commands/          # Command implementations
    util/              # Utility modules
    validate.ts        # Validation logic
    validators/        # Validator implementations
  test/                # TypeScript tests (Jest)
    specs/             # Test fixture OpenAPI spec files
openapi-diff/          # C#/.NET solution (core diff engine)
docs/                  # Documentation
```

## CI

CI runs on both Ubuntu and Windows via GitHub Actions (`.github/workflows/ci.yml`). It runs:
`npm run lint`, `npm run prettier`, and `npm test` (which includes both C# and TypeScript tests).

## Guidelines

- Run `npm run lint` and `npm run prettier` before submitting changes.
- Add or update tests in `src/test/` for any TypeScript code changes.
- Do not modify CI/CD pipeline files (`.github/workflows/`, `azure-pipelines.yml`) unless specifically required.
- When working only on TypeScript, use `npm run ts.test` to run just the TypeScript tests.


================================================
FILE: .github/dependabot.yml
================================================
version: 2
updates:
  - package-ecosystem: "github-actions"
    directory: "/"
    schedule:
      interval: "weekly"
  - package-ecosystem: "npm"
    directory: "/"
    schedule:
      interval: "weekly"
    cooldown:
      default-days: 7
    ignore:
      # dependencies

      # Pinned to the most popular versions
      - dependency-name: "@ts-common/fs"
      - dependency-name: "@ts-common/iterator"
      - dependency-name: "@ts-common/json"
      - dependency-name: "@ts-common/json-parser"
      - dependency-name: "@ts-common/source-map"
      - dependency-name: "@ts-common/string-map"

      # locked to ^15.4.1, since newer majors include breaking changes that may impact us
      - dependency-name: "yargs"

      # devDependencies

      # Locked to "^20.0.0" to align with our minimum node version in package.json/engines
      - dependency-name: "@types/node"
    groups:
      eslint:
        patterns:
          - "*eslint*"


================================================
FILE: .github/matchers/actionlint.json
================================================
{
  "problemMatcher": [
    {
      "owner": "actionlint",
      "pattern": [
        {
          "regexp": "^(?:\\x1b\\[\\d+m)?(.+?)(?:\\x1b\\[\\d+m)*:(?:\\x1b\\[\\d+m)*(\\d+)(?:\\x1b\\[\\d+m)*:(?:\\x1b\\[\\d+m)*(\\d+)(?:\\x1b\\[\\d+m)*: (?:\\x1b\\[\\d+m)*(.+?)(?:\\x1b\\[\\d+m)* \\[(.+?)\\]$",
          "file": 1,
          "line": 2,
          "column": 3,
          "message": 4,
          "code": 5
        }
      ]
    }
  ]
}


================================================
FILE: .github/workflows/ci.yml
================================================
name: ci

on:
  push:
    branches: [main]
  pull_request:

jobs:
  ci:
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os: [ubuntu-latest, windows-latest]

    steps:
      - uses: actions/checkout@v6

      - uses: actions/setup-node@v6
        with:
          node-version: "20"

      - uses: actions/setup-dotnet@v5
        with:
          dotnet-version: "6"

      - name: npm ci
        run: npm ci

      - name: test
        run: npm test

      - name: lint
        run: npm run lint

      - name: prettier
        run: npm run prettier

      - if: runner.os == 'Linux'
        name: Pack
        run: npm pack

      - if: runner.os == 'Linux'
        name: Upload tarball
        uses: actions/upload-artifact@v7
        with:
          path: "azure-oad-*.tgz"
          archive: false

      # Content copied from https://raw.githubusercontent.com/rhysd/actionlint/2ab3a12c7848f6c15faca9a92612ef4261d0e370/.github/actionlint-matcher.json
      - if: runner.os == 'Linux'
        name: Add ActionLint Problem Matcher
        run: echo "::add-matcher::.github/matchers/actionlint.json"

      - if: runner.os == 'Linux'
        name: Lint workflows
        uses: docker://rhysd/actionlint:1.7.11
        with:
          args: -color -verbose


================================================
FILE: .gitignore
================================================
## Ignore generated code
PackageTest/NugetPackageTest/Generated
src/generator/AutoRest.NodeJS.Tests/AcceptanceTests/*.js

## Ignore user-specific files, temporary files, build results, etc.
compare-results/*

# User-specific files
*.suo
*.user
*.sln.docstates
.vs
launchSettings.json

# Build results
binaries/
[Dd]ebug*/
[Rr]elease/

[Tt]est[Rr]esult*
[Bb]uild[Ll]og.*
[Bb]uild.out

*_i.c
*_p.c
*.ilk
*.meta
*.obj
*.pch
*.pdb
*.pgc
*.pgd
*.rsp
*.sbr
*.tlb
*.tli
*.tlh
*.tmp
*.vspscc
*.vssscc
.builds

*.pidb

*.log*
*.scc
# Visual C++ cache files
ipch/
*.aps
*.ncb
*.opensdf
*.sdf

# Visual Studio profiler
*.psess
*.vsp

# Code analysis
*.CodeAnalysisLog.xml

# Guidance Automation Toolkit
*.gpState

# ReSharper is a Visual Studio add-in
_ReSharper*/
*.[Rr]e[Ss]harper

# NCrunch
*.ncrunch*
.*crunch*.local.xml

# Installshield output folder
[Ee]xpress

# DocProject is a documentation generator add-in
DocProject/buildhelp/
DocProject/Help/*.HxT
DocProject/Help/*.HxC
DocProject/Help/*.hhc
DocProject/Help/*.hhk
DocProject/Help/*.hhp
DocProject/Help/Html2
DocProject/Help/html

# Click-Once directory
publish

# Publish Web Output
*.[Pp]ublish.xml

# Others
[Bb]in
[Oo]bj
sql
*.Cache
ClientBin
[Ss]tyle[Cc]op.*
~$*
*.dbmdl

# Build tasks
[Tt]ools/*.dll
*.class

# Mobile Tools for Java (J2ME)
.mtj.tmp/

# Package Files #
*.jar
*.war
*.ear

# Azure Tooling #
node_modules
.ntvs_analysis.dat

# Eclipse #
*.pydevproject
.project
.metadata
bin/**
tmp/**
tmp/**/*
*.bak
*.swp
*~.nib
local.properties
.classpath
.settings/
.loadpath

# Xamarin #
*.userprefs

# Other Tooling #
.classpath
.project
build
reports
.gradle
.idea
*.iml
Tools/7-Zip
.gitrevision

# Sensitive files
*.keys
*.pfx
*.cer
*.pem
*.jks

# Backup & report files from converting a project to a new version of VS.
_UpgradeReport_Files/
Backup*/
UpgradeLog*.XML

# NuGet
packages

# Mac OS #
.DS_Store
.DS_Store?

# Windows #
Thumbs.db

# Mono
*dll.mdb
*exe.mdb

#old nuget restore folder
.nuget/
src/generator/AutoRest.Ruby*Tests/Gemfile.lock
src/generator/AutoRest.Ruby*/*/RspecTests/Generated/*

#netcore
/NetCore
*.lock.json

#dnx installation
dnx-clr-win-x86*/
dnx-coreclr-win-x86*/
/dnx

# Gemfile.lock
Gemfile.lock

# go ignore
src/generator/AutoRest.Go.Tests/pkg/*
src/generator/AutoRest.Go.Tests/bin/*
src/generator/AutoRest.Go.Tests/src/github.com/*
src/generator/AutoRest.Go.Tests/src/tests/generated/*
src/generator/AutoRest.Go.Tests/src/tests/vendor/*
src/generator/AutoRest.Go.Tests/src/tests/glide.lock

src/autorest/**/*.js
src/autorest-core/**/*.js
src/vscode-autorest/**/*.js

*.js.map

# backup files
*~

#client runtime
src/client/**/*

src/extension/old/**/*
*.d.ts

src/bootstrapper
src/extension/out
src/next-gen

package/nuget/tools
package/chocolatey/*.nupkg
dist/lib/dlls/**/*
*.tgz

*.d.ts.map
*.js
!eslint.config.js
coverage/
dlls/


================================================
FILE: .markdownlint.jsonc
================================================
{
    // This repository is markdownlint-enabled.
    // Website: https://github.com/DavidAnson/markdownlint
    // VS Code extension: https://marketplace.visualstudio.com/items?itemName=DavidAnson.vscode-markdownlint
    //
    // The implicit, default set of rules is defined in:
    // https://github.com/DavidAnson/markdownlint/blob/v0.30.0/doc/Rules.md

    // MD013 - Line length
    // https://github.com/DavidAnson/markdownlint/blob/main/doc/md013.md
    //
    // "line_length" : 120:
    // Allow lines of length 120 instead of the default 80. Keep in sync with guide lines .vscode/settings.json.
    //
    // "tables": false
    // Do not include tables. Breaking a line in a table to meet the line length would add a line break in the table
    // itself. We do not want that.
    //
    // "headings": false
    // Do not include headings. One cannot break lines in headings, and we sometimes need long ones, e.g. for FAQs.
    "MD013": { "line_length" : 120, "tables": false, "headings": false },

    // MD025 - Multiple top-level headings in the same document
    // https://github.com/DavidAnson/markdownlint/blob/main/doc/md025.md
    //
    // We like multiple top-headings.
    "MD025": false,

    // MD034 - Inline HTML
    // https://github.com/DavidAnson/markdownlint/blob/main/doc/md033.md
    //
    // Forbid using inline HTML elements except <br/>. We use <br/> within tables.
    "MD033": { "allowed_elements": ["br"]}
}


================================================
FILE: .prettierignore
================================================
*.json
*.md
*.jsonc
.prettierrc
azure-pipelines.yml
coverage/


================================================
FILE: .prettierrc
================================================
{
  "semi": false,
  "printWidth": 140,
  "trailingComma": "none",
  "arrowParens": "avoid"
}

================================================
FILE: .vscode/launch.json
================================================
{
    "version": "0.2.0",
    "configurations": [
        {
            // Use IntelliSense to find out which attributes exist for C# debugging
            // Use hover for the description of the existing attributes
            // For further information visit https://github.com/dotnet/vscode-csharp/blob/main/debugger-launchjson.md
            "name": ".NET Core Launch (console)",
            "type": "coreclr",
            "request": "launch",
            "preLaunchTask": "build",
            // If you have changed target frameworks, make sure to update the program path.
            "program": "${workspaceFolder}/openapi-diff/src/core/OpenApiDiff/bin/Debug/netcoreapp6.0/OpenApiDiff.dll",
            "args": [],
            "cwd": "${workspaceFolder}/openapi-diff/src/core/OpenApiDiff",
            // For more information about the 'console' field, see https://aka.ms/VSCode-CS-LaunchJson-Console
            "console": "internalConsole",
            "stopAtEntry": false
        },
        {
            "name": ".NET Core Attach",
            "type": "coreclr",
            "request": "attach"
        }
    ]
}

================================================
FILE: .vscode/settings.json
================================================
{
    "cSpell.words": [
    ],
    "azure-pipelines.1ESPipelineTemplatesSchemaFile": true
}


================================================
FILE: .vscode/tasks.json
================================================
{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "build",
            "command": "dotnet",
            "type": "process",
            "args": [
                "build",
                "${workspaceFolder}/openapi-diff/OpenApiDiff.sln",
                "/property:GenerateFullPaths=true",
                "/consoleloggerparameters:NoSummary;ForceNoAlign"
            ],
            "problemMatcher": "$msCompile"
        },
        {
            "label": "publish",
            "command": "dotnet",
            "type": "process",
            "args": [
                "publish",
                "${workspaceFolder}/openapi-diff/OpenApiDiff.sln",
                "/property:GenerateFullPaths=true",
                "/consoleloggerparameters:NoSummary;ForceNoAlign"
            ],
            "problemMatcher": "$msCompile"
        },
        {
            "label": "watch",
            "command": "dotnet",
            "type": "process",
            "args": [
                "watch",
                "run",
                "--project",
                "${workspaceFolder}/openapi-diff/OpenApiDiff.sln"
            ],
            "problemMatcher": "$msCompile"
        }
    ]
}


================================================
FILE: CHANGELOG.md
================================================
# Changelog

## 0.12.4 2026-03-13

- Only throw error on AutoRest stderr when exit code is non-zero; log warnings otherwise

# 0.12.3 2025-10-13

- Fix crash in logging when property named "$ref"

## 0.12.2 2025-09-22

- bump dependency `js-yaml` from `^3.13.0` to `^4.1.0`
- bump dependency `yargs` from `^13.2.2` to `^15.4.1`
- pin pre-release dependencies
  - `@ts-common/fs` to `0.2.0`
  - `@ts-common/iterator` to `0.3.6`
  - `@ts-common/json` to `0.3.1`
  - `@ts-common/json-parser` to `0.9.0`
  - `@ts-common/source-map` to `0.5.0`
  - `@ts-common/string-map` to `0.3.0`
  - `json-pointer` to `0.6.2`
  - `source-map` to `0.7.6`
- remove unused dependencies
  - `acorn`
  - `kind-of`
  - `minimist`
  - `set-value`
  - `yargs-parser`

## 0.12.1 2025-09-18

- removed unused dependency 'glob'

## 0.12.0 2025-08-29

- replaced dependency 'request' with built-in fetch() API
- replaced child_process.exec() with execFile()
- require Node >= 20

## 0.11.0 2025-08-11

- upgraded Newtonsoft.Json from 9.0.1 to 13.0.1

## 0.10.14 2025-06-19

- escaped the input string when construct the autorest command

## 0.10.5 Released on 2024-02-16

- update source map version from 0.7.3 to 0.7.4 so that it works with Node 18.
- fix minor code issues that were blocking local run
- update docs

## 0.10.4 Released on 2023-01-10

- fix rule index & support additionalProperties:true

## 0.10.3 Released on 2022-11-29

- fix adding enum value & command line exception

## 0.10.2 Released on 2022-11-02

- bugfix for RequiredStatusChange

## 0.10.1 Released on 2022-10-15

- Bugfixes for ReferenceRedirection,AddedPropertyInResponse,DefaultValueChanged.

## 0.10.0 Released on 2022-09-15

- Added rules: AddedXmsEnum,RemovedXmsEnum,XmsEnumChanged.

## 0.9.7 Released on 2022-08-15

- change rule 'TypeChanged' to 'Info' if adding 'type:object' to an schema with "properties".

## 0.9.6 Released on 2022-06-09

- using autorest v3.6.1'.

## 0.9.3 Released on 2022-02-09

- bugfix for 'ConstraintIsStronger'.

## 0.9.2 Released on 2022-01-05

- bugfix for transforming path level parameters.

## 0.9.1 Released on 2021-07-26

- bugfix for rules -- 'addOptionalProperty' & 'ParameterInHasChanged'.

## 0.9.0 Released on 2021-07-21

- add new rule 'removedOptionalParameter'.
- bugfix for 'RequestBodyFormatNoLongerSupported' & 'ResponseBodyFormatNowSupported'
- upgrade dotnet core version from 2.0 to 3.1.

## 0.8.12 Released on 2021-06-25

- bug fix for checking circular allOf.
## 0.8.11 Released on 2021-05-31

- ConstraintIsWeaker & ConstraintIsStronger do not check adding/removing enum values.
- Always report AddedEnumValue/RemovedEnumValue no matter it's the context is in request or response.

## 0.8.10 Released on 2021-04-12

- Fixed bug: 'autorest' fails to acquire lock possibly due to running concurrently.

## 0.8.9 Released on 2021-04-08

- Fixed incompatible implementation with doc for 'XmsLongRunningOperationChanged'.

## 0.8.8 Released on 2021-03-19

- Fixed issue of rule 'AddedOptionalProperty'.

## 0.8.7 Released on 2021-02-24

- Add new rule - XmsLongRunningOperationChanged.
- Add new rule - AddedOptionalProperty.

## 0.8.6 Released on 2021-01-18

- Add new rule - AddingOptionalParameter.

## 0.8.5

- Fixed bug: multiple level 'allOf' comparing fails. 

## 0.8.4

- Add new rule ChangedParameter order.
- Expands "allOf" to compare.

## 0.8.2

- Fixed issue : Adding optional property to a model and the properties of the model is null, tool reports AddRequiredProperty.

## 0.8.1

- Fixed issue : can not find `node` path when running in pipeline.
- Fixed issue : can not find correct `autorest` path when When oad is installed globally.

## 0.8.0 Released on 2020-05-11

- Unify paths and x-ms-paths in the swagger then compare the unified swagger so that it consider not a breaking when you move a path from `paths` to `x-ms-path` without any other changes.

## 0.7.1 Released on 2020-04-21

- Fixed issue with common parameters.[#160](https://github.com/Azure/openapi-diff/pull/160)

## 0.6.3 Released on 2019-04-22

- Fixed autorest path.

## 0.5.2 Release on 2019-04-19.

- Fixed issue with null Enums.

## 0.5.0 Release on 2019-04-12.

- Update to TS 3.4 and 'types'.

## 0.4.3 Release on 2019-04-04.

- Fixed issue with `AddedPath`.

## 0.4.2 Release on 2019-04-03.

- Fixed issue with logging.

## 0.4.1 Release on 2019-04-03.

- Fixed issue with models that are not reference. [#136](https://github.com/Azure/openapi-diff/pull/136)

## 0.1.13 Released on 2019-01-03.

- Fixed security vulnerability issue reported in github. [#121](https://github.com/Azure/openapi-diff/pull/121)

## 0.1.12 Released on 2018-05-19.

- Added support for readme tags.

## 0.1.11 Released on 2018-05-14

- Fix crash on no operation parameters . [#86](https://github.com/Azure/openapi-diff/issues/86)

## 0.1.10 Released on 2018-03-15

- Fix crash when there are no required parameters. [#107](https://github.com/Azure/openapi-diff/issues/107)

## 0.1.9 Released on 2017-10-23

- Fix publishing issue of 0.1.8 where some dlls were missing.

## 0.1.8 Released on 2017-10-20

- Updating to use AutoRest 2. This solves [#105](https://github.com/Azure/openapi-diff/issues/105)

## 0.1.7 Released on 2017-08-10.

- Chaining the promises upto `compare` method and gracefully exiting application [#88](https://github.com/Azure/openapi-diff/issues/88)

## 0.1.x Released on 2017-07-18.

- All issues associated with this release can be found using this filter [Sprint-103](https://github.com/Azure/openapi-diff/issues?q=label%3ASprint-103+is%3Aclosed) [Sprint-104](https://github.com/Azure/openapi-diff/issues?utf8=%E2%9C%93&q=label%3ASprint-104%20is%3Aclosed)

## Added

- Initial release of oad.


================================================
FILE: CONTRIBUTING.md
================================================
# Contributing

This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/).
For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or contact
[opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments.

## Table of contents

- [Contributing](#contributing)
  - [Table of contents](#table-of-contents)
  - [Prerequisites](#prerequisites)
  - [Build the code](#build-the-code)
    - [Troubleshoot](#troubleshoot)
  - [Run `oad` locally from sources](#run-oad-locally-from-sources)
  - [Reproduce specs PR CI failure of `Swagger BreakingChange` or `BreakingChange(Cross-Version)`](#reproduce-specs-pr-ci-failure-of-swagger-breakingchange-or-breakingchangecross-version)
  - [Install `oad` globally from sources or npm feed](#install-oad-globally-from-sources-or-npm-feed)
    - [Uninstall `oad` globally](#uninstall-oad-globally)
  - [Purge the obsolete `oad` package from your system](#purge-the-obsolete-oad-package-from-your-system)
  - [Publish the package](#publish-the-package)

<!-- One of the few situations where usage of HTML is justified and it is not sanitized away by GitHub -->
<!-- markdownlint-disable MD033 -->
<small><i><a href='https://marketplace.visualstudio.com/items?itemName=yzhang.markdown-all-in-one'>
Table of contents generated with yzhang.markdown-all-in-one</a></i></small>

## Prerequisites

To execute any instructions in this file, first ensure you fulfill all the following prerequisites:

1. Install [Node.js](https://nodejs.org/), version 14.x or higher.
1. Install [.NET runtime and SDK](https://aka.ms/dotnet-download), version 6 or higher.
1. Install [.NET CLI tools](https://github.com/dotnet/cli/releases) version 2.0.0 or higher.
1. Execute all commands in this file from your [`openapi-diff`] git repo local clone root dir.
1. Run `npm ci` to install the required node modules.

## Build the code

`openapi-diff` is composed both of TypeScript and .NET/C# projects, all of which have to be built
to be able to run the tool locally from sources.

The core logic for `openapi-diff` is written in C# and compiled to a .NET binary.  
The CLI for `openapi-diff` is written in TypeScript and compiled to a Node.js binary.

| Build command | Effect |
|-|-|
| `npm run dn.build` | Runs [`dotnet build`] and related commands to build the C# code. |
| `npm run tsc` | Builds the TypeScript code. |

For more commands, see the [`package.json`](/package.json) `scripts` element.
Notably:

| Command | Effect |
|-|-|
| `npm run dn.restore` | Runs [`dotnet restore`] in preparation to build the C# code. |
| `npm run dn.test` | Runs [`dotnet test`] and related commands to test the C# code. |

### Troubleshoot

If the `npm run dn.build` command outputs error like:

> C:\Program Files\dotnet\sdk\8.0.100\Sdks\Microsoft.NET.Sdk\targets\Microsoft.PackageDependencyResolution.targe
       ts(266,5): error NETSDK1005: Assets file 'C:\(...)\openapi-diff\src\core\OpenApiDiff\ob
       j\project.assets.json' doesn't have a target for 'netcoreapp6.0'. Ensure that restore has run and that you have
       included 'netcoreapp6.0' in the TargetFrameworks for your project.

Then first run `npm run dn.restore` and then run the `npm run dn.build` command again.

## Run `oad` locally from sources

After you have built the C# and TypeScript code, you can run the `openapi-diff` aka `oad` tool locally.

1. Run [`npm link`] once.
2. Then you can use `oad` by running `oad -h`.

> [!CAUTION]
> Following commands have different behavior: `oad`, `oad -h`, `oad --help`.
> As of 11/2/2023 only `oad -h` appears to work as intended.

## Reproduce specs PR CI failure of `Swagger BreakingChange` or `BreakingChange(Cross-Version)`

If `Swagger BreakingChange` or  `BreakingChange(Cross-Version)` checks fail on your `Azure/azure-rest-api-specs[-pr]` PR,
you can reproduce the failure locally as follows:

- Open the GitHub check pane.
- Click the hyperlinked `View Azure DevOps build log for more details.` Open the relevant job (`BreakingChange` or `CrossVersionBreakingChange`)
  and a task within the job with the same name. Search for log `ENTER definition runOad`.
  This log will show you the `oldSpec` and `newSpec` values, which you can pass as input to `oad` when running it locally,
  per [Run `oad` locally from sources](#run-oad-locally-from-sources). 
  Note you will have to clone locally relevant git branches with the specs.

## Install `oad` globally from sources or npm feed

You can also install the `oad` tool globally and run it from anywhere.

```sh
npm list -g @azure/oad # verify oad is not installed globally
npm install -g # Install oad from local repo clone source
npm list -g @azure/oad # verify oad is installed 
oad --version # verify correct version got installed.
oad -h
```

> [!CAUTION]  
> Be careful to use `@azure/oad` and not `oad` as the latter is an obsolete, deprecated package.
<!-- markdownlint-disable MD028 -->
<!-- Disabling warning about empty line inside blockquote -->
> [!TIP]
> If you want to install `oad` not from your local sources, but the latest from the npm feed,
> use this alternative `npm install`:  
> `npm install -g @azure/oad`

### Uninstall `oad` globally

To uninstall `oad` globally:

``` sh
# if installed from sources
npm uninstall -g 
# if installed from npm feed
npm uninstall -g @azure/oad
```

## Purge the obsolete `oad` package from your system

To purge the obsolete, deprecated `oad` package from your system, including [the cache].

``` sh
# To remove oad from the cache
npm cache ls oad 
npm cache clean <copy paste here entries from "ls oad"> # run once per each entry from "ls oad"
npm cache verify # to fix the cache after removing oad

# To remove oad from the local node_modules
npm uninstall oad
npm list oad # Should denote no packages installed

# To remove oad from the global node_modules
npm uninstall -g oad
npm list -g oad # Should denote no packages installed
```

## Publish the package

- Ensure you bumped the package version in [`openapi-diff`] `package.json`.
- Queue a run of the [`openapi-diff` pipeline] and approve the `publish` stage. (Note: there is also the [`public.openapi-diff` pipeline] for CI checks.)
- Verify in [`@azure/oad` versions] that the newest package version was published on npmjs.org. You can also run `npm show @azure/oad`.
- Create a PR to [`azure-rest-api-specs`], updating all references to `@azure/oad` in `package[-lock].json`

[`@azure/oad` versions]: https://www.npmjs.com/package/@azure/oad?activeTab=versions
[`dotnet build`]: https://learn.microsoft.com/en-us/dotnet/core/tools/dotnet-build
[`dotnet restore`]: https://learn.microsoft.com/en-us/dotnet/core/tools/dotnet-restore
[`dotnet test`]: https://learn.microsoft.com/en-us/dotnet/core/tools/dotnet-test
[`npm link`]: https://docs.npmjs.com/cli/v10/commands/npm-link
[`openapi-diff` pipeline]: https://dev.azure.com/azure-sdk/internal/_build/index?definitionId=7030
[`openapi-diff`]: https://github.com/Azure/openapi-diff
[`public.openapi-diff` pipeline]: https://dev.azure.com/azure-sdk/public/_build?definitionId=135&_a=summary
[the cache]: https://docs.npmjs.com/cli/v10/configuring-npm/folders#cache
[`azure-rest-api-specs`]: https://github.com/Azure/azure-rest-api-specs


================================================
FILE: CredScanSuppressions.json
================================================
{
  "tool": "Credential Scanner",
  "suppressions": [
    {
     "file": "node_modules\\superagent\\docs\\index.md", 
      "_justification": "Additional CredScan searcher specific to my team"
    },
    {
     "file": "node_modules\\superagent\\docs\\test.html", 
      "_justification": "Legitimate UT certificate file with private key"
    }
  ]
}


================================================
FILE: LICENSE
================================================
    MIT License

    Copyright (c) Microsoft Corporation. All rights reserved.

    Permission is hereby granted, free of charge, to any person obtaining a copy
    of this software and associated documentation files (the "Software"), to deal
    in the Software without restriction, including without limitation the rights
    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
    copies of the Software, and to permit persons to whom the Software is
    furnished to do so, subject to the following conditions:

    The above copyright notice and this permission notice shall be included in all
    copies or substantial portions of 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


================================================
FILE: README.md
================================================
# About openapi-diff

[![Build Status][build status]][build pipeline]

This repository contains source code of `openapi-diff` aka `oad` aka "Breaking change detector tool" npm package.
This package is invoked internally by the [azure-rest-api-specs] and [azure-rest-api-specs-pr] repos
`Swagger Breaking Change` and `Breaking Change(Cross-Version)` GitHub checks, validating PRs submitted to them.

For description of the overall process of which `oad` is part of, see https://aka.ms/azsdk/specreview.

[build status]: https://dev.azure.com/azure-sdk/public/_apis/build/status/public.openapi-diff?branchName=main
[build pipeline]: https://dev.azure.com/azure-sdk/public/_build/latest?definitionId=135&branchName=main
[azure-rest-api-specs]: https://github.com/Azure/azure-rest-api-specs
[azure-rest-api-specs-pr]: https://github.com/Azure/azure-rest-api-specs-pr

## npm package

- [@azure/oad] ![npm package version shield](https://img.shields.io/npm/v/@azure/oad)
- [package.json]

> [!CAUTION]  
> Do not use the package [oad] ![npm package version shield](https://img.shields.io/npm/v/oad). It is deprecated and obsolete.

[@azure/oad]: https://www.npmjs.com/package/@azure/oad
[package.json]: /package.json
[oad]: https://www.npmjs.com/package/oad

## How to run locally

See relevant section in [CONTRIBUTING.md](./CONTRIBUTING.md)



================================================
FILE: SECURITY.md
================================================
<!-- BEGIN MICROSOFT SECURITY.MD V0.0.8 BLOCK -->

## Security

Microsoft takes the security of our software products and services seriously, which includes all source code repositories managed through our GitHub organizations, which include [Microsoft](https://github.com/microsoft), [Azure](https://github.com/Azure), [DotNet](https://github.com/dotnet), [AspNet](https://github.com/aspnet), [Xamarin](https://github.com/xamarin), and [our GitHub organizations](https://opensource.microsoft.com/).

If you believe you have found a security vulnerability in any Microsoft-owned repository that meets [Microsoft's definition of a security vulnerability](https://aka.ms/opensource/security/definition), please report it to us as described below.

## Reporting Security Issues

**Please do not report security vulnerabilities through public GitHub issues.**

Instead, please report them to the Microsoft Security Response Center (MSRC) at [https://msrc.microsoft.com/create-report](https://aka.ms/opensource/security/create-report).

If you prefer to submit without logging in, send email to [secure@microsoft.com](mailto:secure@microsoft.com).  If possible, encrypt your message with our PGP key; please download it from the [Microsoft Security Response Center PGP Key page](https://aka.ms/opensource/security/pgpkey).

You should receive a response within 24 hours. If for some reason you do not, please follow up via email to ensure we received your original message. Additional information can be found at [microsoft.com/msrc](https://aka.ms/opensource/security/msrc). 

Please include the requested information listed below (as much as you can provide) to help us better understand the nature and scope of the possible issue:

  * Type of issue (e.g. buffer overflow, SQL injection, cross-site scripting, etc.)
  * Full paths of source file(s) related to the manifestation of the issue
  * The location of the affected source code (tag/branch/commit or direct URL)
  * Any special configuration required to reproduce the issue
  * Step-by-step instructions to reproduce the issue
  * Proof-of-concept or exploit code (if possible)
  * Impact of the issue, including how an attacker might exploit the issue

This information will help us triage your report more quickly.

If you are reporting for a bug bounty, more complete reports can contribute to a higher bounty award. Please visit our [Microsoft Bug Bounty Program](https://aka.ms/opensource/security/bounty) page for more details about our active programs.

## Preferred Languages

We prefer all communications to be in English.

## Policy

Microsoft follows the principle of [Coordinated Vulnerability Disclosure](https://aka.ms/opensource/security/cvd).

<!-- END MICROSOFT SECURITY.MD BLOCK -->


================================================
FILE: azure-pipelines.yml
================================================
trigger:
- main

resources:
  repositories:
  - repository: azure-sdk-tools
    type: github
    name: Azure/azure-sdk-tools    
    endpoint: Azure
    ref: refs/tags/azure-sdk-tools_20250709.1

extends:
  template: /eng/1es-redirect.yml
  parameters:
    stages:
    - stage: Build_And_Test
      variables:
        - template: /eng/image.yml
      jobs:
        - job: Build_linux

          pool:
            name: $(LINUXPOOL)
            image: $(LINUXVMIMAGE)
            os: linux

          steps:
            - template: /eng/test-steps.yml
              parameters:
                ArtifactName: drop-linux

        - job: Build_Windows

          pool:
            name: $(WINDOWSPOOL)
            image: $(WINDOWSVMIMAGE)
            os: windows

          steps:
            - template: /eng/test-steps.yml
              parameters:
                ArtifactName: drop


    # only include if running on `internal` build with manual queue, otherwise never include
    - ${{ if and(in(variables['Build.Reason'], 'Manual', ''), eq(variables['System.TeamProject'], 'internal'))}}:
      - stage: Publish
        dependsOn: Build_And_Test
        jobs:
        - template: /eng/common/pipelines/templates/jobs/npm-publish.yml@azure-sdk-tools
          parameters:
            ArtifactName: drop-linux


================================================
FILE: docs/README.md
================================================
## Rules

[1000 - VersionsReversed](rules/1000.md)

[1001 - NoVersionChange](rules/1001.md)

[1002 - ProtocolNoLongerSupported](rules/1002.md)

[1003 - RequestBodyFormatNoLongerSupported](rules/1003.md)

[1004 - ResponseBodyFormatNowSupported](rules/1004.md)

[1005 - RemovedPath](rules/1005.md)

[1006 - RemovedDefinition](rules/1006.md)

[1007 - RemovedClientParameter](rules/1007.md)

[1008 - ModifiedOperationId](rules/1008.md)

[1009 - RemovedRequiredParameter](rules/1009.md)

[1010 - AddingRequiredParameter](rules/1010.md)

[1011 - AddingResponseCode](rules/1011.md)

[1012 - RemovedResponseCode](rules/1012.md)

[1013 - AddingHeader](rules/1013.md)

[1014 - RemovingHeader](rules/1014.md)

[1015 - ParameterInHasChanged](rules/1015.md)

[1016 - ConstantStatusHasChanged](rules/1016.md)

[1017 - ReferenceRedirection](rules/1017.md)

[1019 - RemovedEnumValue](rules/1019.md)

[1020 - AddedEnumValue](rules/1020.md)

[1021 - AddedAdditionalProperties](rules/1021.md)

[1022 - RemovedAdditionalProperties](rules/1022.md)

[1023 - TypeFormatChanged](rules/1023.md)

[1024 - ConstraintIsStronger](rules/1024.md)

[1025 - RequiredStatusChange](rules/1025.md)

[1026 - TypeChanged](rules/1026.md)

[1027 - DefaultValueChanged](rules/1027.md)

[1028 - ArrayCollectionFormatChanged](rules/1028.md)

[1029 - ReadonlyPropertyChanged](rules/1029.md)

[1030 - DifferentDiscriminator](rules/1030.md)

[1031 - DifferentExtends](rules/1031.md)

[1032 - DifferentAllOf](rules/1032.md)

[1033 - RemovedProperty](rules/1033.md)

[1034 - AddedRequiredProperty](rules/1034.md)

[1035 - RemovedOperation](rules/1035.md)

[1036 - ConstraintChanged](rules/1036.md)

[1037 - ConstraintIsWeaker](rules/1037.md)

[1038 - AddedPath](rules/1038.md)

[1039 - AddedOperation](rules/1039.md)

[1040 - AddedReadOnlyPropertyInResponse](rules/1040.md)

[1041 - AddedPropertyInResponse](rules/1041.md)

[1042 - ChangedParameterOrder](rules/1042.md)

[1043 - AddingOptionalParameter](rules/1043.md)

[1044 - XmsLongRunningOperationChanged](rules/1044.md)

[1045 - AddedOptionalProperty](rules/1045.md)

[1046 - RemovedOptionalParameter](rules/1046.md)

[1047 - XmsEnumChanged](rules/1047.md)

[1048 - AddedXmsEnum](rules/1048.md)

[1049 - RemovedXmsEnum](rules/1049.md)

[1050 - ParameterLocationHasChanged](rules/1050.md)


================================================
FILE: docs/rules/1000.md
================================================
### 1000 - VersionsReversed

**Description**: Checks whether [semantic version](http://semver.org/) is reversed from the previous specification. 

**Cause**: This is considered an unexpected change.

**Example**: Version is changed from `2.0.0` to `1.0.0`.

Old specification
```json5
{
  "swagger": "2.0",
  "info": {
    "title": "swagger",
    "description": "The Azure Management API.",
    "version": "2.0.0",
    ...
```

New specification
```json5
{
  "swagger": "2.0",
  "info": {
    "title": "swagger",
    "description": "The Azure Management API.",
    "version": "1.0.0",
    ...
```


================================================
FILE: docs/rules/1001.md
================================================
### 1001 - NoVersionChange

**Description**: Checks whether version is changed from the previous specification. 

**Cause**: This is considered an noteworthy change.

**Example**: Version is changed from `2017-05-01` to `2017-07-01`.

Old specification
```json5
{
  "swagger": "2.0",
  "info": {
    "title": "swagger",
    "description": "The Azure Management API.",
    "version": "2017-05-01",
    ...
```

New specification
```json5
{
  "swagger": "2.0",
  "info": {
    "title": "swagger",
    "description": "The Azure Management API.",
    "version": "2017-07-01",
    ...
```


================================================
FILE: docs/rules/1002.md
================================================
### 1002 - ProtocolNoLongerSupported

**Description**: Checks whether any supported `scheme` is changed from the previous specification. 

**Cause**: This is considered a breaking change.

**Example**: `http` scheme is no longer supported in the new version.

Old specification
```json5
{
  "swagger": "2.0",
  "info": {
    ...
  "scheme": [
    "http",
    "https"
  ]
```

New specification
```json5
{
  "swagger": "2.0",
  "info": {
    ...
  "scheme": [
    "https"
  ]
```


================================================
FILE: docs/rules/1003.md
================================================
### 1003 - RequestBodyFormatNoLongerSupported

**Description**: Checks whether any supported `consumes` is changed from the previous specification. 

**Cause**: This is considered a breaking change.

**Example**: `text/json` format for body is no longer supported in the new version.

Old specification
```json5
{
  "swagger": "2.0",
  "info": {
    ...
  "scheme": [
    "https"
  ],
  "consumes":[
    "application/json",
    "text/json"
  ]
```

New specification
```json5
{
  "swagger": "2.0",
  "info": {
    ...
  "scheme": [
    "https"
  ],
  "consumes":[
    "application/json"
  ]
```


================================================
FILE: docs/rules/1004.md
================================================
### 1004 - ResponseBodyFormatNowSupported

**Description**: Checks whether any additional supported `produces` is now supported from the previous specification. 

**Cause**: This is considered a breaking change.

**Example**: `text/json` format is now supported in the new version.

Old specification
```json5
{
  "swagger": "2.0",
  "info": {
    ...
  "scheme": [
    "https"
  ],
  "produces":[
    "application/json"
  ]
```

New specification
```json5
{
  "swagger": "2.0",
  "info": {
    ...
  "scheme": [
    "https"
  ],
  "produces":[
    "application/json",
    "text/json"
  ]
```


================================================
FILE: docs/rules/1005.md
================================================
### 1005 - RemovedPath

**Description**: Checks whether an existing path is removed from the previous specification. 

**Cause**: This is considered a breaking change. This change requires new api-version.

**Example**: Path `/subscriptions/{subscriptionId}/providers/Microsoft.Contoso/resource1/subResource1` is being removed without revising api-version.

Old specification
```json5
{
  "swagger": "2.0",
  "info": {
    "title": "swagger",
    "description": "The Azure Management API.",
    "version": "2016-12-01",
    ...
    ...
  "paths": {
    "/subscriptions/{subscriptionId}/providers/Microsoft.Contoso/resource1": {
      "get": {
        ...
      },
      "put": {
        ...
      }
    },
    "/subscriptions/{subscriptionId}/providers/Microsoft.Contoso/resource1/subResource1": {
      "get": {
        ...
      },
      "delete": {
        ...
      }
    }
    ...
    ...  
```

New specification
```json5
{
  "swagger": "2.0",
  "info": {
    "title": "swagger",
    "description": "The Azure Management API.",
    "version": "2016-12-01",
    ...
    ...
  "paths": {
    "/subscriptions/{subscriptionId}/providers/Microsoft.Contoso/resource1": {
      "get": {
        ...
      },
      "put": {
        ...
      }
    }
    ...
    ... 
```


================================================
FILE: docs/rules/1006.md
================================================
### 1006 - RemovedDefinition

**Description**: Checks whether an existing model definition is removed from the previous specification. 

**Cause**: This is considered a breaking change. This change requires new api-version.

**Example**: Model definition `CreateParameters` is being removed without revising api-version.

Old specification
```json5
{
  "swagger": "2.0",
  "info": {
    "title": "swagger",
    "description": "The Azure Management API.",
    "version": "2016-12-01",
    ...
    ...
  "definitions": {
    ...
    "CreateParameters": {
      "properties": {
        "a": {
          "type": "string",
          "description": "Required. Property a."
        },
        "b": {
          "type": "string",
          "description": "Required. Property b."
        },
        "c": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Property c."
        }
      },
      "required": [
        "a",
        "b"
      ],
      "description": "The parameters used when create operation."
    },
    ...  
```

New specification
```json5
{
  "swagger": "2.0",
  "info": {
    "title": "swagger",
    "description": "The Azure Management API.",
    "version": "2016-12-01",
    ...
    ...
  "definitions": {
    ...
    "Parameters": {
      "properties": {
        "a": {
          "type": "string",
          "description": "Required. Property a."
        },
        "b": {
          "type": "string",
          "description": "Required. Property b."
        }
      },
      "required": [
        "a",
        "b"
      ],
      "description": "The parameters used when create operation."
    },
    ...  
```


================================================
FILE: docs/rules/1007.md
================================================
### 1007 - RemovedClientParameter

**Description**: Checks whether any supported parameter from global `parameters` section is removed from the previous specification.

**Cause**: This is considered a breaking change.

**Related rules**

- [1050 - ParameterLocationHasChanged](1050.md)

**Change Example**: Parameter `resourceGroupName` is removed in the new version.

Old specification
```json5
{
  "swagger": "2.0",
  "info": {
    ...
    "parameters": {
    "SubscriptionIdParameter": {
      "name": "subscriptionId",
      "in": "path",
      "required": true,
      "type": "string",
      "description": "Gets subscription credentials which uniquely identify the Microsoft Azure subscription. The subscription ID forms part of the URI for every service call."
    },
    "ApiVersionParameter": {
      "name": "api-version",
      "in": "query",
      "required": true,
      "type": "string",
      "description": "Client Api Version."
    },
    "ResourceGroupName": {
      "name": "resourceGroupName",
      "in": "path",
      "required": true,
      "type": "string",
      "description": "The name of the resource group within the user's subscription. The name is case insensitive.",
      "pattern": "^[-\\w\\._\\(\\)]+$",
      "minLength": 1,
      "maxLength": 90,
      "x-ms-parameter-location": "method"
    }
    ...
```

New specification
```json5
{
  "swagger": "2.0",
  "info": {
    ...
    "parameters": {
    "SubscriptionIdParameter": {
      "name": "subscriptionId",
      "in": "path",
      "required": true,
      "type": "string",
      "description": "Gets subscription credentials which uniquely identify the Microsoft Azure subscription. The subscription ID forms part of the URI for every service call."
    },
    "ApiVersionParameter": {
      "name": "api-version",
      "in": "query",
      "required": true,
      "type": "string",
      "description": "Client Api Version."
    }
    ...
```


================================================
FILE: docs/rules/1008.md
================================================
### 1008 - ModifiedOperationId

**Description**: Checks whether an existing operation's `operationId` is changed from the previous specification. 

**Cause**: This is considered a breaking change. This change requires new api-version.

**Example**: `operationId` of Operation `get` from Path `/subscriptions/{subscriptionId}/providers/Microsoft.Contoso/resource1` is being updated without revising api-version.

Old specification
```json5
{
  "swagger": "2.0",
  "info": {
    "title": "swagger",
    "description": "The Azure Management API.",
    "version": "2016-12-01",
    ...
    ...
  "paths": {
    "/subscriptions/{subscriptionId}/providers/Microsoft.Contoso/resource1": {
      "get": {
        ...
        "operationId": "GetResource1",
        ...
      },
      "put": {
        ...
      }
    }
    ...
    ...  
```

New specification
```json5
{
  "swagger": "2.0",
  "info": {
    "title": "swagger",
    "description": "The Azure Management API.",
    "version": "2016-12-01",
    ...
    ...
  "paths": {
    "/subscriptions/{subscriptionId}/providers/Microsoft.Contoso/resource1": {
      "get": {
        ...
        "operationId": "ListResource1",
        ...
      },
      "put": {
        ...
      }
    }
    ...
    ...
```


================================================
FILE: docs/rules/1009.md
================================================
### 1009 - RemovedRequiredParameter

**Description**: Checks whether required parameter is removed / made optional from the previous specification. 

**Cause**: TBD.

**Example**: Required parameter `c` is being removed without revising api-version.

Old specification
```json5
{
  "swagger": "2.0",
  "info": {
    "title": "swagger",
    "description": "The Azure Management API.",
    "version": "2016-12-01",
    ...
    ...
  "paths": {
    "/subscriptions/{subscriptionId}/providers/Microsoft.Contoso/resource1/{a}": {
      "get": {
        ...
        ...
        "parameters": [
          {
            "name": "subscriptionId",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "a",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "b",
            "in": "query",
            "required": true,
            "type": "string"
          },
          {
            "name": "c",
            "in": "query",
            "required": true,
            "type": "string"
          }
        ]
        ...
        ...
      },
      "put": {
        ...
      }
    }
    ...
    ... 
```

New specification
```json5
{
  "swagger": "2.0",
  "info": {
    "title": "swagger",
    "description": "The Azure Management API.",
    "version": "2016-12-01",
    ...
    ...
  "paths": {
    "/subscriptions/{subscriptionId}/providers/Microsoft.Contoso/resource1/{a}": {
      "get": {
        ...
        ...
        "parameters": [
          {
            "name": "subscriptionId",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "a",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "b",
            "in": "query",
            "required": true,
            "type": "string"
          }
        ]
        ...
        ...
      },
      "put": {
        ...
      }
    }
    ...
    ...     
```


================================================
FILE: docs/rules/1010.md
================================================
### 1010 - AddingRequiredParameter

**Description**: Checks whether new required parameter is introduced from the previous specification. 

**Cause**: This is considered a breaking change. This change requires new api-version.

**Example**: New required parameter `c` is introduced without revising api-version.

Old specification
```json5
{
  "swagger": "2.0",
  "info": {
    "title": "swagger",
    "description": "The Azure Management API.",
    "version": "2016-12-01",
    ...
    ...
  "paths": {
    "/subscriptions/{subscriptionId}/providers/Microsoft.Contoso/resource1/{a}": {
      "get": {
        ...
        ...
        "parameters": [
          {
            "name": "subscriptionId",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "a",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "b",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ]
        ...
        ...
      },
      "put": {
        ...
      }
    }
    ...
    ...  
```

New specification
```json5
{
  "swagger": "2.0",
  "info": {
    "title": "swagger",
    "description": "The Azure Management API.",
    "version": "2016-12-01",
    ...
    ...
  "paths": {
    "/subscriptions/{subscriptionId}/providers/Microsoft.Contoso/resource1/{a}": {
      "get": {
        ...
        ...
        "parameters": [
          {
            "name": "subscriptionId",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "a",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "b",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "c",
            "in": "query",
            "required": true,
            "type": "string"
          }
        ]
        ...
        ...
      },
      "put": {
        ...
      }
    }
    ...
    ...     
```


================================================
FILE: docs/rules/1011.md
================================================
### 1011 - AddingResponseCode

**Description**: Checks whether any new response code is added from the previous specification.

**Cause**: This is considered a breaking change.

**Example**: Response code `204` is added to existing `delete` operation in the new version.

Old specification
```json5
{
  "swagger": "2.0",
  "info": {
    "title": "swagger",
    "description": "The Azure Management API.",
    "version": "2016-12-01",
    ...
    ...
  "paths": {
    "/subscriptions/{subscriptionId}/providers/Microsoft.Contoso/resource1/{a}": {
      "delete": {
        ...
        "responses": {
          "200" : { ... }
        }
        ...
      }
    }
    ...
    ...  
```

New specification
```json5
{
  "swagger": "2.0",
  "info": {
    "title": "swagger",
    "description": "The Azure Management API.",
    "version": "2016-12-01",
    ...
    ...
  "paths": {
    "/subscriptions/{subscriptionId}/providers/Microsoft.Contoso/resource1/{a}": {
      "delete": {
        ...
        "responses": {
          "200" : { ... },
          "204" : { ... }
        }
        ...
      }
    }
    ...
    ... 
```


================================================
FILE: docs/rules/1012.md
================================================
### 1012 - RemovedResponseCode

**Description**: Checks whether any existing response code is removed from the previous specification.

**Cause**: This is considered a breaking change.

**Example**: Response code `204` is removed from existing `delete` operation in the new version.

Old specification
```json5
{
  "swagger": "2.0",
  "info": {
    "title": "swagger",
    "description": "The Azure Management API.",
    "version": "2016-12-01",
    ...
    ...
  "paths": {
    "/subscriptions/{subscriptionId}/providers/Microsoft.Contoso/resource1/{a}": {
      "delete": {
        ...
        "responses": {
          "200" : { ... },
          "204" : { ... }
        }
        ...
      }
    }
    ...
    ...  
```

New specification
```json5
{
  "swagger": "2.0",
  "info": {
    "title": "swagger",
    "description": "The Azure Management API.",
    "version": "2016-12-01",
    ...
    ...
  "paths": {
    "/subscriptions/{subscriptionId}/providers/Microsoft.Contoso/resource1/{a}": {
      "delete": {
        ...
        "responses": {
          "200" : { ... }
        }
        ...
      }
    }
    ...
    ... 
```


================================================
FILE: docs/rules/1013.md
================================================
### 1013 - AddingHeader

**Description**: Checks whether any new header is added from the previous specification.

**Cause**: This is considered a change.

**Example**: Response code `200` adds header `x-c` in the new version.

Old specification
```json5
{
  "swagger": "2.0",
  "info": {
    "title": "swagger",
    "description": "The Azure Management API.",
    "version": "2016-12-01",
    ...
    ...
  "paths": {
    "/subscriptions/{subscriptionId}/providers/Microsoft.Contoso/resource1/{a}": {
      "delete": {
        ...
        "responses": {
          "200" : { 
            ... 
            "headers": {
              "x-a": { "type": "string" },
              "x-b": { "type": "integer" }
            }
          },
          "204" : { ... }
        }
        ...
      }
    }
    ...
    ...  
```

New specification
```json5
{
  "swagger": "2.0",
  "info": {
    "title": "swagger",
    "description": "The Azure Management API.",
    "version": "2016-12-01",
    ...
    ...
  "paths": {
    "/subscriptions/{subscriptionId}/providers/Microsoft.Contoso/resource1/{a}": {
      "delete": {
        ...
        "responses": {
          "200" : { 
            ... 
            "headers": {
              "x-a": { "type": "string" },
              "x-b": { "type": "integer" },
              "x-c": { "type": "integer" }
            }
          },
          "204" : { ... }
        }
        ...
      }
    }
    ...
    ...  
```


================================================
FILE: docs/rules/1014.md
================================================
### 1014 - RemovingHeader

**Description**: Checks whether any existing header is removed from the previous specification.

**Cause**: This is considered a breaking change.

**Example**: Response code `200` removed header `x-b` in the new version.

Old specification
```json5
{
  "swagger": "2.0",
  "info": {
    "title": "swagger",
    "description": "The Azure Management API.",
    "version": "2016-12-01",
    ...
    ...
  "paths": {
    "/subscriptions/{subscriptionId}/providers/Microsoft.Contoso/resource1/{a}": {
      "delete": {
        ...
        "responses": {
          "200" : { 
            ... 
            "headers": {
              "x-a": { "type": "string" },
              "x-b": { "type": "integer" }
            }
          },
          "204" : { ... }
        }
        ...
      }
    }
    ...
    ...  
```

New specification
```json5
{
  "swagger": "2.0",
  "info": {
    "title": "swagger",
    "description": "The Azure Management API.",
    "version": "2016-12-01",
    ...
    ...
  "paths": {
    "/subscriptions/{subscriptionId}/providers/Microsoft.Contoso/resource1/{a}": {
      "delete": {
        ...
        "responses": {
          "200" : { 
            ... 
            "headers": {
              "x-a": { "type": "string" }
            }
          },
          "204" : { ... }
        }
        ...
      }
    }
    ...
    ...  
```


================================================
FILE: docs/rules/1015.md
================================================
### 1015 - ParameterInHasChanged

**Description**: Checks whether any parameter's `in` is changed from the previous specification.

**Cause**: This is considered a breaking change.

**Example**: Parameter `b` is changed from being `query` parameter to `body` parameter in the new version.

Old specification
```json5
{
  "swagger": "2.0",
  "info": {
    "title": "swagger",
    "description": "The Azure Management API.",
    "version": "2016-12-01",
    ...
    ...
  "paths": {
    "/subscriptions/{subscriptionId}/providers/Microsoft.Contoso/resource1/{a}": {
      "get": {
        ...
        ...
        "parameters": [
          {
            "name": "subscriptionId",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "a",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "b",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ]
        ...
        ...
      }
    }
    ...
    ...  
```

New specification
```json5
{
  "swagger": "2.0",
  "info": {
    "title": "swagger",
    "description": "The Azure Management API.",
    "version": "2016-12-01",
    ...
    ...
  "paths": {
    "/subscriptions/{subscriptionId}/providers/Microsoft.Contoso/resource1/{a}": {
      "get": {
        ...
        ...
        "parameters": [
          {
            "name": "subscriptionId",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "a",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "b",
            "in": "body",
            "required": false,
            "type": "string"
          }
        ]
        ...
        ...
      }
    }
    ...
    ... 
```


================================================
FILE: docs/rules/1016.md
================================================
### 1016 - ConstantStatusHasChanged

**Description**: Checks whether any parameter that used to accept only one value now accepts more from the previous specification.

**Cause**: This is considered a breaking change.

**Example**: Property `type` of parameter `Parameters` is required and enum with one value `Microsoft.Storage/storageAccounts` in old specification and new version accepts more values.

Old specification
```json5
{
  "swagger": "2.0",
  "info": {
    "title": "swagger",
    "description": "The Azure Management API.",
    "version": "2016-12-01",
    ...
    ...
  "paths:" {
    "/subscriptions/{subscriptionId}/providers/Microsoft.Contoso/resource1": {
      "get": {
        ...
        "responses": {
          "200": {
            "schema": {
              "$ref": "#/definitions/Parameters"
            }
          }
        }
      }
  }
  "definitions": {
    ...
    ...
    "Parameters": {
      "properties": {
        "name": {
          "type": "string",
          "description": "Property name."
        },
        "type": {
          "type": "string",
          "description": "Enum Property type.",
          "enum": [ "Microsoft.Storage/storageAccounts" ],
          "required": true
        }
      },
      "description": "The parameters used when get operation."
    },
    ...  
```

New specification
```json5
{
  "swagger": "2.0",
  "info": {
    "title": "swagger",
    "description": "The Azure Management API.",
    "version": "2016-12-01",
    ...
    ...
  "paths:" {
    "/subscriptions/{subscriptionId}/providers/Microsoft.Contoso/resource1": {
      "get": {
        ...
        "responses": {
          "200": {
            "schema": {
              "$ref": "#/definitions/Parameters"
            }
          }
        }
      }
  }
  "definitions": {
    ...
    ...
    "Parameters": {
      "properties": {
        "name": {
          "type": "string",
          "description": "Property name."
        },
        "type": {
          "type": "string",
          "description": "Enum Property type.",
          "enum": [ "Microsoft.Storage/storageAccounts", "Microsoft.Storage/customStorageAccounts" ],
          "required": true
        }
      },
      "description": "The parameters used when get operation."
    },
    ... 
```


================================================
FILE: docs/rules/1017.md
================================================
### 1017 - ReferenceRedirection

**Description**: Checks whether any '$ref' property points to different models from the previous specification.
note: if the model is flagged with 'x-ms-client-name', the 'x-ms-client-name' will override the reference name.

**Cause**: This is considered a breaking change.

**Example**: Schema of response `200` points to `NewParameters` in the new specification.

Old specification
```json5
{
  "swagger": "2.0",
  "info": {
    "title": "swagger",
    "description": "The Azure Management API.",
    "version": "2016-12-01",
    ...
    ...
  "paths:" {
    "/subscriptions/{subscriptionId}/providers/Microsoft.Contoso/resource1": {
      "get": {
        ...
        "responses": {
          "200": {
            "schema": {
              "$ref": "#/definitions/Parameters"
            }
          }
        }
      }
  }
  "definitions": {
    ...
    ...
    "Parameters": {
      "properties": {
        "name": {
          "type": "string",
          "description": "Property name."
        },
        "type": {
          "type": "string",
          "description": "Enum Property type.",
          "enum": [ "Microsoft.Storage/storageAccounts" ],
          "required": true
        }
      },
      "description": "The parameters used when get operation."
    },
    ...  
```

New specification
```json5
{
  "swagger": "2.0",
  "info": {
    "title": "swagger",
    "description": "The Azure Management API.",
    "version": "2016-12-01",
    ...
    ...
  "paths:" {
    "/subscriptions/{subscriptionId}/providers/Microsoft.Contoso/resource1": {
      "get": {
        ...
        "responses": {
          "200": {
            "schema": {
              "$ref": "#/definitions/NewParameters"
            }
          }
        }
      }
  }
  "definitions": {
    ...
    ...
    "Parameters": {
      "properties": {
        "name": {
          "type": "string",
          "description": "Property name."
        },
        "type": {
          "type": "string",
          "description": "Enum Property type.",
          "enum": [ "Microsoft.Storage/storageAccounts" ],
          "required": true
        }
      },
      "description": "The parameters used when get operation."
    },
    "NewParameters": {
      "properties": {
        ...
      }
    }
    ...  
```


================================================
FILE: docs/rules/1019.md
================================================
### 1019 - RemovedEnumValue

**Description**: Checks whether an existing enum property has removed allowed values from the previous specification. 

**Cause**: This is considered a breaking change. This change requires new api-version.

**Example**: Enum Property `b` is removing allowed values without revising api-version.

Old specification
```json5
{
  "swagger": "2.0",
  "info": {
    "title": "swagger",
    "description": "The Azure Management API.",
    "version": "2016-12-01",
    ...
    ...
  "definitions": {
    ...
    "CreateParameters": {
      "properties": {
        "a": {
          "type": "string",
          "description": "Required. Property a."
        },
        "b": {
          "type": "string",
          "description": "Required. Enum Property b.",
          "enum": [ "b1", "b2", "b3", "b4" ]
        }
      },
      "required": [
        "a"
      ],
      "description": "The parameters used when create operation."
    },
    ...  
```

New specification
```json5
{
  "swagger": "2.0",
  "info": {
    "title": "swagger",
    "description": "The Azure Management API.",
    "version": "2016-12-01",
    ...
    ...
  "definitions": {
    ...
    "CreateParameters": {
      "properties": {
        "a": {
          "type": "string",
          "description": "Required. Property a."
        },
        "b": {
          "type": "string",
          "description": "Required. Enum Property b.",
          "enum": [ "b1", "b2", "b4" ]
        }
      },
      "required": [
        "a"
      ],
      "description": "The parameters used when create operation."
    },
    ... 
```


================================================
FILE: docs/rules/1020.md
================================================
### 1020 - AddedEnumValue

**Description**: Checks whether an existing enum property has added more allowed values from the previous specification. 

**Cause**: This is considered a breaking change in the same api-version but not breaking in new api-version .

**Example**: Enum Property `b` is adding more allowed values without revising api-version.

Old specification
```json5
{
  "swagger": "2.0",
  "info": {
    "title": "swagger",
    "description": "The Azure Management API.",
    "version": "2016-12-01",
    ...
    ...
  "definitions": {
    ...
    "CreateParameters": {
      "properties": {
        "a": {
          "type": "string",
          "description": "Required. Property a."
        },
        "b": {
          "type": "string",
          "description": "Required. Enum Property b.",
          "enum": [ "b1", "b2" ]
        }
      },
      "required": [
        "a"
      ],
      "description": "The parameters used when create operation."
    },
    ...  
```

New specification
```json5
{
  "swagger": "2.0",
  "info": {
    "title": "swagger",
    "description": "The Azure Management API.",
    "version": "2016-12-01",
    ...
    ...
  "definitions": {
    ...
    "CreateParameters": {
      "properties": {
        "a": {
          "type": "string",
          "description": "Required. Property a."
        },
        "b": {
          "type": "string",
          "description": "Required. Enum Property b.",
          "enum": [ "b1", "b2", "b3", "b4" ]
        }
      },
      "required": [
        "a"
      ],
      "description": "The parameters used when create operation."
    },
    ... 
```


================================================
FILE: docs/rules/1021.md
================================================
### 1021 - AddedAdditionalProperties

**Description**: Checks whether any property adds `additionalProperties` element from the previous specification.

**Cause**: This is considered a breaking change.

**Example**: Property `a` of Parameter `CreateParameters` adds `additionalProperties` element in the new version.

Old specification
```json5
{
  "swagger": "2.0",
  "info": {
    "title": "swagger",
    "description": "The Azure Management API.",
    "version": "2016-12-01",
    ...
    ...
  "definitions": {
    ...
    "CreateParameters": {
      "properties": {
        "a": {
          "type": "object",
          "description": "Property a."
        },
        "b": {
          "type": "string",
          "description": "Enum Property b.",
          "enum": [ "b1", "b2", "b3", "b4" ]
        }
      },
      "required": [
        "a"
      ],
      "description": "The parameters used when create operation."
    },
    ...  
```

New specification
```json5
{
  "swagger": "2.0",
  "info": {
    "title": "swagger",
    "description": "The Azure Management API.",
    "version": "2016-12-01",
    ...
    ...
  "definitions": {
    ...
    "CreateParameters": {
      "properties": {
        "a": {
          "type": "object",
          "description": "Property a.",
          "additionalProperties": {
            "type": "string"
          }
        },
        "b": {
          "type": "string",
          "description": "Enum Property b.",
          "enum": [ "b1", "b2", "b3", "b4" ]
        }
      },
      "required": [
        "a"
      ],
      "description": "The parameters used when create operation."
    },
    ... 
```


================================================
FILE: docs/rules/1022.md
================================================
### 1022 - RemovedAdditionalProperties

**Description**: Checks whether any existing property removes `additionalProperties` element from the previous specification.

**Cause**: This is considered a breaking change.

**Example**: Property `a` of Parameter `CreateParameters` removes `additionalProperties` element in the new version.

Old specification
```json5
{
  "swagger": "2.0",
  "info": {
    "title": "swagger",
    "description": "The Azure Management API.",
    "version": "2016-12-01",
    ...
    ...
  "definitions": {
    ...
    "CreateParameters": {
      "properties": {
        "a": {
          "type": "object",
          "description": "Property a.",
          "additionalProperties": {
            "type": "string"
          }
        },
        "b": {
          "type": "string",
          "description": "Enum Property b.",
          "enum": [ "b1", "b2", "b3", "b4" ]
        }
      },
      "required": [
        "a"
      ],
      "description": "The parameters used when create operation."
    },
    ...  
```

New specification
```json5
{
  "swagger": "2.0",
  "info": {
    "title": "swagger",
    "description": "The Azure Management API.",
    "version": "2016-12-01",
    ...
    ...
  "definitions": {
    ...
    "CreateParameters": {
      "properties": {
        "a": {
          "type": "object",
          "description": "Property a."
        },
        "b": {
          "type": "string",
          "description": "Enum Property b.",
          "enum": [ "b1", "b2", "b3", "b4" ]
        }
      },
      "required": [
        "a"
      ],
      "description": "The parameters used when create operation."
    },
    ... 
```


================================================
FILE: docs/rules/1023.md
================================================
### 1023 - TypeFormatChanged

**Description**: Checks whether any existing property's [format](https://github.com/OAI/OpenAPI-Specification/blob/main/versions/2.0.md#dataTypeFormat) element has changed from the previous specification.

**Cause**: This is considered a breaking change in most cases except widening integer("int32" -> "int64") in request and narrowing integer ("int64" -> "int32") in response which are not breaking change in new api-version.

**Example**: Property `a` of Parameter `CreateParameters` changed format from `int64` to `int32` in the new version.

Old specification
```json5
{
  "swagger": "2.0",
  "info": {
    "title": "swagger",
    "description": "The Azure Management API.",
    "version": "2016-12-01",
    ...
    ...
  "definitions": {
    ...
    "CreateParameters": {
      "properties": {
        "a": {
          "type": "integer",
          "description": "Property a.",
          "format": "int64"
        },
        ...
```

New specification
```json5
{
  "swagger": "2.0",
  "info": {
    "title": "swagger",
    "description": "The Azure Management API.",
    "version": "2016-12-01",
    ...
    ...
  "definitions": {
    ...
    "CreateParameters": {
      "properties": {
        "a": {
          "type": "integer",
          "description": "Property a.",
          "format": "int32"
        },
        ...
```


================================================
FILE: docs/rules/1024.md
================================================
### 1024 - ConstraintIsStronger

**Description**: Checks whether any constraining in requests like `maximum`, `minimum`, `minLength`, `maxLength` etc. has been stronger from the previous specification.

**Cause**: This is considered a breaking change.

**Example**: Value of `maxItems` element of parameter `a` is changed from `5000` to `4000` in the new version.

Old specification
```json5
{
  "swagger": "2.0",
  "info": {
    "title": "swagger",
    "description": "The Azure Management API.",
    "version": "2016-12-01",
    ...
    ...
  "paths": {
    "/api/Responses": {
      "get": {
        "parameters": [
          {
            "name": "a",
            "in": "header",
            "type": "array",
            "minItems": 11,
            "maxItems": 5000,
            "collectionFormat": "pipes",
            "items": {
              "type": "integer",
              "minimum": 11,
              "maximum": 21,
              "multipleOf": 4
            }
          },
        ... 
```

New specification
```json5
{
  "swagger": "2.0",
  "info": {
    "title": "swagger",
    "description": "The Azure Management API.",
    "version": "2016-12-01",
    ...
    ...
  "paths": {
    "/api/Responses": {
      "get": {
        "parameters": [
          {
            "name": "a",
            "in": "header",
            "type": "array",
            "minItems": 11,
            "maxItems": 4000,
            "collectionFormat": "pipes",
            "items": {
              "type": "integer",
              "minimum": 11,
              "maximum": 21,
              "multipleOf": 4
            }
          },
        ... 
```


================================================
FILE: docs/rules/1025.md
================================================
### 1025 - RequiredStatusChange

**Description**: Checks whether an existing property's `required` status is changed from the previous specification. 

**Cause**: This is considered a breaking change in the same api-version but not breaking in new api-version . 

**Example**: `required` status for parameter `b` is changed from `false` to `true` without revising api-version.

Old specification
```json5
{
  "swagger": "2.0",
  "info": {
    "title": "swagger",
    "description": "The Azure Management API.",
    "version": "2016-12-01",
    ...
    ...
  "paths": {
    "/subscriptions/{subscriptionId}/providers/Microsoft.Contoso/resource1/{a}": {
      "get": {
        ...
        ...
        "parameters": [
          {
            "name": "subscriptionId",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "a",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "b",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "c",
            "in": "query",
            "type": "string"
          }
        ]
        ...
        ...
      },
      "put": {
        ...
      }
    }
    ...
    ...  
```

New specification
```json5
{
  "swagger": "2.0",
  "info": {
    "title": "swagger",
    "description": "The Azure Management API.",
    "version": "2016-12-01",
    ...
    ...
  "paths": {
    "/subscriptions/{subscriptionId}/providers/Microsoft.Contoso/resource1/{a}": {
      "get": {
        ...
        ...
        "parameters": [
          {
            "name": "subscriptionId",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "a",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "b",
            "in": "query",
            "required": true,
            "type": "string"
          },
          {
            "name": "c",
            "in": "query",
            "type": "string"
          }
        ]
        ...
        ...
      },
      "put": {
        ...
      }
    }
    ...
    ...     
```


================================================
FILE: docs/rules/1026.md
================================================
### 1026 - TypeChanged

**Description**: Checks whether an existing property has changed the type from the previous specification. 

**Cause**: This is considered a breaking change. This change requires new api-version.

**Example**: Property `b` is being changed from `string` to `boolean` without revising api-version.

Old specification
```json5
{
  "swagger": "2.0",
  "info": {
    "title": "swagger",
    "description": "The Azure Management API.",
    "version": "2016-12-01",
    ...
    ...
  "definitions": {
    ...
    "CreateParameters": {
      "properties": {
        "a": {
          "type": "string",
          "description": "Required. Property a."
        },
        "b": {
          "type": "string",
          "description": "Required. Property b."
        }
      },
      "required": [
        "a",
        "b"
      ],
      "description": "The parameters used when create operation."
    },
    ...  
```

New specification
```json5
{
  "swagger": "2.0",
  "info": {
    "title": "swagger",
    "description": "The Azure Management API.",
    "version": "2016-12-01",
    ...
    ...
  "definitions": {
    ...
    "CreateParameters": {
      "properties": {
        "a": {
          "type": "string",
          "description": "Required. Property a."
        },
        "b": {
          "type": "boolean",
          "description": "Required. Property b."
        }
      },
      "required": [
        "a",
        "b"
      ],
      "description": "The parameters used when create operation."
    },
    ...  
```


================================================
FILE: docs/rules/1027.md
================================================
### 1027 - DefaultValueChanged

**Description**: Checks whether any existing property's `default` element has changed from the previous specification.

**Cause**: This is considered a breaking change.

**Example**: Default value of property `a` of Parameter `CreateParameters` changed from `Standard` to `Premium` in the new version.

Old specification
```json5
{
  "swagger": "2.0",
  "info": {
    "title": "swagger",
    "description": "The Azure Management API.",
    "version": "2016-12-01",
    ...
    ...
  "definitions": {
    ...
    "CreateParameters": {
      "properties": {
        "a": {
          "type": "string",
          "description": "Property a.",
          "default": "Standard"
        },
        ...  
```

New specification
```json5
{
  "swagger": "2.0",
  "info": {
    "title": "swagger",
    "description": "The Azure Management API.",
    "version": "2016-12-01",
    ...
    ...
  "definitions": {
    ...
    "CreateParameters": {
      "properties": {
        "a": {
          "type": "string",
          "description": "Property a.",
          "default": "Premium"
        },
        ... 
```


================================================
FILE: docs/rules/1028.md
================================================
### 1028 - ArrayCollectionFormatChanged

**Description**: Checks whether array's `collectionFormat` has changed from the previous specification.

**Cause**: This is considered a breaking change.

**Example**: Value of `collectionFormat` element of property `a` of Parameter `CreateParameters` changed from `pipes` to `csv` in the new version.

Old specification
```json5
{
  "swagger": "2.0",
  "info": {
    "title": "swagger",
    "description": "The Azure Management API.",
    "version": "2016-12-01",
    ...
    ...
  "definitions": {
    ...
    "CreateParameters": {
      "properties": {
        "a": {
          "type": "array",
          "description": "Property a.",
          "minItems": 11,
          "maxItems": 5000,
          "collectionFormat": "pipes",
          "items": {
            "type": "integer",
            "minimum": 11,
            "maximum": 21,
            "multipleOf": 4
          }
        },
        ...  
```

New specification
```json5
{
  "swagger": "2.0",
  "info": {
    "title": "swagger",
    "description": "The Azure Management API.",
    "version": "2016-12-01",
    ...
    ...
  "definitions": {
    ...
    "CreateParameters": {
      "properties": {
        "a": {
          "type": "array",
          "description": "Property a.",
          "minItems": 11,
          "maxItems": 5000,
          "collectionFormat": "csv",
          "items": {
            "type": "integer",
            "minimum": 11,
            "maximum": 21,
            "multipleOf": 4
          }
        },
        ... 
```


================================================
FILE: docs/rules/1029.md
================================================
### 1029 - ReadonlyPropertyChanged

**Description**: Checks whether property's readonly has changed from the previous specification.

**Cause**: This is considered a breaking change.

**Example**: readonly of property `message` removed in the new version.

Old specification
```json5
{
  "swagger": "2.0",
  "info": {
    "title": "swagger",
    "description": "The Azure Management API.",
    "version": "2016-12-01",
    ...
    ...
  "definitions": {
    "CloudError": {
      "description": "Error from a REST request.",
      "type": "object",
      "properties": { "error": { "$ref": "#/definitions/CloudErrorBody" } },
      "x-ms-external": true
    },
    "CloudErrorBody": {
      "description": "Body of an error from a REST request.",
      "type": "object",
      "properties": {
        "code": { "type": "string" },
        "message": { "type": "string" },
        "target": { "type": "string" },
        "details": {
          "description": "Inner errors.",
          "type": "array",
          "items": { "$ref": "#/definitions/CloudErrorBody" }
        }
      }
    },
        ...  
```

New specification
```json5
{
  "swagger": "2.0",
  "info": {
    "title": "swagger",
    "description": "The Azure Management API.",
    "version": "2016-12-01",
    ...
    ...
 "definitions": {
    "CloudError": {
      "description": "Error from a REST request.",
      "type": "object",
      "properties": { "error": { "$ref": "#/definitions/CloudErrorBody" } },
      "x-ms-external": true
    },
    "CloudErrorBody": {
      "description": "Body of an error from a REST request.",
      "type": "object",
      "properties": {
        "code": { "type": "string" },
        "message": { "type": "string", "readOnly":  true},
        "target": { "type": "string" },
        "details": {
          "description": "Inner errors.",
          "type": "array",
          "items": { "$ref": "#/definitions/CloudErrorBody" }
        }
      }
    },
        ... 
```


================================================
FILE: docs/rules/1030.md
================================================
### 1030 - DifferentDiscriminator

**Description**: Checks whether value of `discriminator` has changed from the previous specification.

**Cause**: This is considered a breaking change.

**Example**: Value of `discriminator` element of Parameter `Pet` changed from `petType` to `name` in the new version.

Old specification
```json5
{
  "swagger": "2.0",
  "info": {
    "title": "swagger",
    "description": "The Azure Management API.",
    "version": "2016-12-01",
    ...
    ...
  "definitions": {
    ...
    "Pet": {
      "type": "object",
      "discriminator": "petType",
      "properties": {
        "name": {
          "type": "string"
        },
        "petType": {
          "type": "string"
        }
      },
      "required": [
        "name",
        "petType"
      ]
    },
    ...  
```

New specification
```json5
{
  "swagger": "2.0",
  "info": {
    "title": "swagger",
    "description": "The Azure Management API.",
    "version": "2016-12-01",
    ...
    ...
  "definitions": {
    ...
    "Pet": {
      "type": "object",
      "discriminator": "name",
      "properties": {
        "name": {
          "type": "string"
        },
        "petType": {
          "type": "string"
        }
      },
      "required": [
        "name",
        "petType"
      ]
    },
    ...  
```


================================================
FILE: docs/rules/1031.md
================================================
### 1031 - DifferentExtends

**Description**: Checks whether any model's extend has changed from the previous specification.

**Cause**: This is considered a breaking change.

**Example**: 

Old specification
```json5

```

New specification
```json5

```


================================================
FILE: docs/rules/1032.md
================================================
### 1032 - DifferentAllOf

**Description**: Checks whether any model's `allOf` has changed from the previous specification.

**Cause**: This is considered a breaking change.

**Example**: Value of `allOf` element of Parameter `Cat` changed from `#definitions/Pet` to `#definitions/CustomPet` in the new version.

Old specification
```json5
{
  "swagger": "2.0",
  "info": {
    "title": "swagger",
    "description": "The Azure Management API.",
    "version": "2016-12-01",
    ...
    ...
  "definitions": {
    ...
    "Pet": {
      "type": "object",
      "discriminator": "petType",
      "properties": {
        "name": {
          "type": "string"
        },
        "petType": {
          "type": "string"
        }
        ...
      }
    },
    "Cat": {
      "allOf": [{
        "$ref": "#definitions/Pet"
      }],
      ...
    }
    ...
```

New specification
```json5
{
  "swagger": "2.0",
  "info": {
    "title": "swagger",
    "description": "The Azure Management API.",
    "version": "2016-12-01",
    ...
    ...
  "definitions": {
    ...
    "Pet": {
      "type": "object",
      "discriminator": "petType",
      "properties": {
        "name": {
          "type": "string"
        },
        "petType": {
          "type": "string"
        }
        ...
      }
    },
    "Cat": {
      "allOf": [{
        "$ref": "#definitions/CustomPet"
      }],
      ...
    }
    ...
```


================================================
FILE: docs/rules/1033.md
================================================
### 1033 - RemovedProperty

**Description**: Checks whether an existing property is removed from the previous specification. 

**Cause**: This is considered a breaking change. This change requires new api-version.

**Example**: Property `c` is being removed without revising api-version.

Old specification
```json5
{
  "swagger": "2.0",
  "info": {
    "title": "swagger",
    "description": "The Azure Management API.",
    "version": "2016-12-01",
    ...
    ...
  "definitions": {
    ...
    "CreateParameters": {
      "properties": {
        "a": {
          "type": "string",
          "description": "Required. Property a."
        },
        "b": {
          "type": "string",
          "description": "Required. Property b."
        },
        "c": {
          "type": "object",
          "additionalProperties": {
            "type": "string"
          },
          "description": "Property c."
        }
      },
      "required": [
        "a",
        "b"
      ],
      "description": "The parameters used when create operation."
    },
    ...  
```

New specification
```json5
{
  "swagger": "2.0",
  "info": {
    "title": "swagger",
    "description": "The Azure Management API.",
    "version": "2016-12-01",
    ...
    ...
  "definitions": {
    ...
    "CreateParameters": {
      "properties": {
        "a": {
          "type": "string",
          "description": "Required. Property a."
        },
        "b": {
          "type": "string",
          "description": "Required. Property b."
        }
      },
      "required": [
        "a",
        "b"
      ],
      "description": "The parameters used when create operation."
    },
    ...  
```


================================================
FILE: docs/rules/1034.md
================================================
### 1034 - AddedRequiredProperty

**Description**: Checks whether a new required property has added from the previous specification. 

**Cause**: This is considered a breaking change. This change requires new api-version.

**Example**: Property `b` is being added without revising api-version.

Old specification
```json5
{
  "swagger": "2.0",
  "info": {
    "title": "swagger",
    "description": "The Azure Management API.",
    "version": "2016-12-01",
    ...
    ...
  "definitions": {
    ...
    "CreateParameters": {
      "properties": {
        "a": {
          "type": "string",
          "description": "Required. Property a."
        },
        "b": {
          "type": "string",
          "description": "Required. Enum Property b.",
          "enum": [ "b1", "b2" ]
        }
      },
      "required": [
        "a"
      ],
      "description": "The parameters used when create operation."
    },
    ...  
```

New specification
```json5
{
  "swagger": "2.0",
  "info": {
    "title": "swagger",
    "description": "The Azure Management API.",
    "version": "2016-12-01",
    ...
    ...
  "definitions": {
    ...
    "CreateParameters": {
      "properties": {
        "a": {
          "type": "string",
          "description": "Required. Property a."
        },
        "b": {
          "type": "string",
          "description": "Required. Enum Property b.",
          "enum": [ "b1", "b2" ]
        }
      },
      "required": [
        "a",
        "b"
      ],
      "description": "The parameters used when create operation."
    },
    ... 
```


================================================
FILE: docs/rules/1035.md
================================================
### 1035 - RemovedOperation

**Description**: Checks whether an existing operation from a path is removed from the previous specification. 

**Cause**: This is considered a breaking change. This change requires new api-version.

**Example**: Operation `get` from Path `/subscriptions/{subscriptionId}/providers/Microsoft.Contoso/resource1/subResource1` is being removed without revising api-version.

Old specification
```json5
{
  "swagger": "2.0",
  "info": {
    "title": "swagger",
    "description": "The Azure Management API.",
    "version": "2016-12-01",
    ...
    ...
  "paths": {
    "/subscriptions/{subscriptionId}/providers/Microsoft.Contoso/resource1": {
      "get": {
        ...
      },
      "put": {
        ...
      }
    },
    "/subscriptions/{subscriptionId}/providers/Microsoft.Contoso/resource1/subResource1": {
      "get": {
        ...
      },
      "delete": {
        ...
      }
    }
    ...
    ...  
```

New specification
```json5
{
  "swagger": "2.0",
  "info": {
    "title": "swagger",
    "description": "The Azure Management API.",
    "version": "2016-12-01",
    ...
    ...
  "paths": {
    "/subscriptions/{subscriptionId}/providers/Microsoft.Contoso/resource1": {
      "get": {
        ...
      },
      "put": {
        ...
      }
    },
    "/subscriptions/{subscriptionId}/providers/Microsoft.Contoso/resource1/subResource1": {
      "post": {
        ...
      },
      "delete": {
        ...
      }
    }
    ...
    ... 
```


================================================
FILE: docs/rules/1036.md
================================================
### 1036 - ConstraintChanged

**Description**: Checks whether any property's constraint like `maximum`, `minimum`, `minLength`, `maxLength` etc. has changed from the previous specification.

**Cause**: This is considered a breaking change.

**Example**: Value of `maxItems` element of property `a` is changed from `5000` to `2000` in the new version.

Old specification
```json5
{
  "swagger": "2.0",
  "info": {
    "title": "swagger",
    "description": "The Azure Management API.",
    "version": "2016-12-01",
    ...
    ...
  "definitions": {
    ...
    "CreateParameters": {
      "properties": {
        "a": {
          "type": "array",
          "description": "Property a.",
          "minItems": 11,
          "maxItems": 5000,
          "collectionFormat": "pipes",
          "items": {
            "type": "integer",
            "minimum": 11,
            "maximum": 21,
            "multipleOf": 4
          }
        },
        ... 
```

New specification
```json5
{
  "swagger": "2.0",
  "info": {
    "title": "swagger",
    "description": "The Azure Management API.",
    "version": "2016-12-01",
    ...
    ...
  "definitions": {
    ...
    "CreateParameters": {
      "properties": {
        "a": {
          "type": "array",
          "description": "Property a.",
          "minItems": 11,
          "maxItems": 2000,
          "collectionFormat": "pipes",
          "items": {
            "type": "integer",
            "minimum": 11,
            "maximum": 21,
            "multipleOf": 4
          }
        },
        ... 
```


================================================
FILE: docs/rules/1037.md
================================================
### 1037 - ConstraintIsWeaker

**Description**: Checks whether any constraining in responses like `maximum`, `minimum`, `minLength`, `maxLength` etc. has been weaker from the previous specification.

**Cause**: This is considered a breaking change.

**Example**: Value of `maxItems` element of property `a` is changed from `4000` to `5000` in the new version.

Old specification
```json5
{
  "swagger": "2.0",
  "info": {
    "title": "swagger",
    "description": "The Azure Management API.",
    "version": "2016-12-01",
    ...
    ...
  "paths": {
    "/api/Responses": {
      "get": {
        ...
          "responses": {
            "200": {
              "schema": {
                "type": "object",
                "properties": {
                  "a": {
                    "type": "array",
                    "minItems": 11,
                    "maxItems": 4000,
                    "collectionFormat": "pipes",
                    "items": {
                      "type": "integer",
                      "minimum": 11,
                      "maximum": 21,
                      "multipleOf": 4
                    }
                  },
        ... 
```

New specification
```json5
{
  "swagger": "2.0",
  "info": {
    "title": "swagger",
    "description": "The Azure Management API.",
    "version": "2016-12-01",
    ...
    ...
  "paths": {
    "/api/Responses": {
      "get": {
        ...
          "responses": {
            "200": {
              "schema": {
                "type": "object",
                "properties": {
                  "a": {
                    "type": "array",
                    "minItems": 12,
                    "maxItems": 5000,
                    "collectionFormat": "pipes",
                    "items": {
                      "type": "integer",
                      "minimum": 11,
                      "maximum": 21,
                      "multipleOf": 4
                    }
                  },
        ... 
```


================================================
FILE: docs/rules/1038.md
================================================
### 1038 - AddedPath

**Description**: Checks whether a new path is added from the previous specification. 

**Cause**: This is considered a additive change in new api-version but a breaking in same api-version.

**Example**: New path `/subscriptions/{subscriptionId}/providers/Microsoft.Contoso/resource1/subResource1` is being added.

Old specification
```json5
{
  "swagger": "2.0",
  "info": {
    "title": "swagger",
    "description": "The Azure Management API.",
    "version": "2016-12-01",
    ...
    ...
  "paths": {
    "/subscriptions/{subscriptionId}/providers/Microsoft.Contoso/resource1": {
      "get": {
        ...
      },
      "put": {
        ...
      }
    }
    ...
    ...  
```

New specification
```json5
{
  "swagger": "2.0",
  "info": {
    "title": "swagger",
    "description": "The Azure Management API.",
    "version": "2016-12-01",
    ...
    ...
  "paths": {
    "/subscriptions/{subscriptionId}/providers/Microsoft.Contoso/resource1": {
      "get": {
        ...
      },
      "put": {
        ...
      }
    },
    "/subscriptions/{subscriptionId}/providers/Microsoft.Contoso/resource1/subResource1": {
      "get": {
        ...
      },
      "delete": {
        ...
      }
    }
    ...
    ... 
```


================================================
FILE: docs/rules/1039.md
================================================
### 1039 - AddedOperation

**Description**: Checks whether a new operation in an existing path is added from the previous specification. 

**Cause**: This is considered a additive change in new api-version but a breaking in same api-version.

**Example**: Operation `get` in Path `/subscriptions/{subscriptionId}/providers/Microsoft.Contoso/resource1/subResource1` is being added without revising api-version.

Old specification
```json5
{
  "swagger": "2.0",
  "info": {
    "title": "swagger",
    "description": "The Azure Management API.",
    "version": "2016-12-01",
    ...
    ...
  "paths": {
    "/subscriptions/{subscriptionId}/providers/Microsoft.Contoso/resource1": {
      "get": {
        ...
      },
      "put": {
        ...
      }
    },
    "/subscriptions/{subscriptionId}/providers/Microsoft.Contoso/resource1/subResource1": {
      "post": {
        ...
      },
      "delete": {
        ...
      }
    }
    ...
    ... 
```

New specification
```json5
{
  "swagger": "2.0",
  "info": {
    "title": "swagger",
    "description": "The Azure Management API.",
    "version": "2016-12-01",
    ...
    ...
  "paths": {
    "/subscriptions/{subscriptionId}/providers/Microsoft.Contoso/resource1": {
      "get": {
        ...
      },
      "put": {
        ...
      }
    },
    "/subscriptions/{subscriptionId}/providers/Microsoft.Contoso/resource1/subResource1": {
      "get": {
        ...
      },
      "post": {
        ...
      },
      "delete": {
        ...
      }
    }
    ...
    ... 
```


================================================
FILE: docs/rules/1040.md
================================================
### 1040 - AddedReadOnlyPropertyInResponse

**Description**: Checks whether a `readOnly` property is added to the response model from the previous specification. 

**Cause**: This is considered a change.

**Example**: Property `c` is being added into model `Parameters` from response direction.

Old specification
```json5
{
  "swagger": "2.0",
  "info": {
    "title": "swagger",
    "description": "The Azure Management API.",
    "version": "2016-12-01",
    ...
    ...
  "paths:" {
    "/subscriptions/{subscriptionId}/providers/Microsoft.Contoso/resource1": {
      "get": {
        ...
        "responses": {
          "200": {
            "schema": {
              "$ref": "#/definitions/Parameters"
            }
          }
        }
      }
  }
  "definitions": {
    ...
    ...
    "Parameters": {
      "properties": {
        "a": {
          "type": "string",
          "description": "Required. Property a."
        },
        "b": {
          "type": "string",
          "description": "Required. Enum Property b.",
          "enum": [ "b1", "b2" ]
        }
      },
      "description": "The parameters used when get operation."
    },
    ...  
```

New specification
```json5
{
  "swagger": "2.0",
  "info": {
    "title": "swagger",
    "description": "The Azure Management API.",
    "version": "2016-12-01",
    ...
    ...
  "paths:" {
    "/subscriptions/{subscriptionId}/providers/Microsoft.Contoso/resource1": {
      "get": {
        ...
        "responses": {
          "200": {
            "schema": {
              "$ref": "#/definitions/Parameters"
            }
          }
        }
      }
  }
  "definitions": {
    ...
    ...
    "Parameters": {
      "properties": {
        "a": {
          "type": "string",
          "description": "Required. Property a."
        },
        "b": {
          "type": "string",
          "description": "Required. Enum Property b.",
          "enum": [ "b1", "b2" ]
        },
        "c": {
          "type": "string",
          "readOnly": true,
          "description": "Read Only. Property c."
        }
      },
      "description": "The parameters used when get operation."
    },
    ...  
```


================================================
FILE: docs/rules/1041.md
================================================
### 1041 - AddedPropertyInResponse

**Description**: Checks whether a property is added to the response model from the previous specification.

**Cause**: This is considered a breaking change.

**Example**: Property `c` is being added into model `Parameters` from response direction.

Old specification
```json5
{
  "swagger": "2.0",
  "info": {
    "title": "swagger",
    "description": "The Azure Management API.",
    "version": "2016-12-01",
    ...
    ...
  "paths:" {
    "/subscriptions/{subscriptionId}/providers/Microsoft.Contoso/resource1": {
      "get": {
        ...
        "responses": {
          "200": {
            "schema": {
              "$ref": "#/definitions/Parameters"
            }
          }
        }
      }
  }
  "definitions": {
    ...
    ...
    "Parameters": {
      "properties": {
        "a": {
          "type": "string",
          "description": "Required. Property a."
        },
        "b": {
          "type": "string",
          "description": "Required. Enum Property b.",
          "enum": [ "b1", "b2" ]
        }
      },
      "description": "The parameters used when get operation."
    },
    ...  
```

New specification
```json5
{
  "swagger": "2.0",
  "info": {
    "title": "swagger",
    "description": "The Azure Management API.",
    "version": "2016-12-01",
    ...
    ...
  "paths:" {
    "/subscriptions/{subscriptionId}/providers/Microsoft.Contoso/resource1": {
      "get": {
        ...
        "responses": {
          "200": {
            "schema": {
              "$ref": "#/definitions/Parameters"
            }
          }
        }
      }
  }
  "definitions": {
    ...
    ...
    "Parameters": {
      "properties": {
        "a": {
          "type": "string",
          "description": "Required. Property a."
        },
        "b": {
          "type": "string",
          "description": "Required. Enum Property b.",
          "enum": [ "b1", "b2" ]
        },
        "c": {
          "type": "string",
          "description": "Property c."
        }
      },
      "description": "The parameters used when get operation."
    },
    ...  
```


================================================
FILE: docs/rules/1042.md
================================================
### 1042 - ChangedParameterOrder

**Description**: Check whether operation parameter order is changed. If operation parameter order changed, it causes SDK breaking change.

**Cause**: This is considered a breaking change.

**Related rules**

- [1050 - ParameterLocationHasChanged](1050.md)

**Example**: Parameter order change from `a, b, e` to `a, e, b`.

Old specification

```json5
"parameters": [
{
    "name": "a",
    "in": "body",
    "required": true,
    "type": "string"
},
{
    "name": "b",
    "in": "body",
    "required": true,
    "type": "string"
},
{
    "name": "e",
    "in": "body",
    "type": "string"
},
]
```

New specification

```json5
"parameters": [
{
    "name": "a",
    "in": "body",
    "required": true,
    "type": "string"
},
{
    "name": "e",
    "in": "body",
    "type": "string"
},
{
    "name": "b",
    "in": "body",
    "required": true,
    "type": "string"
},
]
```


================================================
FILE: docs/rules/1043.md
================================================
### 1043 - AddingOptionalParameter

**Description**: Checks whether new optional parameter is introduced from the previous specification. 

**Cause**: This is considered a breaking change. This change requires new api-version.

**Example**: New optional parameter `c` is introduced without revising api-version.

Old specification
```json5
{
  "swagger": "2.0",
  "info": {
    "title": "swagger",
    "description": "The Azure Management API.",
    "version": "2016-12-01",
    ...
    ...
  "paths": {
    "/subscriptions/{subscriptionId}/providers/Microsoft.Contoso/resource1/{a}": {
      "get": {
        ...
        ...
        "parameters": [
          {
            "name": "subscriptionId",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "a",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "b",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ]
        ...
        ...
      },
      "put": {
        ...
      }
    }
    ...
    ...  
```

New specification
```json5
{
  "swagger": "2.0",
  "info": {
    "title": "swagger",
    "description": "The Azure Management API.",
    "version": "2016-12-01",
    ...
    ...
  "paths": {
    "/subscriptions/{subscriptionId}/providers/Microsoft.Contoso/resource1/{a}": {
      "get": {
        ...
        ...
        "parameters": [
          {
            "name": "subscriptionId",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "a",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "b",
            "in": "query",
            "required": false,
            "type": "string"
          },
          {
            "name": "c",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ]
        ...
        ...
      },
      "put": {
        ...
      }
    }
    ...
    ...     
```


================================================
FILE: docs/rules/1044.md
================================================
### 1044 - XmsLongRunningOperationChanged

**Description**: Checks whether any operation's 'x-ms-long-running-operation' has changed from the previous specification.

**Cause**: This is considered a breaking change.

**Example**: The `x-ms-long-running-operation` is changed from `false` to `true` in the new version.

Old specification
```json5
{
  "swagger": "2.0",
  "info": {
    "title": "swagger",
    "description": "The Azure Management API.",
    "version": "2016-12-01",
    ...
    ...
  "paths": {
    ...
    "put": {
      "x-ms-long-running-operation": false,
        ... 
```

New specification
```json5
{
  "swagger": "2.0",
  "info": {
    "title": "swagger",
    "description": "The Azure Management API.",
    "version": "2016-12-01",
    ...
    ...
  "paths": {
    ...
    "put": {
      "x-ms-long-running-operation": true,
        ... 
```


================================================
FILE: docs/rules/1045.md
================================================
### 1045 - AddedOptionalProperty

**Description**: Checks whether a property is added to the model from the previous specification. The model includes all the models that referenced by any request or response.

**Cause**: This is considered a breaking change.

**Example**: Property `c` is being added into model `Parameters` .

Old specification
```json5
{
  "swagger": "2.0",
  "info": {
    "title": "swagger",
    "description": "The Azure Management API.",
    "version": "2016-12-01",
    ...
    ...
  "definitions": {
    ...
    ...
    "Parameters": {
      "properties": {
        "a": {
          "type": "string",
          "description": "Required. Property a."
        },
        "b": {
          "type": "string",
          "description": "Required. Enum Property b.",
          "enum": [ "b1", "b2" ]
        }
      },
      "description": "The parameters used when get operation."
    },
    ...  
```

New specification
```json5
{
  "swagger": "2.0",
  "info": {
    "title": "swagger",
    "description": "The Azure Management API.",
    "version": "2016-12-01",
    ...
    ...
  "definitions": {
    ...
    ...
    "Parameters": {
      "properties": {
        "a": {
          "type": "string",
          "description": "Required. Property a."
        },
        "b": {
          "type": "string",
          "description": "Required. Enum Property b.",
          "enum": [ "b1", "b2" ]
        },
        "c": {
          "type": "string",
          "description": "Property c."
        }
      },
      "description": "The parameters used when get operation."
    },
    ...  
```

================================================
FILE: docs/rules/1046.md
================================================
### 1046 - RemovedOptionalParameter

**Description**: Checks whether optional parameter is removed / made required from the previous specification.

**Cause**: This is considered a breaking change. 

**Example**: Optional parameter `c` is being removed without revising api-version.

Old specification
```json5
{
  "swagger": "2.0",
  "info": {
    "title": "swagger",
    "description": "The Azure Management API.",
    "version": "2016-12-01",
    ...
    ...
  "paths": {
    "/subscriptions/{subscriptionId}/providers/Microsoft.Contoso/resource1/{a}": {
      "get": {
        ...
        ...
        "parameters": [
          {
            "name": "subscriptionId",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "a",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "b",
            "in": "query",
            "required": true,
            "type": "string"
          },
          {
            "name": "c",
            "in": "query",
            "required": false,
            "type": "string"
          }
        ]
        ...
        ...
      },
      "put": {
        ...
      }
    }
    ...
    ... 
```

New specification
```json5
{
  "swagger": "2.0",
  "info": {
    "title": "swagger",
    "description": "The Azure Management API.",
    "version": "2016-12-01",
    ...
    ...
  "paths": {
    "/subscriptions/{subscriptionId}/providers/Microsoft.Contoso/resource1/{a}": {
      "get": {
        ...
        ...
        "parameters": [
          {
            "name": "subscriptionId",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "a",
            "in": "path",
            "required": true,
            "type": "string"
          },
          {
            "name": "b",
            "in": "query",
            "required": true,
            "type": "string"
          }
        ]
        ...
        ...
      },
      "put": {
        ...
      }
    }
    ...
    ...     
```


================================================
FILE: docs/rules/1047.md
================================================
### 1047 - XmsEnumChanged

**Description**: Checks whether the x-ms-enum 'name' or 'modelAsString' is changed.

**Cause**: This is considered a breaking change. 

**Example**: 
1. x-ms-enum modelAsString is changed from 'false' to 'true'.

Old specification
```json5
{
  "type": "string",
  "description": "Required. Indicates the type of account.",
  "enum": [
    "Storage",
    "BlobStorage"
  ],
  "x-ms-enum": {
    "name": "Kind",
    "modelAsString": false
  }
}
```

New specification
```json5
{
  "type": "string",
  "description": "Required. Indicates the type of account.",
  "enum": [
    "Storage",
    "BlobStorage"
  ],
  "x-ms-enum": {
    "name": "Kind",
    "modelAsString": true
  }
} 
```


================================================
FILE: docs/rules/1048.md
================================================
### 1048 - AddedXmsEnum

**Description**: Checks whether the x-ms-enum is added.

**Cause**: This is considered a breaking change. 

**Example**: 
1. x-ms-enum is added in the new specification.

Old specification
```json5
{
  "type": "string",
  "description": "Required. Indicates the type of account.",
  "enum": [
    "Storage",
    "BlobStorage"
  ],
}
```

New specification
```json5
{
  "type": "string",
  "description": "Required. Indicates the type of account.",
  "enum": [
    "Storage",
    "BlobStorage"
  ],
  "x-ms-enum": {
    "name": "Kind",
    "modelAsString": true
  }
} 
```


================================================
FILE: docs/rules/1049.md
================================================
### 1049 - RemovedXmsEnum

**Description**: Checks whether the x-ms-enum is removed.

**Cause**: This is considered a breaking change. 

**Example**: 
1. x-ms-enum is removed in the new specification.

Old specification
```json5
{
  "type": "string",
  "description": "Required. Indicates the type of account.",
  "enum": [
    "Storage",
    "BlobStorage"
  ],
  "x-ms-enum": {
    "name": "Kind",
    "modelAsString": true
  }
}
```

New specification
```json5
{
  "type": "string",
  "description": "Required. Indicates the type of account.",
  "enum": [
    "Storage",
    "BlobStorage"
  ],
} 
```


================================================
FILE: docs/rules/1050.md
================================================
### 1050 - ParameterLocationHasChanged

**Description**: Checks whether any parameter's location ([`x-ms-parameter-location`]) is changed from the previous specification.
This is AutoRest-specific rule. Per the example provided in [specifying required parameters and properties],
and per the documentation of [`x-ms-parameter-location`]:

- non-global parameters have implicitly `method` location and this cannot be changed.
- global parameters have implicitly `client` location and this can be changed to `method` via [`x-ms-parameter-location`].

**Cause**: Changing parameter location from `client` to `method` or vice-versa is considered a breaking change.

**Related rules**

- [1007 - RemovedClientParameter](1007.md)
- [1042 - ChangedParameterOrder](1042.md)

**Example**: Parameter `foo` is changed from being non-global parameter to global parameter in the new version,
hence changing its location from `method` to `client`.

Old specification
```json5
{
  "swagger": "2.0",
  "info": {
    "title": "swagger",
    "description": "The Azure Management API.",
    "version": "2016-12-01",
    ...
    ...
  "paths": {
    "/subscriptions/{subscriptionId}/providers/Microsoft.Contoso/resource1/{a}": {
      "get": {
        ...
        ...
        "parameters": [
          {
            "name": "foo",
            "in": "path",
            "type": "string"
          }
        ]
        ...
        ...
      }
    }
    ...
    ...  
```

New specification
```json5
{
  "swagger": "2.0",
  "info": {
    "title": "swagger",
    "description": "The Azure Management API.",
    "version": "2016-12-01",
    ...
    ...
  "paths": {
    "/subscriptions/{subscriptionId}/providers/Microsoft.Contoso/resource1/{a}": {
      "get": {
        ...
        ...
        "parameters": [
          {
            "ref": "#/parameters/foo"
          }
        ]
        ...
        ...
      }
    }
    ...
    ...
  "parameters": {
    "foo": {
      "name": "foo",
      "in": "path",
      "type": "string"
    }
  }
```

[`x-ms-parameter-location`]: https://github.com/Azure/autorest/blob/765bc784b0cad173d47f931a04724936a6948b4c/docs/extensions/readme.md#x-ms-parameter-location
[specifying required parameters and properties]: https://github.com/Azure/autorest/blob/765bc784b0cad173d47f931a04724936a6948b4c/docs/generate/how-autorest-generates-code-from-openapi.md#specifying-required-parameters-and-properties


================================================
FILE: eng/1es-redirect.yml
================================================
resources:
  repositories:
    - repository: 1ESPipelineTemplates
      type: git
      name: 1ESPipelineTemplates/1ESPipelineTemplates
      ref: refs/tags/release
    - repository: 1ESPipelineTemplatesCanary
      type: git
      name: 1ESPipelineTemplates/1ESPipelineTemplates
      ref: refs/tags/canary

parameters:
  - name: stages
    type: stageList
    default: []
  - name: Use1ESOfficial
    type: boolean
    default: true
  - name: oneESTemplateTag
    type: string
    default: release

extends:
  ${{ if and(parameters.Use1ESOfficial, eq(parameters.oneESTemplateTag, 'canary')) }}:
    template: v1/1ES.Official.PipelineTemplate.yml@1ESPipelineTemplatesCanary
  ${{ elseif eq(parameters.oneESTemplateTag, 'canary') }}:
    template: v1/1ES.Unofficial.PipelineTemplate.yml@1ESPipelineTemplatesCanary
  ${{ elseif and(parameters.Use1ESOfficial, eq(variables['System.TeamProject'], 'internal')) }}:
    template: v1/1ES.Official.PipelineTemplate.yml@1ESPipelineTemplates
  ${{ else }}:
    template: v1/1ES.Unofficial.PipelineTemplate.yml@1ESPipelineTemplates
  parameters:
    ${{ if eq(parameters.oneESTemplateTag, 'canary') }}:
      # Enable 1es template team to verify validation has been run on canary
      customBuildTags:
        - 1ES.PT.Tag-refs/tags/canary
    settings:
      skipBuildTagsForGitHubPullRequests: true
    sdl:
      git:
        longpaths: true
        submodules: false
      sourceRepositoriesToScan:
        include:
          - repository: self
            submodule: false
        runInSingleJob: true
      sourceAnalysisPool:
        name: azsdk-pool
        image: windows-2022
        os: windows
      eslint:
        enabled: false
        justificationForDisabling: "ESLint injected task has failures because it uses an old version of mkdirp. We should not fail for tools not controlled by the repo. See: https://dev.azure.com/azur     19 e-sdk/internal/_build/results?buildId=3556850"
      codeql:
        compiled:
          enabled: false
          justificationForDisabling: "CodeQL times our pipelines out by running for 2+ hours before being force canceled."
      psscriptanalyzer:
        compiled: true
        break: true
      policy: M365

    stages: ${{ parameters.stages }}


================================================
FILE: eng/image.yml
================================================
# Default pool image selection. Set as variable so we can override at pipeline level

variables:
  - name: LINUXPOOL
    value: azsdk-pool
  - name: WINDOWSPOOL
    value: azsdk-pool
  - name: MACPOOL
    value: Azure Pipelines

  - name: LINUXVMIMAGE
    value: ubuntu-24.04
  - name: LINUXNEXTVMIMAGE
    value: ubuntu-24.04
  - name: WINDOWSVMIMAGE
    value: windows-2022
  - name: MACVMIMAGE
    value: macos-11

  # Values required for pool.os field in 1es pipeline templates
  - name: LINUXOS
    value: linux
  - name: WINDOWSOS
    value: windows
  - name: MACOS
    value: macOS


================================================
FILE: eng/publish-1es-artifact.yml
================================================
# This step is used to prevent duplication of artifact publishes when there is an issue that would prevent the overall success of the job.
# Ensuring that we only publish when successful (and two a differently named artifact otherwise) will allow easy retry on a build pipeline
# without running into the "cannot override artifact" failure when we finally do get a passing run.

# ArtifactName - The name of the artifact in the "successful" case.
# ArtifactPath - The path we will be publishing.
# CustomCondition - Used if there is additional logic necessary to prevent attempt of publish.
# SbomEnabled - Set whether to auto-inject 1es pipeline template sbom tasks

parameters:
  ArtifactName: ""
  ArtifactPath: ""
  CustomCondition: true
  SbomEnabled: true

steps:
  - pwsh: |
      if ($env:AGENT_JOBSTATUS -eq "Failed") {
        Write-Host "##vso[task.setvariable variable=PublishArtifactName;]${{ parameters.ArtifactName }}-FailedAttempt$(System.JobAttempt)"
      } else {
        Write-Host "##vso[task.setvariable variable=PublishArtifactName;]${{ parameters.ArtifactName }}"
      }
    condition: and(succeededOrFailed(), ${{ parameters.CustomCondition }})
    displayName: Set Artifact Name $(Agent.JobStatus)

  - task: 1ES.PublishPipelineArtifact@1
    condition: and(succeededOrFailed(), ${{ parameters.CustomCondition }})
    displayName: "Publish ${{ parameters.ArtifactName }} Artifacts"
    inputs:
      artifactName: "$(PublishArtifactName)"
      targetPath: "${{ parameters.ArtifactPath }}"
      sbomEnabled: ${{ parameters.SbomEnabled }}


================================================
FILE: eng/test-steps.yml
================================================
parameters:
  - name: ArtifactName
    type: string
    default: "drop"

steps:
  - task: UseDotNet@2
    inputs:
      version: 6.x
  - script: npm ci
    displayName: npm ci
  - script: npm run lint
    displayName: lint
  - script: npm run prettier
    displayName: prettier
  - script: npm test
    displayName: test
  - script: npm pack
    displayName: pack
  - task: CopyFiles@2
    displayName: "Copy Files to Staging"
    inputs:
      Contents: "*.tgz"
      TargetFolder: $(Build.ArtifactStagingDirectory)

  - template: /eng/publish-1es-artifact.yml
    parameters:
      ArtifactName: ${{ parameters.ArtifactName }}
      ArtifactPath: $(Build.ArtifactStagingDirectory)


================================================
FILE: eslint.config.js
================================================
// @ts-check

// This file contents based on:
// https://typescript-eslint.io/getting-started#step-2-configuration
// https://typescript-eslint.io/getting-started/typed-linting

// This file must be in CommonJS format ('require()') instead of ESModules ('import') due to how it is consumed
// by openapi-alps:
// https://github.com/Azure/openapi-diff/pull/335/files#r1649413983

const eslint = require("@eslint/js")
const tseslint = require("typescript-eslint")

module.exports = tseslint.config(
  eslint.configs.recommended,
  ...tseslint.configs.recommendedTypeChecked,
  {
    languageOptions: {
      parserOptions: {
        project: true,
        // Note: __dirname is coming CommonJS:
        // https://stackoverflow.com/questions/46745014/alternative-for-dirname-in-node-js-when-using-es6-modules
        // as linked from: https://typescript-eslint.io/getting-started/typed-linting
        tsconfigRootDir: __dirname
      }
    }
  },
  {
    // Based on https://eslint.org/docs/latest/use/configure/configuration-files#globally-ignoring-files-with-ignores
    ignores: ["**/dist", "eslint.config.js", "coverage/**"]
  },
  {
    rules: {
      // Rules disabled as part of migration from tslint
      // https://github.com/Azure/openapi-diff/pull/335
      "@typescript-eslint/no-explicit-any": "off",
      "@typescript-eslint/no-unnecessary-type-assertion": "off",
      "@typescript-eslint/no-unsafe-argument": "off",
      "@typescript-eslint/no-unsafe-assignment": "off",
      "@typescript-eslint/no-unsafe-call": "off",
      "@typescript-eslint/no-unsafe-member-access": "off",
      "@typescript-eslint/no-unsafe-return": "off",
      "@typescript-eslint/no-unused-vars": "off",
      "@typescript-eslint/no-var-requires": "off",
      "@typescript-eslint/restrict-template-expressions": "off",
      "no-constant-condition": "off",
      "no-useless-escape": "off",
      "prefer-const": "off",
      // New v10 recommended rule requiring "{ cause }" on re-thrown errors.  Disabled because
      // this project targets ES2017, and TypeScript lacks the ErrorOptions type at that target level.
      "preserve-caught-error": "off"
    }
  }
)


================================================
FILE: openapi-diff/OpenApiDiff.sln
================================================
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 15
VisualStudioVersion = 15.0.26217.2
MinimumVisualStudioVersion = 10.0.40219.1
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "OpenApiDiff", "src\core\OpenApiDiff\OpenApiDiff.csproj", "{BE85FEB6-C008-4202-8799-CFA9D292D0B6}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "OpenApiDiff.Core", "src\core\OpenApiDiff.Core\OpenApiDiff.Core.csproj", "{79280E61-2D1D-4864-90A2-7B675F82E9D8}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Core", "Core", "{F7D005C7-81E6-4840-BCDE-228210FB9204}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Modeler", "Modeler", "{86C8F97A-F0EC-4100-9596-9DE6A6578CB5}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AutoRest.Swagger", "src\modeler\AutoRest.Swagger\AutoRest.Swagger.csproj", "{73049F5C-8984-4182-B915-DF0DAA17837B}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AutoRest.Swagger.Tests", "src\modeler\AutoRest.Swagger.Tests\AutoRest.Swagger.Tests.csproj", "{0BE0CF3E-CA8A-43C4-BAF0-53E2454C06E2}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{3DE3DEDB-6C3B-45DE-A8CC-26A9F0F8AC78}"
	ProjectSection(SolutionItems) = preProject
		.travis.yml = .travis.yml
	EndProjectSection
EndProject
Global
	GlobalSection(SolutionConfigurationPlatforms) = preSolution
		Debug|Any CPU = Debug|Any CPU
		Debug|x64 = Debug|x64
		Debug|x86 = Debug|x86
		Release|Any CPU = Release|Any CPU
		Release|x64 = Release|x64
		Release|x86 = Release|x86
	EndGlobalSection
	GlobalSection(ProjectConfigurationPlatforms) = postSolution
		{BE85FEB6-C008-4202-8799-CFA9D292D0B6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{BE85FEB6-C008-4202-8799-CFA9D292D0B6}.Debug|Any CPU.Build.0 = Debug|Any CPU
		{BE85FEB6-C008-4202-8799-CFA9D292D0B6}.Debug|x64.ActiveCfg = Debug|Any CPU
		{BE85FEB6-C008-4202-8799-CFA9D292D0B6}.Debug|x64.Build.0 = Debug|Any CPU
		{BE85FEB6-C008-4202-8799-CFA9D292D0B6}.Debug|x86.ActiveCfg = Debug|Any CPU
		{BE85FEB6-C008-4202-8799-CFA9D292D0B6}.Debug|x86.Build.0 = Debug|Any CPU
		{BE85FEB6-C008-4202-8799-CFA9D292D0B6}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{BE85FEB6-C008-4202-8799-CFA9D292D0B6}.Release|Any CPU.Build.0 = Release|Any CPU
		{BE85FEB6-C008-4202-8799-CFA9D292D0B6}.Release|x64.ActiveCfg = Release|Any CPU
		{BE85FEB6-C008-4202-8799-CFA9D292D0B6}.Release|x64.Build.0 = Release|Any CPU
		{BE85FEB6-C008-4202-8799-CFA9D292D0B6}.Release|x86.ActiveCfg = Release|Any CPU
		{BE85FEB6-C008-4202-8799-CFA9D292D0B6}.Release|x86.Build.0 = Release|Any CPU
		{79280E61-2D1D-4864-90A2-7B675F82E9D8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{79280E61-2D1D-4864-90A2-7B675F82E9D8}.Debug|Any CPU.Build.0 = Debug|Any CPU
		{79280E61-2D1D-4864-90A2-7B675F82E9D8}.Debug|x64.ActiveCfg = Debug|Any CPU
		{79280E61-2D1D-4864-90A2-7B675F82E9D8}.Debug|x64.Build.0 = Debug|Any CPU
		{79280E61-2D1D-4864-90A2-7B675F82E9D8}.Debug|x86.ActiveCfg = Debug|Any CPU
		{79280E61-2D1D-4864-90A2-7B675F82E9D8}.Debug|x86.Build.0 = Debug|Any CPU
		{79280E61-2D1D-4864-90A2-7B675F82E9D8}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{79280E61-2D1D-4864-90A2-7B675F82E9D8}.Release|Any CPU.Build.0 = Release|Any CPU
		{79280E61-2D1D-4864-90A2-7B675F82E9D8}.Release|x64.ActiveCfg = Release|Any CPU
		{79280E61-2D1D-4864-90A2-7B675F82E9D8}.Release|x64.Build.0 = Release|Any CPU
		{79280E61-2D1D-4864-90A2-7B675F82E9D8}.Release|x86.ActiveCfg = Release|Any CPU
		{79280E61-2D1D-4864-90A2-7B675F82E9D8}.Release|x86.Build.0 = Release|Any CPU
		{73049F5C-8984-4182-B915-DF0DAA17837B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{73049F5C-8984-4182-B915-DF0DAA17837B}.Debug|Any CPU.Build.0 = Debug|Any CPU
		{73049F5C-8984-4182-B915-DF0DAA17837B}.Debug|x64.ActiveCfg = Debug|Any CPU
		{73049F5C-8984-4182-B915-DF0DAA17837B}.Debug|x64.Build.0 = Debug|Any CPU
		{73049F5C-8984-4182-B915-DF0DAA17837B}.Debug|x86.ActiveCfg = Debug|Any CPU
		{73049F5C-8984-4182-B915-DF0DAA17837B}.Debug|x86.Build.0 = Debug|Any CPU
		{73049F5C-8984-4182-B915-DF0DAA17837B}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{73049F5C-8984-4182-B915-DF0DAA17837B}.Release|Any CPU.Build.0 = Release|Any CPU
		{73049F5C-8984-4182-B915-DF0DAA17837B}.Release|x64.ActiveCfg = Release|Any CPU
		{73049F5C-8984-4182-B915-DF0DAA17837B}.Release|x64.Build.0 = Release|Any CPU
		{73049F5C-8984-4182-B915-DF0DAA17837B}.Release|x86.ActiveCfg = Release|Any CPU
		{73049F5C-8984-4182-B915-DF0DAA17837B}.Release|x86.Build.0 = Release|Any CPU
		{0BE0CF3E-CA8A-43C4-BAF0-53E2454C06E2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
		{0BE0CF3E-CA8A-43C4-BAF0-53E2454C06E2}.Debug|Any CPU.Build.0 = Debug|Any CPU
		{0BE0CF3E-CA8A-43C4-BAF0-53E2454C06E2}.Debug|x64.ActiveCfg = Debug|Any CPU
		{0BE0CF3E-CA8A-43C4-BAF0-53E2454C06E2}.Debug|x64.Build.0 = Debug|Any CPU
		{0BE0CF3E-CA8A-43C4-BAF0-53E2454C06E2}.Debug|x86.ActiveCfg = Debug|Any CPU
		{0BE0CF3E-CA8A-43C4-BAF0-53E2454C06E2}.Debug|x86.Build.0 = Debug|Any CPU
		{0BE0CF3E-CA8A-43C4-BAF0-53E2454C06E2}.Release|Any CPU.ActiveCfg = Release|Any CPU
		{0BE0CF3E-CA8A-43C4-BAF0-53E2454C06E2}.Release|Any CPU.Build.0 = Release|Any CPU
		{0BE0CF3E-CA8A-43C4-BAF0-53E2454C06E2}.Release|x64.ActiveCfg = Release|Any CPU
		{0BE0CF3E-CA8A-43C4-BAF0-53E2454C06E2}.Release|x64.Build.0 = Release|Any CPU
		{0BE0CF3E-CA8A-43C4-BAF0-53E2454C06E2}.Release|x86.ActiveCfg = Release|Any CPU
		{0BE0CF3E-CA8A-43C4-BAF0-53E2454C06E2}.Release|x86.Build.0 = Release|Any CPU
	EndGlobalSection
	GlobalSection(SolutionProperties) = preSolution
		HideSolutionNode = FALSE
	EndGlobalSection
	GlobalSection(NestedProjects) = preSolution
		{BE85FEB6-C008-4202-8799-CFA9D292D0B6} = {F7D005C7-81E6-4840-BCDE-228210FB9204}
		{79280E61-2D1D-4864-90A2-7B675F82E9D8} = {F7D005C7-81E6-4840-BCDE-228210FB9204}
		{73049F5C-8984-4182-B915-DF0DAA17837B} = {86C8F97A-F0EC-4100-9596-9DE6A6578CB5}
		{0BE0CF3E-CA8A-43C4-BAF0-53E2454C06E2} = {86C8F97A-F0EC-4100-9596-9DE6A6578CB5}
	EndGlobalSection
EndGlobal


================================================
FILE: openapi-diff/src/common/common-package-references.proj
================================================
<Project ToolsVersion="15.0">


  <ItemGroup>
    <!-- <PackageReference Include="NETStandard.Library" Version="1.6.1" /> -->
  </ItemGroup>
</Project>

================================================
FILE: openapi-diff/src/common/common.proj
================================================
<Project ToolsVersion="15.0">
  <PropertyGroup Condition="$(Common) == '*Undefined*' OR $(Common) == '' " >
    <VersionPrefix>1.0.1</VersionPrefix>
    <Common>$(MsBuildThisFileDirectory)</Common>
    <GenerateFullPaths>true</GenerateFullPaths>
    <!-- <SolutionDir>$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory),AutoRest.sln))/</SolutionDir> -->
    <Common>$(MsBuildThisFileDirectory)</Common>
    <SolutionDir>$(Common)../../</SolutionDir>
  </PropertyGroup>

  <Target Name="Nuke" AfterTargets="clean" >
    <Delete Files="$(BaseOutputPath)**;$(BaseIntermediateOutputPath)razor/**;$(BaseIntermediateOutputPath)Debug/**;$(BaseIntermediateOutputPath)Release/**" />
    <RemoveDir Directories="$(BaseOutputPath);$(BaseIntermediateOutputPath)/Debug;$(BaseIntermediateOutputPath)/Release" />
  </Target>
</Project>

================================================
FILE: openapi-diff/src/common/copy-resource-to-output.proj
================================================
<Project ToolsVersion="15.0">
  <ItemGroup>
    <Content Include="$(MSBuildProjectDirectory)\Resource\**">
      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
    </Content>
  </ItemGroup>
</Project>

================================================
FILE: openapi-diff/src/common/enumerate-inputs.proj
================================================
<Project ToolsVersion="4.0"  >

</Project>  

================================================
FILE: openapi-diff/src/common/package-info.proj
================================================
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <Copyright>Copyright (c) Microsoft Corporation</Copyright>

    <PackageIconUrl>http://go.microsoft.com/fwlink/?LinkID=288890</PackageIconUrl>
    <PackageProjectUrl>https://github.com/Azure/AutoRest</PackageProjectUrl>
    <PackageLicenseUrl>https://raw.githubusercontent.com/Microsoft/dotnet/master/LICENSE</PackageLicenseUrl>
    <PackageRequireLicenseAcceptance>true</PackageRequireLicenseAcceptance>
    
    <DelaySign Condition="$(Configuration) == 'Release'">true</DelaySign>
    <AssemblyOriginatorKeyFile Condition="$(Configuration) == 'Release'">$(SolutionDir)/tools/MSSharedLibKey.snk</AssemblyOriginatorKeyFile>
    <SignAssembly Condition="$(Configuration) == 'Release'">true</SignAssembly>
  </PropertyGroup>
</Project>

================================================
FILE: openapi-diff/src/common/project-library.proj
================================================
<Project ToolsVersion="15.0">
  <PropertyGroup>
    <TargetFramework>netstandard2.0</TargetFramework>
  </PropertyGroup>
</Project>

================================================
FILE: openapi-diff/src/common/project-xunittest.proj
================================================
<Project ToolsVersion="15.0">
  <ItemGroup>
    <PackageReference Include="Microsoft.Extensions.DependencyModel" Version="1.1.2" />
    <PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.3.0" />
    <PackageReference Include="xunit.runner.visualstudio" Version="2.3.0" />
    <PackageReference Include="xunit" Version="2.3.0" />
  </ItemGroup>
</Project>

================================================
FILE: openapi-diff/src/core/OpenApiDiff/HelpExample.cs
================================================
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License. See License.txt in the project root for license information.

namespace OpenApiDiff
{
    /// <summary>
    /// Structure that represents an example in generated help.
    /// </summary>
    public struct HelpExample
    {
        /// <summary>
        /// Gets or sets example plain text description.
        /// </summary>
        public string Description { get; set; }

        /// <summary>
        /// Gets or sets example code.
        /// </summary>
        public string Example { get; set; }
    }
}


================================================
FILE: openapi-diff/src/core/OpenApiDiff/HelpGenerator.cs
================================================
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License. See License.txt in the project root for license information.

using OpenApiDiff.Core;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Text.RegularExpressions;

namespace OpenApiDiff
{
    /// <summary>
    /// Helper class for dynamically generating CLI help from Settings.
    /// </summary>
    public static class HelpGenerator
    {
        private static readonly List<HelpExample> Examples = new List<HelpExample>
        {
            new HelpExample
            {
                Description = "Compare old-swagger.json and new-swagger.json for breaking changes.",
                Example = "dotnet OpenApiDiff.dll -old old-swagger.json -new new-swagger.json"
            },
            new HelpExample
            {
                Description = "Compare old-swagger.json and new-swagger.json for breaking changes with JSON output",
                Example = "dotnet OpenApiDiff.dll -old old-swagger.json -new new-swagger.json -JsonValidationMessages"
            }
        };


        /// <summary>
        /// Generates help string based on the passed in template.
        /// <para>
        /// The following keywords are supported:
        ///   $version$ - version of AutoRest Core
        ///   $syntax$ - replaced with the usage syntax
        ///   $parameters-start$...$parameters-end$ - contains a template for a parameters
        ///   $parameter$ - parameter name  
        ///   $parameter-desc$ - parameter documentation
        ///   $examples-start$...$examples-end$ - contains a template for an example
        ///   $example-desc$ - example description
        ///   $example$ - example code
        /// </para>
        /// </summary>
        /// <example>
        ///    Copyright (C) Microsoft Corporation. All rights reserved.
        ///    
        ///    Syntax         : $syntax$
        ///    
        ///    Parameters     :
        ///    $parameters-start$
        ///    -$parameter$ : $parameter-desc$
        ///    $parameters-end$
        ///    
        ///    Examples       :
        ///    
        ///    $examples-start$
        ///    $example-desc$
        ///    >$example$
        ///    $examples-end$
        /// </example>
        /// <param name="template">Template to use.</param>
        /// <param name="settings">Settings to use.</param>
        /// <returns>Generated help.</returns>
        public static string Generate(string template, Settings settings)
        {
            if (String.IsNullOrEmpty(template))
            {
                throw new ArgumentNullException("template");
            }

            // Reflect over properties in Settings to get documentation content
            var parameters = new List<Tuple<string, SettingsInfoAttribute>>();
            foreach (PropertyInfo property in typeof(Settings).GetProperties())
            {
                var doc = property.GetCustomAttributes<SettingsInfoAttribute>().FirstOrDefault();

                if (doc != null)
                {
                    parameters.Add(new Tuple<string, SettingsInfoAttribute>(property.Name, doc));
                }
            }

            // Generate usage syntax
            var syntaxSection = new StringBuilder("dotnet OpenApiDiff.dll ");
            foreach (var parameter in parameters.OrderBy(t => t.Item1).OrderByDescending(t => t.Item2.IsRequired))
            {
                if (parameter.Item2.IsRequired)
                {
                    syntaxSection.AppendFormat("-{0} <value> ", parameter.Item1);
                }
                else
                {
                    syntaxSection.AppendFormat("[-{0} <value>] ", parameter.Item1);
                }
            }

            // Generate parameters section
            var parametersSection = new StringBuilder();
            const string parametersPattern = @"\$parameters-start\$(.+)\$parameters-end\$";
            var parameterTemplate = Regex.Match(template, parametersPattern, RegexOptions.Singleline).Groups[1].Value.Trim();

            GetParametersInfo(typeof(Settings).GetProperties().OrderBy(p => p.Name), parametersSection, parameterTemplate,
                              "$parameter$", "$parameter-desc$");

            // Generate examples section.
            var examplesSection = new StringBuilder();
            const string examplesPattern = @"\$examples-start\$(.+)\$examples-end\$";
            var exampleTemplate = Regex.Match(template, examplesPattern, RegexOptions.Singleline).Groups[1].Value.Trim() + Environment.NewLine;
            foreach (HelpExample example in Examples)
            {
                examplesSection.AppendLine("  " + exampleTemplate.
                    Replace("$example$", example.Example).
                    Replace("$example-desc$", example.Description));
            }

            // Process template replacing all major sections.
            template = template.
                Replace("$version$", "0.1.0").
                Replace("$syntax$", syntaxSection.ToString());

            template = Regex.Replace(template, parametersPattern, parametersSection.ToString(), RegexOptions.Singleline);
            template = Regex.Replace(template, examplesPattern, examplesSection.ToString(), RegexOptions.Singleline);

            return template;
        }

        private static void GetParametersInfo(IEnumerable<PropertyInfo> props, StringBuilder templateSection,
                                              string template, string propNameAnchor, string docAnchor)
        {
            foreach (PropertyInfo property in props)
            {
                SettingsInfoAttribute doc = (SettingsInfoAttribute)property.GetCustomAttributes(
                    typeof(SettingsInfoAttribute)).FirstOrDefault();

                if (doc != null)
                {
                    string documentation = doc.Documentation;
                    string aliases = string.Join(", ",
                        property.GetCustomAttributes<SettingsAliasAttribute>().Select(a => "-" + a.Alias));
                    if (!string.IsNullOrWhiteSpace(aliases))
                    {
                        documentation += " Aliases: " + aliases;
                    }

                    templateSection.AppendLine("  " + template.
                        Replace(propNameAnchor, property.Name).
                        Replace(docAnchor, documentation));
                }
            }
        }
    }
}

================================================
FILE: openapi-diff/src/core/OpenApiDiff/OpenApiDiff.csproj
================================================
<Project Sdk="Microsoft.NET.Sdk" ToolsVersion="15.0">
  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), common/common.proj ))/common/common.proj" />
  <Import Project="$(common)common-package-references.proj" />
  <Import Project="$(common)package-info.proj" />

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp6.0</TargetFramework>
    <AssemblyName>OpenApiDiff</AssemblyName>
    <PackageTags>Microsoft OpenApiDiff</PackageTags>
    <Version>0.1.0</Version>
    <Authors>Microsoft Corporation</Authors>
    <Company>Microsoft Corporation</Company>
    <Description>Compares two openapi documents for breaking change detection</Description>
    <PackageProjectUrl>https://github.com/Azure/openapi-diff</PackageProjectUrl>
    <GeneratePackageOnBuild>True</GeneratePackageOnBuild>
    <PackageRequireLicenseAcceptance>False</PackageRequireLicenseAcceptance>
    <LangVersion>7.3</LangVersion>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
  </ItemGroup>
  <ItemGroup>
    <ProjectReference Include="$(SolutionDir)src/modeler/AutoRest.Swagger/AutoRest.Swagger.csproj" />
    <ProjectReference Include="..\OpenApiDiff.Core\OpenApiDiff.Core.csproj" />
  </ItemGroup>
  <ItemGroup>
    <Compile Update="Properties\Resources.Designer.cs">
      <DesignTime>True</DesignTime>
      <AutoGen>True</AutoGen>
      <DependentUpon>Resources.resx</DependentUpon>
    </Compile>
  </ItemGroup>
  <ItemGroup>
    <EmbeddedResource Update="Properties\Resources.resx">
      <Generator>ResXFileCodeGenerator</Generator>
      <LastGenOutput>Resources.Designer.cs</LastGenOutput>
    </EmbeddedResource>
  </ItemGroup>
  <Target Name="CleanBuildDlls" BeforeTargets="Build">
      <Message Importance="High" Text="Deleting the build dlls from Node library..." />
      <Microsoft.Build.Tasks.RemoveDir Directories="$(SolutionDir)../dlls/." />
  </Target>
  <Target Name="CopyBuildDlls" AfterTargets="Build">
      <Message Importance="High" Text="Copying the build dlls into Node library..." />
        <ItemGroup>
          <Files Include="$(OutDir)/**/*" />
        </ItemGroup>
        <Microsoft.Build.Tasks.Copy SourceFiles="@(Files)" DestinationFolder="$(SolutionDir)../dlls/%(RecursiveDir)" SkipUnchangedFiles="true" OverwriteReadOnlyFiles="true" Retries="3" RetryDelayMilliseconds="300" />
  </Target>
    <Target Name="CleanPublishDlls" BeforeTargets="Publish">
      <Message Importance="High" Text="Deleting the publish dlls from Node library..." />
      <Microsoft.Build.Tasks.RemoveDir Directories="$(SolutionDir)../dlls/." />
  </Target>
  <Target Name="CopyPublishDlls" AfterTargets="Publish">
      <Message Importance="High" Text="Copying the publish dlls into Node library..." />
        <ItemGroup>
          <Files Include="$(OutDir)/publish/**/*" />
        </ItemGroup>
        <Microsoft.Build.Tasks.Copy SourceFiles="@(Files)" DestinationFolder="$(SolutionDir)../dlls/%(RecursiveDir)" SkipUnchangedFiles="true" OverwriteReadOnlyFiles="true" Retries="3" RetryDelayMilliseconds="300" />
  </Target>
</Project>


================================================
FILE: openapi-diff/src/core/OpenApiDiff/Program.cs
================================================
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License. See License.txt in the project root for license information.

using AutoRest.Swagger;
using System;
using OpenApiDiff.Core;
using OpenApiDiff.Properties;
using System.IO;
using System.Linq;

namespace OpenApiDiff
{
    internal class Program
    {
        private static int Main(string[] args)
        {
            var settings = Settings.GetInstance(args);

            if (settings.ShowHelp)
            {
                Console.WriteLine(HelpGenerator.Generate(Resources.HelpTextTemplate, settings));
                return 0;
            }

            try
            {
                settings.Validate();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                return 1;
            }

            var modeler = new SwaggerModeler();

            var swaggerPrev = File.ReadAllText(settings.OldSpec);
            var swaggerNew = File.ReadAllText(settings.NewSpec);

            var messages = modeler.Compare(
                settings.OldSpec,
                swaggerPrev, 
                settings.NewSpec, 
                swaggerNew,
                settings
            );

            Console.WriteLine("[");
            Console.WriteLine(string.Join(",\n", messages.Select(v => v.GetValidationMessagesAsJson())));
            Console.WriteLine("]");

            return 0;
        }
    }
}

================================================
FILE: openapi-diff/src/core/OpenApiDiff/Properties/Resources.Designer.cs
================================================
//------------------------------------------------------------------------------
// <auto-generated>
//     This code was generated by a tool.
//     Runtime Version:4.0.30319.42000
//
//     Changes to this file may cause incorrect behavior and will be lost if
//     the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------

namespace OpenApiDiff.Properties {
    using System;
    using System.Reflection;
    
    
    /// <summary>
    ///   A strongly-typed resource class, for looking up localized strings, etc.
    /// </summary>
    // This class was auto-generated by the StronglyTypedResourceBuilder
    // class via a tool like ResGen or Visual Studio.
    // To add or remove a member, edit your .ResX file then rerun ResGen
    // with the /str option, or rebuild your VS project.
    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
    internal class Resources {
        
        private static global::System.Resources.ResourceManager resourceMan;
        
        private static global::System.Globalization.CultureInfo resourceCulture;
        
        [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
        internal Resources() {
        }
        
        /// <summary>
        ///   Returns the cached ResourceManager instance used by this class.
        /// </summary>
        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
        internal static global::System.Resources.ResourceManager ResourceManager {
            get {
                if (object.ReferenceEquals(resourceMan, null)) {
                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("OpenApiDiff.Properties.Resources", typeof(Resources).GetTypeInfo().Assembly);
                    resourceMan = temp;
                }
                return resourceMan;
            }
        }
        
        /// <summary>
        ///   Overrides the current thread's CurrentUICulture property for all
        ///   resource lookups using this strongly typed resource class.
        /// </summary>
        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
        internal static global::System.Globalization.CultureInfo Culture {
            get {
                return resourceCulture;
            }
            set {
                resourceCulture = value;
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to error: {0}.
        /// </summary>
        internal static string ConsoleErrorMessage {
            get {
                return ResourceManager.GetString("ConsoleErrorMessage", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to \t{0}.
        /// </summary>
        internal static string ConsoleErrorStackTrace {
            get {
                return ResourceManager.GetString("ConsoleErrorStackTrace", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to Finished generating {0} code for {1}..
        /// </summary>
        internal static string GenerationComplete {
            get {
                return ResourceManager.GetString("GenerationComplete", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to Code generation failed..
        /// </summary>
        internal static string GenerationFailed {
            get {
                return ResourceManager.GetString("GenerationFailed", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to #AutoRest Command Line Interface Documentation
        ///
        ///##Syntax
        ///```bash
        ///$syntax$
        ///```
        ///
        ///##Parameters
        ///$parameters-start$
        ///**-$parameter$** $parameter-desc$
        ///
        ///$parameters-end$
        ///
        ///##Code Generators
        ///$generators-start$
        ///**-$generator$** $generator-desc$
        /// ##Parameters
        /// $generator-parameters-start$
        ///  **-$generator-parameters-name$** $generator-parameters-desc$
        ///
        /// $generator-parameters-end$
        ///$generators-end$
        ///
        ///##Examples
        ///$examples-start$
        ///- $example-desc$
        ///```bash
        ///$example$
        ///```
        ///
        ///$examples-end$.
        /// </summary>
        internal static string HelpMarkdownTemplate {
            get {
                return ResourceManager.GetString("HelpMarkdownTemplate", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to Copyright (C) Microsoft Corporation. All rights reserved.
        ///
        ///Usage: $syntax$
        ///
        ///Parameters:
        ///$parameters-start$
        ///  -$parameter$: $parameter-desc$
        ///$parameters-end$
        ///
        ///Examples:
        ///$examples-start$
        ///  $example-desc$
        ///  &gt;$example$
        ///
        ///$examples-end$.
        /// </summary>
        internal static string HelpTextTemplate {
            get {
                return ResourceManager.GetString("HelpTextTemplate", resourceCulture);
            }
        }
    }
}


================================================
FILE: openapi-diff/src/core/OpenApiDiff/Properties/Resources.resx
================================================
<?xml version="1.0" encoding="utf-8"?>
<root>
  <!-- 
    Microsoft ResX Schema 
    
    Version 2.0
    
    The primary goals of this format is to allow a simple XML format 
    that is mostly human readable. The generation and parsing of the 
    various data types are done through the TypeConverter classes 
    associated with the data types.
    
    Example:
    
    ... ado.net/XML headers & schema ...
    <resheader name="resmimetype">text/microsoft-resx</resheader>
    <resheader name="version">2.0</resheader>
    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
        <value>[base64 mime encoded serialized .NET Framework object]</value>
    </data>
    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
        <comment>This is a comment</comment>
    </data>
                
    There are any number of "resheader" rows that contain simple 
    name/value pairs.
    
    Each data row contains a name, and value. The row also contains a 
    type or mimetype. Type corresponds to a .NET class that support 
    text/value conversion through the TypeConverter architecture. 
    Classes that don't support this are serialized and stored with the 
    mimetype set.
    
    The mimetype is used for serialized objects, and tells the 
    ResXResourceReader how to depersist the object. This is currently not 
    extensible. For a given mimetype the value must be set accordingly:
    
    Note - application/x-microsoft.net.object.binary.base64 is the format 
    that the ResXResourceWriter will generate, however the reader can 
    read any of the formats listed below.
    
    mimetype: application/x-microsoft.net.object.binary.base64
    value   : The object must be serialized with 
            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
            : and then encoded with base64 encoding.
    
    mimetype: application/x-microsoft.net.object.soap.base64
    value   : The object must be serialized with 
            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
            : and then encoded with base64 encoding.

    mimetype: application/x-microsoft.net.object.bytearray.base64
    value   : The object must be serialized into a byte array 
            : using a System.ComponentModel.TypeConverter
            : and then encoded with base64 encoding.
    -->
  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
    <xsd:element name="root" msdata:IsDataSet="true">
      <xsd:complexType>
        <xsd:choice maxOccurs="unbounded">
          <xsd:element name="metadata">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" />
              </xsd:sequence>
              <xsd:attribute name="name" use="required" type="xsd:string" />
              <xsd:attribute name="type" type="xsd:string" />
              <xsd:attribute name="mimetype" type="xsd:string" />
              <xsd:attribute ref="xml:space" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="assembly">
            <xsd:complexType>
              <xsd:attribute name="alias" type="xsd:string" />
              <xsd:attribute name="name" type="xsd:string" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="data">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
              </xsd:sequence>
              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
              <xsd:attribute ref="xml:space" />
            </xsd:complexType>
          </xsd:element>
          <xsd:element name="resheader">
            <xsd:complexType>
              <xsd:sequence>
                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
              </xsd:sequence>
              <xsd:attribute name="name" type="xsd:string" use="required" />
            </xsd:complexType>
          </xsd:element>
        </xsd:choice>
      </xsd:complexType>
    </xsd:element>
  </xsd:schema>
  <resheader name="resmimetype">
    <value>text/microsoft-resx</value>
  </resheader>
  <resheader name="version">
    <value>2.0</value>
  </resheader>
  <resheader name="reader">
    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </resheader>
  <resheader name="writer">
    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
  </resheader>
  <data name="ConsoleErrorMessage" xml:space="preserve">
    <value>error: {0}</value>
  </data>
  <data name="ConsoleErrorStackTrace" xml:space="preserve">
    <value>\t{0}</value>
  </data>
  <data name="GenerationComplete" xml:space="preserve">
    <value>Finished generating {0} code for {1}.</value>
  </data>
  <data name="GenerationFailed" xml:space="preserve">
    <value>Code generation failed.</value>
  </data>
  <data name="HelpMarkdownTemplate" xml:space="preserve">
    <value>#AutoRest Command Line Interface Documentation

##Syntax
```bash
$syntax$
```

##Parameters
$parameters-start$
**-$parameter$** $parameter-desc$

$parameters-end$

##Code Generators
$generators-start$
**-$generator$** $generator-desc$
 ##Parameters
 $generator-parameters-start$
  **-$generator-parameters-name$** $generator-parameters-desc$

 $generator-parameters-end$
$generators-end$

##Examples
$examples-start$
- $example-desc$
```bash
$example$
```

$examples-end$</value>
  </data>
  <data name="HelpTextTemplate" xml:space="preserve">
    <value>Copyright (C) Microsoft Corporation. All rights reserved.

Usage: $syntax$

Parameters:
$parameters-start$
  -$parameter$: $parameter-desc$
$parameters-end$

Examples:
$examples-start$
  $example-desc$
  &gt;$example$

$examples-end$</value>
  </data>
</root>

================================================
FILE: openapi-diff/src/core/OpenApiDiff.Core/JsonDocument.cs
================================================
using Newtonsoft.Json.Linq;

namespace OpenApiDiff.Core
{
    /// <summary>
    /// An interface for untyped parsed JSON.
    /// </summary>
    public interface IJsonDocument
    {
        JToken Token { get; }

        string FileName { get; }
    }

    /// <summary>
    /// A representation of parsed JSON document.
    /// </summary>
    /// <typeparam name="T"></typeparam>
    public sealed class JsonDocument<T>: IJsonDocument
    {
        /// <summary>
        /// Untyped raw parsed JSON. The Token also includes information about 
        /// file location of each item.
        /// </summary>
        public JToken Token { get; }

        /// <summary>
        /// Representation of JSON as `T` type.
        /// </summary>
        public T Typed { get; }

        /// <summary>
        /// A JSON source file name.
        /// </summary>
        public string FileName { get; }

        public JsonDocument(JToken token, T typed, string fileName)
        {
            Token = token;
            Typed = typed;
            FileName = fileName;
        }
    }

    public static class JsonDocument
    {
        /// <summary>
        /// Creates a `JsonDocument` object. It's a syntax sugar for `new JsonDocument`.
        /// </summary>
        /// <typeparam name="T">Deserialization type.</typeparam>
        /// <param name="token">Raw JSON object. The object includes information about JSON token locations</param>
        /// <param name="typed">Representation of the JSON as `T` type.</param>
        /// <param name="fileName">A JSON source file name.</param>
        /// <returns></returns>
        public static JsonDocument<T> ToJsonDocument<T>(this JToken token, T typed, string fileName)
            => new JsonDocument<T>(token, typed, fileName);
    }
}


================================================
FILE: openapi-diff/src/core/OpenApiDiff.Core/Logging/LogMessageSeverity.cs
================================================
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License. See License.txt in the project root for license information.

namespace OpenApiDiff.Core.Logging
{
    /// <summary>
    /// severity of the log message.
    /// </summary>
    public enum Category
    {
        Info,
        Warning,
        Error
    }
}

================================================
FILE: openapi-diff/src/core/OpenApiDiff.Core/Logging/ObjectPath.cs
================================================
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License. See License.txt in the project root for license information.

using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text.RegularExpressions;

namespace OpenApiDiff.Core.Logging
{
    /// <summary>
    /// Represents a path into an object.
    /// </summary>
    public class ObjectPath
    {
        public static ObjectPath Empty => new ObjectPath(Enumerable.Empty<Func<JToken, string>>());

        private ObjectPath(IEnumerable<Func<JToken, string>> path)
        {
            Path = path;
        }

        private ObjectPath Append(Func<JToken, string> f) => new ObjectPath(Path.Concat(new[] { f }));

        public ObjectPath AppendProperty(string property) => Append((_) => property);

        public ObjectPath AppendItemByName(string value) => Append(t =>
        {
            var list = t
                ?.Select((v, i) => (v, i))
                ?.Where(vi => vi.v?["name"]?.Value<string>() == value)
                ?.ToList();
            return list == null || list.Count == 0 ? null : list[0].i.ToString();
        });

        /// <summary>
        /// This's the OpenAPI path name. To use it as an id we need to remove all parameter names.
        /// For example, "/a/{a}/" and "/a/{b}" are the same paths.
        /// </summary>
        /// <param name="path"></param>
        /// <returns></returns>
        public static string OpenApiPathName(string path)
            => Regex.Replace(path, @"\{\w*\}", @"{}");

        /// <summary>
        /// Adding an Open API path.
        /// 
        /// For example, if the `opepApiPath` is "/subscription/{a}/{b}" then "a" and "b" parameters 
        /// will be removed from a search.
        /// </summary>
        /// <param name="openApiPath"></param>
        /// <returns></returns>
        public ObjectPath AppendPathProperty(string openApiPath) {
            var noParameters = OpenApiPathName(openApiPath);
            return Append(t =>
                (t as JObject)
                    ?.Properties()
                    ?.FirstOrDefault(p => OpenApiPathName(p.Name) == noParameters)
                    ?.Name
            );
        }

        public IEnumerable<Func<JToken, string>> Path { get; }

        private static ObjectPath ParseRef(string s)
            => new ObjectPath(s
                .Split('/')
                .Where(v => v != "#")
                .Select<string, Func<JToken, string>>(v => _ => v.Replace("~1", "/").Replace("~0", "~"))
            );

        private static JToken FromObject(JObject o, string name)
        {
            if (name == null)
            {
                return null;
            }
            
            var @ref = o["$ref"];
            
            // Handle $ref resolution based on its type
            if (@ref != null && @ref.Type == JTokenType.String)
            {
                // Case 1: $ref is a string reference (e.g., "#/definitions/FieldType")
                // Resolve the reference by parsing the path and following it to the target
                var unrefed = ParseRef(@ref.Value<string>()).CompletePath(o.Root).Last().token;
                return unrefed[name];
            }
            else
            {
                // Case 2: $ref is not a string (e.g., a JSON object defining a schema)
                // or $ref doesn't exist - use the current object directly
                return o[name];
            }
        }

        private static IEnumerable<(JToken token, string name)> CompletePath(IEnumerable<Func<JToken, string>> path, JToken token)
            => new[] { (token, "#") }
                .Concat(path.Select(v => {
                    var name = v(token);
                    token =
                        token is JArray a ? int.TryParse(name, out var i) ? a[i] : null :
                        token is JObject o ? FromObject(o, name) :
                        null;
                    return (token, name);
                }));

        /// <summary>
        /// Returns a sequence of property names, including the "#" string.
        /// </summary>
        /// <param name="t"></param>
        /// <returns></returns>
        public IEnumerable<(JToken token, string name)> CompletePath(JToken t)
            => CompletePath(Path, t);

        public static string FileNameNorm(string fileName) 
            => fileName.Replace("\\", "/");

        // https://tools.ietf.org/html/draft-ietf-appsawg-json-pointer-04
        public string JsonPointer(IJsonDocument t)
        {
            var result = CompletePath(t.Token)
                .Select(v => v.name?.Replace("~", "~0")?.Replace("/", "~1"))
                .Aggregate((a, b) => a == null || b == null ? null : a + "/" + b);
            return result == null ? null : FileNameNorm(t.FileName) + result;
        }

        public ObjectPath AppendExpression(Func<JToken, string> func)
            => Append(func);
    }
}


================================================
FILE: openapi-diff/src/core/OpenApiDiff.Core/OpenApiDiff.Core.csproj
================================================
<Project Sdk="Microsoft.NET.Sdk" ToolsVersion="15.0">
  <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), common/common.proj ))/common/common.proj" />
  <Import Project="$(common)common-package-references.proj" />
  <Import Project="$(common)project-library.proj" />
  <Import Project="$(common)package-info.proj" />

  <PropertyGroup>
    <AssemblyName>OpenApiDiff.Core</AssemblyName>
    <PackageTags>Microsoft AutoRest</PackageTags>
    <LangVersion>7.3</LangVersion>
  </PropertyGroup>

  <ItemGroup>
    <Compile Remove="Extensibility\**" />
    <EmbeddedResource Remove="Extensibility\**" />
    <None Remove="Extensibility\**" />
  </ItemGroup>

  <ItemGroup>
    <PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
    <PackageReference Include="System.Net.Http" Version="4.3.4" />
    <PackageReference Include="System.Reflection.TypeExtensions" Version="4.3.0" />
    <PackageReference Include="YamlDotNet.Signed" Version="5.0.0" />
  </ItemGroup>

  <ItemGroup>
    <Compile Update="Properties\Resources.Designer.cs">
      <DesignTime>True</DesignTime>
      <AutoGen>True</AutoGen>
      <DependentUpon>Resources.resx</DependentUpon>
    </Compile>
  </ItemGroup>
  <ItemGroup>
    <EmbeddedResource Update="Properties\Resources.resx">
      <Generator>PublicResXFileCodeGenerator</Generator>
      <LastGenOutput>Resources.Designer.cs</LastGenOutput>
    </EmbeddedResource>
  </ItemGroup>
</Project>

================================================
FILE: openapi-diff/src/core/OpenApiDiff.Core/Properties/Resources.Designer.cs
================================================
//------------------------------------------------------------------------------
// <auto-generated>
//     This code was generated by a tool.
//     Runtime Version:4.0.30319.42000
//
//     Changes to this file may cause incorrect behavior and will be lost if
//     the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------

namespace OpenApiDiff.Core.Properties {
    using System;
    using System.Reflection;
    
    
    /// <summary>
    ///   A strongly-typed resource class, for looking up localized strings, etc.
    /// </summary>
    // This class was auto-generated by the StronglyTypedResourceBuilder
    // class via a tool like ResGen or Visual Studio.
    // To add or remove a member, edit your .ResX file then rerun ResGen
    // with the /str option, or rebuild your VS project.
    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
    public class Resources {
        
        private static global::System.Resources.ResourceManager resourceMan;
        
        private static global::System.Globalization.CultureInfo resourceCulture;
        
        [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
        internal Resources() {
        }
        
        /// <summary>
        ///   Returns the cached ResourceManager instance used by this class.
        /// </summary>
        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
        public static global::System.Resources.ResourceManager ResourceManager {
            get {
                if (object.ReferenceEquals(resourceMan, null)) {
                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("OpenApiDiff.Core.Properties.Resources", typeof(Resources).GetTypeInfo().Assembly);
                    resourceMan = temp;
                }
                return resourceMan;
            }
        }
        
        /// <summary>
        ///   Overrides the current thread's CurrentUICulture property for all
        ///   resource lookups using this strongly typed resource class.
        /// </summary>
        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
        public static global::System.Globalization.CultureInfo Culture {
            get {
                return resourceCulture;
            }
            set {
                resourceCulture = value;
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to Top level properties should be one of name, type, id, location, properties, tags, plan, sku, etag, managedBy, identity. Model definition &apos;{0}&apos; has extra properties [&apos;{1}&apos;]..
        /// </summary>
        public static string AllowedTopLevelProperties {
            get {
                return ResourceManager.GetString("AllowedTopLevelProperties", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to Inline/anonymous models must not be used, instead define a schema with a model name in the &quot;definitions&quot; section and refer to it. This allows operations to share the models..
        /// </summary>
        public static string AnonymousTypesDiscouraged {
            get {
                return ResourceManager.GetString("AnonymousTypesDiscouraged", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to API Version must be in the format: yyyy-MM-dd, optionally followed by -preview, -alpha, -beta, -rc, -privatepreview..
        /// </summary>
        public static string APIVersionFormatIsNotValid {
            get {
                return ResourceManager.GetString("APIVersionFormatIsNotValid", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to Top level property names should not be repeated inside the properties bag for ARM resource &apos;{0}&apos;. Properties [{1}] conflict with ARM top level properties. Please rename these..
        /// </summary>
        public static string ArmPropertiesBagValidationMessage {
            get {
                return ResourceManager.GetString("ArmPropertiesBagValidationMessage", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to AutoRest Core {0}.
        /// </summary>
        public static string AutoRestCore {
            get {
                return ResourceManager.GetString("AutoRestCore", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to Property named: &apos;{0}&apos;, must follow camelCase style. Example: &apos;{1}&apos;..
        /// </summary>
        public static string BodyPropertyNameCamelCase {
            get {
                return ResourceManager.GetString("BodyPropertyNameCamelCase", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to Booleans are not descriptive and make them hard to use. Instead use string enums with allowed set of values defined. Enum Property: {0}.
        /// </summary>
        public static string BooleanPropertyNotRecommended {
            get {
                return ResourceManager.GetString("BooleanPropertyNotRecommended", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to Collection object &apos;{0}&apos; returned by list operation &apos;{1}&apos; with &apos;x-ms-pageable&apos; extension, has no property named &apos;value&apos;..
        /// </summary>
        public static string CollectionObjectPropertiesNamingMessage {
            get {
                return ResourceManager.GetString("CollectionObjectPropertiesNamingMessage", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to Plugins:
        ///  CSharp:
        ///    TypeName: PluginCs, AutoRest.CSharp
        ///  JsonRpcClient:
        ///    TypeName: PluginCs, AutoRest.CSharp.JsonRpcClient
        ///  Azure.CSharp:
        ///    TypeName: PluginCsa, AutoRest.CSharp.Azure
        ///  Azure.CSharp.Fluent:
        ///    TypeName: PluginCsaf, AutoRest.CSharp.Azure.Fluent
        ///  Azure.JsonRpcClient:
        ///    TypeName: PluginCsa, AutoRest.CSharp.Azure.JsonRpcClient
        ///  Ruby:
        ///    TypeName: PluginRb, AutoRest.Ruby
        ///  Azure.Ruby:
        ///    TypeName: PluginRba, AutoRest.Ruby.Azure
        ///  NodeJS:
        ///    TypeName: PluginJs, Au [rest of string was truncated]&quot;;.
        /// </summary>
        public static string ConfigurationKnownPlugins {
            get {
                return ResourceManager.GetString("ConfigurationKnownPlugins", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to Property named: &apos;{0}&apos;, for definition: &apos;{1}&apos; must follow camelCase style. Example: &apos;{2}&apos;..
        /// </summary>
        public static string DefinitionsPropertiesNameCamelCase {
            get {
                return ResourceManager.GetString("DefinitionsPropertiesNameCamelCase", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to &apos;Delete&apos; operation &apos;{0}&apos; must not have a request body..
        /// </summary>
        public static string DeleteMustNotHaveRequestBody {
            get {
                return ResourceManager.GetString("DeleteMustNotHaveRequestBody", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to &apos;DELETE&apos; operation &apos;{0}&apos; must use method name &apos;Delete&apos;..
        /// </summary>
        public static string DeleteOperationNameNotValid {
            get {
                return ResourceManager.GetString("DeleteOperationNameNotValid", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to The value provided for description is not descriptive enough. Accurate and descriptive description is essential for maintaining reference documentation..
        /// </summary>
        public static string DescriptionNotDescriptive {
            get {
                return ResourceManager.GetString("DescriptionNotDescriptive", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to Empty x-ms-client-name property..
        /// </summary>
        public static string EmptyClientName {
            get {
                return ResourceManager.GetString("EmptyClientName", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to Error generating client model: {0}.
        /// </summary>
        public static string ErrorGeneratingClientModel {
            get {
                return ResourceManager.GetString("ErrorGeneratingClientModel", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to Error loading {0} assembly: {1}.
        /// </summary>
        public static string ErrorLoadingAssembly {
            get {
                return ResourceManager.GetString("ErrorLoadingAssembly", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to Error saving generated code: {0}.
        /// </summary>
        public static string ErrorSavingGeneratedCode {
            get {
                return ResourceManager.GetString("ErrorSavingGeneratedCode", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to Plugin {0} not found.
        /// </summary>
        public static string ExtensionNotFound {
            get {
                return ResourceManager.GetString("ExtensionNotFound", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to Successfully initialized {0} Code Generator {1}.
        /// </summary>
        public static string GeneratorInitialized {
            get {
                return ResourceManager.GetString("GeneratorInitialized", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to &apos;GET&apos; operation &apos;{0}&apos; must use method name &apos;Get&apos; or Method name start with &apos;List&apos;.
        /// </summary>
        public static string GetOperationNameNotValid {
            get {
                return ResourceManager.GetString("GetOperationNameNotValid", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to Guid used in model definition &apos;{1}&apos; for property &apos;{0}&apos;. Usage of Guid is not recommanded. If GUIDs are absolutely required in your service, please get sign off from the Azure API review board..
        /// </summary>
        public static string GuidUsageNotRecommended {
            get {
                return ResourceManager.GetString("GuidUsageNotRecommended", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to Permissible values for HTTP Verb are delete,get,put,patch,head,options,post. .
        /// </summary>
        public static string HttpVerbIsNotValid {
            get {
                return ResourceManager.GetString("HttpVerbIsNotValid", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to Initializing code generator..
        /// </summary>
        public static string InitializingCodeGenerator {
            get {
                return ResourceManager.GetString("InitializingCodeGenerator", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to Initializing modeler..
        /// </summary>
        public static string InitializingModeler {
            get {
                return ResourceManager.GetString("InitializingModeler", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to Input parameter &apos;{0}&apos; must be a valid file path..
        /// </summary>
        public static string InputMustBeAFile {
            get {
                return ResourceManager.GetString("InputMustBeAFile", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to The default value is not one of the values enumerated as valid for this element..
        /// </summary>
        public static string InvalidDefault {
            get {
                return ResourceManager.GetString("InvalidDefault", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to Property name {0} cannot be used as an Identifier, as it contains only invalid characters..
        /// </summary>
        public static string InvalidIdentifierName {
            get {
                return ResourceManager.GetString("InvalidIdentifierName", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to When property is modeled as &quot;readOnly&quot;: true then x-ms-mutability extension can only have &quot;read&quot; value. When property is modeled as &quot;readOnly&quot;: false then applying x-ms-mutability extension with only &quot;read&quot; value is not allowed. Extension contains invalid values: &apos;{0}&apos;..
        /// </summary>
        public static string InvalidMutabilityValueForReadOnly {
            get {
                return ResourceManager.GetString("InvalidMutabilityValueForReadOnly", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to &apos;{0}&apos; code generator does not support code generation to a single file..
        /// </summary>
        public static string LanguageDoesNotSupportSingleFileGeneration {
            get {
                return ResourceManager.GetString("LanguageDoesNotSupportSingleFileGeneration", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to Since operation &apos;{0}&apos; response has model definition &apos;{1}&apos;, it should be of the form &quot;*_list*&quot;.
        /// </summary>
        public static string ListOperationsNamingWarningMessage {
            get {
                return ResourceManager.GetString("ListOperationsNamingWarningMessage", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to A &apos;{0}&apos; operation &apos;{1}&apos; with x-ms-long-running-operation extension must have a valid terminal success status code {2}..
        /// </summary>
        public static string LongRunningResponseNotValid {
            get {
                return ResourceManager.GetString("LongRunningResponseNotValid", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to {0} lacks &apos;description&apos; property. Consider adding a &apos;description&apos; element. Accurate description is essential for maintaining reference documentation..
        /// </summary>
        public static string MissingDescription {
            get {
                return ResourceManager.GetString("MissingDescription", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to Successfully initialized modeler {0} v {1}..
        /// </summary>
        public static string ModelerInitialized {
            get {
                return ResourceManager.GetString("ModelerInitialized", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to For better generated code quality, remove all references to &quot;msdn.microsoft.com&quot;..
        /// </summary>
        public static string MsdnReferencesDiscouraged {
            get {
                return ResourceManager.GetString("MsdnReferencesDiscouraged", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to {0} (already used in {1}).
        /// </summary>
        public static string NamespaceConflictReasonMessage {
            get {
                return ResourceManager.GetString("NamespaceConflictReasonMessage", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to Please make sure that media types other than &apos;application/json&apos; are supported by your service..
        /// </summary>
        public static string NonAppJsonTypeNotSupported {
            get {
                return ResourceManager.GetString("NonAppJsonTypeNotSupported", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to Only 1 underscore is permitted in the operation id, following Noun_Verb conventions..
        /// </summary>
        public static string OnlyOneUnderscoreAllowedInOperationId {
            get {
                return ResourceManager.GetString("OnlyOneUnderscoreAllowedInOperationId", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to OperationId is required for all operations. Please add it for &apos;{0}&apos; operation of &apos;{1}&apos; path..
        /// </summary>
        public static string OperationIdMissing {
            get {
                return ResourceManager.GetString("OperationIdMissing", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to OperationId has a noun that conflicts with one of the model names in definitions section. The model name will be disambiguated to &apos;{0}Model&apos;. Consider using the plural form of &apos;{1}&apos; to avoid this..
        /// </summary>
        public static string OperationIdNounConflictingModelNamesMessage {
            get {
                return ResourceManager.GetString("OperationIdNounConflictingModelNamesMessage", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to Per the Noun_Verb convention for Operation Ids, the noun &apos;{0}&apos; should not appear after the underscore..
        /// </summary>
        public static string OperationIdNounInVerb {
            get {
                return ResourceManager.GetString("OperationIdNounInVerb", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to Parameter &quot;subscriptionId&quot; is not allowed in the operations section, define it in the global parameters section instead.
        /// </summary>
        public static string OperationParametersNotAllowedMessage {
            get {
                return ResourceManager.GetString("OperationParametersNotAllowedMessage", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to Operations API must be implemented for &apos;{0}&apos;..
        /// </summary>
        public static string OperationsAPINotImplemented {
            get {
                return ResourceManager.GetString("OperationsAPINotImplemented", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to Parameter Must have the &quot;name&quot; property defined with non-empty string as its value.
        /// </summary>
        public static string ParametersPropertiesValidation {
            get {
                return ResourceManager.GetString("ParametersPropertiesValidation", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to Parameter &apos;{0}&apos; is required..
        /// </summary>
        public static string ParameterValueIsMissing {
            get {
                return ResourceManager.GetString("ParameterValueIsMissing", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to Parameter &apos;{0}&apos; value is not valid. Expect &apos;{1}&apos;.
        /// </summary>
        public static string ParameterValueIsNotValid {
            get {
                return ResourceManager.GetString("ParameterValueIsNotValid", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to &apos;PATCH&apos; operation &apos;{0}&apos; must use method name &apos;Update&apos;..
        /// </summary>
        public static string PatchOperationNameNotValid {
            get {
                return ResourceManager.GetString("PatchOperationNameNotValid", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to path cannot be null or an empty string or a string with white spaces while getting the parent directory.
        /// </summary>
        public static string PathCannotBeNullOrEmpty {
            get {
                return ResourceManager.GetString("PathCannotBeNullOrEmpty", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to {0} has different responses for PUT/GET/PATCH operations. The PUT/GET/PATCH operations must have same schema response..
        /// </summary>
        public static string PutGetPatchResponseInvalid {
            get {
                return ResourceManager.GetString("PutGetPatchResponseInvalid", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to &apos;PUT&apos; operation &apos;{0}&apos; must use method name &apos;Create&apos;..
        /// </summary>
        public static string PutOperationNameNotValid {
            get {
                return ResourceManager.GetString("PutOperationNameNotValid", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to A PUT operation request body schema should be the same as its 200 response schema, to allow reusing the same entity between GET and PUT. If the schema of the PUT request body is a superset of the GET response body, make sure you have a PATCH operation to make the resource updatable. Operation: &apos;{0}&apos; Request Model: &apos;{1}&apos; Response Model: &apos;{2}&apos;.
        /// </summary>
        public static string PutOperationRequestResponseSchemaMessage {
            get {
                return ResourceManager.GetString("PutOperationRequestResponseSchemaMessage", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to The 200 response model for an ARM PUT operation must have x-ms-azure-resource extension set to true in its hierarchy. Operation: &apos;{0}&apos; Model: &apos;{1}&apos;..
        /// </summary>
        public static string PutOperationResourceResponseValidationMessage {
            get {
                return ResourceManager.GetString("PutOperationResourceResponseValidationMessage", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to Property &apos;{0}&apos; is a required property. It should not be marked as &apos;readonly&apos;..
        /// </summary>
        public static string RequiredReadOnlyPropertiesValidation {
            get {
                return ResourceManager.GetString("RequiredReadOnlyPropertiesValidation", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to A &apos;Resource&apos; definition must have x-ms-azure-resource extension enabled and set to true..
        /// </summary>
        public static string ResourceIsMsResourceNotValid {
            get {
                return ResourceManager.GetString("ResourceIsMsResourceNotValid", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to Model definition &apos;{0}&apos; must have the properties &apos;name&apos;, &apos;id&apos; and &apos;type&apos; in its hierarchy and these properties must be marked as readonly..
        /// </summary>
        public static string ResourceModelIsNotValid {
            get {
                return ResourceManager.GetString("ResourceModelIsNotValid", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to Every swagger/configuration must have a security definitions section and it must adhere to the structure described in: https://github.com/Azure/autorest/tree/master/docs/developer/validation-rules/security-definitions-structure-validation.md.
        /// </summary>
        public static string SecurityDefinitionsStructureValidation {
            get {
                return ResourceManager.GetString("SecurityDefinitionsStructureValidation", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to Parameter &quot;{0}&quot; is referenced but not defined in the global parameters section of Service Definition.
        /// </summary>
        public static string ServiceDefinitionParametersMissingMessage {
            get {
                return ResourceManager.GetString("ServiceDefinitionParametersMissingMessage", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to Sku Model definition &apos;{0}&apos; is not valid. A Sku model must have &apos;name&apos; property. It can also have &apos;tier&apos;, &apos;size&apos;, &apos;family&apos;, &apos;capacity&apos; as optional properties..
        /// </summary>
        public static string SkuModelIsNotValid {
            get {
                return ResourceManager.GetString("SkuModelIsNotValid", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to The summary and description values should not be same..
        /// </summary>
        public static string SummaryDescriptionVaidationError {
            get {
                return ResourceManager.GetString("SummaryDescriptionVaidationError", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to Azure Resource Management only supports HTTPS scheme..
        /// </summary>
        public static string SupportedSchemesWarningMessage {
            get {
                return ResourceManager.GetString("SupportedSchemesWarningMessage", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to Tracked resource &apos;{0}&apos; must have a get operation..
        /// </summary>
        public static string TrackedResourceGetOperationMissing {
            get {
                return ResourceManager.GetString("TrackedResourceGetOperationMissing", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to The child tracked resource, &apos;{0}&apos; with immediate parent &apos;{1}&apos;, must have a list by immediate parent operation..
        /// </summary>
        public static string TrackedResourceListByImmediateParentOperationMissing {
            get {
                return ResourceManager.GetString("TrackedResourceListByImmediateParentOperationMissing", resourceCulture);
            }
        }
        
        /// <summary>
        ///   Looks up a localized string similar to The tracked resource, &apos;{0}&apos;, must have a list by resource group operation..
        /// </summary>
        public static string TrackedResourceListByResourceGroupOperationMissing {
            get {
                return ResourceManager.GetString("TrackedResourceListByResourceGroupOperationMissing", resourceCulture);
            }
        }
        
        /// <summary>
        /// 
Download .txt
gitextract_lkzoy1ec/

├── .gitattributes
├── .github/
│   ├── CODEOWNERS
│   ├── copilot-instructions.md
│   ├── dependabot.yml
│   ├── matchers/
│   │   └── actionlint.json
│   └── workflows/
│       └── ci.yml
├── .gitignore
├── .markdownlint.jsonc
├── .prettierignore
├── .prettierrc
├── .vscode/
│   ├── launch.json
│   ├── settings.json
│   └── tasks.json
├── CHANGELOG.md
├── CONTRIBUTING.md
├── CredScanSuppressions.json
├── LICENSE
├── README.md
├── SECURITY.md
├── azure-pipelines.yml
├── docs/
│   ├── README.md
│   └── rules/
│       ├── 1000.md
│       ├── 1001.md
│       ├── 1002.md
│       ├── 1003.md
│       ├── 1004.md
│       ├── 1005.md
│       ├── 1006.md
│       ├── 1007.md
│       ├── 1008.md
│       ├── 1009.md
│       ├── 1010.md
│       ├── 1011.md
│       ├── 1012.md
│       ├── 1013.md
│       ├── 1014.md
│       ├── 1015.md
│       ├── 1016.md
│       ├── 1017.md
│       ├── 1019.md
│       ├── 1020.md
│       ├── 1021.md
│       ├── 1022.md
│       ├── 1023.md
│       ├── 1024.md
│       ├── 1025.md
│       ├── 1026.md
│       ├── 1027.md
│       ├── 1028.md
│       ├── 1029.md
│       ├── 1030.md
│       ├── 1031.md
│       ├── 1032.md
│       ├── 1033.md
│       ├── 1034.md
│       ├── 1035.md
│       ├── 1036.md
│       ├── 1037.md
│       ├── 1038.md
│       ├── 1039.md
│       ├── 1040.md
│       ├── 1041.md
│       ├── 1042.md
│       ├── 1043.md
│       ├── 1044.md
│       ├── 1045.md
│       ├── 1046.md
│       ├── 1047.md
│       ├── 1048.md
│       ├── 1049.md
│       └── 1050.md
├── eng/
│   ├── 1es-redirect.yml
│   ├── image.yml
│   ├── publish-1es-artifact.yml
│   └── test-steps.yml
├── eslint.config.js
├── openapi-diff/
│   ├── OpenApiDiff.sln
│   ├── src/
│   │   ├── common/
│   │   │   ├── common-package-references.proj
│   │   │   ├── common.proj
│   │   │   ├── copy-resource-to-output.proj
│   │   │   ├── enumerate-inputs.proj
│   │   │   ├── package-info.proj
│   │   │   ├── project-library.proj
│   │   │   └── project-xunittest.proj
│   │   ├── core/
│   │   │   ├── OpenApiDiff/
│   │   │   │   ├── HelpExample.cs
│   │   │   │   ├── HelpGenerator.cs
│   │   │   │   ├── OpenApiDiff.csproj
│   │   │   │   ├── Program.cs
│   │   │   │   └── Properties/
│   │   │   │       ├── Resources.Designer.cs
│   │   │   │       └── Resources.resx
│   │   │   └── OpenApiDiff.Core/
│   │   │       ├── JsonDocument.cs
│   │   │       ├── Logging/
│   │   │       │   ├── LogMessageSeverity.cs
│   │   │       │   └── ObjectPath.cs
│   │   │       ├── OpenApiDiff.Core.csproj
│   │   │       ├── Properties/
│   │   │       │   ├── Resources.Designer.cs
│   │   │       │   └── Resources.resx
│   │   │       ├── Settings.cs
│   │   │       ├── SettingsAliasAttribute.cs
│   │   │       └── SettingsInfoAttribute.cs
│   │   └── modeler/
│   │       ├── AutoRest.Swagger/
│   │       │   ├── AutoRest.Swagger.csproj
│   │       │   ├── ComparisonContext.cs
│   │       │   ├── ComparisonMessage.cs
│   │       │   ├── ComparisonMessages.cs
│   │       │   ├── JsonComparisonMessage.cs
│   │       │   ├── JsonLocation.cs
│   │       │   ├── MessageTemplate.cs
│   │       │   ├── MessageType.cs
│   │       │   ├── Model/
│   │       │   │   ├── ApiKeyLocation.cs
│   │       │   │   ├── DataType.cs
│   │       │   │   ├── ExternalDoc.cs
│   │       │   │   ├── Header.cs
│   │       │   │   ├── Info.cs
│   │       │   │   ├── OAuthFlow.cs
│   │       │   │   ├── Operation.cs
│   │       │   │   ├── ParameterLocation.cs
│   │       │   │   ├── Response.cs
│   │       │   │   ├── Schema.cs
│   │       │   │   ├── SecurityDefinition.cs
│   │       │   │   ├── SecuritySchemeType.cs
│   │       │   │   ├── ServiceDefinition.cs
│   │       │   │   ├── ServiceDefinitionMetadata.cs
│   │       │   │   ├── SpecObject.cs
│   │       │   │   ├── SwaggerBase.cs
│   │       │   │   ├── SwaggerObject.cs
│   │       │   │   ├── SwaggerParameter.cs
│   │       │   │   ├── TransferProtocolScheme.cs
│   │       │   │   └── XmsEnumExtension.cs
│   │       │   ├── PathLevelParameterConverter.cs
│   │       │   ├── Properties/
│   │       │   │   ├── Resources.Designer.cs
│   │       │   │   └── Resources.resx
│   │       │   ├── SwaggerModeler.cs
│   │       │   ├── SwaggerParser.cs
│   │       │   └── packages.config
│   │       └── AutoRest.Swagger.Tests/
│   │           ├── AutoRest.Swagger.Tests.csproj
│   │           ├── Resource/
│   │           │   └── Swagger/
│   │           │       ├── new/
│   │           │       │   ├── add_optional_property_01.json
│   │           │       │   ├── added_optional_property.json
│   │           │       │   ├── added_path.json
│   │           │       │   ├── added_property_in_response.json
│   │           │       │   ├── added_readonly_required_property.json
│   │           │       │   ├── added_required_property.json
│   │           │       │   ├── changed_operation_id.json
│   │           │       │   ├── common_parameter_check_01.json
│   │           │       │   ├── common_parameter_check_02.json
│   │           │       │   ├── common_parameter_check_03.json
│   │           │       │   ├── common_parameter_check_04.json
│   │           │       │   ├── default_changed_01.json
│   │           │       │   ├── enum_as_string.json
│   │           │       │   ├── enum_values_changed.json
│   │           │       │   ├── format_check_01.json
│   │           │       │   ├── format_check_02.json
│   │           │       │   ├── global_parameter_no_order_change.json
│   │           │       │   ├── global_parameter_order_change.json
│   │           │       │   ├── long_running_operation.json
│   │           │       │   ├── misc_checks_01.json
│   │           │       │   ├── misc_checks_02.json
│   │           │       │   ├── missing_operation_id.json
│   │           │       │   ├── operation_check_01.json
│   │           │       │   ├── operation_check_02.json
│   │           │       │   ├── operation_check_03.json
│   │           │       │   ├── operation_check_04.json
│   │           │       │   ├── operation_check_05.json
│   │           │       │   ├── optional_parameter.json
│   │           │       │   ├── param_check_01.json
│   │           │       │   ├── parameter_location_change.json
│   │           │       │   ├── parameter_order_change.json
│   │           │       │   ├── property_required_status_changed.json
│   │           │       │   ├── readonly_changes.json
│   │           │       │   ├── recursive_model.json
│   │           │       │   ├── removed_definition.json
│   │           │       │   ├── removed_operation.json
│   │           │       │   ├── removed_operation_id.json
│   │           │       │   ├── removed_parameter.json
│   │           │       │   ├── removed_path.json
│   │           │       │   ├── removed_property.json
│   │           │       │   ├── required_parameter.json
│   │           │       │   ├── response_check_01.json
│   │           │       │   ├── type_changed.json
│   │           │       │   ├── type_changed_01.json
│   │           │       │   ├── type_changed_02.json
│   │           │       │   ├── version_check_01.json
│   │           │       │   ├── version_check_02.json
│   │           │       │   ├── version_check_03.json
│   │           │       │   ├── version_check_04.json
│   │           │       │   ├── xms_client_name_changed.json
│   │           │       │   ├── xms_enum_added.json
│   │           │       │   └── xms_enum_changed.json
│   │           │       └── old/
│   │           │           ├── add_optional_property_01.json
│   │           │           ├── added_optional_property.json
│   │           │           ├── added_path.json
│   │           │           ├── added_property_in_response.json
│   │           │           ├── added_readonly_required_property.json
│   │           │           ├── added_required_property.json
│   │           │           ├── changed_operation_id.json
│   │           │           ├── common_parameter_check_01.json
│   │           │           ├── common_parameter_check_02.json
│   │           │           ├── common_parameter_check_03.json
│   │           │           ├── common_parameter_check_04.json
│   │           │           ├── default_changed_01.json
│   │           │           ├── enum_as_string.json
│   │           │           ├── enum_values_changed.json
│   │           │           ├── format_check_01.json
│   │           │           ├── format_check_02.json
│   │           │           ├── global_parameter_no_order_change.json
│   │           │           ├── global_parameter_order_change.json
│   │           │           ├── long_running_operation.json
│   │           │           ├── misc_checks_01.json
│   │           │           ├── misc_checks_02.json
│   │           │           ├── missing_operation_id.json
│   │           │           ├── operation_check_01.json
│   │           │           ├── operation_check_02.json
│   │           │           ├── operation_check_03.json
│   │           │           ├── operation_check_04.json
│   │           │           ├── operation_check_05.json
│   │           │           ├── optional_parameter.json
│   │           │           ├── param_check_01.json
│   │           │           ├── parameter_location_change.json
│   │           │           ├── parameter_order_change.json
│   │           │           ├── property_required_status_changed.json
│   │           │           ├── readonly_changes.json
│   │           │           ├── recursive_model.json
│   │           │           ├── removed_definition.json
│   │           │           ├── removed_operation.json
│   │           │           ├── removed_operation_id.json
│   │           │           ├── removed_parameter.json
│   │           │           ├── removed_path.json
│   │           │           ├── removed_property.json
│   │           │           ├── required_parameter.json
│   │           │           ├── response_check_01.json
│   │           │           ├── type_changed.json
│   │           │           ├── type_changed_01.json
│   │           │           ├── type_changed_02.json
│   │           │           ├── version_check_01.json
│   │           │           ├── version_check_02.json
│   │           │           ├── version_check_03.json
│   │           │           ├── version_check_04.json
│   │           │           ├── xms_client_name_changed.json
│   │           │           ├── xms_enum_added.json
│   │           │           └── xms_enum_changed.json
│   │           ├── SwaggerModelerCompareTests.cs
│   │           ├── app.config
│   │           └── packages.config
│   └── tools/
│       └── MSSharedLibKey.snk
├── package.json
├── src/
│   ├── cli.ts
│   ├── index.ts
│   ├── lib/
│   │   ├── commands/
│   │   │   └── oad.ts
│   │   ├── util/
│   │   │   ├── constants.ts
│   │   │   ├── logging.ts
│   │   │   ├── resolveSwagger.ts
│   │   │   └── utils.ts
│   │   ├── validate.ts
│   │   └── validators/
│   │       └── openApiDiff.ts
│   └── test/
│       ├── additionalPropertiesIsBooleanTest.ts
│       ├── commonParametersTest.ts
│       ├── compatiblePropertiesTest.ts
│       ├── expandsAllOfFullCoversTest.ts
│       ├── expandsAllOfModelsTest.ts
│       ├── fileUrl.ts
│       ├── full2ReversedTest.ts
│       ├── full2Test.ts
│       ├── fullReversedTest.ts
│       ├── fullTest.ts
│       ├── incompatiblePropertiesTest.ts
│       ├── moveIntoAllOfModelsTest.ts
│       ├── multipleLevelAllOfTest.ts
│       ├── operationLocationTest.ts
│       ├── requestBodyFormatNoLongerSupportedTest.ts
│       ├── responseBodyFormatNowSupportedTest.ts
│       ├── simpleTest.ts
│       ├── someChangesTest.ts
│       ├── specs/
│       │   ├── additional-properties/
│       │   │   ├── new.json
│       │   │   └── old.json
│       │   ├── common-parameters/
│       │   │   ├── new.json
│       │   │   └── old.json
│       │   ├── compatible-properties.json
│       │   ├── expandsAllOf/
│       │   │   ├── new/
│       │   │   │   ├── expand_allOf_model.json
│       │   │   │   ├── move_properties_into_allof_model.json
│       │   │   │   ├── multi_level_allOf.json
│       │   │   │   └── property_format_change.json
│       │   │   └── old/
│       │   │       ├── expand_allOf_model.json
│       │   │       ├── move_properties_into_allof_model.json
│       │   │       ├── multi_level_allOf.json
│       │   │       └── property_format_change.json
│       │   ├── full/
│       │   │   ├── new/
│       │   │   │   ├── openapi.json
│       │   │   │   ├── openapi2.json
│       │   │   │   └── readme.md
│       │   │   └── old/
│       │   │       ├── openapi.json
│       │   │       └── readme.md
│       │   ├── full2/
│       │   │   ├── source/
│       │   │   │   ├── Microsoft.Compute/
│       │   │   │   │   └── stable/
│       │   │   │   │       └── 2017-12-01/
│       │   │   │   │           ├── compute.json
│       │   │   │   │           └── runCommands.json
│       │   │   │   └── readme.md
│       │   │   └── target/
│       │   │       ├── Microsoft.Compute/
│       │   │       │   └── stable/
│       │   │       │       └── 2018-04-01/
│       │   │       │           ├── compute.json
│       │   │       │           ├── disk.json
│       │   │       │           └── runCommands.json
│       │   │       └── readme.md
│       │   ├── incompatible-properties/
│       │   │   ├── refstring-object.json
│       │   │   ├── refstring-refobject.json
│       │   │   ├── string-object.json
│       │   │   └── string-refobject.json
│       │   ├── operation-location.json
│       │   ├── rule-1003/
│       │   │   ├── case1.new.json
│       │   │   └── case1.old.json
│       │   ├── rule-1004/
│       │   │   ├── case1.new.json
│       │   │   └── case1.old.json
│       │   ├── simple.json
│       │   ├── some-changes/
│       │   │   ├── new.json
│       │   │   └── old.json
│       │   ├── xms-enum-name/
│       │   │   ├── new.json
│       │   │   └── old.json
│       │   └── xmspath/
│       │       ├── new.json
│       │       └── old.json
│       ├── utilTest.ts
│       ├── xmsEnumNameTest.ts
│       └── xmsPathTest.ts
└── tsconfig.json
Download .txt
SYMBOL INDEX (301 symbols across 49 files)

FILE: openapi-diff/src/core/OpenApiDiff.Core/JsonDocument.cs
  type IJsonDocument (line 8) | public interface IJsonDocument
  class JsonDocument (line 19) | public sealed class JsonDocument<T>: IJsonDocument
    method JsonDocument (line 37) | public JsonDocument(JToken token, T typed, string fileName)
    method ToJsonDocument (line 55) | public static JsonDocument<T> ToJsonDocument<T>(this JToken token, T t...
  class JsonDocument (line 45) | public static class JsonDocument
    method JsonDocument (line 37) | public JsonDocument(JToken token, T typed, string fileName)
    method ToJsonDocument (line 55) | public static JsonDocument<T> ToJsonDocument<T>(this JToken token, T t...

FILE: openapi-diff/src/core/OpenApiDiff.Core/Logging/LogMessageSeverity.cs
  type Category (line 9) | public enum Category

FILE: openapi-diff/src/core/OpenApiDiff.Core/Logging/ObjectPath.cs
  class ObjectPath (line 15) | public class ObjectPath
    method ObjectPath (line 19) | private ObjectPath(IEnumerable<Func<JToken, string>> path)
    method Append (line 24) | private ObjectPath Append(Func<JToken, string> f) => new ObjectPath(Pa...
    method AppendProperty (line 26) | public ObjectPath AppendProperty(string property) => Append((_) => pro...
    method AppendItemByName (line 28) | public ObjectPath AppendItemByName(string value) => Append(t =>
    method OpenApiPathName (line 43) | public static string OpenApiPathName(string path)
    method AppendPathProperty (line 54) | public ObjectPath AppendPathProperty(string openApiPath) {
    method ParseRef (line 66) | private static ObjectPath ParseRef(string s)
    method FromObject (line 73) | private static JToken FromObject(JObject o, string name)
    method CompletePath (line 98) | private static IEnumerable<(JToken token, string name)> CompletePath(I...
    method CompletePath (line 114) | public IEnumerable<(JToken token, string name)> CompletePath(JToken t)
    method FileNameNorm (line 117) | public static string FileNameNorm(string fileName)
    method JsonPointer (line 121) | public string JsonPointer(IJsonDocument t)
    method AppendExpression (line 129) | public ObjectPath AppendExpression(Func<JToken, string> func)

FILE: openapi-diff/src/core/OpenApiDiff.Core/Properties/Resources.Designer.cs
  class Resources (line 23) | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resource...
    method Resources (line 32) | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Mic...

FILE: openapi-diff/src/core/OpenApiDiff.Core/Settings.cs
  class Settings (line 15) | public class Settings
    method Settings (line 70) | private Settings()
    method Create (line 80) | private static Settings Create(string[] arguments)
    method ParseArgs (line 91) | private static Dictionary<string, object> ParseArgs(string[] arguments)
    method AddArgumentToDictionary (line 125) | private static void AddArgumentToDictionary(string key, string value, ...
    method Create (line 137) | private static Settings Create(IDictionary<string, object> settings)
    method PopulateSettings (line 156) | private static void PopulateSettings(object entityToPopulate, IDiction...
    method GetInstance (line 223) | public static Settings GetInstance(string[] arguments)
    method Validate (line 228) | public void Validate()

FILE: openapi-diff/src/core/OpenApiDiff.Core/SettingsAliasAttribute.cs
  class SettingsAliasAttribute (line 11) | [AttributeUsage(AttributeTargets.Property, AllowMultiple = true)]
    method SettingsAliasAttribute (line 17) | public SettingsAliasAttribute()
    method SettingsAliasAttribute (line 24) | public SettingsAliasAttribute(string alias)

FILE: openapi-diff/src/core/OpenApiDiff.Core/SettingsInfoAttribute.cs
  class SettingsInfoAttribute (line 11) | [AttributeUsage(AttributeTargets.Property)]
    method SettingsInfoAttribute (line 21) | public SettingsInfoAttribute(string documentation, bool isRequired)
    method SettingsInfoAttribute (line 32) | public SettingsInfoAttribute(string documentation) :

FILE: openapi-diff/src/core/OpenApiDiff/HelpExample.cs
  type HelpExample (line 9) | public struct HelpExample

FILE: openapi-diff/src/core/OpenApiDiff/HelpGenerator.cs
  class HelpGenerator (line 17) | public static class HelpGenerator
    method Generate (line 68) | public static string Generate(string template, Settings settings)
    method GetParametersInfo (line 131) | private static void GetParametersInfo(IEnumerable<PropertyInfo> props,...

FILE: openapi-diff/src/core/OpenApiDiff/Program.cs
  class Program (line 13) | internal class Program
    method Main (line 15) | private static int Main(string[] args)

FILE: openapi-diff/src/core/OpenApiDiff/Properties/Resources.Designer.cs
  class Resources (line 23) | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resource...
    method Resources (line 32) | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Mic...

FILE: openapi-diff/src/modeler/AutoRest.Swagger.Tests/SwaggerModelerCompareTests.cs
  class SwaggerModelerCompareTests (line 26) | [Collection("Comparison Tests")]
    method CompareSwagger (line 34) | private static IEnumerable<ComparisonMessage> CompareSwagger(string in...
    method ValidateMessage (line 50) | private static void ValidateMessage(ComparisonMessage message)
    method ValidateMessages (line 68) | private static void ValidateMessages(IEnumerable<ComparisonMessage> me...
    method SameMajorVersionNumberStrict (line 79) | [Fact]
    method ReversedVersionNumberChange (line 89) | [Fact]
    method RequestFormatMissing (line 102) | [Fact]
    method ResponseFormatAdded (line 114) | [Fact]
    method DefinitionRemoved (line 126) | [Fact]
    method PropertyTypeChanged (line 141) | [Fact]
    method TypeObjectChanged (line 156) | [Fact]
    method PropertyNamedRefTypeChanged (line 171) | [Fact]
    method DefaultValueChanged (line 186) | [Fact]
    method PropertyTypeFormatChanged (line 198) | [Fact]
    method UnreferencedDefinitionRemoved (line 213) | [Fact]
    method UnreferencedTypeChanged (line 224) | [Fact]
    method PathRemoved (line 235) | [Fact]
    method OperationRemoved (line 248) | [Fact]
    method OperationIdChanged (line 260) | [Fact]
    method OperationIdIsNull (line 278) | [Fact]
    method OperationIdRemoved (line 289) | [Fact]
    method AddedPaths (line 303) | [Fact]
    method RequiredParameterRemoved (line 334) | [Fact]
    method OptionalParameterRemoved (line 348) | [Fact]
    method AddedRequiredProperty (line 362) | [Fact]
    method AddedReadOnlyRequiredProperty (line 380) | [Fact]
    method RequiredRequestHeaderRemoved (line 392) | [Fact]
    method RequiredParameterAdded (line 407) | [Fact]
    method OptionalParameterAdded (line 421) | [Fact]
    method ReadonlyPropertyInResponse (line 435) | [Fact]
    method AddedPropertyInResponse (line 449) | [Fact]
    method RecursiveModels (line 468) | [Fact]
    method RequiredRequestHeaderAdded (line 482) | [Fact]
    method ParameterMoved (line 496) | [Fact]
    method ParameterStatusLess (line 511) | [Fact]
    method PropertyRequiredChanged (line 524) | [Fact]
    method ParameterStatusMore (line 535) | [Fact]
    method ParameterConstantChanged (line 551) | [Fact]
    method ParameterSchemaNameChanged (line 567) | [Fact]
    method ParameterSchemaContentsChanged (line 579) | [Fact]
    method ResponseRemoved (line 594) | [Fact]
    method ResponseAdded (line 608) | [Fact]
    method ResponseTypeChanged (line 622) | [Fact]
    method ResponseSchemaChanged (line 639) | [Fact]
    method ResponseHeaderAdded (line 652) | [Fact]
    method ResponseHeaderRemoved (line 665) | [Fact]
    method ResponseHeaderTypeChanged (line 678) | [Fact]
    method RequestArrayFormatChanged (line 692) | [Fact]
    method RequestTypeConstraintsChanged (line 713) | [Fact]
    method RequestTypeConstraintsWithNewEnum (line 729) | [Fact]
    method ResponseArrayFormatChanged (line 742) | [Fact]
    method ResponseTypeConstraintsChanged (line 760) | [Fact]
    method GlobalParamArrayFormatChanged (line 777) | [Fact]
    method GlobalParamTypeConstraintsChanged (line 802) | [Fact]
    method GlobalResponseArrayFormatChanged (line 819) | [Fact]
    method GlobalResponseTypeConstraintsChanged (line 843) | [Fact]
    method RemovedPropertyTest (line 856) | [Fact]
    method FormatChanged (line 863) | [Fact]
    method FormatRemoved (line 870) | [Fact]
    method CommonParameterAdded (line 877) | [Fact]
    method CommonParameterChanged (line 884) | [Fact]
    method CommonParameterOverride (line 894) | [Fact]
    method CommonParameterWithRef (line 902) | [Fact]
    method XmsEnumModelAsString (line 911) | [Fact]
    method ChangedParameterOrder (line 918) | [Fact]
    method ChangedGlobalParameterOrder (line 937) | [Fact]
    method DidNotChangeGlobalParameterOrder (line 956) | [Fact]
    method ChangedXmsLongRunningOperation (line 973) | [Fact]
    method AddedOptionalProperty (line 980) | [Fact]
    method AddedOptionalPropertyToInlineResponseSchema (line 989) | [Fact]
    method AddedOrRemovedXmsEnum (line 997) | [Fact]
    method XmsEnumChanged (line 1005) | [Fact]
    method ReferenceChanged (line 1012) | [Fact]
    method ParameterLocationChanged (line 1021) | [Fact]
    method ParameterRemoved (line 1044) | [Fact]

FILE: openapi-diff/src/modeler/AutoRest.Swagger/ComparisonContext.cs
  class ComparisonContext (line 14) | public class ComparisonContext<T>
    method ComparisonContext (line 24) | public ComparisonContext(JsonDocument<T> oldRootDoc, JsonDocument<T> n...
    method PushProperty (line 54) | public void PushProperty(string property) => _path.Push(Path.AppendPro...
    method PushItemByName (line 56) | public void PushItemByName(string name) => _path.Push(Path.AppendItemB...
    method PushPathProperty (line 58) | public void PushPathProperty(string name) => _path.Push(Path.AppendPat...
    method Pop (line 60) | public void Pop() => _path.Pop();
    method LogInfo (line 64) | public void LogInfo(MessageTemplate template, params object[] formatAr...
    method LogError (line 74) | public void LogError(MessageTemplate template, params object[] formatA...
    method LogBreakingChange (line 84) | public void LogBreakingChange(MessageTemplate template, params object[...
  type DataDirection (line 107) | public enum DataDirection

FILE: openapi-diff/src/modeler/AutoRest.Swagger/ComparisonMessage.cs
  class ComparisonMessage (line 17) | public class ComparisonMessage
    method ComparisonMessage (line 21) | public ComparisonMessage(
    method OldJson (line 62) | public JToken OldJson() => Mode != MessageType.Addition ?
    method NewJson (line 73) | public JToken NewJson() => Mode != MessageType.Removal ?
    method Location (line 104) | private static string Location(IJsonDocument jsonDoc, JToken jsonToken)
    method OldLocation (line 113) | public string OldLocation() => Location(OldDoc, OldJson());
    method NewLocation (line 115) | public string NewLocation() => Location(NewDoc, NewJson());
    method GetValidationMessagesAsJson (line 117) | public string GetValidationMessagesAsJson()
    method ToString (line 148) | public override string ToString()
  class CustomComparer (line 152) | public class CustomComparer : IEqualityComparer<ComparisonMessage>
    method Equals (line 154) | public bool Equals(ComparisonMessage message1, ComparisonMessage messa...
    method GetHashCode (line 157) | public int GetHashCode(ComparisonMessage obj)

FILE: openapi-diff/src/modeler/AutoRest.Swagger/ComparisonMessages.cs
  class ComparisonMessages (line 3) | public static class ComparisonMessages

FILE: openapi-diff/src/modeler/AutoRest.Swagger/JsonComparisonMessage.cs
  class JsonComparisonMessage (line 3) | sealed class JsonComparisonMessage

FILE: openapi-diff/src/modeler/AutoRest.Swagger/JsonLocation.cs
  class JsonLocation (line 3) | sealed class JsonLocation

FILE: openapi-diff/src/modeler/AutoRest.Swagger/MessageTemplate.cs
  class MessageTemplate (line 4) | public class MessageTemplate
    method MessageTemplate (line 6) | public MessageTemplate()
    method MessageTemplate (line 10) | public MessageTemplate(int id, string code, string message, MessageTyp...

FILE: openapi-diff/src/modeler/AutoRest.Swagger/MessageType.cs
  type MessageType (line 3) | public enum MessageType

FILE: openapi-diff/src/modeler/AutoRest.Swagger/Model/ApiKeyLocation.cs
  type ApiKeyLocation (line 6) | public enum ApiKeyLocation

FILE: openapi-diff/src/modeler/AutoRest.Swagger/Model/DataType.cs
  type DataType (line 9) | public enum DataType

FILE: openapi-diff/src/modeler/AutoRest.Swagger/Model/ExternalDoc.cs
  class ExternalDoc (line 9) | public class ExternalDoc

FILE: openapi-diff/src/modeler/AutoRest.Swagger/Model/Header.cs
  class Header (line 11) | public class Header : SwaggerObject<Header>

FILE: openapi-diff/src/modeler/AutoRest.Swagger/Model/Info.cs
  class Info (line 14) | public class Info : SpecObject

FILE: openapi-diff/src/modeler/AutoRest.Swagger/Model/OAuthFlow.cs
  type OAuthFlow (line 6) | public enum OAuthFlow

FILE: openapi-diff/src/modeler/AutoRest.Swagger/Model/Operation.cs
  class Operation (line 12) | public class Operation : SwaggerBase<Operation>
    method Operation (line 14) | public Operation()
    method Compare (line 84) | public override IEnumerable<ComparisonMessage> Compare(
    method CheckParameters (line 181) | private void CheckParameters(ComparisonContext<ServiceDefinition> cont...
    method ResolveParam (line 251) | private static (SwaggerParameter param, bool isGlobal) ResolveParam(Sw...
    method DetectChangedParameterLocation (line 263) | private void DetectChangedParameterLocation(
    method DetectChangedParameterOrder (line 327) | private void DetectChangedParameterOrder(
    method ParamsAreSame (line 378) | private static bool ParamsAreSame(SwaggerParameter currParam, SwaggerP...
    method ParamLocationIsMethod (line 385) | private bool ParamLocationIsMethod((SwaggerParameter param, bool isGlo...
    method ParamOrderMatters (line 392) | private bool ParamOrderMatters((SwaggerParameter param, bool isGlobal)...
    method FindParameterEx (line 427) | private SwaggerParameter FindParameterEx(
    method FindParameter (line 460) | private SwaggerParameter FindParameter(string name, IEnumerable<Swagge...
    method FindParameterIndex (line 480) | private int FindParameterIndex(SwaggerParameter parameter, IList<Swagg...
    method FindResponse (line 492) | private OperationResponse FindResponse(string name)
    method FindReferencedParameter (line 504) | private static SwaggerParameter FindReferencedParameter(

FILE: openapi-diff/src/modeler/AutoRest.Swagger/Model/ParameterLocation.cs
  type ParameterLocation (line 9) | public enum ParameterLocation

FILE: openapi-diff/src/modeler/AutoRest.Swagger/Model/Response.cs
  class OperationResponse (line 12) | public class OperationResponse : SwaggerBase<OperationResponse>
    method Compare (line 28) | public override IEnumerable<ComparisonMessage> Compare(

FILE: openapi-diff/src/modeler/AutoRest.Swagger/Model/Schema.cs
  class Schema (line 15) | public class Schema : SwaggerObject<Schema>
    method Compare (line 76) | public override IEnumerable<ComparisonMessage> Compare(
    method CompareRequired (line 204) | private void CompareRequired(ComparisonContext<ServiceDefinition> cont...
    method CompareAllOfs (line 240) | private void CompareAllOfs(ComparisonContext<ServiceDefinition> contex...
    method CompareProperties (line 269) | private void CompareProperties(ComparisonContext<ServiceDefinition> co...
    method FindReferencedSchema (line 329) | public static Schema FindReferencedSchema(string reference, IDictionar...

FILE: openapi-diff/src/modeler/AutoRest.Swagger/Model/SecurityDefinition.cs
  class SecurityDefinition (line 11) | public class SecurityDefinition

FILE: openapi-diff/src/modeler/AutoRest.Swagger/Model/SecuritySchemeType.cs
  type SecuritySchemeType (line 6) | public enum SecuritySchemeType

FILE: openapi-diff/src/modeler/AutoRest.Swagger/Model/ServiceDefinition.cs
  class ServiceDefinition (line 17) | public class ServiceDefinition : SpecObject
    method ServiceDefinition (line 19) | public ServiceDefinition()
    method Compare (line 113) | public override IEnumerable<ComparisonMessage> Compare(
    method RemovePathVariables (line 391) | private Dictionary<string, Dictionary<string, Operation>> RemovePathVa...
    method CompareVersions (line 405) | private void CompareVersions(ComparisonContext<ServiceDefinition> cont...
    method ReferenceTrackSchemas (line 466) | private static void ReferenceTrackSchemas(ServiceDefinition service)
    method FindReferencedSchema (line 578) | private static Schema FindReferencedSchema(string reference, IDictiona...
    method FindDiscriminator (line 601) | private static bool FindDiscriminator(string reference, IDictionary<st...

FILE: openapi-diff/src/modeler/AutoRest.Swagger/Model/ServiceDefinitionMetadata.cs
  type ServiceDefinitionDocumentState (line 21) | public enum ServiceDefinitionDocumentState
  type ServiceDefinitionDocumentType (line 32) | [Flags]
  class ServiceDefinitionMetadata (line 44) | public class ServiceDefinitionMetadata

FILE: openapi-diff/src/modeler/AutoRest.Swagger/Model/SpecObject.cs
  class SpecObject (line 8) | public abstract class SpecObject : SwaggerBase<ServiceDefinition>

FILE: openapi-diff/src/modeler/AutoRest.Swagger/Model/SwaggerBase.cs
  class SwaggerBase (line 10) | public abstract class SwaggerBase<T>
    method SwaggerBase (line 12) | public SwaggerBase()
    method Compare (line 29) | public virtual IEnumerable<ComparisonMessage> Compare(

FILE: openapi-diff/src/modeler/AutoRest.Swagger/Model/SwaggerObject.cs
  class SwaggerObject (line 18) | public abstract class SwaggerObject<T> : SwaggerBase<T>
    method Compare (line 94) | public override IEnumerable<ComparisonMessage> Compare(
    method CompareEnums (line 183) | private void CompareEnums(ComparisonContext<ServiceDefinition> context...
    method CompareXmsEnum (line 221) | private void CompareXmsEnum(ComparisonContext<ServiceDefinition> conte...
    method CompareProperties (line 242) | private void CompareProperties(ComparisonContext<ServiceDefinition> co...
    method isFormatChangeAllowed (line 262) | private Boolean isFormatChangeAllowed(ComparisonContext<ServiceDefinit...
    method CompareFormats (line 275) | protected void CompareFormats(ComparisonContext<ServiceDefinition> con...
    method CompareConstraints (line 294) | [SuppressMessage("Microsoft.Maintainability", "CA1502:AvoidExcessiveCo...
    method Narrows (line 414) | private bool Narrows(string previous, string current, bool isLowerBound)
    method Widens (line 423) | private bool Widens(string previous, string current, bool isLowerBound)
    method CompareItems (line 432) | protected void CompareItems(ComparisonContext<ServiceDefinition> conte...

FILE: openapi-diff/src/modeler/AutoRest.Swagger/Model/SwaggerParameter.cs
  class SwaggerParameter (line 14) | public class SwaggerParameter : SwaggerObject<SwaggerParameter>
    method Compare (line 43) | public override IEnumerable<ComparisonMessage> Compare(

FILE: openapi-diff/src/modeler/AutoRest.Swagger/Model/TransferProtocolScheme.cs
  type TransferProtocolScheme (line 9) | public enum TransferProtocolScheme

FILE: openapi-diff/src/modeler/AutoRest.Swagger/Model/XmsEnumExtension.cs
  class XmsEnumValue (line 17) | public class XmsEnumValue
  class XmsEnumExtension (line 24) | public class XmsEnumExtension

FILE: openapi-diff/src/modeler/AutoRest.Swagger/PathLevelParameterConverter.cs
  class SwaggerJsonConverter (line 13) | public abstract class SwaggerJsonConverter : JsonConverter
    method WriteJson (line 17) | public override void WriteJson(JsonWriter writer, object value, JsonSe...
    method GetSettings (line 22) | protected JsonSerializerSettings GetSettings(JsonSerializer serializer)
  class PathLevelParameterConverter (line 44) | public class PathLevelParameterConverter : SwaggerJsonConverter
    method PathLevelParameterConverter (line 46) | public PathLevelParameterConverter(string json)
    method CanConvert (line 51) | public override bool CanConvert(System.Type objectType)
    method ReadJson (line 65) | public override object ReadJson(JsonReader reader, System.Type objectT...
    method GetParameterKey (line 121) | private static string GetParameterKey(JObject param)

FILE: openapi-diff/src/modeler/AutoRest.Swagger/Properties/Resources.Designer.cs
  class Resources (line 23) | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
    method Resources (line 31) | internal Resources() {

FILE: openapi-diff/src/modeler/AutoRest.Swagger/SwaggerModeler.cs
  class SwaggerModeler (line 10) | public class SwaggerModeler
    method Compare (line 20) | [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Maintainab...

FILE: openapi-diff/src/modeler/AutoRest.Swagger/SwaggerParser.cs
  class SwaggerParser (line 13) | public static class SwaggerParser
    method Parse (line 15) | public static JsonDocument<ServiceDefinition> Parse(string swaggerDocu...

FILE: src/lib/commands/oad.ts
  type Argv (line 28) | type Argv = {

FILE: src/lib/util/logging.ts
  function getTimeStamp (line 15) | function getTimeStamp() {
  type Logger (line 47) | type Logger = {
  method get (line 71) | get() {
  method set (line 74) | set(level) {
  method get (line 92) | get() {
  method set (line 95) | set(logDirectory) {
  method get (line 109) | get() {
  method set (line 117) | set(logFilePath) {

FILE: src/lib/util/resolveSwagger.ts
  function mergeObjects (line 21) | function mergeObjects<T extends sm.MutableStringMap<Data>>(source: T, ta...
  function mergeArrays (line 51) | function mergeArrays<T extends Data>(source: ReadonlyArray<T>, target: T...
  function getParamKey (line 61) | function getParamKey(source: any) {
  function getNextKey (line 70) | function getNextKey(source: sm.MutableStringMap<Data>) {
  function mergeParameters (line 78) | function mergeParameters<T extends sm.MutableStringMap<Data>>(source: T,...
  class ResolveSwagger (line 93) | class ResolveSwagger {
    method constructor (line 98) | constructor(file: string, map: sourceMap.BasicSourceMapConsumer | sour...
    method resolve (line 102) | public resolve(): json.Json | undefined {
    method unifyXMsPaths (line 113) | private unifyXMsPaths() {
    method ConvertPathLevelParameter (line 129) | private ConvertPathLevelParameter() {
    method ConvertAdditionalProperty (line 153) | public ConvertAdditionalProperty() {
    method transformAdditionalProperty (line 187) | private transformAdditionalProperty(schema: any) {
    method ExpandDefinitions (line 208) | private ExpandDefinitions() {
    method ExpandAllOf (line 230) | private ExpandAllOf(schema: any) {
    method isEqual (line 289) | private isEqual(parentProperty: any, unwrappedProperty: any): boolean {
    method checkCircularAllOf (line 318) | private checkCircularAllOf(schema: any, visited: any[] | undefined, re...
    method getModelName (line 346) | private getModelName(ref: string) {
    method dereferenceInner (line 354) | private dereferenceInner(ref: string, visitedRefs: Set<string>): any {
    method dereference (line 376) | private dereference(ref: string) {
    method stringify (line 386) | private stringify(): string {
    method generateNew (line 390) | private generateNew() {
    method parse (line 394) | private parse(url: string, data: string) {
    method getSwaggerFolder (line 402) | public getSwaggerFolder(): string {
    method getResolvedPath (line 406) | public getResolvedPath(): string {
    method getLocation (line 410) | public getLocation(jsonPath: string): FilePosition | undefined {

FILE: src/lib/util/utils.ts
  function clearCache (line 19) | function clearCache() {
  function stripBOM (line 27) | function stripBOM(content: string) {
  function parseJson (line 45) | async function parseJson(specPath: string) {
  function parseContent (line 84) | function parseContent(filePath: string, fileContent: string) {
  function run (line 102) | function run(genfun: () => any) {
  type Options (line 130) | type Options = {
  function makeRequest (line 146) | async function makeRequest(options: Options) {
  function executePromisesSequentially (line 174) | function executePromisesSequentially(promiseFactories: ReadonlyArray<any...
  function generateRandomId (line 192) | function generateRandomId(prefix: string, existingIds: object) {
  type References (line 206) | type References = {
  function parseReferenceInSwagger (line 233) | function parseReferenceInSwagger(reference: string) {
  function joinPath (line 276) | function joinPath(...args: string[]) {
  function parseJsonWithPathFragments (line 292) | function parseJsonWithPathFragments(...args: string[]) {
  function mergeObjects (line 305) | function mergeObjects(source: { readonly [key: string]: unknown }, targe...
  function getObject (line 321) | function getObject(doc: object, ptr: string) {
  function setObject (line 341) | function setObject(doc: object, ptr: string, value: unknown) {
  function removeObject (line 357) | function removeObject(doc: object, ptr: string) {
  function getProvider (line 377) | function getProvider(path: string) {
  function gitClone (line 402) | function gitClone(url: string, directory: string) {
  function getJsonContentType (line 436) | function getJsonContentType(consumesOrProduces: ReadonlyArray<string>) {
  function isUrlEncoded (line 451) | function isUrlEncoded(str: string) {
  type Model (line 456) | type Model = {
  function isPureObject (line 472) | function isPureObject(model: Model) {
  function relaxEntityType (line 502) | function relaxEntityType(entity: Model, isRequired?: boolean) {
  function relaxModelLikeEntities (line 521) | function relaxModelLikeEntities(model: Model) {
  function pathToJsonPointer (line 546) | function pathToJsonPointer(jsonPath: string): string {

FILE: src/lib/validate.ts
  function compare (line 21) | function compare(oldSwagger: string, newSwagger: string, options: Option...
  function compareTags (line 51) | function compareTags(oldSwagger: string, oldTag: string, newSwagger: str...

FILE: src/lib/validators/openApiDiff.ts
  type Options (line 22) | type Options = {
  type ProcessedFile (line 27) | type ProcessedFile = {
  type ChangeProperties (line 34) | type ChangeProperties = {
  type Message (line 40) | type Message = {
  type Messages (line 51) | type Messages = ReadonlyArray<Message>
  class OpenApiDiff (line 89) | class OpenApiDiff {
    method constructor (line 99) | constructor(private options: Options) {
    method compare (line 124) | public async compare(oldSwagger: string, newSwagger: string, oldTag?: ...
    method dotNetPath (line 137) | public dotNetPath(): string {
    method autoRestFileArgs (line 149) | public autoRestFileArgs(): { file: string; args: string[] } {
    method openApiDiffDllPath (line 188) | public openApiDiffDllPath(): string {
    method processViaAutoRest (line 204) | public async processViaAutoRest(swaggerPath: string, outputFileName: s...
    method processViaOpenApiDiff (line 284) | public async processViaOpenApiDiff(oldSwaggerFile: ProcessedFile, newS...
Condensed preview — 315 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (1,830K chars).
[
  {
    "path": ".gitattributes",
    "chars": 465,
    "preview": "*.bmp binary\n*.dll binary\n*.gif binary\n*.jpg binary\n*.png binary\n*.snk binary\n*.exe binary\n*.wmv binary\n*.mp4 binary\n*.i"
  },
  {
    "path": ".github/CODEOWNERS",
    "chars": 55,
    "preview": "* @mikeharder @weshaggard @raych1 @scbedd @danieljurek\n"
  },
  {
    "path": ".github/copilot-instructions.md",
    "chars": 3261,
    "preview": "# Copilot Instructions\n\n## Project Overview\n\nThis repository contains the source code for `openapi-diff` (aka `oad`, aka"
  },
  {
    "path": ".github/dependabot.yml",
    "chars": 945,
    "preview": "version: 2\nupdates:\n  - package-ecosystem: \"github-actions\"\n    directory: \"/\"\n    schedule:\n      interval: \"weekly\"\n  "
  },
  {
    "path": ".github/matchers/actionlint.json",
    "chars": 435,
    "preview": "{\n  \"problemMatcher\": [\n    {\n      \"owner\": \"actionlint\",\n      \"pattern\": [\n        {\n          \"regexp\": \"^(?:\\\\x1b\\\\"
  },
  {
    "path": ".github/workflows/ci.yml",
    "chars": 1274,
    "preview": "name: ci\n\non:\n  push:\n    branches: [main]\n  pull_request:\n\njobs:\n  ci:\n    runs-on: ${{ matrix.os }}\n    strategy:\n    "
  },
  {
    "path": ".gitignore",
    "chars": 2826,
    "preview": "## Ignore generated code\nPackageTest/NugetPackageTest/Generated\nsrc/generator/AutoRest.NodeJS.Tests/AcceptanceTests/*.js"
  },
  {
    "path": ".markdownlint.jsonc",
    "chars": 1451,
    "preview": "{\n    // This repository is markdownlint-enabled.\n    // Website: https://github.com/DavidAnson/markdownlint\n    // VS C"
  },
  {
    "path": ".prettierignore",
    "chars": 62,
    "preview": "*.json\n*.md\n*.jsonc\n.prettierrc\nazure-pipelines.yml\ncoverage/\n"
  },
  {
    "path": ".prettierrc",
    "chars": 93,
    "preview": "{\n  \"semi\": false,\n  \"printWidth\": 140,\n  \"trailingComma\": \"none\",\n  \"arrowParens\": \"avoid\"\n}"
  },
  {
    "path": ".vscode/launch.json",
    "chars": 1123,
    "preview": "{\n    \"version\": \"0.2.0\",\n    \"configurations\": [\n        {\n            // Use IntelliSense to find out which attributes"
  },
  {
    "path": ".vscode/settings.json",
    "chars": 92,
    "preview": "{\n    \"cSpell.words\": [\n    ],\n    \"azure-pipelines.1ESPipelineTemplatesSchemaFile\": true\n}\n"
  },
  {
    "path": ".vscode/tasks.json",
    "chars": 1200,
    "preview": "{\n    \"version\": \"2.0.0\",\n    \"tasks\": [\n        {\n            \"label\": \"build\",\n            \"command\": \"dotnet\",\n      "
  },
  {
    "path": "CHANGELOG.md",
    "chars": 5698,
    "preview": "# Changelog\n\n## 0.12.4 2026-03-13\n\n- Only throw error on AutoRest stderr when exit code is non-zero; log warnings otherw"
  },
  {
    "path": "CONTRIBUTING.md",
    "chars": 7326,
    "preview": "# Contributing\n\nThis project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/co"
  },
  {
    "path": "CredScanSuppressions.json",
    "chars": 351,
    "preview": "{\n  \"tool\": \"Credential Scanner\",\n  \"suppressions\": [\n    {\n     \"file\": \"node_modules\\\\superagent\\\\docs\\\\index.md\", \n  "
  },
  {
    "path": "LICENSE",
    "chars": 1183,
    "preview": "    MIT License\r\n\r\n    Copyright (c) Microsoft Corporation. All rights reserved.\r\n\r\n    Permission is hereby granted, fr"
  },
  {
    "path": "README.md",
    "chars": 1370,
    "preview": "# About openapi-diff\r\n\r\n[![Build Status][build status]][build pipeline]\r\n\r\nThis repository contains source code of `open"
  },
  {
    "path": "SECURITY.md",
    "chars": 2757,
    "preview": "<!-- BEGIN MICROSOFT SECURITY.MD V0.0.8 BLOCK -->\n\n## Security\n\nMicrosoft takes the security of our software products an"
  },
  {
    "path": "azure-pipelines.yml",
    "chars": 1310,
    "preview": "trigger:\n- main\n\nresources:\n  repositories:\n  - repository: azure-sdk-tools\n    type: github\n    name: Azure/azure-sdk-t"
  },
  {
    "path": "docs/README.md",
    "chars": 2295,
    "preview": "## Rules\n\n[1000 - VersionsReversed](rules/1000.md)\n\n[1001 - NoVersionChange](rules/1001.md)\n\n[1002 - ProtocolNoLongerSup"
  },
  {
    "path": "docs/rules/1000.md",
    "chars": 597,
    "preview": "### 1000 - VersionsReversed\n\n**Description**: Checks whether [semantic version](http://semver.org/) is reversed from the"
  },
  {
    "path": "docs/rules/1001.md",
    "chars": 584,
    "preview": "### 1001 - NoVersionChange\n\n**Description**: Checks whether version is changed from the previous specification. \n\n**Caus"
  },
  {
    "path": "docs/rules/1002.md",
    "chars": 479,
    "preview": "### 1002 - ProtocolNoLongerSupported\n\n**Description**: Checks whether any supported `scheme` is changed from the previou"
  },
  {
    "path": "docs/rules/1003.md",
    "chars": 595,
    "preview": "### 1003 - RequestBodyFormatNoLongerSupported\n\n**Description**: Checks whether any supported `consumes` is changed from "
  },
  {
    "path": "docs/rules/1004.md",
    "chars": 593,
    "preview": "### 1004 - ResponseBodyFormatNowSupported\n\n**Description**: Checks whether any additional supported `produces` is now su"
  },
  {
    "path": "docs/rules/1005.md",
    "chars": 1269,
    "preview": "### 1005 - RemovedPath\n\n**Description**: Checks whether an existing path is removed from the previous specification. \n\n*"
  },
  {
    "path": "docs/rules/1006.md",
    "chars": 1704,
    "preview": "### 1006 - RemovedDefinition\n\n**Description**: Checks whether an existing model definition is removed from the previous "
  },
  {
    "path": "docs/rules/1007.md",
    "chars": 1939,
    "preview": "### 1007 - RemovedClientParameter\n\n**Description**: Checks whether any supported parameter from global `parameters` sect"
  },
  {
    "path": "docs/rules/1008.md",
    "chars": 1252,
    "preview": "### 1008 - ModifiedOperationId\n\n**Description**: Checks whether an existing operation's `operationId` is changed from th"
  },
  {
    "path": "docs/rules/1009.md",
    "chars": 2112,
    "preview": "### 1009 - RemovedRequiredParameter\n\n**Description**: Checks whether required parameter is removed / made optional from "
  },
  {
    "path": "docs/rules/1010.md",
    "chars": 2177,
    "preview": "### 1010 - AddingRequiredParameter\n\n**Description**: Checks whether new required parameter is introduced from the previo"
  },
  {
    "path": "docs/rules/1011.md",
    "chars": 1121,
    "preview": "### 1011 - AddingResponseCode\n\n**Description**: Checks whether any new response code is added from the previous specific"
  },
  {
    "path": "docs/rules/1012.md",
    "chars": 1133,
    "preview": "### 1012 - RemovedResponseCode\n\n**Description**: Checks whether any existing response code is removed from the previous "
  },
  {
    "path": "docs/rules/1013.md",
    "chars": 1447,
    "preview": "### 1013 - AddingHeader\n\n**Description**: Checks whether any new header is added from the previous specification.\n\n**Cau"
  },
  {
    "path": "docs/rules/1014.md",
    "chars": 1380,
    "preview": "### 1014 - RemovingHeader\n\n**Description**: Checks whether any existing header is removed from the previous specificatio"
  },
  {
    "path": "docs/rules/1015.md",
    "chars": 1941,
    "preview": "### 1015 - ParameterInHasChanged\n\n**Description**: Checks whether any parameter's `in` is changed from the previous spec"
  },
  {
    "path": "docs/rules/1016.md",
    "chars": 2286,
    "preview": "### 1016 - ConstantStatusHasChanged\n\n**Description**: Checks whether any parameter that used to accept only one value no"
  },
  {
    "path": "docs/rules/1017.md",
    "chars": 2312,
    "preview": "### 1017 - ReferenceRedirection\n\n**Description**: Checks whether any '$ref' property points to different models from the"
  },
  {
    "path": "docs/rules/1019.md",
    "chars": 1612,
    "preview": "### 1019 - RemovedEnumValue\n\n**Description**: Checks whether an existing enum property has removed allowed values from t"
  },
  {
    "path": "docs/rules/1020.md",
    "chars": 1633,
    "preview": "### 1020 - AddedEnumValue\n\n**Description**: Checks whether an existing enum property has added more allowed values from "
  },
  {
    "path": "docs/rules/1021.md",
    "chars": 1648,
    "preview": "### 1021 - AddedAdditionalProperties\n\n**Description**: Checks whether any property adds `additionalProperties` element f"
  },
  {
    "path": "docs/rules/1022.md",
    "chars": 1665,
    "preview": "### 1022 - RemovedAdditionalProperties\n\n**Description**: Checks whether any existing property removes `additionalPropert"
  },
  {
    "path": "docs/rules/1023.md",
    "chars": 1362,
    "preview": "### 1023 - TypeFormatChanged\n\n**Description**: Checks whether any existing property's [format](https://github.com/OAI/Op"
  },
  {
    "path": "docs/rules/1024.md",
    "chars": 1636,
    "preview": "### 1024 - ConstraintIsStronger\n\n**Description**: Checks whether any constraining in requests like `maximum`, `minimum`,"
  },
  {
    "path": "docs/rules/1025.md",
    "chars": 2317,
    "preview": "### 1025 - RequiredStatusChange\n\n**Description**: Checks whether an existing property's `required` status is changed fro"
  },
  {
    "path": "docs/rules/1026.md",
    "chars": 1540,
    "preview": "### 1026 - TypeChanged\n\n**Description**: Checks whether an existing property has changed the type from the previous spec"
  },
  {
    "path": "docs/rules/1027.md",
    "chars": 1128,
    "preview": "### 1027 - DefaultValueChanged\n\n**Description**: Checks whether any existing property's `default` element has changed fr"
  },
  {
    "path": "docs/rules/1028.md",
    "chars": 1548,
    "preview": "### 1028 - ArrayCollectionFormatChanged\n\n**Description**: Checks whether array's `collectionFormat` has changed from the"
  },
  {
    "path": "docs/rules/1029.md",
    "chars": 1974,
    "preview": "### 1029 - ReadonlyPropertyChanged\n\n**Description**: Checks whether property's readonly has changed from the previous sp"
  },
  {
    "path": "docs/rules/1030.md",
    "chars": 1313,
    "preview": "### 1030 - DifferentDiscriminator\n\n**Description**: Checks whether value of `discriminator` has changed from the previou"
  },
  {
    "path": "docs/rules/1031.md",
    "chars": 256,
    "preview": "### 1031 - DifferentExtends\n\n**Description**: Checks whether any model's extend has changed from the previous specificat"
  },
  {
    "path": "docs/rules/1032.md",
    "chars": 1406,
    "preview": "### 1032 - DifferentAllOf\n\n**Description**: Checks whether any model's `allOf` has changed from the previous specificati"
  },
  {
    "path": "docs/rules/1033.md",
    "chars": 1677,
    "preview": "### 1033 - RemovedProperty\n\n**Description**: Checks whether an existing property is removed from the previous specificat"
  },
  {
    "path": "docs/rules/1034.md",
    "chars": 1576,
    "preview": "### 1034 - AddedRequiredProperty\n\n**Description**: Checks whether a new required property has added from the previous sp"
  },
  {
    "path": "docs/rules/1035.md",
    "chars": 1486,
    "preview": "### 1035 - RemovedOperation\n\n**Description**: Checks whether an existing operation from a path is removed from the previ"
  },
  {
    "path": "docs/rules/1036.md",
    "chars": 1557,
    "preview": "### 1036 - ConstraintChanged\n\n**Description**: Checks whether any property's constraint like `maximum`, `minimum`, `minL"
  },
  {
    "path": "docs/rules/1037.md",
    "chars": 1980,
    "preview": "### 1037 - ConstraintIsWeaker\n\n**Description**: Checks whether any constraining in responses like `maximum`, `minimum`, "
  },
  {
    "path": "docs/rules/1038.md",
    "chars": 1248,
    "preview": "### 1038 - AddedPath\n\n**Description**: Checks whether a new path is added from the previous specification. \n\n**Cause**: "
  },
  {
    "path": "docs/rules/1039.md",
    "chars": 1532,
    "preview": "### 1039 - AddedOperation\n\n**Description**: Checks whether a new operation in an existing path is added from the previou"
  },
  {
    "path": "docs/rules/1040.md",
    "chars": 2177,
    "preview": "### 1040 - AddedReadOnlyPropertyInResponse\n\n**Description**: Checks whether a `readOnly` property is added to the respon"
  },
  {
    "path": "docs/rules/1041.md",
    "chars": 2127,
    "preview": "### 1041 - AddedPropertyInResponse\n\n**Description**: Checks whether a property is added to the response model from the p"
  },
  {
    "path": "docs/rules/1042.md",
    "chars": 912,
    "preview": "### 1042 - ChangedParameterOrder\n\n**Description**: Check whether operation parameter order is changed. If operation para"
  },
  {
    "path": "docs/rules/1043.md",
    "chars": 2178,
    "preview": "### 1043 - AddingOptionalParameter\n\n**Description**: Checks whether new optional parameter is introduced from the previo"
  },
  {
    "path": "docs/rules/1044.md",
    "chars": 865,
    "preview": "### 1044 - XmsLongRunningOperationChanged\n\n**Description**: Checks whether any operation's 'x-ms-long-running-operation'"
  },
  {
    "path": "docs/rules/1045.md",
    "chars": 1606,
    "preview": "### 1045 - AddedOptionalProperty\n\n**Description**: Checks whether a property is added to the model from the previous spe"
  },
  {
    "path": "docs/rules/1046.md",
    "chars": 2146,
    "preview": "### 1046 - RemovedOptionalParameter\n\n**Description**: Checks whether optional parameter is removed / made required from "
  },
  {
    "path": "docs/rules/1047.md",
    "chars": 709,
    "preview": "### 1047 - XmsEnumChanged\n\n**Description**: Checks whether the x-ms-enum 'name' or 'modelAsString' is changed.\n\n**Cause*"
  },
  {
    "path": "docs/rules/1048.md",
    "chars": 597,
    "preview": "### 1048 - AddedXmsEnum\n\n**Description**: Checks whether the x-ms-enum is added.\n\n**Cause**: This is considered a breaki"
  },
  {
    "path": "docs/rules/1049.md",
    "chars": 603,
    "preview": "### 1049 - RemovedXmsEnum\n\n**Description**: Checks whether the x-ms-enum is removed.\n\n**Cause**: This is considered a br"
  },
  {
    "path": "docs/rules/1050.md",
    "chars": 2414,
    "preview": "### 1050 - ParameterLocationHasChanged\n\n**Description**: Checks whether any parameter's location ([`x-ms-parameter-locat"
  },
  {
    "path": "eng/1es-redirect.yml",
    "chars": 2243,
    "preview": "resources:\n  repositories:\n    - repository: 1ESPipelineTemplates\n      type: git\n      name: 1ESPipelineTemplates/1ESPi"
  },
  {
    "path": "eng/image.yml",
    "chars": 589,
    "preview": "# Default pool image selection. Set as variable so we can override at pipeline level\n\nvariables:\n  - name: LINUXPOOL\n   "
  },
  {
    "path": "eng/publish-1es-artifact.yml",
    "chars": 1566,
    "preview": "# This step is used to prevent duplication of artifact publishes when there is an issue that would prevent the overall s"
  },
  {
    "path": "eng/test-steps.yml",
    "chars": 683,
    "preview": "parameters:\n  - name: ArtifactName\n    type: string\n    default: \"drop\"\n\nsteps:\n  - task: UseDotNet@2\n    inputs:\n      "
  },
  {
    "path": "eslint.config.js",
    "chars": 2165,
    "preview": "// @ts-check\n\n// This file contents based on:\n// https://typescript-eslint.io/getting-started#step-2-configuration\n// ht"
  },
  {
    "path": "openapi-diff/OpenApiDiff.sln",
    "chars": 6080,
    "preview": "Microsoft Visual Studio Solution File, Format Version 12.00\r\n# Visual Studio 15\r\nVisualStudioVersion = 15.0.26217.2\r\nMin"
  },
  {
    "path": "openapi-diff/src/common/common-package-references.proj",
    "chars": 151,
    "preview": "<Project ToolsVersion=\"15.0\">\n\n\n  <ItemGroup>\n    <!-- <PackageReference Include=\"NETStandard.Library\" Version=\"1.6.1\" /"
  },
  {
    "path": "openapi-diff/src/common/common.proj",
    "chars": 837,
    "preview": "<Project ToolsVersion=\"15.0\">\n  <PropertyGroup Condition=\"$(Common) == '*Undefined*' OR $(Common) == '' \" >\n    <Version"
  },
  {
    "path": "openapi-diff/src/common/copy-resource-to-output.proj",
    "chars": 207,
    "preview": "<Project ToolsVersion=\"15.0\">\n  <ItemGroup>\n    <Content Include=\"$(MSBuildProjectDirectory)\\Resource\\**\">\n      <CopyTo"
  },
  {
    "path": "openapi-diff/src/common/enumerate-inputs.proj",
    "chars": 44,
    "preview": "<Project ToolsVersion=\"4.0\"  >\n\n</Project>  "
  },
  {
    "path": "openapi-diff/src/common/package-info.proj",
    "chars": 846,
    "preview": "<Project ToolsVersion=\"15.0\" xmlns=\"http://schemas.microsoft.com/developer/msbuild/2003\">\n  <PropertyGroup>\n    <Copyrig"
  },
  {
    "path": "openapi-diff/src/common/project-library.proj",
    "chars": 131,
    "preview": "<Project ToolsVersion=\"15.0\">\n  <PropertyGroup>\n    <TargetFramework>netstandard2.0</TargetFramework>\n  </PropertyGroup>"
  },
  {
    "path": "openapi-diff/src/common/project-xunittest.proj",
    "chars": 366,
    "preview": "<Project ToolsVersion=\"15.0\">\n  <ItemGroup>\n    <PackageReference Include=\"Microsoft.Extensions.DependencyModel\" Version"
  },
  {
    "path": "openapi-diff/src/core/OpenApiDiff/HelpExample.cs",
    "chars": 607,
    "preview": "// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License. See License.txt in the "
  },
  {
    "path": "openapi-diff/src/core/OpenApiDiff/HelpGenerator.cs",
    "chars": 6587,
    "preview": "// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License. See License.txt in the "
  },
  {
    "path": "openapi-diff/src/core/OpenApiDiff/OpenApiDiff.csproj",
    "chars": 3146,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\" ToolsVersion=\"15.0\">\n  <Import Project=\"$([MSBuild]::GetDirectoryNameOfFileAbove($(MSB"
  },
  {
    "path": "openapi-diff/src/core/OpenApiDiff/Program.cs",
    "chars": 1472,
    "preview": "// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License. See License.txt in the "
  },
  {
    "path": "openapi-diff/src/core/OpenApiDiff/Properties/Resources.Designer.cs",
    "chars": 5849,
    "preview": "//------------------------------------------------------------------------------\n// <auto-generated>\n//     This code w"
  },
  {
    "path": "openapi-diff/src/core/OpenApiDiff/Properties/Resources.resx",
    "chars": 6994,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The prim"
  },
  {
    "path": "openapi-diff/src/core/OpenApiDiff.Core/JsonDocument.cs",
    "chars": 1785,
    "preview": "using Newtonsoft.Json.Linq;\n\nnamespace OpenApiDiff.Core\n{\n    /// <summary>\n    /// An interface for untyped parsed JSO"
  },
  {
    "path": "openapi-diff/src/core/OpenApiDiff.Core/Logging/LogMessageSeverity.cs",
    "chars": 353,
    "preview": "// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License. See License.txt in the "
  },
  {
    "path": "openapi-diff/src/core/OpenApiDiff.Core/Logging/ObjectPath.cs",
    "chars": 5025,
    "preview": "// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License. See License.txt in the "
  },
  {
    "path": "openapi-diff/src/core/OpenApiDiff.Core/OpenApiDiff.Core.csproj",
    "chars": 1464,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\" ToolsVersion=\"15.0\">\n  <Import Project=\"$([MSBuild]::GetDirectoryNameOfFileAbove($(MSB"
  },
  {
    "path": "openapi-diff/src/core/OpenApiDiff.Core/Properties/Resources.Designer.cs",
    "chars": 32745,
    "preview": "//------------------------------------------------------------------------------\n// <auto-generated>\n//     This code w"
  },
  {
    "path": "openapi-diff/src/core/OpenApiDiff.Core/Properties/Resources.resx",
    "chars": 20247,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The prim"
  },
  {
    "path": "openapi-diff/src/core/OpenApiDiff.Core/Settings.cs",
    "chars": 10256,
    "preview": "// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License. See License.txt in the "
  },
  {
    "path": "openapi-diff/src/core/OpenApiDiff.Core/SettingsAliasAttribute.cs",
    "chars": 950,
    "preview": "// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License. See License.txt in the "
  },
  {
    "path": "openapi-diff/src/core/OpenApiDiff.Core/SettingsInfoAttribute.cs",
    "chars": 1699,
    "preview": "// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License. See License.txt in the "
  },
  {
    "path": "openapi-diff/src/modeler/AutoRest.Swagger/AutoRest.Swagger.csproj",
    "chars": 840,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\" ToolsVersion=\"15.0\">\n  <Import Project=\"$([MSBuild]::GetDirectoryNameOfFileAbove($(MSB"
  },
  {
    "path": "openapi-diff/src/modeler/AutoRest.Swagger/ComparisonContext.cs",
    "chars": 3901,
    "preview": "using Newtonsoft.Json.Linq;\nusing OpenApiDiff.Core;\nusing OpenApiDiff.Core.Logging;\nusing System;\nusing System.Collecti"
  },
  {
    "path": "openapi-diff/src/modeler/AutoRest.Swagger/ComparisonMessage.cs",
    "chars": 5514,
    "preview": "// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License. See License.txt in the "
  },
  {
    "path": "openapi-diff/src/modeler/AutoRest.Swagger/ComparisonMessages.cs",
    "chars": 16708,
    "preview": "namespace AutoRest.Swagger\n{\n    public static class ComparisonMessages\n    {\n        public static MessageTemplate Rem"
  },
  {
    "path": "openapi-diff/src/modeler/AutoRest.Swagger/JsonComparisonMessage.cs",
    "chars": 328,
    "preview": "namespace AutoRest.Swagger\n{\n    sealed class JsonComparisonMessage\n    {\n        public string id;\n\n        public str"
  },
  {
    "path": "openapi-diff/src/modeler/AutoRest.Swagger/JsonLocation.cs",
    "chars": 164,
    "preview": "namespace AutoRest.Swagger\n{\n    sealed class JsonLocation\n    {\n        public string @ref;\n\n        public string pat"
  },
  {
    "path": "openapi-diff/src/modeler/AutoRest.Swagger/MessageTemplate.cs",
    "chars": 510,
    "preview": "\nnamespace AutoRest.Swagger\n{\n    public class MessageTemplate\n    {\n        public MessageTemplate()\n        {\n       "
  },
  {
    "path": "openapi-diff/src/modeler/AutoRest.Swagger/MessageType.cs",
    "chars": 121,
    "preview": "namespace AutoRest.Swagger\n{\n    public enum MessageType\n    {\n        Addition,\n        Update,\n        Removal\n    }\n"
  },
  {
    "path": "openapi-diff/src/modeler/AutoRest.Swagger/Model/ApiKeyLocation.cs",
    "chars": 282,
    "preview": "// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License. See License.txt in the "
  },
  {
    "path": "openapi-diff/src/modeler/AutoRest.Swagger/Model/DataType.cs",
    "chars": 420,
    "preview": "// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License. See License.txt in the "
  },
  {
    "path": "openapi-diff/src/modeler/AutoRest.Swagger/Model/ExternalDoc.cs",
    "chars": 618,
    "preview": "// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License. See License.txt in the "
  },
  {
    "path": "openapi-diff/src/modeler/AutoRest.Swagger/Model/Header.cs",
    "chars": 346,
    "preview": "// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License. See License.txt in the "
  },
  {
    "path": "openapi-diff/src/modeler/AutoRest.Swagger/Model/Info.cs",
    "chars": 588,
    "preview": "// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License. See License.txt in the p"
  },
  {
    "path": "openapi-diff/src/modeler/AutoRest.Swagger/Model/OAuthFlow.cs",
    "chars": 323,
    "preview": "// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License. See License.txt in the "
  },
  {
    "path": "openapi-diff/src/modeler/AutoRest.Swagger/Model/Operation.cs",
    "chars": 25469,
    "preview": "// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License. See License.txt in the p"
  },
  {
    "path": "openapi-diff/src/modeler/AutoRest.Swagger/Model/ParameterLocation.cs",
    "chars": 408,
    "preview": "// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License. See License.txt in the "
  },
  {
    "path": "openapi-diff/src/modeler/AutoRest.Swagger/Model/Response.cs",
    "chars": 3081,
    "preview": "// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License. See License.txt in the p"
  },
  {
    "path": "openapi-diff/src/modeler/AutoRest.Swagger/Model/Schema.cs",
    "chars": 14902,
    "preview": "// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License. See License.txt in the "
  },
  {
    "path": "openapi-diff/src/modeler/AutoRest.Swagger/Model/SecurityDefinition.cs",
    "chars": 979,
    "preview": "// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License. See License.txt in the "
  },
  {
    "path": "openapi-diff/src/modeler/AutoRest.Swagger/Model/SecuritySchemeType.cs",
    "chars": 302,
    "preview": "// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License. See License.txt in the "
  },
  {
    "path": "openapi-diff/src/modeler/AutoRest.Swagger/Model/ServiceDefinition.cs",
    "chars": 25523,
    "preview": "// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License. See License.txt in the "
  },
  {
    "path": "openapi-diff/src/modeler/AutoRest.Swagger/Model/ServiceDefinitionMetadata.cs",
    "chars": 1938,
    "preview": "// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License. See License.txt in the "
  },
  {
    "path": "openapi-diff/src/modeler/AutoRest.Swagger/Model/SpecObject.cs",
    "chars": 292,
    "preview": "// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License. See License.txt in the "
  },
  {
    "path": "openapi-diff/src/modeler/AutoRest.Swagger/Model/SwaggerBase.cs",
    "chars": 1393,
    "preview": "// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License. See License.txt in the "
  },
  {
    "path": "openapi-diff/src/modeler/AutoRest.Swagger/Model/SwaggerObject.cs",
    "chars": 20674,
    "preview": "// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License. See License.txt in the p"
  },
  {
    "path": "openapi-diff/src/modeler/AutoRest.Swagger/Model/SwaggerParameter.cs",
    "chars": 3159,
    "preview": "// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License. See License.txt in the p"
  },
  {
    "path": "openapi-diff/src/modeler/AutoRest.Swagger/Model/TransferProtocolScheme.cs",
    "chars": 392,
    "preview": "// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License. See License.txt in the "
  },
  {
    "path": "openapi-diff/src/modeler/AutoRest.Swagger/Model/XmsEnumExtension.cs",
    "chars": 953,
    "preview": "// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License. See License.txt in the p"
  },
  {
    "path": "openapi-diff/src/modeler/AutoRest.Swagger/PathLevelParameterConverter.cs",
    "chars": 4515,
    "preview": "// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License. See License.txt in the "
  },
  {
    "path": "openapi-diff/src/modeler/AutoRest.Swagger/Properties/Resources.Designer.cs",
    "chars": 12022,
    "preview": "//------------------------------------------------------------------------------\n// <auto-generated>\n//     This code w"
  },
  {
    "path": "openapi-diff/src/modeler/AutoRest.Swagger/Properties/Resources.resx",
    "chars": 9679,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root>\n  <!-- \n    Microsoft ResX Schema \n    \n    Version 2.0\n    \n    The prim"
  },
  {
    "path": "openapi-diff/src/modeler/AutoRest.Swagger/SwaggerModeler.cs",
    "chars": 1575,
    "preview": "// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License. See License.txt in the "
  },
  {
    "path": "openapi-diff/src/modeler/AutoRest.Swagger/SwaggerParser.cs",
    "chars": 1083,
    "preview": "// Copyright (c) Microsoft Corporation. All rights reserved.\n// Licensed under the MIT License. See License.txt in the "
  },
  {
    "path": "openapi-diff/src/modeler/AutoRest.Swagger/packages.config",
    "chars": 215,
    "preview": "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<packages>\n  <package id=\"Newtonsoft.Json\" version=\"13.0.3\" targetFramework=\"net"
  },
  {
    "path": "openapi-diff/src/modeler/AutoRest.Swagger.Tests/AutoRest.Swagger.Tests.csproj",
    "chars": 6643,
    "preview": "<Project Sdk=\"Microsoft.NET.Sdk\" ToolsVersion=\"15.0\">\n  <Import Project=\"$([MSBuild]::GetDirectoryNameOfFileAbove($(MSB"
  },
  {
    "path": "openapi-diff/src/modeler/AutoRest.Swagger.Tests/Resource/Swagger/new/add_optional_property_01.json",
    "chars": 4908,
    "preview": "{\n  \"swagger\": \"2.0\",\n  \"info\": {\n    \"title\": \"operation_check_01\",\n    \"version\": \"1.0\"\n  },\n  \"host\": \"localhost:800"
  },
  {
    "path": "openapi-diff/src/modeler/AutoRest.Swagger.Tests/Resource/Swagger/new/added_optional_property.json",
    "chars": 1670,
    "preview": "{\n  \"swagger\": \"2.0\",\n  \"info\": {\n    \"title\": \"added_required_property\",\n    \"version\": \"1.0\"\n  },\n  \"host\": \"localhos"
  },
  {
    "path": "openapi-diff/src/modeler/AutoRest.Swagger.Tests/Resource/Swagger/new/added_path.json",
    "chars": 878,
    "preview": "{\n  \"swagger\": 2.0,\n  \"info\": {\n    \"title\": \"added_path\",\n    \"version\": \"1.0\"\n  },\n  \"host\": \"localhost:8000\",\n  \"sch"
  },
  {
    "path": "openapi-diff/src/modeler/AutoRest.Swagger.Tests/Resource/Swagger/new/added_property_in_response.json",
    "chars": 47425,
    "preview": "{\n  \"swagger\": \"2.0\",\n  \"info\": {\n    \"title\": \"added_property_in_response\",\n    \"description\": \"The Azure Storage Mana"
  },
  {
    "path": "openapi-diff/src/modeler/AutoRest.Swagger.Tests/Resource/Swagger/new/added_readonly_required_property.json",
    "chars": 1051,
    "preview": "{\n  \"swagger\": 2.0,\n  \"info\": {\n    \"title\": \"added_required_property\",\n    \"version\": \"1.0\"\n  },\n  \"host\": \"localhost:"
  },
  {
    "path": "openapi-diff/src/modeler/AutoRest.Swagger.Tests/Resource/Swagger/new/added_required_property.json",
    "chars": 1023,
    "preview": "{\n  \"swagger\": 2.0,\n  \"info\": {\n    \"title\": \"added_required_property\",\n    \"version\": \"1.0\"\n  },\n  \"host\": \"localhost:"
  },
  {
    "path": "openapi-diff/src/modeler/AutoRest.Swagger.Tests/Resource/Swagger/new/changed_operation_id.json",
    "chars": 840,
    "preview": "{\n  \"swagger\": 2.0,\n  \"info\": {\n    \"title\": \"changed_operation_id\",\n    \"version\": \"1.0\"\n  },\n  \"host\": \"localhost:800"
  },
  {
    "path": "openapi-diff/src/modeler/AutoRest.Swagger.Tests/Resource/Swagger/new/common_parameter_check_01.json",
    "chars": 624,
    "preview": "{\n  \"swagger\": 2.0,\n  \"info\": {\n    \"title\": \"common_parameter_check_01\",\n    \"version\": \"1.0\"\n  },\n  \"host\": \"localhost"
  },
  {
    "path": "openapi-diff/src/modeler/AutoRest.Swagger.Tests/Resource/Swagger/new/common_parameter_check_02.json",
    "chars": 737,
    "preview": "{\n  \"swagger\": 2.0,\n  \"info\": {\n    \"title\": \"common_parameter_check_02\",\n    \"version\": \"1.0\"\n  },\n  \"host\": \"localhost"
  },
  {
    "path": "openapi-diff/src/modeler/AutoRest.Swagger.Tests/Resource/Swagger/new/common_parameter_check_03.json",
    "chars": 1023,
    "preview": "{\n  \"swagger\": 2.0,\n  \"info\": {\n    \"title\": \"common_parameter_check_03\",\n    \"version\": \"1.0\"\n  },\n  \"host\": \"localhost"
  },
  {
    "path": "openapi-diff/src/modeler/AutoRest.Swagger.Tests/Resource/Swagger/new/common_parameter_check_04.json",
    "chars": 743,
    "preview": "{\n  \"swagger\": 2.0,\n  \"info\": {\n    \"title\": \"common_parameter_check_04\",\n    \"version\": \"1.0\"\n  },\n  \"parameters\": {\n  "
  },
  {
    "path": "openapi-diff/src/modeler/AutoRest.Swagger.Tests/Resource/Swagger/new/default_changed_01.json",
    "chars": 1655,
    "preview": "{\n  \"swagger\": 2.0,\n  \"info\": {\n    \"title\": \"type_changed\",\n    \"version\": \"1.0\"\n  },\n  \"host\": \"localhost:8000\",\n  \"s"
  },
  {
    "path": "openapi-diff/src/modeler/AutoRest.Swagger.Tests/Resource/Swagger/new/enum_as_string.json",
    "chars": 1232,
    "preview": "{\n  \"swagger\": 2.0,\n  \"info\": {\n    \"title\": \"type_changed\",\n    \"version\": \"1.0\"\n  },\n  \"host\": \"localhost:8000\",\n  \"s"
  },
  {
    "path": "openapi-diff/src/modeler/AutoRest.Swagger.Tests/Resource/Swagger/new/enum_values_changed.json",
    "chars": 1112,
    "preview": "{\n  \"swagger\": 2.0,\n  \"info\": {\n    \"title\": \"enum_values_changed\",\n    \"version\": \"1.0\"\n  },\n  \"host\": \"localhost:8000"
  },
  {
    "path": "openapi-diff/src/modeler/AutoRest.Swagger.Tests/Resource/Swagger/new/format_check_01.json",
    "chars": 901,
    "preview": "{\n    \"swagger\": \"2.0\",\n    \"info\": {\n        \"version\": \"2018-01-01\",\n        \"title\": \"Schema of Azure Storage events "
  },
  {
    "path": "openapi-diff/src/modeler/AutoRest.Swagger.Tests/Resource/Swagger/new/format_check_02.json",
    "chars": 862,
    "preview": "{\n    \"swagger\": \"2.0\",\n    \"info\": {\n        \"version\": \"2018-01-01\",\n        \"title\": \"Schema of Azure Storage events "
  },
  {
    "path": "openapi-diff/src/modeler/AutoRest.Swagger.Tests/Resource/Swagger/new/global_parameter_no_order_change.json",
    "chars": 2116,
    "preview": "{\n    \"swagger\": 2.0,\n    \"info\": {\n        \"title\": \"global_parameter_no_order_change\",\n        \"version\": \"1.0\"\n    }"
  },
  {
    "path": "openapi-diff/src/modeler/AutoRest.Swagger.Tests/Resource/Swagger/new/global_parameter_order_change.json",
    "chars": 2113,
    "preview": "{\n    \"swagger\": 2.0,\n    \"info\": {\n        \"title\": \"global_parameter_order_change\",\n        \"version\": \"1.0\"\n    },\n "
  },
  {
    "path": "openapi-diff/src/modeler/AutoRest.Swagger.Tests/Resource/Swagger/new/long_running_operation.json",
    "chars": 1312,
    "preview": "{\n  \"swagger\": 2.0,\n  \"info\": {\n    \"title\": \"type_changed\",\n    \"version\": \"1.0\"\n  },\n  \"host\": \"localhost:8000\",\n  \"s"
  },
  {
    "path": "openapi-diff/src/modeler/AutoRest.Swagger.Tests/Resource/Swagger/new/misc_checks_01.json",
    "chars": 2591,
    "preview": "{\n  \"swagger\": 2.0,\n  \"info\": {\n    \"title\": \"misc_checks_01\",\n    \"version\": \"1.0\"\n  },\n  \"host\": \"localhost:8000\",\n  "
  },
  {
    "path": "openapi-diff/src/modeler/AutoRest.Swagger.Tests/Resource/Swagger/new/misc_checks_02.json",
    "chars": 1686,
    "preview": "{\n  \"swagger\": 2.0,\n  \"info\": {\n    \"title\": \"misc_checks_01\",\n    \"version\": \"1.0\"\n  },\n  \"host\": \"localhost:8000\",\n  "
  },
  {
    "path": "openapi-diff/src/modeler/AutoRest.Swagger.Tests/Resource/Swagger/new/missing_operation_id.json",
    "chars": 795,
    "preview": "{\n  \"swagger\": 2.0,\n  \"info\": {\n    \"title\": \"changed_operation_id\",\n    \"version\": \"1.0\"\n  },\n  \"host\": \"localhost:8000"
  },
  {
    "path": "openapi-diff/src/modeler/AutoRest.Swagger.Tests/Resource/Swagger/new/operation_check_01.json",
    "chars": 2474,
    "preview": "{\n  \"swagger\": 2.0,\n  \"info\": {\n    \"title\": \"operation_check_01\",\n    \"version\": \"1.0\"\n  },\n  \"host\": \"localhost:8000\""
  },
  {
    "path": "openapi-diff/src/modeler/AutoRest.Swagger.Tests/Resource/Swagger/new/operation_check_02.json",
    "chars": 4817,
    "preview": "{\n  \"swagger\": \"2.0\",\n  \"info\": {\n    \"title\": \"operation_check_01\",\n    \"version\": \"1.0\"\n  },\n  \"host\": \"localhost:800"
  },
  {
    "path": "openapi-diff/src/modeler/AutoRest.Swagger.Tests/Resource/Swagger/new/operation_check_03.json",
    "chars": 1240,
    "preview": "{\n  \"swagger\": 2.0,\n  \"info\": {\n    \"title\": \"operation_check_03\",\n    \"version\": \"1.0\"\n  },\n  \"host\": \"localhost:8000\""
  },
  {
    "path": "openapi-diff/src/modeler/AutoRest.Swagger.Tests/Resource/Swagger/new/operation_check_04.json",
    "chars": 2837,
    "preview": "{\n  \"swagger\": 2.0,\n  \"info\": {\n    \"title\": \"operation_check_04\",\n    \"version\": \"1.0\"\n  },\n  \"host\": \"localhost:8000\""
  },
  {
    "path": "openapi-diff/src/modeler/AutoRest.Swagger.Tests/Resource/Swagger/new/operation_check_05.json",
    "chars": 2763,
    "preview": "{\n  \"swagger\": 2.0,\n  \"info\": {\n    \"title\": \"operation_check_05\",\n    \"version\": \"1.0\"\n  },\n  \"host\": \"localhost:8000\""
  },
  {
    "path": "openapi-diff/src/modeler/AutoRest.Swagger.Tests/Resource/Swagger/new/optional_parameter.json",
    "chars": 1046,
    "preview": "{\n  \"swagger\": 2.0,\n  \"info\": {\n    \"title\": \"required_parameter\",\n    \"version\": \"1.0\"\n  },\n  \"host\": \"localhost:8000\""
  },
  {
    "path": "openapi-diff/src/modeler/AutoRest.Swagger.Tests/Resource/Swagger/new/param_check_01.json",
    "chars": 2518,
    "preview": "{\n  \"swagger\": 2.0,\n  \"info\": {\n    \"title\": \"operation_check_04\",\n    \"version\": \"1.0\"\n  },\n  \"host\": \"localhost:8000\""
  },
  {
    "path": "openapi-diff/src/modeler/AutoRest.Swagger.Tests/Resource/Swagger/new/parameter_location_change.json",
    "chars": 1678,
    "preview": "{\n    \"swagger\": 2.0,\n    \"info\": {\n        \"title\": \"parameter_location_change\",\n        \"version\": \"1.0\"\n    },\n    \""
  },
  {
    "path": "openapi-diff/src/modeler/AutoRest.Swagger.Tests/Resource/Swagger/new/parameter_order_change.json",
    "chars": 1089,
    "preview": "{\n  \"swagger\": 2.0,\n  \"info\": {\n    \"title\": \"parameter_order_change\",\n    \"version\": \"1.0\"\n  },\n  \"host\": \"localhost:8"
  },
  {
    "path": "openapi-diff/src/modeler/AutoRest.Swagger.Tests/Resource/Swagger/new/property_required_status_changed.json",
    "chars": 1731,
    "preview": "{\n  \"swagger\": \"2.0\",\n  \"info\": {\n    \"title\": \"operation_check_01\",\n    \"version\": \"1.0\"\n  },\n  \"host\": \"localhost:800"
  },
  {
    "path": "openapi-diff/src/modeler/AutoRest.Swagger.Tests/Resource/Swagger/new/readonly_changes.json",
    "chars": 48018,
    "preview": "{\n  \"swagger\": \"2.0\",\n  \"info\": {\n    \"title\": \"readonly_changes\",\n    \"description\": \"The Azure Storage Management API"
  },
  {
    "path": "openapi-diff/src/modeler/AutoRest.Swagger.Tests/Resource/Swagger/new/recursive_model.json",
    "chars": 2144,
    "preview": "{\n  \"swagger\": 2.0,\n  \"info\": {\n    \"title\": \"recursive_model\",\n    \"version\": \"1.0\"\n  },\n  \"host\": \"localhost:8000\",\n "
  },
  {
    "path": "openapi-diff/src/modeler/AutoRest.Swagger.Tests/Resource/Swagger/new/removed_definition.json",
    "chars": 1127,
    "preview": "{\n  \"swagger\": 2.0,\n  \"info\": {\n    \"title\": \"removed_definition\",\n    \"version\": \"1.0\"\n  },\n  \"host\": \"localhost:8000\""
  },
  {
    "path": "openapi-diff/src/modeler/AutoRest.Swagger.Tests/Resource/Swagger/new/removed_operation.json",
    "chars": 628,
    "preview": "{\n  \"swagger\": 2.0,\n  \"info\": {\n    \"title\": \"removed_operation\",\n    \"version\": \"1.0\"\n  },\n  \"host\": \"localhost:8000\","
  },
  {
    "path": "openapi-diff/src/modeler/AutoRest.Swagger.Tests/Resource/Swagger/new/removed_operation_id.json",
    "chars": 795,
    "preview": "{\n  \"swagger\": 2.0,\n  \"info\": {\n    \"title\": \"changed_operation_id\",\n    \"version\": \"1.0\"\n  },\n  \"host\": \"localhost:8000"
  },
  {
    "path": "openapi-diff/src/modeler/AutoRest.Swagger.Tests/Resource/Swagger/new/removed_parameter.json",
    "chars": 387,
    "preview": "{\n  \"swagger\": 2.0,\n  \"info\": {\n    \"title\": \"removed_parameter\",\n    \"version\": \"1.0\"\n  },\n  \"host\": \"localhost:8000\","
  },
  {
    "path": "openapi-diff/src/modeler/AutoRest.Swagger.Tests/Resource/Swagger/new/removed_path.json",
    "chars": 829,
    "preview": "{\n  \"swagger\": 2.0,\n  \"info\": {\n    \"title\": \"removed_path\",\n    \"version\": \"1.0\"\n  },\n  \"host\": \"localhost:8000\",\n  \"s"
  },
  {
    "path": "openapi-diff/src/modeler/AutoRest.Swagger.Tests/Resource/Swagger/new/removed_property.json",
    "chars": 47258,
    "preview": "{\n  \"swagger\": \"2.0\",\n  \"info\": {\n    \"title\": \"StorageManagement\",\n    \"description\": \"The Azure Storage Management AP"
  },
  {
    "path": "openapi-diff/src/modeler/AutoRest.Swagger.Tests/Resource/Swagger/new/required_parameter.json",
    "chars": 1075,
    "preview": "{\n  \"swagger\": 2.0,\n  \"info\": {\n    \"title\": \"required_parameter\",\n    \"version\": \"1.0\"\n  },\n  \"host\": \"localhost:8000\""
  },
  {
    "path": "openapi-diff/src/modeler/AutoRest.Swagger.Tests/Resource/Swagger/new/response_check_01.json",
    "chars": 2617,
    "preview": "{\n  \"swagger\": 2.0,\n  \"info\": {\n    \"title\": \"operation_check_05\",\n    \"version\": \"1.0\"\n  },\n  \"host\": \"localhost:8000\""
  },
  {
    "path": "openapi-diff/src/modeler/AutoRest.Swagger.Tests/Resource/Swagger/new/type_changed.json",
    "chars": 1122,
    "preview": "{\n  \"swagger\": 2.0,\n  \"info\": {\n    \"title\": \"type_changed\",\n    \"version\": \"1.0\"\n  },\n  \"host\": \"localhost:8000\",\n  \"s"
  },
  {
    "path": "openapi-diff/src/modeler/AutoRest.Swagger.Tests/Resource/Swagger/new/type_changed_01.json",
    "chars": 1256,
    "preview": "{\n  \"swagger\": 2.0,\n  \"info\": {\n    \"title\": \"type_changed\",\n    \"version\": \"1.0\"\n  },\n  \"host\": \"localhost:8000\",\n  \"s"
  },
  {
    "path": "openapi-diff/src/modeler/AutoRest.Swagger.Tests/Resource/Swagger/new/type_changed_02.json",
    "chars": 1085,
    "preview": "{\n  \"swagger\": 2.0,\n  \"info\": {\n    \"title\": \"type_changed\",\n    \"version\": \"1.0\"\n  },\n  \"host\": \"localhost:8000\",\n  \"s"
  },
  {
    "path": "openapi-diff/src/modeler/AutoRest.Swagger.Tests/Resource/Swagger/new/version_check_01.json",
    "chars": 146,
    "preview": "{\n  \"swagger\": 2.0,\n  \"info\": {\n    \"title\": \"version_check_01\",\n    \"version\": \"2.0\"\n  },\n  \"host\": \"localhost:8000\",\n"
  },
  {
    "path": "openapi-diff/src/modeler/AutoRest.Swagger.Tests/Resource/Swagger/new/version_check_02.json",
    "chars": 146,
    "preview": "{\n  \"swagger\": 2.0,\n  \"info\": {\n    \"title\": \"version_check_02\",\n    \"version\": \"1.0\"\n  },\n  \"host\": \"localhost:8000\",\n"
  },
  {
    "path": "openapi-diff/src/modeler/AutoRest.Swagger.Tests/Resource/Swagger/new/version_check_03.json",
    "chars": 148,
    "preview": "{\n  \"swagger\": 2.0,\n  \"info\": {\n    \"title\": \"version_check_03\",\n    \"version\": \"1.1.0\"\n  },\n  \"host\": \"localhost:8000\""
  },
  {
    "path": "openapi-diff/src/modeler/AutoRest.Swagger.Tests/Resource/Swagger/new/version_check_04.json",
    "chars": 146,
    "preview": "{\n  \"swagger\": 2.0,\n  \"info\": {\n    \"title\": \"version_check_04\",\n    \"version\": \"1.0\"\n  },\n  \"host\": \"localhost:8000\",\n"
  },
  {
    "path": "openapi-diff/src/modeler/AutoRest.Swagger.Tests/Resource/Swagger/new/xms_client_name_changed.json",
    "chars": 4854,
    "preview": "{\n  \"swagger\": \"2.0\",\n  \"info\": {\n    \"title\": \"operation_check_01\",\n    \"version\": \"1.0\"\n  },\n  \"host\": \"localhost:800"
  },
  {
    "path": "openapi-diff/src/modeler/AutoRest.Swagger.Tests/Resource/Swagger/new/xms_enum_added.json",
    "chars": 1267,
    "preview": "{\n  \"swagger\": 2.0,\n  \"info\": {\n    \"title\": \"type_changed\",\n    \"version\": \"1.0\"\n  },\n  \"host\": \"localhost:8000\",\n  \"s"
  },
  {
    "path": "openapi-diff/src/modeler/AutoRest.Swagger.Tests/Resource/Swagger/new/xms_enum_changed.json",
    "chars": 1271,
    "preview": "{\n  \"swagger\": 2.0,\n  \"info\": {\n    \"title\": \"type_changed\",\n    \"version\": \"1.0\"\n  },\n  \"host\": \"localhost:8000\",\n  \"s"
  },
  {
    "path": "openapi-diff/src/modeler/AutoRest.Swagger.Tests/Resource/Swagger/old/add_optional_property_01.json",
    "chars": 4877,
    "preview": "{\n  \"swagger\": \"2.0\",\n  \"info\": {\n    \"title\": \"operation_check_01\",\n    \"version\": \"1.0\"\n  },\n  \"host\": \"localhost:800"
  },
  {
    "path": "openapi-diff/src/modeler/AutoRest.Swagger.Tests/Resource/Swagger/old/added_optional_property.json",
    "chars": 1534,
    "preview": "{\n  \"swagger\": \"2.0\",\n  \"info\": {\n    \"title\": \"added_required_property\",\n    \"version\": \"1.0\"\n  },\n  \"host\": \"localhos"
  },
  {
    "path": "openapi-diff/src/modeler/AutoRest.Swagger.Tests/Resource/Swagger/old/added_path.json",
    "chars": 433,
    "preview": "{\n  \"swagger\": 2.0,\n  \"info\": {\n    \"title\": \"added_path\",\n    \"version\": \"1.0\"\n  },\n  \"host\": \"localhost:8000\",\n  \"sch"
  },
  {
    "path": "openapi-diff/src/modeler/AutoRest.Swagger.Tests/Resource/Swagger/old/added_property_in_response.json",
    "chars": 47266,
    "preview": "{\n  \"swagger\": \"2.0\",\n  \"info\": {\n    \"title\": \"added_property_in_response\",\n    \"description\": \"The Azure Storage Mana"
  },
  {
    "path": "openapi-diff/src/modeler/AutoRest.Swagger.Tests/Resource/Swagger/old/added_readonly_required_property.json",
    "chars": 1024,
    "preview": "{\n  \"swagger\": 2.0,\n  \"info\": {\n    \"title\": \"added_required_property\",\n    \"version\": \"1.0\"\n  },\n  \"host\": \"localhost:"
  },
  {
    "path": "openapi-diff/src/modeler/AutoRest.Swagger.Tests/Resource/Swagger/old/added_required_property.json",
    "chars": 996,
    "preview": "{\n  \"swagger\": 2.0,\n  \"info\": {\n    \"title\": \"added_required_property\",\n    \"version\": \"1.0\"\n  },\n  \"host\": \"localhost:"
  },
  {
    "path": "openapi-diff/src/modeler/AutoRest.Swagger.Tests/Resource/Swagger/old/changed_operation_id.json",
    "chars": 837,
    "preview": "{\n  \"swagger\": 2.0,\n  \"info\": {\n    \"title\": \"changed_operation_id\",\n    \"version\": \"1.0\"\n  },\n  \"host\": \"localhost:800"
  },
  {
    "path": "openapi-diff/src/modeler/AutoRest.Swagger.Tests/Resource/Swagger/old/common_parameter_check_01.json",
    "chars": 521,
    "preview": "{\n  \"swagger\": 2.0,\n  \"info\": {\n    \"title\": \"common_parameter_check_01\",\n    \"version\": \"1.0\"\n  },\n  \"host\": \"localhost"
  },
  {
    "path": "openapi-diff/src/modeler/AutoRest.Swagger.Tests/Resource/Swagger/old/common_parameter_check_02.json",
    "chars": 859,
    "preview": "{\n  \"swagger\": 2.0,\n  \"info\": {\n    \"title\": \"common_parameter_check_02\",\n    \"version\": \"1.0\"\n  },\n  \"host\": \"localhost"
  },
  {
    "path": "openapi-diff/src/modeler/AutoRest.Swagger.Tests/Resource/Swagger/old/common_parameter_check_03.json",
    "chars": 1089,
    "preview": "{\n  \"swagger\": 2.0,\n  \"info\": {\n    \"title\": \"common_parameter_check_03\",\n    \"version\": \"1.0\"\n  },\n  \"host\": \"localhost"
  },
  {
    "path": "openapi-diff/src/modeler/AutoRest.Swagger.Tests/Resource/Swagger/old/common_parameter_check_04.json",
    "chars": 719,
    "preview": "{\n  \"swagger\": 2.0,\n  \"info\": {\n    \"title\": \"common_parameter_check_04\",\n    \"version\": \"1.0\"\n  },\n  \"parameters\": {\n  "
  },
  {
    "path": "openapi-diff/src/modeler/AutoRest.Swagger.Tests/Resource/Swagger/old/default_changed_01.json",
    "chars": 1629,
    "preview": "{\n  \"swagger\": 2.0,\n  \"info\": {\n    \"title\": \"type_changed\",\n    \"version\": \"1.0\"\n  },\n  \"host\": \"localhost:8000\",\n  \"s"
  },
  {
    "path": "openapi-diff/src/modeler/AutoRest.Swagger.Tests/Resource/Swagger/old/enum_as_string.json",
    "chars": 1250,
    "preview": "{\n  \"swagger\": 2.0,\n  \"info\": {\n    \"title\": \"type_changed\",\n    \"version\": \"1.0\"\n  },\n  \"host\": \"localhost:8000\",\n  \"s"
  },
  {
    "path": "openapi-diff/src/modeler/AutoRest.Swagger.Tests/Resource/Swagger/old/enum_values_changed.json",
    "chars": 1079,
    "preview": "{\n  \"swagger\": 2.0,\n  \"info\": {\n    \"title\": \"enum_values_changed\",\n    \"version\": \"1.0\"\n  },\n  \"host\": \"localhost:8000"
  }
]

// ... and 115 more files (download for full content)

About this extraction

This page contains the full source code of the Azure/openapi-diff GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 315 files (1.6 MB), approximately 388.0k tokens, and a symbol index with 301 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!