mirror of
https://github.com/ilyakooo0/compaREST.git
synced 2024-07-14 09:40:31 +03:00
Naming changes (#117)
* Rename openapi-diff -> comparest Rename OpenAPI.Checker -> Data.OpenApi.Compare * Tweak emojis used in reports * Shuffle imports * Fix workflow * Reuse nix Co-authored-by: iko <ilyakooo0@gmail.com>
This commit is contained in:
parent
c7159b1f76
commit
f4fd16d247
6
.github/workflows/linux-binary.yaml
vendored
6
.github/workflows/linux-binary.yaml
vendored
@ -35,14 +35,14 @@ jobs:
|
||||
|
||||
- name: Build
|
||||
run: |
|
||||
stack build --ghc-options=-O3 --local-bin-path openapi-diff-linux --copy-bins --flag openapi-diff:Static
|
||||
stack build --ghc-options=-O3 --local-bin-path comparest-linux --copy-bins --flag comparest:Static
|
||||
- name: Test
|
||||
run: stack test --ghc-options=-O3 --flag openapi-diff:Static --test-arguments='--hide-successes --no-create'
|
||||
run: stack test --ghc-options=-O3 --flag comparest:Static --test-arguments='--hide-successes --no-create'
|
||||
|
||||
- name: Zip
|
||||
if: github.ref == 'refs/heads/master'
|
||||
run: |
|
||||
zip openapi-diff-linux openapi-diff-linux/openapi-diff
|
||||
zip comparest-linux comparest-linux/comparest
|
||||
- uses: "marvinpinto/action-automatic-releases@latest"
|
||||
if: github.ref == 'refs/heads/master'
|
||||
with:
|
||||
|
@ -1,6 +1,6 @@
|
||||
# Changelog
|
||||
|
||||
`openapi-diff` uses [PVP Versioning][1].
|
||||
`comparest` uses [PVP Versioning][1].
|
||||
|
||||
## 0.0.0.0
|
||||
|
||||
|
26
README.md
26
README.md
@ -1,8 +1,8 @@
|
||||
# openapi-diff
|
||||
# CompaREST
|
||||
|
||||
[![Hackage](https://img.shields.io/hackage/v/openapi-diff.svg?logo=haskell)](https://hackage.haskell.org/package/openapi-diff)
|
||||
[![Stackage Lts](http://stackage.org/package/openapi-diff/badge/lts)](http://stackage.org/lts/package/openapi-diff)
|
||||
[![Stackage Nightly](http://stackage.org/package/openapi-diff/badge/nightly)](http://stackage.org/nightly/package/openapi-diff)
|
||||
[![Hackage](https://img.shields.io/hackage/v/comparest.svg?logo=haskell)](https://hackage.haskell.org/package/comparest)
|
||||
[![Stackage Lts](http://stackage.org/package/comparest/badge/lts)](http://stackage.org/lts/package/comparest)
|
||||
[![Stackage Nightly](http://stackage.org/package/comparest/badge/nightly)](http://stackage.org/nightly/package/comparest)
|
||||
[![MIT license](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)
|
||||
|
||||
Compatibility checker for OpenAPI
|
||||
@ -241,32 +241,32 @@ docker run --rm -v $(pwd):/data:rw typeable/comparest --client /data/api-1.0.0.y
|
||||
# CLI docs
|
||||
|
||||
```
|
||||
Usage: openapi-diff (-c|--client ARG) (-s|--server ARG)
|
||||
[--silent | --only-breaking | --all] [-o|--output ARG]
|
||||
[--folding-block-quotes-style | --header-style]
|
||||
[--signal-exit-code]
|
||||
A tool to check compatibility between two OpenApi specifications.
|
||||
Usage: comparest (-c|--client ARG) (-s|--server ARG)
|
||||
[--silent | --only-breaking | --all] [-o|--output ARG]
|
||||
[--folding-block-quotes-style | --header-style]
|
||||
[--signal-exit-code]
|
||||
A tool to check compatibility between two OpenAPI specifications.
|
||||
|
||||
Usage examples
|
||||
|
||||
Compare files old.yaml with new.yaml and output the resulting report to
|
||||
stdout:
|
||||
|
||||
openapi-diff -c old.yaml -s new.yaml
|
||||
comparest -c old.yaml -s new.yaml
|
||||
|
||||
Only output breaking changes and write a styled HTML report to file
|
||||
report.html:
|
||||
|
||||
openapi-diff -c old.yaml -s new.yaml --only-breaking -o report
|
||||
comparest -c old.yaml -s new.yaml --only-breaking -o report
|
||||
|
||||
Don't output anything, only fail if there are breaking changes:
|
||||
|
||||
openapi-diff -c old.json -s new.json --silent
|
||||
comparest -c old.json -s new.json --silent
|
||||
|
||||
Write full report suitable for embedding into a GitHub comment to
|
||||
report.html:
|
||||
|
||||
openapi-diff -c old.json -s new.json --folding-block-quotes-style -o report.html
|
||||
comparest -c old.json -s new.json --folding-block-quotes-style -o report.html
|
||||
|
||||
Available options:
|
||||
-h,--help Show this help text
|
||||
|
@ -1,12 +1,12 @@
|
||||
module OpenAPI.Checker.Options
|
||||
module Data.OpenApi.Compare.Options
|
||||
( Options (..)
|
||||
, OutputMode (..)
|
||||
, parseOptions
|
||||
)
|
||||
where
|
||||
|
||||
import Data.OpenApi.Compare.Report
|
||||
import GHC.Generics (Generic)
|
||||
import OpenAPI.Checker.Report
|
||||
import Options.Applicative
|
||||
import Options.Applicative.Help hiding (fullDesc)
|
||||
|
||||
@ -31,21 +31,21 @@ optionsParserInfo =
|
||||
info
|
||||
(helper <*> optionsParser)
|
||||
(fullDesc
|
||||
<> header "openapi-diff"
|
||||
<> header "CompaREST"
|
||||
<> progDescDoc
|
||||
(Just $
|
||||
par "A tool to check compatibility between two OpenApi specifications."
|
||||
par "A tool to check compatibility between two OpenAPI specifications."
|
||||
<$$> hardline <> par "Usage examples" <> hardline
|
||||
<$$> indent
|
||||
4
|
||||
(par "Compare files old.yaml with new.yaml and output the resulting report to stdout:"
|
||||
<$$> hardline <> indent 4 "openapi-diff -c old.yaml -s new.yaml"
|
||||
<$$> hardline <> indent 4 "comparest -c old.yaml -s new.yaml"
|
||||
<$$> hardline <> par "Only output breaking changes and write a styled HTML report to file report.html:"
|
||||
<$$> hardline <> indent 4 "openapi-diff -c old.yaml -s new.yaml --only-breaking -o report"
|
||||
<$$> hardline <> indent 4 "comparest -c old.yaml -s new.yaml --only-breaking -o report"
|
||||
<$$> hardline <> par "Don't output anything, only fail if there are breaking changes:"
|
||||
<$$> hardline <> indent 4 "openapi-diff -c old.json -s new.json --silent"
|
||||
<$$> hardline <> indent 4 "comparest -c old.json -s new.json --silent"
|
||||
<$$> hardline <> par "Write full report suitable for embedding into a GitHub comment to report.html:"
|
||||
<$$> hardline <> indent 4 "openapi-diff -c old.json -s new.json --folding-block-quotes-style -o report.html")))
|
||||
<$$> hardline <> indent 4 "comparest -c old.json -s new.json --folding-block-quotes-style -o report.html")))
|
||||
|
||||
optionsParser :: Parser Options
|
||||
optionsParser =
|
@ -10,10 +10,10 @@ import Data.ByteString.Lazy (ByteString)
|
||||
import Data.Char (toLower)
|
||||
import Data.Functor
|
||||
import qualified Data.Map as M
|
||||
import qualified Data.OpenApi.Compare.Report.Html.Template as Html
|
||||
import Data.Text (Text)
|
||||
import qualified Data.Text.Lazy as TL
|
||||
import qualified Data.Text.Lazy.Encoding as TL
|
||||
import qualified OpenAPI.Checker.Report.Html.Template as Html
|
||||
import System.FilePath (takeExtension)
|
||||
import Text.DocTemplates.Internal
|
||||
import Text.Pandoc
|
||||
@ -80,7 +80,7 @@ formatFromFilePath x =
|
||||
def
|
||||
{ writerTemplate = Just Html.template
|
||||
, -- Not actually used. Needed to silence warning.
|
||||
writerVariables = Context $ M.fromList [("pagetitle", toVal ("OpenApi Diff" :: Text))]
|
||||
writerVariables = Context $ M.fromList [("pagetitle", toVal ("CompaREST" :: Text))]
|
||||
}
|
||||
_ -> Nothing
|
||||
where
|
||||
|
@ -6,11 +6,11 @@ import Data.Aeson
|
||||
import qualified Data.ByteString.Lazy as BSL
|
||||
import Data.Default
|
||||
import Data.Maybe
|
||||
import Data.OpenApi.Compare.Options
|
||||
import Data.OpenApi.Compare.Run
|
||||
import qualified Data.Text.IO as T
|
||||
import qualified Data.Yaml as Yaml
|
||||
import FormatHeuristic
|
||||
import OpenAPI.Checker.Options
|
||||
import OpenAPI.Checker.Run
|
||||
import System.Exit
|
||||
import System.IO
|
||||
import Text.Pandoc hiding (report)
|
||||
|
@ -1,6 +1,6 @@
|
||||
# OpenApi comparison benchmarks
|
||||
|
||||
This is a nix expression that automatically downloads, builds and runs multiple OpenApi comparison tools on the same set of inputs to compare how well they behave.
|
||||
This is a nix expression that automatically downloads, builds and runs multiple OpenAPI comparison tools on the same set of inputs to compare how well they behave.
|
||||
|
||||
To run the benchmarks run the following command in this directory:
|
||||
|
||||
@ -12,7 +12,7 @@ nix-build
|
||||
|
||||
| Tool | Output file name |
|
||||
| -------------------------------------------------------------------------- | ------------------------------------------- |
|
||||
| [Typeable OpenApi Diff](https://github.com/typeable/openapi-diff) | `typeable.md` |
|
||||
| [Typeable CompaREST](https://github.com/typeable/compaREST) | `typeable.md` |
|
||||
| [Atlassian OpenApi Diff](https://bitbucket.org/atlassian/openapi-diff) | `atlassian.json`, `atlassian.error.txt` |
|
||||
| [OpenApi Tools OpenApi Diff](https://github.com/OpenAPITools/openapi-diff) | `openapitools.md`, `openapitools.error.txt` |
|
||||
| [Tufin OpenApi Diff](https://github.com/tufin/oasdiff) | `oasdiff.txt`, `oasdiff.error.txt` |
|
||||
|
@ -1,6 +1,6 @@
|
||||
{ sources ? import ./nix/sources.nix
|
||||
, haskellNix ? import sources.haskellNix { }
|
||||
, gomod2nix ? sources.gomod2nix
|
||||
, haskellNix ? (import ../. {}).haskellNix
|
||||
, pkgs ? import haskellNix.sources.nixpkgs-2105 (haskellNix.nixpkgsArgs // {
|
||||
overlays = haskellNix.nixpkgsArgs.overlays ++ [
|
||||
(self: super: {
|
||||
@ -8,23 +8,19 @@
|
||||
})
|
||||
];
|
||||
})
|
||||
, compaRESThsPkgs ? (import ../. {}).hsPkgs
|
||||
, npmNix ? import (sources.npmNix + "/npmPackages") { inherit pkgs; }
|
||||
, mavenix ? import (sources.mavenix) { inherit pkgs; }
|
||||
, bumpToken ? null
|
||||
, bumpDocumentation ? null
|
||||
}:
|
||||
let
|
||||
typeable-openapi-diff = (pkgs.haskell-nix.stackProject {
|
||||
src = pkgs.haskell-nix.haskellLib.cleanGit {
|
||||
name = "openapi-diff";
|
||||
src = ./..;
|
||||
};
|
||||
}).openapi-diff.components.exes.openapi-diff;
|
||||
typeable-openapi-diff-exe = typeable-openapi-diff + "/bin/openapi-diff";
|
||||
typeable-openapi-diff-differ = pkgs.writeScript "typeable-openapi-diff-differ" ''
|
||||
typeable-comparest = compaRESThsPkgs.comparest.components.exes.comparest;
|
||||
typeable-comparest-exe = typeable-comparest + "/bin/comparest";
|
||||
typeable-comparest-differ = pkgs.writeScript "typeable-comparest-differ" ''
|
||||
#!${pkgs.stdenv.shell}
|
||||
set +e
|
||||
${typeable-openapi-diff-exe} -c $1 -s $2 -o $3/typeable.md
|
||||
${typeable-comparest-exe} -c $1 -s $2 -o $3/typeable.md
|
||||
exit 0
|
||||
'';
|
||||
|
||||
@ -130,7 +126,7 @@ let
|
||||
})
|
||||
(getInputs root);
|
||||
differs = [
|
||||
typeable-openapi-diff-differ
|
||||
typeable-comparest-differ
|
||||
atlassian-openapi-diff-differ
|
||||
openapitools-openapi-diff-differ
|
||||
oasdiff-differ
|
||||
@ -164,7 +160,7 @@ let
|
||||
tools = [
|
||||
"Typeable"
|
||||
"Atlassian"
|
||||
"OpenApi Tools"
|
||||
"OpenAPI Tools"
|
||||
"oasdiff"
|
||||
"Bump.sh"
|
||||
];
|
||||
|
@ -1,13 +1,13 @@
|
||||
cabal-version: 2.4
|
||||
name: openapi-diff
|
||||
name: comparest
|
||||
version: 0.0.0.0
|
||||
synopsis: Compatibility checker for OpenAPI
|
||||
description: Compatibility checker for OpenAPI
|
||||
description: Compatibility checker for OpenAPI.
|
||||
license: MIT
|
||||
license-file: LICENSE
|
||||
author: Aleksey Uymanov
|
||||
maintainer: Aleksey Uymanov <s9gf4ult@gmail.com>
|
||||
copyright: 2021 Aleksey Uymanov
|
||||
author: Typeable
|
||||
maintainer: comparest@typeable.io
|
||||
copyright: 2021 Typeable
|
||||
category: Web
|
||||
build-type: Simple
|
||||
extra-doc-files: README.md
|
||||
@ -112,51 +112,51 @@ library
|
||||
, ordered-containers
|
||||
, bytestring
|
||||
hs-source-dirs: src
|
||||
exposed-modules: Data.HList
|
||||
, OpenAPI.Checker.Behavior
|
||||
, OpenAPI.Checker.Formula
|
||||
, OpenAPI.Checker.Memo
|
||||
, OpenAPI.Checker.Orphans
|
||||
, OpenAPI.Checker.Paths
|
||||
, OpenAPI.Checker.PathsPrefixTree
|
||||
, OpenAPI.Checker.References
|
||||
, OpenAPI.Checker.Subtree
|
||||
, OpenAPI.Checker.Validate.MediaTypeObject
|
||||
, OpenAPI.Checker.Validate.OpenApi
|
||||
, OpenAPI.Checker.Validate.Operation
|
||||
, OpenAPI.Checker.Validate.Param
|
||||
, OpenAPI.Checker.Validate.PathFragment
|
||||
, OpenAPI.Checker.Validate.Products
|
||||
, OpenAPI.Checker.Validate.RequestBody
|
||||
, OpenAPI.Checker.Validate.Responses
|
||||
, OpenAPI.Checker.Validate.Schema
|
||||
, OpenAPI.Checker.Validate.Schema.TypedJson
|
||||
, OpenAPI.Checker.Validate.Schema.DNF
|
||||
, OpenAPI.Checker.Validate.Schema.Issues
|
||||
, OpenAPI.Checker.Validate.Schema.JsonFormula
|
||||
, OpenAPI.Checker.Validate.Schema.Partition
|
||||
, OpenAPI.Checker.Validate.Schema.Process
|
||||
, OpenAPI.Checker.Validate.Schema.Traced
|
||||
, OpenAPI.Checker.Validate.SecurityRequirement
|
||||
, OpenAPI.Checker.Validate.Server
|
||||
, OpenAPI.Checker.Validate.Sums
|
||||
, OpenAPI.Checker.Validate.Header
|
||||
, OpenAPI.Checker.Validate.Link
|
||||
, OpenAPI.Checker.Common
|
||||
, OpenAPI.Checker.Validate.SecurityScheme
|
||||
, OpenAPI.Checker.Validate.OAuth2Flows
|
||||
, OpenAPI.Checker.Report
|
||||
exposed-modules: Data.OpenApi.Compare.Behavior
|
||||
, Data.OpenApi.Compare.Common
|
||||
, Data.OpenApi.Compare.Formula
|
||||
, Data.OpenApi.Compare.Memo
|
||||
, Data.OpenApi.Compare.Orphans
|
||||
, Data.OpenApi.Compare.Paths
|
||||
, Data.OpenApi.Compare.PathsPrefixTree
|
||||
, Data.OpenApi.Compare.References
|
||||
, Data.OpenApi.Compare.Report
|
||||
, Data.OpenApi.Compare.Report.Html.Template
|
||||
, Data.OpenApi.Compare.Report.Jet
|
||||
, Data.OpenApi.Compare.Run
|
||||
, Data.OpenApi.Compare.Subtree
|
||||
, Data.OpenApi.Compare.Validate.Header
|
||||
, Data.OpenApi.Compare.Validate.Link
|
||||
, Data.OpenApi.Compare.Validate.MediaTypeObject
|
||||
, Data.OpenApi.Compare.Validate.OAuth2Flows
|
||||
, Data.OpenApi.Compare.Validate.OpenApi
|
||||
, Data.OpenApi.Compare.Validate.Operation
|
||||
, Data.OpenApi.Compare.Validate.Param
|
||||
, Data.OpenApi.Compare.Validate.PathFragment
|
||||
, Data.OpenApi.Compare.Validate.Products
|
||||
, Data.OpenApi.Compare.Validate.RequestBody
|
||||
, Data.OpenApi.Compare.Validate.Responses
|
||||
, Data.OpenApi.Compare.Validate.Schema
|
||||
, Data.OpenApi.Compare.Validate.Schema.DNF
|
||||
, Data.OpenApi.Compare.Validate.Schema.Issues
|
||||
, Data.OpenApi.Compare.Validate.Schema.JsonFormula
|
||||
, Data.OpenApi.Compare.Validate.Schema.Partition
|
||||
, Data.OpenApi.Compare.Validate.Schema.Process
|
||||
, Data.OpenApi.Compare.Validate.Schema.Traced
|
||||
, Data.OpenApi.Compare.Validate.Schema.TypedJson
|
||||
, Data.OpenApi.Compare.Validate.SecurityRequirement
|
||||
, Data.OpenApi.Compare.Validate.SecurityScheme
|
||||
, Data.OpenApi.Compare.Validate.Server
|
||||
, Data.OpenApi.Compare.Validate.Sums
|
||||
other-modules: Data.HList
|
||||
, Data.OpenUnion.Extra
|
||||
, OpenAPI.Checker.Report.Jet
|
||||
, OpenAPI.Checker.Run
|
||||
, OpenAPI.Checker.Report.Html.Template
|
||||
|
||||
executable openapi-diff
|
||||
executable comparest
|
||||
import: common-options
|
||||
hs-source-dirs: app
|
||||
main-is: Main.hs
|
||||
build-depends:
|
||||
openapi-diff
|
||||
comparest
|
||||
, pandoc
|
||||
, data-default
|
||||
, bytestring
|
||||
@ -173,14 +173,14 @@ executable openapi-diff
|
||||
-with-rtsopts=-N
|
||||
other-modules:
|
||||
FormatHeuristic
|
||||
OpenAPI.Checker.Options
|
||||
Data.OpenApi.Compare.Options
|
||||
|
||||
executable comparest-github-action
|
||||
import: common-options
|
||||
hs-source-dirs: github-action
|
||||
main-is: Main.hs
|
||||
build-depends:
|
||||
openapi-diff
|
||||
comparest
|
||||
, pandoc
|
||||
, yaml
|
||||
, aeson
|
||||
@ -198,7 +198,7 @@ executable comparest-github-action
|
||||
CompaREST.GitHub.API
|
||||
CompaREST.GitHub.Action.Config
|
||||
|
||||
test-suite openapi-diff-test
|
||||
test-suite comparest-tests
|
||||
import: common-options
|
||||
type: exitcode-stdio-1.0
|
||||
hs-source-dirs: test
|
||||
@ -207,7 +207,7 @@ test-suite openapi-diff-test
|
||||
Spec.Golden.Extra
|
||||
Spec.Golden.TraceTree
|
||||
build-depends:
|
||||
, openapi-diff
|
||||
, comparest
|
||||
, tasty-golden
|
||||
, tasty
|
||||
, bytestring
|
14
default.nix
14
default.nix
@ -12,7 +12,7 @@ let
|
||||
include = [
|
||||
./stack.yaml
|
||||
./stack.yaml.lock
|
||||
./openapi-diff.cabal
|
||||
./comparest.cabal
|
||||
];
|
||||
};
|
||||
|
||||
@ -21,11 +21,11 @@ let
|
||||
dontStrip = false;
|
||||
dontPatchELF = false;
|
||||
enableDeadCodeElimination = true;
|
||||
packages.openapi-diff.src = nix-filter {
|
||||
packages.comparest.src = nix-filter {
|
||||
root = ./.;
|
||||
name = "compaREST-src";
|
||||
include = with nix-filter; [
|
||||
(./openapi-diff.cabal)
|
||||
(./comparest.cabal)
|
||||
(inDirectory ./test)
|
||||
(inDirectory ./src)
|
||||
(inDirectory ./app)
|
||||
@ -47,15 +47,15 @@ let
|
||||
|
||||
compaREST = pkgs.dockerTools.buildImage {
|
||||
name = "compaREST";
|
||||
contents = [ (staticify "compaREST-static" hsPkgs.projectCross.musl64.hsPkgs.openapi-diff.components.exes.openapi-diff) ];
|
||||
contents = [ (staticify "compaREST-static" hsPkgs.projectCross.musl64.hsPkgs.comparest.components.exes.comparest) ];
|
||||
config = {
|
||||
Entrypoint = [ "/bin/openapi-diff" ];
|
||||
Entrypoint = [ "/bin/comparest" ];
|
||||
};
|
||||
};
|
||||
|
||||
compaRESTGithubAction =
|
||||
let
|
||||
action = staticify "compaREST-github-action-static" hsPkgs.projectCross.musl64.hsPkgs.openapi-diff.components.exes.comparest-github-action;
|
||||
action = staticify "compaREST-github-action-static" hsPkgs.projectCross.musl64.hsPkgs.comparest.components.exes.comparest-github-action;
|
||||
wrapped = pkgs.runCommand "wrapped-compaREST-github-action" { buildInputs = [ pkgs.makeWrapper ]; } ''
|
||||
makeWrapper ${action}/bin/comparest-github-action $out/bin/pre --add-flags "pre"
|
||||
makeWrapper ${action}/bin/comparest-github-action $out/bin/run --add-flags "run"
|
||||
@ -68,4 +68,4 @@ let
|
||||
};
|
||||
|
||||
in
|
||||
{ inherit compaREST compaRESTGithubAction; }
|
||||
{ inherit compaREST compaRESTGithubAction hsPkgs haskellNix; }
|
||||
|
@ -7,10 +7,10 @@ import Control.Monad.Freer
|
||||
import Control.Monad.Freer.Error
|
||||
import Control.Monad.Freer.GitHub
|
||||
import Control.Monad.Freer.Reader
|
||||
import Data.OpenApi.Compare.Run
|
||||
import Data.Text (Text)
|
||||
import qualified Data.Yaml.Aeson as Yaml
|
||||
import qualified GitHub as GH
|
||||
import OpenAPI.Checker.Run
|
||||
import System.Environment
|
||||
import System.Envy (decodeEnv)
|
||||
import System.FilePath ((</>))
|
||||
|
@ -1,4 +1,4 @@
|
||||
module OpenAPI.Checker.Behavior
|
||||
module Data.OpenApi.Compare.Behavior
|
||||
( BehaviorLevel (..)
|
||||
, Behavable (..)
|
||||
, IssueKind (..)
|
||||
@ -15,8 +15,8 @@ where
|
||||
|
||||
import Data.Aeson
|
||||
import Data.Kind
|
||||
import Data.OpenApi.Compare.Paths
|
||||
import Data.Typeable
|
||||
import OpenAPI.Checker.Paths
|
||||
import Text.Pandoc.Builder
|
||||
|
||||
-- | Kind
|
@ -1,4 +1,4 @@
|
||||
module OpenAPI.Checker.Common
|
||||
module Data.OpenApi.Compare.Common
|
||||
( zipAll
|
||||
)
|
||||
where
|
@ -1,4 +1,4 @@
|
||||
module OpenAPI.Checker.Formula
|
||||
module Data.OpenApi.Compare.Formula
|
||||
( FormulaF
|
||||
, VarRef
|
||||
, variable
|
||||
@ -11,10 +11,10 @@ module OpenAPI.Checker.Formula
|
||||
) where
|
||||
|
||||
import Data.Kind
|
||||
import Data.Monoid
|
||||
import qualified Data.List.NonEmpty as NE
|
||||
import OpenAPI.Checker.Paths
|
||||
import qualified OpenAPI.Checker.PathsPrefixTree as P
|
||||
import Data.Monoid
|
||||
import Data.OpenApi.Compare.Paths
|
||||
import qualified Data.OpenApi.Compare.PathsPrefixTree as P
|
||||
|
||||
type VarRef = Int
|
||||
|
@ -1,6 +1,6 @@
|
||||
{-# LANGUAGE AllowAmbiguousTypes #-}
|
||||
-- | Utilities for effectfully memoizing other, more effectful functions.
|
||||
module OpenAPI.Checker.Memo
|
||||
module Data.OpenApi.Compare.Memo
|
||||
( MonadMemo
|
||||
, MemoState
|
||||
, runMemo
|
@ -1,6 +1,6 @@
|
||||
{-# OPTIONS_GHC -Wno-orphans #-}
|
||||
|
||||
module OpenAPI.Checker.Orphans () where
|
||||
module Data.OpenApi.Compare.Orphans () where
|
||||
|
||||
import Control.Comonad.Env
|
||||
import qualified Data.HashMap.Strict.InsOrd as IOHM
|
@ -1,7 +1,7 @@
|
||||
-- | Utilities for traversing heterogeneous trees. A heterogeneous tree is a
|
||||
-- collection of datatypes that "contain" eachother in some form of tree
|
||||
-- structure.
|
||||
module OpenAPI.Checker.Paths
|
||||
module Data.OpenApi.Compare.Paths
|
||||
( NiceQuiver
|
||||
, AdditionalQuiverConstraints
|
||||
, Paths (..)
|
@ -1,6 +1,6 @@
|
||||
{-# LANGUAGE QuantifiedConstraints #-}
|
||||
|
||||
module OpenAPI.Checker.PathsPrefixTree
|
||||
module Data.OpenApi.Compare.PathsPrefixTree
|
||||
( PathsPrefixTree (PathsPrefixNode)
|
||||
, AStep (..)
|
||||
, empty
|
||||
@ -27,13 +27,13 @@ import qualified Data.HashMap.Strict as HM
|
||||
import Data.Kind
|
||||
import qualified Data.Map as M
|
||||
import Data.Monoid
|
||||
import Data.OpenApi.Compare.Paths
|
||||
import qualified Data.Set as S
|
||||
import qualified Data.Text as T
|
||||
import Data.Type.Equality
|
||||
import qualified Data.TypeRepMap as TRM
|
||||
import qualified Data.Vector as V
|
||||
import qualified GHC.Exts as Exts
|
||||
import OpenAPI.Checker.Paths
|
||||
import Type.Reflection
|
||||
import Prelude hiding (filter, map, null, lookup)
|
||||
|
@ -1,6 +1,6 @@
|
||||
{-# OPTIONS_GHC -Wno-orphans #-}
|
||||
|
||||
module OpenAPI.Checker.References
|
||||
module Data.OpenApi.Compare.References
|
||||
( Step (..)
|
||||
, dereference
|
||||
, Typeable
|
||||
@ -11,9 +11,9 @@ import Data.HList
|
||||
import qualified Data.HashMap.Strict.InsOrd as IOHM
|
||||
import Data.Maybe
|
||||
import Data.OpenApi
|
||||
import Data.OpenApi.Compare.Orphans ()
|
||||
import Data.OpenApi.Compare.Subtree
|
||||
import Data.Typeable
|
||||
import OpenAPI.Checker.Orphans ()
|
||||
import OpenAPI.Checker.Subtree
|
||||
|
||||
instance Typeable a => Steppable (Referenced a) a where
|
||||
data Step (Referenced a) a = InlineStep
|
@ -1,4 +1,4 @@
|
||||
module OpenAPI.Checker.Report
|
||||
module Data.OpenApi.Compare.Report
|
||||
( generateReport
|
||||
, CheckerOutput(..)
|
||||
, ReportInput (..)
|
||||
@ -23,6 +23,15 @@ import qualified Data.Map as M
|
||||
import Data.Map.Ordered (OMap)
|
||||
import qualified Data.Map.Ordered as OM
|
||||
import Data.Maybe
|
||||
import Data.OpenApi.Compare.Behavior
|
||||
import Data.OpenApi.Compare.Paths
|
||||
import Data.OpenApi.Compare.PathsPrefixTree hiding (empty)
|
||||
import qualified Data.OpenApi.Compare.PathsPrefixTree as P hiding (empty)
|
||||
import Data.OpenApi.Compare.Report.Jet
|
||||
import Data.OpenApi.Compare.Subtree (invertIssueOrientationP)
|
||||
import Data.OpenApi.Compare.Validate.OpenApi
|
||||
import Data.OpenApi.Compare.Validate.Schema.TypedJson
|
||||
import Data.OpenApi.Compare.Validate.Schema.Issues
|
||||
import Data.OpenUnion
|
||||
import Data.OpenUnion.Extra
|
||||
import Data.Set
|
||||
@ -32,15 +41,6 @@ import qualified Data.Text as T
|
||||
import Data.TypeRepMap hiding (empty)
|
||||
import Data.Typeable
|
||||
import Generic.Data
|
||||
import OpenAPI.Checker.Behavior
|
||||
import OpenAPI.Checker.Paths
|
||||
import OpenAPI.Checker.PathsPrefixTree hiding (empty)
|
||||
import qualified OpenAPI.Checker.PathsPrefixTree as P hiding (empty)
|
||||
import OpenAPI.Checker.Report.Jet
|
||||
import OpenAPI.Checker.Subtree (invertIssueOrientationP)
|
||||
import OpenAPI.Checker.Validate.OpenApi
|
||||
import OpenAPI.Checker.Validate.Schema.TypedJson
|
||||
import OpenAPI.Checker.Validate.Schema.Issues
|
||||
import Text.Pandoc.Builder
|
||||
|
||||
type Changes = P.PathsPrefixTree Behave AnIssue 'APILevel
|
||||
@ -120,40 +120,42 @@ generateReport cfg inp =
|
||||
<> twoRowTable
|
||||
(when'
|
||||
schemaIssuesPresent
|
||||
[ ( refOpt schemaIssuesPresent schemaIssuesId "❌ Schema issues"
|
||||
[ ( refOpt schemaIssuesPresent schemaIssuesId "‼️ Schema issues"
|
||||
, show' $ P.size $ schemaIssues inp
|
||||
)
|
||||
]
|
||||
++
|
||||
[ ( refOpt breakingChangesPresent breakingChangesId "⚠️ Breaking changes"
|
||||
[ ( refOpt breakingChangesPresent breakingChangesId "❌ Breaking changes"
|
||||
, show' $ P.size $ breakingChanges inp
|
||||
)
|
||||
]
|
||||
++ when'
|
||||
nonBreakingChangesShown
|
||||
[ ( refOpt nonBreakingChangesPresent nonBreakingChangesId "🙆 Non-breaking changes"
|
||||
[ ( refOpt nonBreakingChangesPresent nonBreakingChangesId "⚠️ Non-breaking changes"
|
||||
, show' $ P.size $ nonBreakingChanges inp
|
||||
)
|
||||
]
|
||||
++ [ ( refOpt unsupportedChangesPresent unsupportedChangesId "🤷 Unsupported feature changes"
|
||||
, show' $ P.size $ unsupportedChanges inp
|
||||
)
|
||||
])
|
||||
++ when'
|
||||
unsupportedChangesPresent
|
||||
[ ( refOpt unsupportedChangesPresent unsupportedChangesId "❓ Unsupported feature changes"
|
||||
, show' $ P.size $ unsupportedChanges inp
|
||||
)
|
||||
])
|
||||
<> when'
|
||||
schemaIssuesPresent
|
||||
(header 1 (anchor schemaIssuesId <> "❌ Schema issues")
|
||||
(header 1 (anchor schemaIssuesId <> "‼️ Schema issues")
|
||||
<> builder (showErrs $ schemaIssues inp))
|
||||
<> when'
|
||||
breakingChangesPresent
|
||||
(header 1 (anchor breakingChangesId <> "⚠️ Breaking changes")
|
||||
(header 1 (anchor breakingChangesId <> "❌ Breaking changes")
|
||||
<> builder (showErrs $ breakingChanges inp))
|
||||
<> when'
|
||||
(nonBreakingChangesPresent && nonBreakingChangesShown)
|
||||
(header 1 (anchor nonBreakingChangesId <> "🙆 Non-breaking changes")
|
||||
(header 1 (anchor nonBreakingChangesId <> "⚠️ Non-breaking changes")
|
||||
<> builder (showErrs $ nonBreakingChanges inp))
|
||||
<> when'
|
||||
unsupportedChangesPresent
|
||||
(header 1 (anchor unsupportedChangesId <> "🤷 Unsupported feature changes")
|
||||
(header 1 (anchor unsupportedChangesId <> "❓ Unsupported feature changes")
|
||||
<> builder (showErrs $ unsupportedChanges inp))
|
||||
status =
|
||||
if
|
||||
@ -239,8 +241,8 @@ jets =
|
||||
, constructReportJet $ \p@(AtPath _) op@(InOperation _) ->
|
||||
strong (describeBehavior op) <> " " <> describeBehavior p :: Inlines
|
||||
, constructReportJet $ \(WithStatusCode c) ResponsePayload PayloadSchema ->
|
||||
"📱⬅️ JSON Response – " <> str (T.pack . show $ c) :: Inlines
|
||||
, constructReportJet $ \InRequest InPayload PayloadSchema -> "📱➡️ JSON Request" :: Inlines
|
||||
"⬅️☁️ JSON Response – " <> str (T.pack . show $ c) :: Inlines
|
||||
, constructReportJet $ \InRequest InPayload PayloadSchema -> "➡️☁️ JSON Request" :: Inlines
|
||||
]
|
||||
where
|
||||
unwrapReportJetResult :: ReportJetResult Behave x -> ReportJet' Behave x
|
@ -1,6 +1,6 @@
|
||||
{-# LANGUAGE TemplateHaskell #-}
|
||||
|
||||
module OpenAPI.Checker.Report.Html.Template
|
||||
module Data.OpenApi.Compare.Report.Html.Template
|
||||
( template
|
||||
)
|
||||
where
|
||||
@ -24,11 +24,11 @@ template =
|
||||
\<meta charset=\"utf-8\">\
|
||||
\<title></title>\
|
||||
\<meta name=\"description\" content=\"\">\
|
||||
\<meta name=\"generator\" content=\"OpenApi Diff\" />\
|
||||
\<meta name=\"generator\" content=\"CompaREST\" />\
|
||||
\<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, user-scalable=yes\" />\
|
||||
\</head>\
|
||||
\<body>\
|
||||
\<header><h1>⛄ OpenApi Diff</h1></header>\
|
||||
\<header><h1>CompaREST</h1></header>\
|
||||
\<main>\
|
||||
\$body$\
|
||||
\</main>\
|
@ -1,4 +1,4 @@
|
||||
module OpenAPI.Checker.Report.Jet
|
||||
module Data.OpenApi.Compare.Report.Jet
|
||||
( ReportJet (..)
|
||||
, ReportJet'
|
||||
, ConstructReportJet (..)
|
@ -1,17 +1,17 @@
|
||||
module OpenAPI.Checker.Run
|
||||
module Data.OpenApi.Compare.Run
|
||||
( runChecker
|
||||
, runReport
|
||||
, module OpenAPI.Checker.Report
|
||||
, module Data.OpenApi.Compare.Report
|
||||
)
|
||||
where
|
||||
|
||||
import Data.HList
|
||||
import Data.OpenApi (OpenApi)
|
||||
import OpenAPI.Checker.Paths
|
||||
import OpenAPI.Checker.Report
|
||||
import OpenAPI.Checker.Subtree
|
||||
import OpenAPI.Checker.Validate.OpenApi ()
|
||||
import Text.Pandoc.Builder
|
||||
import Data.OpenApi.Compare.Paths
|
||||
import Data.OpenApi.Compare.Report
|
||||
import Data.OpenApi.Compare.Subtree
|
||||
import Data.OpenApi.Compare.Validate.OpenApi ()
|
||||
|
||||
runChecker :: (OpenApi, OpenApi) -> CheckerOutput
|
||||
runChecker (client, server) =
|
@ -1,6 +1,6 @@
|
||||
{-# OPTIONS_GHC -Wno-orphans #-}
|
||||
|
||||
module OpenAPI.Checker.Subtree
|
||||
module Data.OpenApi.Compare.Subtree
|
||||
( Steppable (..)
|
||||
, Step (..)
|
||||
, TraceRoot
|
||||
@ -60,13 +60,13 @@ import qualified Data.HashMap.Strict.InsOrd as IOHM
|
||||
import Data.Hashable
|
||||
import Data.Kind
|
||||
import Data.OpenApi
|
||||
import Data.OpenApi.Compare.Behavior
|
||||
import Data.OpenApi.Compare.Formula
|
||||
import Data.OpenApi.Compare.Memo
|
||||
import Data.OpenApi.Compare.Paths
|
||||
import qualified Data.OpenApi.Compare.PathsPrefixTree as P
|
||||
import qualified Data.Set as S
|
||||
import Data.Typeable
|
||||
import OpenAPI.Checker.Behavior
|
||||
import OpenAPI.Checker.Formula
|
||||
import OpenAPI.Checker.Memo
|
||||
import OpenAPI.Checker.Paths
|
||||
import qualified OpenAPI.Checker.PathsPrefixTree as P
|
||||
|
||||
class
|
||||
(Typeable Step, Typeable a, Typeable b, Ord (Step a b), Show (Step a b)) =>
|
@ -1,6 +1,6 @@
|
||||
{-# OPTIONS_GHC -Wno-orphans #-}
|
||||
|
||||
module OpenAPI.Checker.Validate.Header
|
||||
module Data.OpenApi.Compare.Validate.Header
|
||||
(
|
||||
)
|
||||
where
|
||||
@ -9,10 +9,10 @@ import Data.Foldable
|
||||
import Data.Functor
|
||||
import Data.Maybe
|
||||
import Data.OpenApi
|
||||
import OpenAPI.Checker.Behavior
|
||||
import OpenAPI.Checker.References ()
|
||||
import OpenAPI.Checker.Subtree
|
||||
import OpenAPI.Checker.Validate.Schema ()
|
||||
import Data.OpenApi.Compare.Behavior
|
||||
import Data.OpenApi.Compare.References ()
|
||||
import Data.OpenApi.Compare.Subtree
|
||||
import Data.OpenApi.Compare.Validate.Schema ()
|
||||
import Text.Pandoc.Builder
|
||||
|
||||
instance Subtree Header where
|
@ -1,10 +1,10 @@
|
||||
{-# OPTIONS_GHC -Wno-orphans #-}
|
||||
|
||||
module OpenAPI.Checker.Validate.Link () where
|
||||
module Data.OpenApi.Compare.Validate.Link () where
|
||||
|
||||
import Data.OpenApi
|
||||
import OpenAPI.Checker.Behavior
|
||||
import OpenAPI.Checker.Subtree
|
||||
import Data.OpenApi.Compare.Behavior
|
||||
import Data.OpenApi.Compare.Subtree
|
||||
import Text.Pandoc.Builder
|
||||
|
||||
instance Subtree Link where
|
||||
@ -19,4 +19,4 @@ instance Issuable 'LinkLevel where
|
||||
deriving stock (Eq, Ord, Show)
|
||||
issueKind = \case
|
||||
LinksUnsupported -> Unsupported
|
||||
describeIssue _ LinksUnsupported = para "OpenApi Diff does not currently support Link Objects."
|
||||
describeIssue _ LinksUnsupported = para "CompaREST does not currently support Link Objects."
|
@ -1,6 +1,6 @@
|
||||
{-# OPTIONS_GHC -Wno-orphans #-}
|
||||
|
||||
module OpenAPI.Checker.Validate.MediaTypeObject
|
||||
module Data.OpenApi.Compare.Validate.MediaTypeObject
|
||||
( Issue (..)
|
||||
, Behave (..)
|
||||
)
|
||||
@ -12,15 +12,15 @@ import Data.HList
|
||||
import Data.HashMap.Strict.InsOrd as IOHM
|
||||
import Data.Map.Strict as M
|
||||
import Data.OpenApi
|
||||
import Data.OpenApi.Compare.Behavior
|
||||
import Data.OpenApi.Compare.Subtree
|
||||
import Data.OpenApi.Compare.Validate.Header ()
|
||||
import Data.OpenApi.Compare.Validate.Products
|
||||
import Data.OpenApi.Compare.Validate.Schema ()
|
||||
import Data.String
|
||||
import Data.Text (Text)
|
||||
import qualified Data.Text as T
|
||||
import Network.HTTP.Media (MediaType, mainType, subType)
|
||||
import OpenAPI.Checker.Behavior
|
||||
import OpenAPI.Checker.Subtree
|
||||
import OpenAPI.Checker.Validate.Header ()
|
||||
import OpenAPI.Checker.Validate.Products
|
||||
import OpenAPI.Checker.Validate.Schema ()
|
||||
import Text.Pandoc.Builder
|
||||
|
||||
tracedSchema :: Traced MediaTypeObject -> Maybe (Traced (Referenced Schema))
|
||||
@ -45,7 +45,7 @@ instance Issuable 'PayloadLevel where
|
||||
describeIssue _ MediaTypeSchemaRequired = para "Media type expected, but was not specified."
|
||||
describeIssue Forward (MediaEncodingMissing enc) = para $ "Media encoding " <> str enc <> " has been removed."
|
||||
describeIssue Backward (MediaEncodingMissing enc) = para $ "Media encoding " <> str enc <> " added."
|
||||
describeIssue _ EncodingNotSupported = para "OpenApi Diff does not currently support media encodings other than JSON."
|
||||
describeIssue _ EncodingNotSupported = para "CompaREST does not currently support media encodings other than JSON."
|
||||
|
||||
instance Behavable 'PayloadLevel 'SchemaLevel where
|
||||
data Behave 'PayloadLevel 'SchemaLevel
|
||||
@ -119,7 +119,7 @@ instance Subtree Encoding where
|
||||
|
||||
-- FIXME: Support only JSON body for now. Then Encoding is checked only for
|
||||
-- multipart/form-url-encoded
|
||||
-- https://github.com/typeable/openapi-diff/issues/54
|
||||
-- #54
|
||||
checkSemanticCompatibility _env beh _pc =
|
||||
issueAt beh EncodingNotSupported
|
||||
|
@ -1,6 +1,6 @@
|
||||
{-# OPTIONS_GHC -Wno-orphans #-}
|
||||
|
||||
module OpenAPI.Checker.Validate.OAuth2Flows
|
||||
module Data.OpenApi.Compare.Validate.OAuth2Flows
|
||||
( Step (..)
|
||||
, Issue (..)
|
||||
, Behave (..)
|
||||
@ -12,13 +12,13 @@ import Data.Function
|
||||
import Data.Functor
|
||||
import qualified Data.HashMap.Strict.InsOrd as IOHM
|
||||
import Data.OpenApi
|
||||
import Data.OpenApi.Compare.Behavior
|
||||
import Data.OpenApi.Compare.Orphans ()
|
||||
import Data.OpenApi.Compare.Subtree
|
||||
import Data.Proxy
|
||||
import Data.Set (Set)
|
||||
import qualified Data.Set as S
|
||||
import Data.Text (Text)
|
||||
import OpenAPI.Checker.Behavior
|
||||
import OpenAPI.Checker.Orphans ()
|
||||
import OpenAPI.Checker.Subtree
|
||||
import Text.Pandoc.Builder
|
||||
|
||||
instance Subtree OAuth2Flows where
|
@ -2,7 +2,7 @@
|
||||
-- Does not compiles otherwise
|
||||
{-# OPTIONS_GHC -fconstraint-solver-iterations=0 #-}
|
||||
|
||||
module OpenAPI.Checker.Validate.OpenApi
|
||||
module Data.OpenApi.Compare.Validate.OpenApi
|
||||
( Behave (..)
|
||||
, Issue (..)
|
||||
)
|
||||
@ -11,10 +11,10 @@ where
|
||||
import Data.HList
|
||||
import qualified Data.HashMap.Strict.InsOrd as IOHM
|
||||
import Data.OpenApi
|
||||
import OpenAPI.Checker.Behavior
|
||||
import OpenAPI.Checker.Paths
|
||||
import OpenAPI.Checker.Subtree
|
||||
import OpenAPI.Checker.Validate.Operation
|
||||
import Data.OpenApi.Compare.Behavior
|
||||
import Data.OpenApi.Compare.Paths
|
||||
import Data.OpenApi.Compare.Subtree
|
||||
import Data.OpenApi.Compare.Validate.Operation
|
||||
|
||||
tracedPaths :: Traced OpenApi -> Traced ProcessedPathItems
|
||||
tracedPaths oa =
|
@ -2,7 +2,7 @@
|
||||
{-# OPTIONS_GHC -Wno-orphans #-}
|
||||
{-# OPTIONS_GHC -fconstraint-solver-iterations=0 #-}
|
||||
|
||||
module OpenAPI.Checker.Validate.Operation
|
||||
module Data.OpenApi.Compare.Validate.Operation
|
||||
( -- * Operation
|
||||
MatchedOperation (..)
|
||||
, OperationMethod (..)
|
||||
@ -29,21 +29,21 @@ import qualified Data.List as L
|
||||
import Data.Map.Strict as M
|
||||
import Data.Maybe
|
||||
import Data.OpenApi
|
||||
import Data.OpenApi.Compare.Behavior
|
||||
import Data.OpenApi.Compare.References
|
||||
import Data.OpenApi.Compare.Subtree
|
||||
import Data.OpenApi.Compare.Validate.MediaTypeObject
|
||||
import Data.OpenApi.Compare.Validate.OAuth2Flows
|
||||
import Data.OpenApi.Compare.Validate.PathFragment
|
||||
import Data.OpenApi.Compare.Validate.Products
|
||||
import Data.OpenApi.Compare.Validate.RequestBody
|
||||
import Data.OpenApi.Compare.Validate.Responses
|
||||
import Data.OpenApi.Compare.Validate.SecurityRequirement ()
|
||||
import Data.OpenApi.Compare.Validate.Server ()
|
||||
import Data.OpenApi.Compare.Validate.Sums
|
||||
import Data.String
|
||||
import Data.Text (Text)
|
||||
import qualified Data.Text as T
|
||||
import OpenAPI.Checker.Behavior
|
||||
import OpenAPI.Checker.References
|
||||
import OpenAPI.Checker.Subtree
|
||||
import OpenAPI.Checker.Validate.MediaTypeObject
|
||||
import OpenAPI.Checker.Validate.OAuth2Flows
|
||||
import OpenAPI.Checker.Validate.PathFragment
|
||||
import OpenAPI.Checker.Validate.Products
|
||||
import OpenAPI.Checker.Validate.RequestBody
|
||||
import OpenAPI.Checker.Validate.Responses
|
||||
import OpenAPI.Checker.Validate.SecurityRequirement ()
|
||||
import OpenAPI.Checker.Validate.Server ()
|
||||
import OpenAPI.Checker.Validate.Sums
|
||||
import Text.Pandoc.Builder
|
||||
|
||||
data MatchedOperation = MatchedOperation
|
||||
@ -86,7 +86,7 @@ tracedCallbacks (Traced t oper) =
|
||||
| (k, v) <- IOHM.toList . _operationCallbacks . operation $ oper
|
||||
]
|
||||
|
||||
-- FIXME: https://github.com/typeable/openapi-diff/issues/28
|
||||
-- FIXME: #28
|
||||
getServers
|
||||
:: [Server] -- ^ Servers from env
|
||||
-> MatchedOperation
|
||||
@ -241,7 +241,7 @@ instance Subtree MatchedOperation where
|
||||
checkProducts beh (const NoRequestBody) (const check) elements
|
||||
checkResponses =
|
||||
swapProdCons (checkCompatibility beh) env $ tracedResponses <$> prodCons
|
||||
-- FIXME: https://github.com/typeable/openapi-diff/issues/27
|
||||
-- FIXME: #27
|
||||
checkCallbacks = do
|
||||
let ProdCons pCallbacks cCallbacks = tracedCallbacks <$> prodCons
|
||||
for_ pCallbacks $ \(k, pCallback) -> do
|
||||
@ -250,7 +250,7 @@ instance Subtree MatchedOperation where
|
||||
cCallbacks <&> \(_, cCallback) -> do
|
||||
swapProdCons (checkCompatibility beh') env $ ProdCons pCallback cCallback
|
||||
pure ()
|
||||
-- FIXME: https://github.com/typeable/openapi-diff/issues/28
|
||||
-- FIXME: #28
|
||||
checkOperationSecurity = do
|
||||
let ProdCons pSecs cSecs = tracedSecurity <$> prodCons
|
||||
for_ pSecs $ \(i, pSec) -> do
|
||||
@ -564,7 +564,7 @@ instance Issuable 'CallbackLevel where
|
||||
deriving stock (Eq, Ord, Show)
|
||||
issueKind = \case
|
||||
CallbacksUnsupported -> Unsupported
|
||||
describeIssue _ CallbacksUnsupported = para "OpenApi Diff does not currently support callbacks."
|
||||
describeIssue _ CallbacksUnsupported = para "CompaREST does not currently support callbacks."
|
||||
|
||||
tracedCallbackPathItems :: Traced Callback -> Traced ProcessedPathItems
|
||||
tracedCallbackPathItems (Traced t (Callback x)) =
|
@ -1,7 +1,7 @@
|
||||
{-# OPTIONS_GHC -Wno-orphans #-}
|
||||
{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
|
||||
|
||||
module OpenAPI.Checker.Validate.Param
|
||||
module Data.OpenApi.Compare.Validate.Param
|
||||
( Behave (..)
|
||||
, Issue (..)
|
||||
)
|
||||
@ -11,11 +11,11 @@ import Control.Monad
|
||||
import Data.Functor
|
||||
import Data.Maybe
|
||||
import Data.OpenApi
|
||||
import Data.OpenApi.Compare.Behavior
|
||||
import Data.OpenApi.Compare.Orphans ()
|
||||
import Data.OpenApi.Compare.Subtree
|
||||
import Data.OpenApi.Compare.Validate.Schema ()
|
||||
import Data.Text as T
|
||||
import OpenAPI.Checker.Behavior
|
||||
import OpenAPI.Checker.Orphans ()
|
||||
import OpenAPI.Checker.Subtree
|
||||
import OpenAPI.Checker.Validate.Schema ()
|
||||
import Text.Pandoc.Builder
|
||||
|
||||
-- | The type is normalized encoding style of the parameter. If two encoding
|
@ -1,4 +1,4 @@
|
||||
module OpenAPI.Checker.Validate.PathFragment
|
||||
module Data.OpenApi.Compare.Validate.PathFragment
|
||||
( parsePath
|
||||
, PathFragment (..)
|
||||
, PathFragmentParam
|
||||
@ -7,15 +7,15 @@ where
|
||||
|
||||
import qualified Data.Aeson as A
|
||||
import Data.OpenApi
|
||||
import Data.OpenApi.Compare.Behavior
|
||||
import Data.OpenApi.Compare.Subtree
|
||||
import Data.OpenApi.Compare.Validate.Param
|
||||
import Data.Text (Text)
|
||||
import qualified Data.Text as T
|
||||
import Data.Typeable
|
||||
import OpenAPI.Checker.Behavior
|
||||
import OpenAPI.Checker.Subtree
|
||||
import OpenAPI.Checker.Validate.Param
|
||||
|
||||
-- TODO: templates can be only part of the PathFragment. Currently only supports templates as full PathFragment.
|
||||
-- https://github.com/typeable/openapi-diff/issues/23
|
||||
-- #23
|
||||
parsePath :: FilePath -> [PathFragment Text]
|
||||
parsePath = fmap partition . T.splitOn "/" . T.pack
|
||||
where
|
@ -12,7 +12,7 @@ and their schemas match.
|
||||
|
||||
This module abstracts this logic for arbitrary elements -}
|
||||
|
||||
module OpenAPI.Checker.Validate.Products
|
||||
module Data.OpenApi.Compare.Validate.Products
|
||||
( checkProducts
|
||||
, ProductLike(..)
|
||||
) where
|
||||
@ -20,9 +20,9 @@ module OpenAPI.Checker.Validate.Products
|
||||
import Data.Foldable
|
||||
import Data.Map.Strict (Map)
|
||||
import qualified Data.Map.Strict as M
|
||||
import OpenAPI.Checker.Behavior
|
||||
import OpenAPI.Checker.Paths
|
||||
import OpenAPI.Checker.Subtree
|
||||
import Data.OpenApi.Compare.Behavior
|
||||
import Data.OpenApi.Compare.Paths
|
||||
import Data.OpenApi.Compare.Subtree
|
||||
|
||||
-- | Some entity which is product-like
|
||||
data ProductLike a = ProductLike
|
@ -1,6 +1,6 @@
|
||||
{-# OPTIONS_GHC -Wno-orphans #-}
|
||||
|
||||
module OpenAPI.Checker.Validate.RequestBody
|
||||
module Data.OpenApi.Compare.Validate.RequestBody
|
||||
( Issue (..)
|
||||
, Behave (..)
|
||||
)
|
||||
@ -11,12 +11,12 @@ import Data.HashMap.Strict.InsOrd as IOHM
|
||||
import Data.Map.Strict as M
|
||||
import Data.Maybe
|
||||
import Data.OpenApi
|
||||
import Data.OpenApi.Compare.Behavior
|
||||
import Data.OpenApi.Compare.Subtree
|
||||
import Data.OpenApi.Compare.Validate.MediaTypeObject
|
||||
import Data.OpenApi.Compare.Validate.Sums
|
||||
import qualified Data.Text as T
|
||||
import Network.HTTP.Media (MediaType)
|
||||
import OpenAPI.Checker.Behavior
|
||||
import OpenAPI.Checker.Subtree
|
||||
import OpenAPI.Checker.Validate.MediaTypeObject
|
||||
import OpenAPI.Checker.Validate.Sums
|
||||
import Text.Pandoc.Builder
|
||||
|
||||
-- TODO: Use RequestMediaTypeObjectMapping
|
@ -1,7 +1,7 @@
|
||||
{-# OPTIONS_GHC -Wno-orphans #-}
|
||||
{-# OPTIONS_GHC -fno-warn-name-shadowing #-}
|
||||
|
||||
module OpenAPI.Checker.Validate.Responses
|
||||
module Data.OpenApi.Compare.Validate.Responses
|
||||
( Behave (..)
|
||||
)
|
||||
where
|
||||
@ -11,17 +11,17 @@ import Data.HashMap.Strict.InsOrd as IOHM
|
||||
import Data.Map.Strict as M
|
||||
import Data.Maybe
|
||||
import Data.OpenApi
|
||||
import Data.OpenApi.Compare.Behavior
|
||||
import Data.OpenApi.Compare.References
|
||||
import Data.OpenApi.Compare.Subtree
|
||||
import Data.OpenApi.Compare.Validate.Header ()
|
||||
import Data.OpenApi.Compare.Validate.Link ()
|
||||
import Data.OpenApi.Compare.Validate.MediaTypeObject
|
||||
import Data.OpenApi.Compare.Validate.Products
|
||||
import Data.OpenApi.Compare.Validate.Schema ()
|
||||
import Data.OpenApi.Compare.Validate.Sums
|
||||
import qualified Data.Text as T
|
||||
import Network.HTTP.Media (MediaType)
|
||||
import OpenAPI.Checker.Behavior
|
||||
import OpenAPI.Checker.References
|
||||
import OpenAPI.Checker.Subtree
|
||||
import OpenAPI.Checker.Validate.Header ()
|
||||
import OpenAPI.Checker.Validate.Link ()
|
||||
import OpenAPI.Checker.Validate.MediaTypeObject
|
||||
import OpenAPI.Checker.Validate.Products
|
||||
import OpenAPI.Checker.Validate.Schema ()
|
||||
import OpenAPI.Checker.Validate.Sums
|
||||
import Text.Pandoc.Builder
|
||||
|
||||
tracedResponses :: Traced Responses -> IOHM.InsOrdHashMap HttpStatusCode (Traced (Referenced Response))
|
@ -1,5 +1,5 @@
|
||||
{-# OPTIONS_GHC -Wno-orphans #-}
|
||||
module OpenAPI.Checker.Validate.Schema
|
||||
module Data.OpenApi.Compare.Validate.Schema
|
||||
(
|
||||
)
|
||||
where
|
||||
@ -15,22 +15,22 @@ import qualified Data.Map as M
|
||||
import Data.List (group, genericLength, genericIndex)
|
||||
import Data.Maybe
|
||||
import Data.OpenApi
|
||||
import Data.OpenApi.Compare.Behavior
|
||||
import Data.OpenApi.Compare.Paths
|
||||
import qualified Data.OpenApi.Compare.PathsPrefixTree as P
|
||||
import Data.OpenApi.Compare.Subtree
|
||||
import Data.OpenApi.Compare.Validate.Schema.DNF
|
||||
import Data.OpenApi.Compare.Validate.Schema.Issues
|
||||
import Data.OpenApi.Compare.Validate.Schema.JsonFormula
|
||||
import Data.OpenApi.Compare.Validate.Schema.Traced
|
||||
import Data.OpenApi.Compare.Validate.Schema.TypedJson
|
||||
import Data.OpenApi.Compare.Validate.Schema.Partition
|
||||
import Data.OpenApi.Compare.Validate.Schema.Process
|
||||
import Data.Ord
|
||||
import Data.Ratio
|
||||
import Data.Semigroup
|
||||
import qualified Data.Set as S
|
||||
import Data.Text (Text)
|
||||
import OpenAPI.Checker.Behavior
|
||||
import OpenAPI.Checker.Paths
|
||||
import qualified OpenAPI.Checker.PathsPrefixTree as P
|
||||
import OpenAPI.Checker.Subtree
|
||||
import OpenAPI.Checker.Validate.Schema.DNF
|
||||
import OpenAPI.Checker.Validate.Schema.Issues
|
||||
import OpenAPI.Checker.Validate.Schema.JsonFormula
|
||||
import OpenAPI.Checker.Validate.Schema.Traced
|
||||
import OpenAPI.Checker.Validate.Schema.TypedJson
|
||||
import OpenAPI.Checker.Validate.Schema.Partition
|
||||
import OpenAPI.Checker.Validate.Schema.Process
|
||||
|
||||
checkFormulas
|
||||
:: (ReassembleHList xs (CheckEnv (Referenced Schema)))
|
@ -1,4 +1,4 @@
|
||||
module OpenAPI.Checker.Validate.Schema.DNF
|
||||
module Data.OpenApi.Compare.Validate.Schema.DNF
|
||||
( DNF (..)
|
||||
, Disjunct (..)
|
||||
, pattern SingleDisjunct
|
@ -1,6 +1,6 @@
|
||||
{-# OPTIONS_GHC -Wno-orphans #-}
|
||||
|
||||
module OpenAPI.Checker.Validate.Schema.Issues
|
||||
module Data.OpenApi.Compare.Validate.Schema.Issues
|
||||
( Issue (..)
|
||||
, Behave (..)
|
||||
)
|
||||
@ -8,14 +8,14 @@ where
|
||||
|
||||
import qualified Data.Aeson as A
|
||||
import Data.OpenApi
|
||||
import Data.OpenApi.Compare.Behavior
|
||||
import Data.OpenApi.Compare.Subtree
|
||||
import Data.OpenApi.Compare.Validate.Schema.JsonFormula
|
||||
import Data.OpenApi.Compare.Validate.Schema.Partition
|
||||
import Data.OpenApi.Compare.Validate.Schema.TypedJson
|
||||
import Data.Scientific
|
||||
import Data.Text (Text)
|
||||
import qualified Data.Text as T
|
||||
import OpenAPI.Checker.Behavior
|
||||
import OpenAPI.Checker.Subtree
|
||||
import OpenAPI.Checker.Validate.Schema.JsonFormula
|
||||
import OpenAPI.Checker.Validate.Schema.Partition
|
||||
import OpenAPI.Checker.Validate.Schema.TypedJson
|
||||
import Text.Pandoc.Builder hiding (Format, Null)
|
||||
|
||||
instance Issuable 'TypedSchemaLevel where
|
||||
@ -263,7 +263,7 @@ instance Issuable 'SchemaLevel where
|
||||
UnexpectedProperty -> Just ()
|
||||
_ -> Nothing
|
||||
describeIssue _ (NotSupported i) =
|
||||
para (emph "Encountered a feature that OpenApi Diff does not support: " <> text i <> ".")
|
||||
para (emph "Encountered a feature that CompaREST does not support: " <> text i <> ".")
|
||||
describeIssue _ OneOfNotDisjoint =
|
||||
para $
|
||||
"Could not deduce that " <> code "oneOf"
|
||||
@ -275,7 +275,7 @@ instance Issuable 'SchemaLevel where
|
||||
describeIssue _ (InvalidSchema i) =
|
||||
para (emph "The schema is invalid: " <> text i <> ".")
|
||||
describeIssue _ UnguardedRecursion =
|
||||
para "Encountered recursion that is too complex for OpenApi Diff to untangle."
|
||||
para "Encountered recursion that is too complex for CompaREST to untangle."
|
||||
describeIssue Forward (TypesRestricted tys) = case tys of
|
||||
[] -> para "No longer has any valid values." -- weird
|
||||
_ -> para "Values are now limited to the following types: " <> bulletList (para . describeJSONType <$> tys)
|
@ -1,4 +1,4 @@
|
||||
module OpenAPI.Checker.Validate.Schema.JsonFormula
|
||||
module Data.OpenApi.Compare.Validate.Schema.JsonFormula
|
||||
( Bound (..)
|
||||
, showBound
|
||||
, Property (..)
|
||||
@ -27,6 +27,10 @@ import Data.Kind
|
||||
import qualified Data.Map as M
|
||||
import Data.Maybe
|
||||
import Data.OpenApi
|
||||
import Data.OpenApi.Compare.Orphans ()
|
||||
import Data.OpenApi.Compare.Subtree
|
||||
import Data.OpenApi.Compare.Validate.Schema.DNF
|
||||
import Data.OpenApi.Compare.Validate.Schema.TypedJson
|
||||
import Data.Ord
|
||||
import Data.Ratio
|
||||
import Data.Scientific
|
||||
@ -35,10 +39,6 @@ import Data.Text (Text)
|
||||
import qualified Data.Text as T
|
||||
import qualified Data.Text.Encoding as T
|
||||
import Data.Typeable
|
||||
import OpenAPI.Checker.Orphans ()
|
||||
import OpenAPI.Checker.Subtree
|
||||
import OpenAPI.Checker.Validate.Schema.DNF
|
||||
import OpenAPI.Checker.Validate.Schema.TypedJson
|
||||
import Text.Pandoc.Builder hiding (Format, Null)
|
||||
import Text.Regex.Pcre2
|
||||
|
@ -1,4 +1,4 @@
|
||||
module OpenAPI.Checker.Validate.Schema.Partition
|
||||
module Data.OpenApi.Compare.Validate.Schema.Partition
|
||||
( partitionSchema
|
||||
, partitionRefSchema
|
||||
, selectPartition
|
||||
@ -32,17 +32,17 @@ import qualified Data.List.NonEmpty as NE
|
||||
import qualified Data.Map as M
|
||||
import Data.Maybe
|
||||
import Data.OpenApi
|
||||
import Data.OpenApi.Compare.Memo
|
||||
import Data.OpenApi.Compare.References
|
||||
import Data.OpenApi.Compare.Subtree
|
||||
import Data.OpenApi.Compare.Validate.Schema.DNF
|
||||
import Data.OpenApi.Compare.Validate.Schema.JsonFormula
|
||||
import Data.OpenApi.Compare.Validate.Schema.Traced
|
||||
import Data.OpenApi.Compare.Validate.Schema.TypedJson
|
||||
import Data.Ord
|
||||
import qualified Data.Set as S
|
||||
import Data.Text (Text)
|
||||
import qualified Data.Text as T
|
||||
import OpenAPI.Checker.Memo
|
||||
import OpenAPI.Checker.References
|
||||
import OpenAPI.Checker.Subtree
|
||||
import OpenAPI.Checker.Validate.Schema.DNF
|
||||
import OpenAPI.Checker.Validate.Schema.JsonFormula
|
||||
import OpenAPI.Checker.Validate.Schema.Traced
|
||||
import OpenAPI.Checker.Validate.Schema.TypedJson
|
||||
import Text.Pandoc.Builder hiding (Format, Null)
|
||||
|
||||
data PartitionData
|
@ -1,4 +1,4 @@
|
||||
module OpenAPI.Checker.Validate.Schema.Process
|
||||
module Data.OpenApi.Compare.Validate.Schema.Process
|
||||
( schemaToFormula
|
||||
)
|
||||
where
|
||||
@ -14,20 +14,20 @@ import qualified Data.HashMap.Strict.InsOrd as IOHM
|
||||
import qualified Data.Map as M
|
||||
import Data.Maybe
|
||||
import Data.OpenApi hiding (get)
|
||||
import Data.OpenApi.Compare.Behavior
|
||||
import Data.OpenApi.Compare.Memo
|
||||
import Data.OpenApi.Compare.Paths
|
||||
import qualified Data.OpenApi.Compare.PathsPrefixTree as P
|
||||
import Data.OpenApi.Compare.References
|
||||
import Data.OpenApi.Compare.Subtree
|
||||
import Data.OpenApi.Compare.Validate.Schema.DNF
|
||||
import Data.OpenApi.Compare.Validate.Schema.Issues
|
||||
import Data.OpenApi.Compare.Validate.Schema.JsonFormula
|
||||
import Data.OpenApi.Compare.Validate.Schema.Partition
|
||||
import Data.OpenApi.Compare.Validate.Schema.Traced
|
||||
import Data.OpenApi.Compare.Validate.Schema.TypedJson
|
||||
import Data.Ord
|
||||
import qualified Data.Set as S
|
||||
import OpenAPI.Checker.Behavior
|
||||
import OpenAPI.Checker.Memo
|
||||
import OpenAPI.Checker.Paths
|
||||
import qualified OpenAPI.Checker.PathsPrefixTree as P
|
||||
import OpenAPI.Checker.References
|
||||
import OpenAPI.Checker.Subtree
|
||||
import OpenAPI.Checker.Validate.Schema.DNF
|
||||
import OpenAPI.Checker.Validate.Schema.Issues
|
||||
import OpenAPI.Checker.Validate.Schema.JsonFormula
|
||||
import OpenAPI.Checker.Validate.Schema.Partition
|
||||
import OpenAPI.Checker.Validate.Schema.Traced
|
||||
import OpenAPI.Checker.Validate.Schema.TypedJson
|
||||
|
||||
-- | A fake writer monad that doesn't actually record anything and allows lazy recursion.
|
||||
newtype Silent w a = Silent {runSilent :: a}
|
@ -1,6 +1,6 @@
|
||||
{-# OPTIONS_GHC -Wno-orphans #-}
|
||||
|
||||
module OpenAPI.Checker.Validate.Schema.Traced
|
||||
module Data.OpenApi.Compare.Validate.Schema.Traced
|
||||
( Step (..)
|
||||
, tracedAllOf
|
||||
, tracedAnyOf
|
||||
@ -21,9 +21,9 @@ import Data.Functor
|
||||
import qualified Data.HashMap.Strict.InsOrd as IOHM
|
||||
import qualified Data.List.NonEmpty as NE
|
||||
import Data.OpenApi
|
||||
import Data.OpenApi.Compare.Subtree
|
||||
import qualified Data.Set as S
|
||||
import Data.Text (Text)
|
||||
import OpenAPI.Checker.Subtree
|
||||
|
||||
data PartitionChoice
|
||||
= CByEnumValue (S.Set A.Value)
|
@ -1,4 +1,4 @@
|
||||
module OpenAPI.Checker.Validate.Schema.TypedJson
|
||||
module Data.OpenApi.Compare.Validate.Schema.TypedJson
|
||||
( JsonType (..)
|
||||
, describeJSONType
|
||||
, TypedValue (..)
|
@ -1,7 +1,7 @@
|
||||
{-# LANGUAGE PartialTypeSignatures #-}
|
||||
{-# OPTIONS_GHC -Wno-orphans #-}
|
||||
|
||||
module OpenAPI.Checker.Validate.SecurityRequirement
|
||||
module Data.OpenApi.Compare.Validate.SecurityRequirement
|
||||
( Issue (..)
|
||||
)
|
||||
where
|
||||
@ -17,14 +17,14 @@ import Data.HList
|
||||
import qualified Data.HashMap.Strict.InsOrd as IOHM
|
||||
import qualified Data.List.NonEmpty as NE
|
||||
import Data.OpenApi
|
||||
import Data.OpenApi.Compare.Behavior
|
||||
import Data.OpenApi.Compare.Subtree
|
||||
import Data.OpenApi.Compare.Validate.OAuth2Flows
|
||||
import Data.OpenApi.Compare.Validate.SecurityScheme ()
|
||||
import Data.Set (Set)
|
||||
import qualified Data.Set as S
|
||||
import Data.Text (Text)
|
||||
import Data.Traversable
|
||||
import OpenAPI.Checker.Behavior
|
||||
import OpenAPI.Checker.Subtree
|
||||
import OpenAPI.Checker.Validate.OAuth2Flows
|
||||
import OpenAPI.Checker.Validate.SecurityScheme ()
|
||||
|
||||
instance Subtree SecurityRequirement where
|
||||
type SubtreeLevel SecurityRequirement = 'SecurityRequirementLevel
|
@ -1,16 +1,16 @@
|
||||
{-# OPTIONS_GHC -Wno-orphans #-}
|
||||
|
||||
module OpenAPI.Checker.Validate.SecurityScheme
|
||||
module Data.OpenApi.Compare.Validate.SecurityScheme
|
||||
(
|
||||
)
|
||||
where
|
||||
|
||||
import Control.Monad
|
||||
import Data.OpenApi
|
||||
import OpenAPI.Checker.Behavior
|
||||
import OpenAPI.Checker.Orphans ()
|
||||
import OpenAPI.Checker.Subtree
|
||||
import OpenAPI.Checker.Validate.OAuth2Flows
|
||||
import Data.OpenApi.Compare.Behavior
|
||||
import Data.OpenApi.Compare.Orphans ()
|
||||
import Data.OpenApi.Compare.Subtree
|
||||
import Data.OpenApi.Compare.Validate.OAuth2Flows
|
||||
|
||||
instance Subtree SecurityScheme where
|
||||
type CheckEnv SecurityScheme = '[]
|
@ -1,6 +1,6 @@
|
||||
{-# OPTIONS_GHC -Wno-orphans #-}
|
||||
|
||||
module OpenAPI.Checker.Validate.Server
|
||||
module Data.OpenApi.Compare.Validate.Server
|
||||
( Issue (..)
|
||||
)
|
||||
where
|
||||
@ -19,15 +19,15 @@ import qualified Data.HashSet.InsOrd as IOHM
|
||||
import qualified Data.HashSet.InsOrd as IOHS
|
||||
import Data.Maybe
|
||||
import Data.OpenApi
|
||||
import Data.OpenApi.Compare.Behavior
|
||||
import Data.OpenApi.Compare.Common
|
||||
import Data.OpenApi.Compare.Paths
|
||||
import Data.OpenApi.Compare.Subtree
|
||||
import Data.OpenApi.Compare.Validate.MediaTypeObject
|
||||
import qualified Data.Set as S
|
||||
import Data.Text (Text)
|
||||
import qualified Data.Text as T
|
||||
import Data.Traversable
|
||||
import OpenAPI.Checker.Behavior
|
||||
import OpenAPI.Checker.Common
|
||||
import OpenAPI.Checker.Paths
|
||||
import OpenAPI.Checker.Subtree
|
||||
import OpenAPI.Checker.Validate.MediaTypeObject
|
||||
import Text.Pandoc.Builder
|
||||
import Prelude as P
|
||||
|
||||
@ -101,7 +101,7 @@ data ServerUrlPart var
|
||||
deriving stock (Eq, Show, Functor, Foldable, Traversable)
|
||||
|
||||
-- | This is super rough. Things like @{a|b}c@ will not match @ac@.
|
||||
-- FIXME: https://github.com/typeable/openapi-diff/issues/46
|
||||
-- FIXME: #46
|
||||
--
|
||||
-- NOTE: syntax is defined vaguely in the spec.
|
||||
parseServerUrl :: Text -> [ServerUrlPart Text]
|
@ -1,13 +1,13 @@
|
||||
module OpenAPI.Checker.Validate.Sums
|
||||
module Data.OpenApi.Compare.Validate.Sums
|
||||
( checkSums
|
||||
) where
|
||||
|
||||
import Data.Foldable
|
||||
import Data.Map.Strict (Map)
|
||||
import qualified Data.Map.Strict as M
|
||||
import OpenAPI.Checker.Behavior
|
||||
import OpenAPI.Checker.Subtree
|
||||
import OpenAPI.Checker.Paths
|
||||
import Data.OpenApi.Compare.Behavior
|
||||
import Data.OpenApi.Compare.Subtree
|
||||
import Data.OpenApi.Compare.Paths
|
||||
|
||||
checkSums
|
||||
:: (Ord k, Issuable l)
|
@ -30,7 +30,7 @@ This test would read the files `a.yaml` and `b.yaml` using the `Yaml.decodeFileT
|
||||
|
||||
## Supported feature tests
|
||||
|
||||
If a test starts with either `x ` or `v `, the test is assumed to test the support of some OpenApi functionality. If the test begins `x ` it means that the feature is expected to be not supported, and the result will only be checked to have an "unsupported" flag set. If it starts with `v ` the test is expected to be supported and the result is compared to some file on disk.
|
||||
If a test starts with either `x ` or `v `, the test is assumed to test the support of some OpenAPI functionality. If the test begins `x ` it means that the feature is expected to be not supported, and the result will only be checked to have an "unsupported" flag set. If it starts with `v ` the test is expected to be supported and the result is compared to some file on disk.
|
||||
|
||||
The result will be reflected in the generated compatibility matrix.
|
||||
|
||||
|
@ -7,11 +7,11 @@ import Control.Category
|
||||
import Control.Exception
|
||||
import qualified Data.ByteString.Lazy as BSL
|
||||
import Data.Default
|
||||
import Data.OpenApi.Compare.Run
|
||||
import Data.OpenApi.Compare.Validate.OpenApi ()
|
||||
import Data.Text (Text)
|
||||
import qualified Data.Text.Encoding as T
|
||||
import qualified Data.Yaml as Yaml
|
||||
import OpenAPI.Checker.Run
|
||||
import OpenAPI.Checker.Validate.OpenApi ()
|
||||
import Spec.Golden.Extra
|
||||
import Test.Tasty (TestTree, testGroup)
|
||||
import Text.Pandoc.Builder
|
||||
|
@ -1,19 +1,19 @@
|
||||
# Summary
|
||||
|
||||
| ⚠️ Breaking changes | 🙆 Non-breaking changes | [🤷 Unsupported feature changes](#unsupported-changes) |
|
||||
|---------------------|------------------------|-------------------------------------------------------|
|
||||
| 0 | 0 | 2 |
|
||||
| ❌ Breaking changes | ⚠️ Non-breaking changes | [❓ Unsupported feature changes](#unsupported-changes) |
|
||||
|--------------------|-------------------------|-------------------------------------------------------|
|
||||
| 0 | 0 | 2 |
|
||||
|
||||
# <span id="unsupported-changes"></span>🤷 Unsupported feature changes
|
||||
# <span id="unsupported-changes"></span>❓ Unsupported feature changes
|
||||
|
||||
## **POST** /test
|
||||
|
||||
### 📱➡️ JSON Request
|
||||
### ➡️☁️ JSON Request
|
||||
|
||||
Could not deduce that `oneOf` cases don't overlap. Treating the `oneOf`
|
||||
as an `anyOf`. Reported errors might not be accurate.
|
||||
|
||||
### 📱⬅️ JSON Response – 200
|
||||
### ⬅️☁️ JSON Response – 200
|
||||
|
||||
Could not deduce that `oneOf` cases don't overlap. Treating the `oneOf`
|
||||
as an `anyOf`. Reported errors might not be accurate.
|
||||
|
@ -1,14 +1,14 @@
|
||||
# Summary
|
||||
|
||||
| [⚠️ Breaking changes](#breaking-changes) | [🙆 Non-breaking changes](#non-breaking-changes) | 🤷 Unsupported feature changes |
|
||||
|------------------------------------------|-------------------------------------------------|-------------------------------|
|
||||
| 1 | 1 | 0 |
|
||||
| [❌ Breaking changes](#breaking-changes) | [⚠️ Non-breaking changes](#non-breaking-changes) |
|
||||
|-----------------------------------------|--------------------------------------------------|
|
||||
| 1 | 1 |
|
||||
|
||||
# <span id="breaking-changes"></span>⚠️ Breaking changes
|
||||
# <span id="breaking-changes"></span>❌ Breaking changes
|
||||
|
||||
## **POST** /test
|
||||
|
||||
### 📱⬅️ JSON Response – 200
|
||||
### ⬅️☁️ JSON Response – 200
|
||||
|
||||
#### `$(String)`
|
||||
|
||||
@ -18,11 +18,11 @@ The following enum value was added:
|
||||
"C"
|
||||
```
|
||||
|
||||
# <span id="non-breaking-changes"></span>🙆 Non-breaking changes
|
||||
# <span id="non-breaking-changes"></span>⚠️ Non-breaking changes
|
||||
|
||||
## **POST** /test
|
||||
|
||||
### 📱➡️ JSON Request
|
||||
### ➡️☁️ JSON Request
|
||||
|
||||
#### `$(String)`
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
# Summary
|
||||
|
||||
| ⚠️ Breaking changes | 🙆 Non-breaking changes | 🤷 Unsupported feature changes |
|
||||
|---------------------|------------------------|-------------------------------|
|
||||
| 0 | 0 | 0 |
|
||||
| ❌ Breaking changes | ⚠️ Non-breaking changes |
|
||||
|--------------------|-------------------------|
|
||||
| 0 | 0 |
|
||||
|
@ -1,5 +1,5 @@
|
||||
# Summary
|
||||
|
||||
| ⚠️ Breaking changes | 🙆 Non-breaking changes | 🤷 Unsupported feature changes |
|
||||
|---------------------|------------------------|-------------------------------|
|
||||
| 0 | 0 | 0 |
|
||||
| ❌ Breaking changes | ⚠️ Non-breaking changes |
|
||||
|--------------------|-------------------------|
|
||||
| 0 | 0 |
|
||||
|
@ -1,5 +1,5 @@
|
||||
# Summary
|
||||
|
||||
| ⚠️ Breaking changes | 🙆 Non-breaking changes | 🤷 Unsupported feature changes |
|
||||
|---------------------|------------------------|-------------------------------|
|
||||
| 0 | 0 | 0 |
|
||||
| ❌ Breaking changes | ⚠️ Non-breaking changes |
|
||||
|--------------------|-------------------------|
|
||||
| 0 | 0 |
|
||||
|
@ -1,24 +1,24 @@
|
||||
# Summary
|
||||
|
||||
| [⚠️ Breaking changes](#breaking-changes) | [🙆 Non-breaking changes](#non-breaking-changes) | 🤷 Unsupported feature changes |
|
||||
|------------------------------------------|-------------------------------------------------|-------------------------------|
|
||||
| 1 | 1 | 0 |
|
||||
| [❌ Breaking changes](#breaking-changes) | [⚠️ Non-breaking changes](#non-breaking-changes) |
|
||||
|-----------------------------------------|--------------------------------------------------|
|
||||
| 1 | 1 |
|
||||
|
||||
# <span id="breaking-changes"></span>⚠️ Breaking changes
|
||||
# <span id="breaking-changes"></span>❌ Breaking changes
|
||||
|
||||
## **POST** /test
|
||||
|
||||
### 📱➡️ JSON Request
|
||||
### ➡️☁️ JSON Request
|
||||
|
||||
#### `$(Number)`
|
||||
|
||||
Upper bound changed from 3.0 inclusive to 2.0 inclusive.
|
||||
|
||||
# <span id="non-breaking-changes"></span>🙆 Non-breaking changes
|
||||
# <span id="non-breaking-changes"></span>⚠️ Non-breaking changes
|
||||
|
||||
## **POST** /test
|
||||
|
||||
### 📱⬅️ JSON Response – 200
|
||||
### ⬅️☁️ JSON Response – 200
|
||||
|
||||
#### `$(Number)`
|
||||
|
||||
|
@ -1,10 +1,10 @@
|
||||
# Summary
|
||||
|
||||
| [⚠️ Breaking changes](#breaking-changes) | 🙆 Non-breaking changes | 🤷 Unsupported feature changes |
|
||||
|------------------------------------------|------------------------|-------------------------------|
|
||||
| 1 | 0 | 0 |
|
||||
| [❌ Breaking changes](#breaking-changes) | ⚠️ Non-breaking changes |
|
||||
|-----------------------------------------|-------------------------|
|
||||
| 1 | 0 |
|
||||
|
||||
# <span id="breaking-changes"></span>⚠️ Breaking changes
|
||||
# <span id="breaking-changes"></span>❌ Breaking changes
|
||||
|
||||
## **POST** /test
|
||||
|
||||
|
@ -1,10 +1,10 @@
|
||||
# Summary
|
||||
|
||||
| ⚠️ Breaking changes | [🙆 Non-breaking changes](#non-breaking-changes) | 🤷 Unsupported feature changes |
|
||||
|---------------------|-------------------------------------------------|-------------------------------|
|
||||
| 0 | 1 | 0 |
|
||||
| ❌ Breaking changes | [⚠️ Non-breaking changes](#non-breaking-changes) |
|
||||
|--------------------|--------------------------------------------------|
|
||||
| 0 | 1 |
|
||||
|
||||
# <span id="non-breaking-changes"></span>🙆 Non-breaking changes
|
||||
# <span id="non-breaking-changes"></span>⚠️ Non-breaking changes
|
||||
|
||||
## **POST** /test
|
||||
|
||||
|
@ -1,10 +1,10 @@
|
||||
# Summary
|
||||
|
||||
| [⚠️ Breaking changes](#breaking-changes) | [🙆 Non-breaking changes](#non-breaking-changes) | 🤷 Unsupported feature changes |
|
||||
|------------------------------------------|-------------------------------------------------|-------------------------------|
|
||||
| 1 | 1 | 0 |
|
||||
| [❌ Breaking changes](#breaking-changes) | [⚠️ Non-breaking changes](#non-breaking-changes) |
|
||||
|-----------------------------------------|--------------------------------------------------|
|
||||
| 1 | 1 |
|
||||
|
||||
# <span id="breaking-changes"></span>⚠️ Breaking changes
|
||||
# <span id="breaking-changes"></span>❌ Breaking changes
|
||||
|
||||
## **POST** /test
|
||||
|
||||
@ -16,7 +16,7 @@
|
||||
|
||||
The type has been removed.
|
||||
|
||||
# <span id="non-breaking-changes"></span>🙆 Non-breaking changes
|
||||
# <span id="non-breaking-changes"></span>⚠️ Non-breaking changes
|
||||
|
||||
## **POST** /test
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
# Summary
|
||||
|
||||
| ⚠️ Breaking changes | 🙆 Non-breaking changes | 🤷 Unsupported feature changes |
|
||||
|---------------------|------------------------|-------------------------------|
|
||||
| 0 | 0 | 0 |
|
||||
| ❌ Breaking changes | ⚠️ Non-breaking changes |
|
||||
|--------------------|-------------------------|
|
||||
| 0 | 0 |
|
||||
|
@ -1,5 +1,5 @@
|
||||
# Summary
|
||||
|
||||
| ⚠️ Breaking changes | 🙆 Non-breaking changes | 🤷 Unsupported feature changes |
|
||||
|---------------------|------------------------|-------------------------------|
|
||||
| 0 | 0 | 0 |
|
||||
| ❌ Breaking changes | ⚠️ Non-breaking changes |
|
||||
|--------------------|-------------------------|
|
||||
| 0 | 0 |
|
||||
|
@ -1,10 +1,10 @@
|
||||
# Summary
|
||||
|
||||
| ⚠️ Breaking changes | [🙆 Non-breaking changes](#non-breaking-changes) | 🤷 Unsupported feature changes |
|
||||
|---------------------|-------------------------------------------------|-------------------------------|
|
||||
| 0 | 1 | 0 |
|
||||
| ❌ Breaking changes | [⚠️ Non-breaking changes](#non-breaking-changes) |
|
||||
|--------------------|--------------------------------------------------|
|
||||
| 0 | 1 |
|
||||
|
||||
# <span id="non-breaking-changes"></span>🙆 Non-breaking changes
|
||||
# <span id="non-breaking-changes"></span>⚠️ Non-breaking changes
|
||||
|
||||
## **POST** /test
|
||||
|
||||
|
@ -1,10 +1,10 @@
|
||||
# Summary
|
||||
|
||||
| [⚠️ Breaking changes](#breaking-changes) | 🙆 Non-breaking changes | 🤷 Unsupported feature changes |
|
||||
|------------------------------------------|------------------------|-------------------------------|
|
||||
| 1 | 0 | 0 |
|
||||
| [❌ Breaking changes](#breaking-changes) | ⚠️ Non-breaking changes |
|
||||
|-----------------------------------------|-------------------------|
|
||||
| 1 | 0 |
|
||||
|
||||
# <span id="breaking-changes"></span>⚠️ Breaking changes
|
||||
# <span id="breaking-changes"></span>❌ Breaking changes
|
||||
|
||||
## **POST** /test
|
||||
|
||||
|
@ -1,10 +1,10 @@
|
||||
# Summary
|
||||
|
||||
| [⚠️ Breaking changes](#breaking-changes) | 🙆 Non-breaking changes | 🤷 Unsupported feature changes |
|
||||
|------------------------------------------|------------------------|-------------------------------|
|
||||
| 1 | 0 | 0 |
|
||||
| [❌ Breaking changes](#breaking-changes) | ⚠️ Non-breaking changes |
|
||||
|-----------------------------------------|-------------------------|
|
||||
| 1 | 0 |
|
||||
|
||||
# <span id="breaking-changes"></span>⚠️ Breaking changes
|
||||
# <span id="breaking-changes"></span>❌ Breaking changes
|
||||
|
||||
## **POST** /test
|
||||
|
||||
|
@ -1,10 +1,10 @@
|
||||
# Summary
|
||||
|
||||
| ⚠️ Breaking changes | [🙆 Non-breaking changes](#non-breaking-changes) | 🤷 Unsupported feature changes |
|
||||
|---------------------|-------------------------------------------------|-------------------------------|
|
||||
| 0 | 1 | 0 |
|
||||
| ❌ Breaking changes | [⚠️ Non-breaking changes](#non-breaking-changes) |
|
||||
|--------------------|--------------------------------------------------|
|
||||
| 0 | 1 |
|
||||
|
||||
# <span id="non-breaking-changes"></span>🙆 Non-breaking changes
|
||||
# <span id="non-breaking-changes"></span>⚠️ Non-breaking changes
|
||||
|
||||
## **POST** /test
|
||||
|
||||
|
@ -1,10 +1,10 @@
|
||||
# Summary
|
||||
|
||||
| ⚠️ Breaking changes | [🙆 Non-breaking changes](#non-breaking-changes) | 🤷 Unsupported feature changes |
|
||||
|---------------------|-------------------------------------------------|-------------------------------|
|
||||
| 0 | 1 | 0 |
|
||||
| ❌ Breaking changes | [⚠️ Non-breaking changes](#non-breaking-changes) |
|
||||
|--------------------|--------------------------------------------------|
|
||||
| 0 | 1 |
|
||||
|
||||
# <span id="non-breaking-changes"></span>🙆 Non-breaking changes
|
||||
# <span id="non-breaking-changes"></span>⚠️ Non-breaking changes
|
||||
|
||||
## **POST** /test
|
||||
|
||||
|
@ -1,24 +1,24 @@
|
||||
# Summary
|
||||
|
||||
| [⚠️ Breaking changes](#breaking-changes) | [🙆 Non-breaking changes](#non-breaking-changes) | 🤷 Unsupported feature changes |
|
||||
|------------------------------------------|-------------------------------------------------|-------------------------------|
|
||||
| 1 | 1 | 0 |
|
||||
| [❌ Breaking changes](#breaking-changes) | [⚠️ Non-breaking changes](#non-breaking-changes) |
|
||||
|-----------------------------------------|--------------------------------------------------|
|
||||
| 1 | 1 |
|
||||
|
||||
# <span id="breaking-changes"></span>⚠️ Breaking changes
|
||||
# <span id="breaking-changes"></span>❌ Breaking changes
|
||||
|
||||
## **POST** /test
|
||||
|
||||
### 📱➡️ JSON Request
|
||||
### ➡️☁️ JSON Request
|
||||
|
||||
#### `$(String)`
|
||||
|
||||
The type has been removed.
|
||||
|
||||
# <span id="non-breaking-changes"></span>🙆 Non-breaking changes
|
||||
# <span id="non-breaking-changes"></span>⚠️ Non-breaking changes
|
||||
|
||||
## **POST** /test
|
||||
|
||||
### 📱➡️ JSON Request
|
||||
### ➡️☁️ JSON Request
|
||||
|
||||
#### `$(Number)`
|
||||
|
||||
|
@ -1,10 +1,10 @@
|
||||
# Summary
|
||||
|
||||
| [⚠️ Breaking changes](#breaking-changes) | 🙆 Non-breaking changes | 🤷 Unsupported feature changes |
|
||||
|------------------------------------------|------------------------|-------------------------------|
|
||||
| 1 | 0 | 0 |
|
||||
| [❌ Breaking changes](#breaking-changes) | ⚠️ Non-breaking changes |
|
||||
|-----------------------------------------|-------------------------|
|
||||
| 1 | 0 |
|
||||
|
||||
# <span id="breaking-changes"></span>⚠️ Breaking changes
|
||||
# <span id="breaking-changes"></span>❌ Breaking changes
|
||||
|
||||
## **POST** /test
|
||||
|
||||
|
@ -1,10 +1,10 @@
|
||||
# Summary
|
||||
|
||||
| ⚠️ Breaking changes | [🙆 Non-breaking changes](#non-breaking-changes) | 🤷 Unsupported feature changes |
|
||||
|---------------------|-------------------------------------------------|-------------------------------|
|
||||
| 0 | 1 | 0 |
|
||||
| ❌ Breaking changes | [⚠️ Non-breaking changes](#non-breaking-changes) |
|
||||
|--------------------|--------------------------------------------------|
|
||||
| 0 | 1 |
|
||||
|
||||
# <span id="non-breaking-changes"></span>🙆 Non-breaking changes
|
||||
# <span id="non-breaking-changes"></span>⚠️ Non-breaking changes
|
||||
|
||||
## **POST** /test
|
||||
|
||||
|
@ -1,10 +1,10 @@
|
||||
# Summary
|
||||
|
||||
| [⚠️ Breaking changes](#breaking-changes) | 🙆 Non-breaking changes | 🤷 Unsupported feature changes |
|
||||
|------------------------------------------|------------------------|-------------------------------|
|
||||
| 1 | 0 | 0 |
|
||||
| [❌ Breaking changes](#breaking-changes) | ⚠️ Non-breaking changes |
|
||||
|-----------------------------------------|-------------------------|
|
||||
| 1 | 0 |
|
||||
|
||||
# <span id="breaking-changes"></span>⚠️ Breaking changes
|
||||
# <span id="breaking-changes"></span>❌ Breaking changes
|
||||
|
||||
## **POST** /test
|
||||
|
||||
|
@ -1,10 +1,10 @@
|
||||
# Summary
|
||||
|
||||
| [⚠️ Breaking changes](#breaking-changes) | 🙆 Non-breaking changes | 🤷 Unsupported feature changes |
|
||||
|------------------------------------------|------------------------|-------------------------------|
|
||||
| 1 | 0 | 0 |
|
||||
| [❌ Breaking changes](#breaking-changes) | ⚠️ Non-breaking changes |
|
||||
|-----------------------------------------|-------------------------|
|
||||
| 1 | 0 |
|
||||
|
||||
# <span id="breaking-changes"></span>⚠️ Breaking changes
|
||||
# <span id="breaking-changes"></span>❌ Breaking changes
|
||||
|
||||
## **POST** /test
|
||||
|
||||
|
@ -1,10 +1,10 @@
|
||||
# Summary
|
||||
|
||||
| ⚠️ Breaking changes | [🙆 Non-breaking changes](#non-breaking-changes) | 🤷 Unsupported feature changes |
|
||||
|---------------------|-------------------------------------------------|-------------------------------|
|
||||
| 0 | 1 | 0 |
|
||||
| ❌ Breaking changes | [⚠️ Non-breaking changes](#non-breaking-changes) |
|
||||
|--------------------|--------------------------------------------------|
|
||||
| 0 | 1 |
|
||||
|
||||
# <span id="non-breaking-changes"></span>🙆 Non-breaking changes
|
||||
# <span id="non-breaking-changes"></span>⚠️ Non-breaking changes
|
||||
|
||||
## **POST** /test
|
||||
|
||||
|
@ -1,10 +1,10 @@
|
||||
# Summary
|
||||
|
||||
| [⚠️ Breaking changes](#breaking-changes) | 🙆 Non-breaking changes | 🤷 Unsupported feature changes |
|
||||
|------------------------------------------|------------------------|-------------------------------|
|
||||
| 1 | 0 | 0 |
|
||||
| [❌ Breaking changes](#breaking-changes) | ⚠️ Non-breaking changes |
|
||||
|-----------------------------------------|-------------------------|
|
||||
| 1 | 0 |
|
||||
|
||||
# <span id="breaking-changes"></span>⚠️ Breaking changes
|
||||
# <span id="breaking-changes"></span>❌ Breaking changes
|
||||
|
||||
## **POST** /test
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
# Summary
|
||||
|
||||
| ⚠️ Breaking changes | 🙆 Non-breaking changes | 🤷 Unsupported feature changes |
|
||||
|---------------------|------------------------|-------------------------------|
|
||||
| 0 | 0 | 0 |
|
||||
| ❌ Breaking changes | ⚠️ Non-breaking changes |
|
||||
|--------------------|-------------------------|
|
||||
| 0 | 0 |
|
||||
|
@ -1,5 +1,5 @@
|
||||
# Summary
|
||||
|
||||
| ⚠️ Breaking changes | 🙆 Non-breaking changes | 🤷 Unsupported feature changes |
|
||||
|---------------------|------------------------|-------------------------------|
|
||||
| 0 | 0 | 0 |
|
||||
| ❌ Breaking changes | ⚠️ Non-breaking changes |
|
||||
|--------------------|-------------------------|
|
||||
| 0 | 0 |
|
||||
|
@ -1,10 +1,10 @@
|
||||
# Summary
|
||||
|
||||
| [⚠️ Breaking changes](#breaking-changes) | 🙆 Non-breaking changes | 🤷 Unsupported feature changes |
|
||||
|------------------------------------------|------------------------|-------------------------------|
|
||||
| 1 | 0 | 0 |
|
||||
| [❌ Breaking changes](#breaking-changes) | ⚠️ Non-breaking changes |
|
||||
|-----------------------------------------|-------------------------|
|
||||
| 1 | 0 |
|
||||
|
||||
# <span id="breaking-changes"></span>⚠️ Breaking changes
|
||||
# <span id="breaking-changes"></span>❌ Breaking changes
|
||||
|
||||
## **POST** /test
|
||||
|
||||
|
@ -1,24 +1,24 @@
|
||||
# Summary
|
||||
|
||||
| [⚠️ Breaking changes](#breaking-changes) | [🙆 Non-breaking changes](#non-breaking-changes) | 🤷 Unsupported feature changes |
|
||||
|------------------------------------------|-------------------------------------------------|-------------------------------|
|
||||
| 1 | 1 | 0 |
|
||||
| [❌ Breaking changes](#breaking-changes) | [⚠️ Non-breaking changes](#non-breaking-changes) |
|
||||
|-----------------------------------------|--------------------------------------------------|
|
||||
| 1 | 1 |
|
||||
|
||||
# <span id="breaking-changes"></span>⚠️ Breaking changes
|
||||
# <span id="breaking-changes"></span>❌ Breaking changes
|
||||
|
||||
## **POST** /test
|
||||
|
||||
### 📱⬅️ JSON Response – 200
|
||||
### ⬅️☁️ JSON Response – 200
|
||||
|
||||
#### `$(Number)`
|
||||
|
||||
The type has been added.
|
||||
|
||||
# <span id="non-breaking-changes"></span>🙆 Non-breaking changes
|
||||
# <span id="non-breaking-changes"></span>⚠️ Non-breaking changes
|
||||
|
||||
## **POST** /test
|
||||
|
||||
### 📱⬅️ JSON Response – 200
|
||||
### ⬅️☁️ JSON Response – 200
|
||||
|
||||
#### `$(String)`
|
||||
|
||||
|
@ -1,10 +1,10 @@
|
||||
# Summary
|
||||
|
||||
| ⚠️ Breaking changes | [🙆 Non-breaking changes](#non-breaking-changes) | 🤷 Unsupported feature changes |
|
||||
|---------------------|-------------------------------------------------|-------------------------------|
|
||||
| 0 | 1 | 0 |
|
||||
| ❌ Breaking changes | [⚠️ Non-breaking changes](#non-breaking-changes) |
|
||||
|--------------------|--------------------------------------------------|
|
||||
| 0 | 1 |
|
||||
|
||||
# <span id="non-breaking-changes"></span>🙆 Non-breaking changes
|
||||
# <span id="non-breaking-changes"></span>⚠️ Non-breaking changes
|
||||
|
||||
## **POST** /test
|
||||
|
||||
|
@ -1,10 +1,10 @@
|
||||
# Summary
|
||||
|
||||
| ⚠️ Breaking changes | [🙆 Non-breaking changes](#non-breaking-changes) | 🤷 Unsupported feature changes |
|
||||
|---------------------|-------------------------------------------------|-------------------------------|
|
||||
| 0 | 1 | 0 |
|
||||
| ❌ Breaking changes | [⚠️ Non-breaking changes](#non-breaking-changes) |
|
||||
|--------------------|--------------------------------------------------|
|
||||
| 0 | 1 |
|
||||
|
||||
# <span id="non-breaking-changes"></span>🙆 Non-breaking changes
|
||||
# <span id="non-breaking-changes"></span>⚠️ Non-breaking changes
|
||||
|
||||
## **POST** /test
|
||||
|
||||
|
@ -1,14 +1,14 @@
|
||||
# Summary
|
||||
|
||||
| [⚠️ Breaking changes](#breaking-changes) | [🙆 Non-breaking changes](#non-breaking-changes) | 🤷 Unsupported feature changes |
|
||||
|------------------------------------------|-------------------------------------------------|-------------------------------|
|
||||
| 3 | 3 | 0 |
|
||||
| [❌ Breaking changes](#breaking-changes) | [⚠️ Non-breaking changes](#non-breaking-changes) |
|
||||
|-----------------------------------------|--------------------------------------------------|
|
||||
| 3 | 3 |
|
||||
|
||||
# <span id="breaking-changes"></span>⚠️ Breaking changes
|
||||
# <span id="breaking-changes"></span>❌ Breaking changes
|
||||
|
||||
## **POST** /test
|
||||
|
||||
### 📱⬅️ JSON Response – 200
|
||||
### ⬅️☁️ JSON Response – 200
|
||||
|
||||
#### `$.property2`
|
||||
|
||||
@ -21,11 +21,11 @@
|
||||
|
||||
3. The property may not be present.
|
||||
|
||||
# <span id="non-breaking-changes"></span>🙆 Non-breaking changes
|
||||
# <span id="non-breaking-changes"></span>⚠️ Non-breaking changes
|
||||
|
||||
## **POST** /test
|
||||
|
||||
### 📱➡️ JSON Request
|
||||
### ➡️☁️ JSON Request
|
||||
|
||||
#### `$.property2`
|
||||
|
||||
|
@ -1,20 +1,20 @@
|
||||
# Summary
|
||||
|
||||
| [⚠️ Breaking changes](#breaking-changes) | 🙆 Non-breaking changes | 🤷 Unsupported feature changes |
|
||||
|------------------------------------------|------------------------|-------------------------------|
|
||||
| 2 | 0 | 0 |
|
||||
| [❌ Breaking changes](#breaking-changes) | ⚠️ Non-breaking changes |
|
||||
|-----------------------------------------|-------------------------|
|
||||
| 2 | 0 |
|
||||
|
||||
# <span id="breaking-changes"></span>⚠️ Breaking changes
|
||||
# <span id="breaking-changes"></span>❌ Breaking changes
|
||||
|
||||
## **POST** /test
|
||||
|
||||
### 📱➡️ JSON Request
|
||||
### ➡️☁️ JSON Request
|
||||
|
||||
#### `$.property2`
|
||||
|
||||
The property has been removed.
|
||||
|
||||
### 📱⬅️ JSON Response – 200
|
||||
### ⬅️☁️ JSON Response – 200
|
||||
|
||||
#### `$.property2`
|
||||
|
||||
|
@ -1,24 +1,24 @@
|
||||
# Summary
|
||||
|
||||
| [⚠️ Breaking changes](#breaking-changes) | [🙆 Non-breaking changes](#non-breaking-changes) | 🤷 Unsupported feature changes |
|
||||
|------------------------------------------|-------------------------------------------------|-------------------------------|
|
||||
| 1 | 1 | 0 |
|
||||
| [❌ Breaking changes](#breaking-changes) | [⚠️ Non-breaking changes](#non-breaking-changes) |
|
||||
|-----------------------------------------|--------------------------------------------------|
|
||||
| 1 | 1 |
|
||||
|
||||
# <span id="breaking-changes"></span>⚠️ Breaking changes
|
||||
# <span id="breaking-changes"></span>❌ Breaking changes
|
||||
|
||||
## **POST** /test
|
||||
|
||||
### 📱➡️ JSON Request
|
||||
### ➡️☁️ JSON Request
|
||||
|
||||
#### `$.property2`
|
||||
|
||||
The property has become required.
|
||||
|
||||
# <span id="non-breaking-changes"></span>🙆 Non-breaking changes
|
||||
# <span id="non-breaking-changes"></span>⚠️ Non-breaking changes
|
||||
|
||||
## **POST** /test
|
||||
|
||||
### 📱⬅️ JSON Response – 200
|
||||
### ⬅️☁️ JSON Response – 200
|
||||
|
||||
#### `$.property2`
|
||||
|
||||
|
@ -1,14 +1,14 @@
|
||||
# Summary
|
||||
|
||||
| [⚠️ Breaking changes](#breaking-changes) | [🙆 Non-breaking changes](#non-breaking-changes) | 🤷 Unsupported feature changes |
|
||||
|------------------------------------------|-------------------------------------------------|-------------------------------|
|
||||
| 5 | 6 | 0 |
|
||||
| [❌ Breaking changes](#breaking-changes) | [⚠️ Non-breaking changes](#non-breaking-changes) |
|
||||
|-----------------------------------------|--------------------------------------------------|
|
||||
| 5 | 6 |
|
||||
|
||||
# <span id="breaking-changes"></span>⚠️ Breaking changes
|
||||
# <span id="breaking-changes"></span>❌ Breaking changes
|
||||
|
||||
## **GET** /pets
|
||||
|
||||
### 📱⬅️ JSON Response – 200
|
||||
### ⬅️☁️ JSON Response – 200
|
||||
|
||||
#### `$[*].name(String)`
|
||||
|
||||
@ -18,7 +18,7 @@
|
||||
|
||||
## **POST** /pets
|
||||
|
||||
### 📱➡️ JSON Request
|
||||
### ➡️☁️ JSON Request
|
||||
|
||||
#### `$.weight`
|
||||
|
||||
@ -33,7 +33,7 @@
|
||||
|
||||
Value is now a multiple of 1.0.
|
||||
|
||||
# <span id="non-breaking-changes"></span>🙆 Non-breaking changes
|
||||
# <span id="non-breaking-changes"></span>⚠️ Non-breaking changes
|
||||
|
||||
## **GET** /pets
|
||||
|
||||
@ -45,7 +45,7 @@ Value is now a multiple of 1.0.
|
||||
|
||||
Upper bound changed from 20.0 inclusive to 30.0 inclusive.
|
||||
|
||||
### 📱⬅️ JSON Response – 200
|
||||
### ⬅️☁️ JSON Response – 200
|
||||
|
||||
#### `$[*].weight`
|
||||
|
||||
@ -62,7 +62,7 @@ Value is now a multiple of 1.0.
|
||||
|
||||
## **POST** /pets
|
||||
|
||||
### 📱➡️ JSON Request
|
||||
### ➡️☁️ JSON Request
|
||||
|
||||
#### `$.name(String)`
|
||||
|
||||
|
@ -1,14 +1,14 @@
|
||||
# Summary
|
||||
|
||||
| [⚠️ Breaking changes](#breaking-changes) | [🙆 Non-breaking changes](#non-breaking-changes) | 🤷 Unsupported feature changes |
|
||||
|------------------------------------------|-------------------------------------------------|-------------------------------|
|
||||
| 1 | 1 | 0 |
|
||||
| [❌ Breaking changes](#breaking-changes) | [⚠️ Non-breaking changes](#non-breaking-changes) |
|
||||
|-----------------------------------------|--------------------------------------------------|
|
||||
| 1 | 1 |
|
||||
|
||||
# <span id="breaking-changes"></span>⚠️ Breaking changes
|
||||
# <span id="breaking-changes"></span>❌ Breaking changes
|
||||
|
||||
## **GET** /api/foo
|
||||
|
||||
### 📱➡️ JSON Request
|
||||
### ➡️☁️ JSON Request
|
||||
|
||||
#### `$.leaf.value.foo(String)`
|
||||
|
||||
@ -18,11 +18,11 @@ The following enum value has been added:
|
||||
"a"
|
||||
```
|
||||
|
||||
# <span id="non-breaking-changes"></span>🙆 Non-breaking changes
|
||||
# <span id="non-breaking-changes"></span>⚠️ Non-breaking changes
|
||||
|
||||
## **GET** /api/foo
|
||||
|
||||
### 📱⬅️ JSON Response – 200
|
||||
### ⬅️☁️ JSON Response – 200
|
||||
|
||||
#### `$.leaf.value.foo(String)`
|
||||
|
||||
|
@ -1,10 +1,10 @@
|
||||
# Summary
|
||||
|
||||
| [⚠️ Breaking changes](#breaking-changes) | [🙆 Non-breaking changes](#non-breaking-changes) | 🤷 Unsupported feature changes |
|
||||
|------------------------------------------|-------------------------------------------------|-------------------------------|
|
||||
| 2 | 1 | 0 |
|
||||
| [❌ Breaking changes](#breaking-changes) | [⚠️ Non-breaking changes](#non-breaking-changes) |
|
||||
|-----------------------------------------|--------------------------------------------------|
|
||||
| 2 | 1 |
|
||||
|
||||
# <span id="breaking-changes"></span>⚠️ Breaking changes
|
||||
# <span id="breaking-changes"></span>❌ Breaking changes
|
||||
|
||||
## **POST** /oauth/check
|
||||
|
||||
@ -22,7 +22,7 @@ Security scheme has been removed.
|
||||
|
||||
Security scheme has been removed.
|
||||
|
||||
# <span id="non-breaking-changes"></span>🙆 Non-breaking changes
|
||||
# <span id="non-breaking-changes"></span>⚠️ Non-breaking changes
|
||||
|
||||
## **POST** /oauth/check
|
||||
|
||||
|
@ -1,10 +1,10 @@
|
||||
# Summary
|
||||
|
||||
| [⚠️ Breaking changes](#breaking-changes) | [🙆 Non-breaking changes](#non-breaking-changes) | 🤷 Unsupported feature changes |
|
||||
|------------------------------------------|-------------------------------------------------|-------------------------------|
|
||||
| 3 | 1 | 0 |
|
||||
| [❌ Breaking changes](#breaking-changes) | [⚠️ Non-breaking changes](#non-breaking-changes) |
|
||||
|-----------------------------------------|--------------------------------------------------|
|
||||
| 3 | 1 |
|
||||
|
||||
# <span id="breaking-changes"></span>⚠️ Breaking changes
|
||||
# <span id="breaking-changes"></span>❌ Breaking changes
|
||||
|
||||
## **GET** /pets
|
||||
|
||||
@ -18,7 +18,7 @@ The server was removed.
|
||||
|
||||
2. A variable has been changed from being open to being closed.
|
||||
|
||||
# <span id="non-breaking-changes"></span>🙆 Non-breaking changes
|
||||
# <span id="non-breaking-changes"></span>⚠️ Non-breaking changes
|
||||
|
||||
## **GET** /pets
|
||||
|
||||
|
@ -1,36 +1,36 @@
|
||||
# Summary
|
||||
|
||||
| [⚠️ Breaking changes](#breaking-changes) | [🙆 Non-breaking changes](#non-breaking-changes) | 🤷 Unsupported feature changes |
|
||||
|------------------------------------------|-------------------------------------------------|-------------------------------|
|
||||
| 2 | 2 | 0 |
|
||||
| [❌ Breaking changes](#breaking-changes) | [⚠️ Non-breaking changes](#non-breaking-changes) |
|
||||
|-----------------------------------------|--------------------------------------------------|
|
||||
| 2 | 2 |
|
||||
|
||||
# <span id="breaking-changes"></span>⚠️ Breaking changes
|
||||
# <span id="breaking-changes"></span>❌ Breaking changes
|
||||
|
||||
## **POST** /test
|
||||
|
||||
### 📱➡️ JSON Request
|
||||
### ➡️☁️ JSON Request
|
||||
|
||||
#### `$[1](String)`
|
||||
|
||||
The type has been removed.
|
||||
|
||||
### 📱⬅️ JSON Response – 200
|
||||
### ⬅️☁️ JSON Response – 200
|
||||
|
||||
#### `$[1](Object)`
|
||||
|
||||
The type has been added.
|
||||
|
||||
# <span id="non-breaking-changes"></span>🙆 Non-breaking changes
|
||||
# <span id="non-breaking-changes"></span>⚠️ Non-breaking changes
|
||||
|
||||
## **POST** /test
|
||||
|
||||
### 📱➡️ JSON Request
|
||||
### ➡️☁️ JSON Request
|
||||
|
||||
#### `$[1](Object)`
|
||||
|
||||
The type has been added.
|
||||
|
||||
### 📱⬅️ JSON Response – 200
|
||||
### ⬅️☁️ JSON Response – 200
|
||||
|
||||
#### `$[1](String)`
|
||||
|
||||
|
@ -1,20 +1,20 @@
|
||||
# Summary
|
||||
|
||||
| [⚠️ Breaking changes](#breaking-changes) | 🙆 Non-breaking changes | 🤷 Unsupported feature changes |
|
||||
|------------------------------------------|------------------------|-------------------------------|
|
||||
| 2 | 0 | 0 |
|
||||
| [❌ Breaking changes](#breaking-changes) | ⚠️ Non-breaking changes |
|
||||
|-----------------------------------------|-------------------------|
|
||||
| 2 | 0 |
|
||||
|
||||
# <span id="breaking-changes"></span>⚠️ Breaking changes
|
||||
# <span id="breaking-changes"></span>❌ Breaking changes
|
||||
|
||||
## **POST** /test
|
||||
|
||||
### 📱➡️ JSON Request
|
||||
### ➡️☁️ JSON Request
|
||||
|
||||
#### `$(Array)`
|
||||
|
||||
Tuple length changed from 3 to 2.
|
||||
|
||||
### 📱⬅️ JSON Response – 200
|
||||
### ⬅️☁️ JSON Response – 200
|
||||
|
||||
#### `$(Array)`
|
||||
|
||||
|
@ -1,14 +1,14 @@
|
||||
# Summary
|
||||
|
||||
| [⚠️ Breaking changes](#breaking-changes) | [🙆 Non-breaking changes](#non-breaking-changes) | 🤷 Unsupported feature changes |
|
||||
|------------------------------------------|-------------------------------------------------|-------------------------------|
|
||||
| 4 | 2 | 0 |
|
||||
| [❌ Breaking changes](#breaking-changes) | [⚠️ Non-breaking changes](#non-breaking-changes) |
|
||||
|-----------------------------------------|--------------------------------------------------|
|
||||
| 4 | 2 |
|
||||
|
||||
# <span id="breaking-changes"></span>⚠️ Breaking changes
|
||||
# <span id="breaking-changes"></span>❌ Breaking changes
|
||||
|
||||
## **POST** /test
|
||||
|
||||
### 📱➡️ JSON Request
|
||||
### ➡️☁️ JSON Request
|
||||
|
||||
#### `$(Array)`
|
||||
|
||||
@ -18,7 +18,7 @@ The array is no longer explicitly defined as a tuple.
|
||||
|
||||
The type has been removed.
|
||||
|
||||
### 📱⬅️ JSON Response – 200
|
||||
### ⬅️☁️ JSON Response – 200
|
||||
|
||||
#### `$(Array)`
|
||||
|
||||
@ -28,17 +28,17 @@ The array is no longer explicitly defined as a tuple.
|
||||
|
||||
The type has been added.
|
||||
|
||||
# <span id="non-breaking-changes"></span>🙆 Non-breaking changes
|
||||
# <span id="non-breaking-changes"></span>⚠️ Non-breaking changes
|
||||
|
||||
## **POST** /test
|
||||
|
||||
### 📱➡️ JSON Request
|
||||
### ➡️☁️ JSON Request
|
||||
|
||||
#### `$[0](Number)`
|
||||
|
||||
The type has been added.
|
||||
|
||||
### 📱⬅️ JSON Response – 200
|
||||
### ⬅️☁️ JSON Response – 200
|
||||
|
||||
#### `$[0](String)`
|
||||
|
||||
|
@ -1,14 +1,14 @@
|
||||
# Summary
|
||||
|
||||
| [⚠️ Breaking changes](#breaking-changes) | [🙆 Non-breaking changes](#non-breaking-changes) | 🤷 Unsupported feature changes |
|
||||
|------------------------------------------|-------------------------------------------------|-------------------------------|
|
||||
| 5 | 5 | 0 |
|
||||
| [❌ Breaking changes](#breaking-changes) | [⚠️ Non-breaking changes](#non-breaking-changes) |
|
||||
|-----------------------------------------|--------------------------------------------------|
|
||||
| 5 | 5 |
|
||||
|
||||
# <span id="breaking-changes"></span>⚠️ Breaking changes
|
||||
# <span id="breaking-changes"></span>❌ Breaking changes
|
||||
|
||||
## **POST** /test1
|
||||
|
||||
### 📱⬅️ JSON Response – 200
|
||||
### ⬅️☁️ JSON Response – 200
|
||||
|
||||
#### `$(Array)`
|
||||
|
||||
@ -16,7 +16,7 @@ The array is no longer explicitly defined as a tuple.
|
||||
|
||||
## **POST** /test2
|
||||
|
||||
### 📱⬅️ JSON Response – 200
|
||||
### ⬅️☁️ JSON Response – 200
|
||||
|
||||
#### `$(Array)`
|
||||
|
||||
@ -24,13 +24,13 @@ The array is no longer explicitly defined as a tuple.
|
||||
|
||||
## **POST** /test3
|
||||
|
||||
### 📱➡️ JSON Request
|
||||
### ➡️☁️ JSON Request
|
||||
|
||||
#### `$(Array)`
|
||||
|
||||
Minimum length of the array changed from 2 to 3.
|
||||
|
||||
### 📱⬅️ JSON Response – 200
|
||||
### ⬅️☁️ JSON Response – 200
|
||||
|
||||
#### `$(Array)`
|
||||
|
||||
@ -38,11 +38,11 @@ Minimum length of the array changed from 2 to 3.
|
||||
|
||||
2. The array is no longer explicitly defined as a tuple.
|
||||
|
||||
# <span id="non-breaking-changes"></span>🙆 Non-breaking changes
|
||||
# <span id="non-breaking-changes"></span>⚠️ Non-breaking changes
|
||||
|
||||
## **POST** /test1
|
||||
|
||||
### 📱➡️ JSON Request
|
||||
### ➡️☁️ JSON Request
|
||||
|
||||
#### `$(Array)`
|
||||
|
||||
@ -50,7 +50,7 @@ The array is no longer explicitly defined as a tuple.
|
||||
|
||||
## **POST** /test2
|
||||
|
||||
### 📱➡️ JSON Request
|
||||
### ➡️☁️ JSON Request
|
||||
|
||||
#### `$(Array)`
|
||||
|
||||
@ -58,7 +58,7 @@ The array is no longer explicitly defined as a tuple.
|
||||
|
||||
## **POST** /test3
|
||||
|
||||
### 📱➡️ JSON Request
|
||||
### ➡️☁️ JSON Request
|
||||
|
||||
#### `$(Array)`
|
||||
|
||||
@ -66,7 +66,7 @@ The array is no longer explicitly defined as a tuple.
|
||||
|
||||
2. The array is no longer explicitly defined as a tuple.
|
||||
|
||||
### 📱⬅️ JSON Response – 200
|
||||
### ⬅️☁️ JSON Response – 200
|
||||
|
||||
#### `$(Array)`
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
# Summary
|
||||
|
||||
| ⚠️ Breaking changes | 🙆 Non-breaking changes | 🤷 Unsupported feature changes |
|
||||
|---------------------|------------------------|-------------------------------|
|
||||
| 0 | 0 | 0 |
|
||||
| ❌ Breaking changes | ⚠️ Non-breaking changes |
|
||||
|--------------------|-------------------------|
|
||||
| 0 | 0 |
|
||||
|
@ -1,14 +1,14 @@
|
||||
# Summary
|
||||
|
||||
| [⚠️ Breaking changes](#breaking-changes) | [🙆 Non-breaking changes](#non-breaking-changes) | 🤷 Unsupported feature changes |
|
||||
|------------------------------------------|-------------------------------------------------|-------------------------------|
|
||||
| 6 | 6 | 0 |
|
||||
| [❌ Breaking changes](#breaking-changes) | [⚠️ Non-breaking changes](#non-breaking-changes) |
|
||||
|-----------------------------------------|--------------------------------------------------|
|
||||
| 6 | 6 |
|
||||
|
||||
# <span id="breaking-changes"></span>⚠️ Breaking changes
|
||||
# <span id="breaking-changes"></span>❌ Breaking changes
|
||||
|
||||
## **POST** /test1
|
||||
|
||||
### 📱➡️ JSON Request
|
||||
### ➡️☁️ JSON Request
|
||||
|
||||
Values are now limited to the following types:
|
||||
|
||||
@ -16,7 +16,7 @@ Values are now limited to the following types:
|
||||
|
||||
## **POST** /test2
|
||||
|
||||
### 📱➡️ JSON Request
|
||||
### ➡️☁️ JSON Request
|
||||
|
||||
Values are now limited to the following types:
|
||||
|
||||
@ -28,7 +28,7 @@ Values are now limited to the following types:
|
||||
|
||||
## **POST** /test3
|
||||
|
||||
### 📱➡️ JSON Request
|
||||
### ➡️☁️ JSON Request
|
||||
|
||||
#### `$(Array)`
|
||||
|
||||
@ -36,7 +36,7 @@ The type has been removed.
|
||||
|
||||
## **POST** /test4
|
||||
|
||||
### 📱➡️ JSON Request
|
||||
### ➡️☁️ JSON Request
|
||||
|
||||
#### `$(Object)`
|
||||
|
||||
@ -44,7 +44,7 @@ The type has been removed.
|
||||
|
||||
## **POST** /test5
|
||||
|
||||
### 📱➡️ JSON Request
|
||||
### ➡️☁️ JSON Request
|
||||
|
||||
Values are now limited to the following types:
|
||||
|
||||
@ -54,11 +54,11 @@ Values are now limited to the following types:
|
||||
|
||||
Value is now a multiple of 1.0.
|
||||
|
||||
# <span id="non-breaking-changes"></span>🙆 Non-breaking changes
|
||||
# <span id="non-breaking-changes"></span>⚠️ Non-breaking changes
|
||||
|
||||
## **POST** /test1
|
||||
|
||||
### 📱⬅️ JSON Response – 200
|
||||
### ⬅️☁️ JSON Response – 200
|
||||
|
||||
Values are now limited to the following types:
|
||||
|
||||
@ -66,7 +66,7 @@ Values are now limited to the following types:
|
||||
|
||||
## **POST** /test2
|
||||
|
||||
### 📱⬅️ JSON Response – 200
|
||||
### ⬅️☁️ JSON Response – 200
|
||||
|
||||
Values are now limited to the following types:
|
||||
|
||||
@ -78,7 +78,7 @@ Values are now limited to the following types:
|
||||
|
||||
## **POST** /test3
|
||||
|
||||
### 📱⬅️ JSON Response – 200
|
||||
### ⬅️☁️ JSON Response – 200
|
||||
|
||||
#### `$(Array)`
|
||||
|
||||
@ -86,7 +86,7 @@ The type has been removed.
|
||||
|
||||
## **POST** /test4
|
||||
|
||||
### 📱⬅️ JSON Response – 200
|
||||
### ⬅️☁️ JSON Response – 200
|
||||
|
||||
#### `$(Object)`
|
||||
|
||||
@ -94,7 +94,7 @@ The type has been removed.
|
||||
|
||||
## **POST** /test5
|
||||
|
||||
### 📱⬅️ JSON Response – 200
|
||||
### ⬅️☁️ JSON Response – 200
|
||||
|
||||
Values are now limited to the following types:
|
||||
|
||||
|
@ -1,13 +1,13 @@
|
||||
# Summary
|
||||
|
||||
| ⚠️ Breaking changes | 🙆 Non-breaking changes | [🤷 Unsupported feature changes](#unsupported-changes) |
|
||||
|---------------------|------------------------|-------------------------------------------------------|
|
||||
| 0 | 0 | 1 |
|
||||
| ❌ Breaking changes | ⚠️ Non-breaking changes | [❓ Unsupported feature changes](#unsupported-changes) |
|
||||
|--------------------|-------------------------|-------------------------------------------------------|
|
||||
| 0 | 0 | 1 |
|
||||
|
||||
# <span id="unsupported-changes"></span>🤷 Unsupported feature changes
|
||||
# <span id="unsupported-changes"></span>❓ Unsupported feature changes
|
||||
|
||||
## **GET** /api/foo
|
||||
|
||||
### 📱⬅️ JSON Response – 200
|
||||
### ⬅️☁️ JSON Response – 200
|
||||
|
||||
Encountered recursion that is too complex for OpenApi Diff to untangle.
|
||||
Encountered recursion that is too complex for CompaREST to untangle.
|
||||
|
@ -1,24 +1,24 @@
|
||||
# Summary
|
||||
|
||||
| [⚠️ Breaking changes](#breaking-changes) | [🙆 Non-breaking changes](#non-breaking-changes) | 🤷 Unsupported feature changes |
|
||||
|------------------------------------------|-------------------------------------------------|-------------------------------|
|
||||
| 1 | 1 | 0 |
|
||||
| [❌ Breaking changes](#breaking-changes) | [⚠️ Non-breaking changes](#non-breaking-changes) |
|
||||
|-----------------------------------------|--------------------------------------------------|
|
||||
| 1 | 1 |
|
||||
|
||||
# <span id="breaking-changes"></span>⚠️ Breaking changes
|
||||
# <span id="breaking-changes"></span>❌ Breaking changes
|
||||
|
||||
## **POST** /test
|
||||
|
||||
### 📱⬅️ JSON Response – 200
|
||||
### ⬅️☁️ JSON Response – 200
|
||||
|
||||
#### `$(Object)`
|
||||
|
||||
The case where `$.tag` is `"C"` – has been added.
|
||||
|
||||
# <span id="non-breaking-changes"></span>🙆 Non-breaking changes
|
||||
# <span id="non-breaking-changes"></span>⚠️ Non-breaking changes
|
||||
|
||||
## **POST** /test
|
||||
|
||||
### 📱➡️ JSON Request
|
||||
### ➡️☁️ JSON Request
|
||||
|
||||
#### `$(Object)`
|
||||
|
||||
|
@ -1,14 +1,14 @@
|
||||
# Summary
|
||||
|
||||
| [⚠️ Breaking changes](#breaking-changes) | [🙆 Non-breaking changes](#non-breaking-changes) | 🤷 Unsupported feature changes |
|
||||
|------------------------------------------|-------------------------------------------------|-------------------------------|
|
||||
| 2 | 2 | 0 |
|
||||
| [❌ Breaking changes](#breaking-changes) | [⚠️ Non-breaking changes](#non-breaking-changes) |
|
||||
|-----------------------------------------|--------------------------------------------------|
|
||||
| 2 | 2 |
|
||||
|
||||
# <span id="breaking-changes"></span>⚠️ Breaking changes
|
||||
# <span id="breaking-changes"></span>❌ Breaking changes
|
||||
|
||||
## **POST** /test
|
||||
|
||||
### 📱➡️ JSON Request
|
||||
### ➡️☁️ JSON Request
|
||||
|
||||
#### In cases where `$.tag` is `"B"`
|
||||
|
||||
@ -16,7 +16,7 @@
|
||||
|
||||
The type has been removed.
|
||||
|
||||
### 📱⬅️ JSON Response – 200
|
||||
### ⬅️☁️ JSON Response – 200
|
||||
|
||||
#### In cases where `$.tag` is `"B"`
|
||||
|
||||
@ -24,11 +24,11 @@ The type has been removed.
|
||||
|
||||
The type has been added.
|
||||
|
||||
# <span id="non-breaking-changes"></span>🙆 Non-breaking changes
|
||||
# <span id="non-breaking-changes"></span>⚠️ Non-breaking changes
|
||||
|
||||
## **POST** /test
|
||||
|
||||
### 📱➡️ JSON Request
|
||||
### ➡️☁️ JSON Request
|
||||
|
||||
#### In cases where `$.tag` is `"B"`
|
||||
|
||||
@ -36,7 +36,7 @@ The type has been added.
|
||||
|
||||
The type has been added.
|
||||
|
||||
### 📱⬅️ JSON Response – 200
|
||||
### ⬅️☁️ JSON Response – 200
|
||||
|
||||
#### In cases where `$.tag` is `"B"`
|
||||
|
||||
|
@ -1,14 +1,14 @@
|
||||
# Summary
|
||||
|
||||
| [⚠️ Breaking changes](#breaking-changes) | [🙆 Non-breaking changes](#non-breaking-changes) | 🤷 Unsupported feature changes |
|
||||
|------------------------------------------|-------------------------------------------------|-------------------------------|
|
||||
| 2 | 2 | 0 |
|
||||
| [❌ Breaking changes](#breaking-changes) | [⚠️ Non-breaking changes](#non-breaking-changes) |
|
||||
|-----------------------------------------|--------------------------------------------------|
|
||||
| 2 | 2 |
|
||||
|
||||
# <span id="breaking-changes"></span>⚠️ Breaking changes
|
||||
# <span id="breaking-changes"></span>❌ Breaking changes
|
||||
|
||||
## **POST** /test
|
||||
|
||||
### 📱➡️ JSON Request
|
||||
### ➡️☁️ JSON Request
|
||||
|
||||
#### In cases where `$.desc.name` is `"B"`
|
||||
|
||||
@ -16,7 +16,7 @@
|
||||
|
||||
The type has been removed.
|
||||
|
||||
### 📱⬅️ JSON Response – 200
|
||||
### ⬅️☁️ JSON Response – 200
|
||||
|
||||
#### In cases where `$.desc.name` is `"B"`
|
||||
|
||||
@ -24,11 +24,11 @@ The type has been removed.
|
||||
|
||||
The type has been added.
|
||||
|
||||
# <span id="non-breaking-changes"></span>🙆 Non-breaking changes
|
||||
# <span id="non-breaking-changes"></span>⚠️ Non-breaking changes
|
||||
|
||||
## **POST** /test
|
||||
|
||||
### 📱➡️ JSON Request
|
||||
### ➡️☁️ JSON Request
|
||||
|
||||
#### In cases where `$.desc.name` is `"B"`
|
||||
|
||||
@ -36,7 +36,7 @@ The type has been added.
|
||||
|
||||
The type has been added.
|
||||
|
||||
### 📱⬅️ JSON Response – 200
|
||||
### ⬅️☁️ JSON Response – 200
|
||||
|
||||
#### In cases where `$.desc.name` is `"B"`
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user