mirror of
https://github.com/metosin/reitit.git
synced 2025-12-18 08:51:12 +00:00
Merge pull request #732 from metosin/unslash
malli now uses . instead of ~1 in json-schema/swagger $refs
This commit is contained in:
commit
3793a7b23b
6 changed files with 29 additions and 33 deletions
|
|
@ -21,6 +21,7 @@ We use [Break Versioning][breakver]. The version numbers follow a `<major>.<mino
|
||||||
* **BREAKING** Fix & clarify `:responses :default` and `:content :default` handling. See [docs](./doc/ring/coercion.md). [#735](https://github.com/metosin/reitit/pull/735)
|
* **BREAKING** Fix & clarify `:responses :default` and `:content :default` handling. See [docs](./doc/ring/coercion.md). [#735](https://github.com/metosin/reitit/pull/735)
|
||||||
* Summary: If `:responses <status>` is present, `:responses :default` is not used, even if `:responses <status>` defines no schema.
|
* Summary: If `:responses <status>` is present, `:responses :default` is not used, even if `:responses <status>` defines no schema.
|
||||||
* Should not break normal use, but might cause surprises related to defaults applying/not applying
|
* Should not break normal use, but might cause surprises related to defaults applying/not applying
|
||||||
|
* **NOTE** This release depends on malli 0.18.0, which changes the format of OpenAPI & Swagger named schemas from `foo.bar/quux` to `foo.bar.quux`
|
||||||
|
|
||||||
## 0.8.0 (2025-03-28)
|
## 0.8.0 (2025-03-28)
|
||||||
|
|
||||||
|
|
|
||||||
9
package-lock.json
generated
9
package-lock.json
generated
|
|
@ -9,7 +9,7 @@
|
||||||
"shadow-cljs": "^2.28.22"
|
"shadow-cljs": "^2.28.22"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@seriousme/openapi-schema-validator": "^2.3.1",
|
"@seriousme/openapi-schema-validator": "^2.4.0",
|
||||||
"karma": "^6.4.4",
|
"karma": "^6.4.4",
|
||||||
"karma-chrome-launcher": "^3.2.0",
|
"karma-chrome-launcher": "^3.2.0",
|
||||||
"karma-cli": "^2.0.0",
|
"karma-cli": "^2.0.0",
|
||||||
|
|
@ -27,11 +27,10 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@seriousme/openapi-schema-validator": {
|
"node_modules/@seriousme/openapi-schema-validator": {
|
||||||
"version": "2.3.1",
|
"version": "2.4.0",
|
||||||
"resolved": "https://registry.npmjs.org/@seriousme/openapi-schema-validator/-/openapi-schema-validator-2.3.1.tgz",
|
"resolved": "https://registry.npmjs.org/@seriousme/openapi-schema-validator/-/openapi-schema-validator-2.4.0.tgz",
|
||||||
"integrity": "sha512-szUXBZJUhq+Yw+vUro2QeltSIoZvMDQi3MLqJhIKcRcRYyFt9B6dyjMD1RVf3nFvNAHkWqa48NJA46ti2P8smA==",
|
"integrity": "sha512-2PWq2QbDMu+CANpBLZ2Uch9PgTIiftLpiLH4lcaykjV463f4Vt9eD61EeaVI++D0HII4JKnptX46391pII1XZA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"ajv": "^8.17.1",
|
"ajv": "^8.17.1",
|
||||||
"ajv-draft-04": "^1.0.0",
|
"ajv-draft-04": "^1.0.0",
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
"name": "reitit",
|
"name": "reitit",
|
||||||
"private": true,
|
"private": true,
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@seriousme/openapi-schema-validator": "^2.3.1",
|
"@seriousme/openapi-schema-validator": "^2.4.0",
|
||||||
"karma": "^6.4.4",
|
"karma": "^6.4.4",
|
||||||
"karma-chrome-launcher": "^3.2.0",
|
"karma-chrome-launcher": "^3.2.0",
|
||||||
"karma-cli": "^2.0.0",
|
"karma-cli": "^2.0.0",
|
||||||
|
|
|
||||||
|
|
@ -40,7 +40,7 @@
|
||||||
[metosin/muuntaja "0.6.11"]
|
[metosin/muuntaja "0.6.11"]
|
||||||
[metosin/jsonista "0.3.13"]
|
[metosin/jsonista "0.3.13"]
|
||||||
[metosin/sieppari "0.0.0-alpha13"]
|
[metosin/sieppari "0.0.0-alpha13"]
|
||||||
[metosin/malli "0.17.0"]
|
[metosin/malli "0.18.0"]
|
||||||
|
|
||||||
;; https://clojureverse.org/t/depending-on-the-right-versions-of-jackson-libraries/5111
|
;; https://clojureverse.org/t/depending-on-the-right-versions-of-jackson-libraries/5111
|
||||||
[com.fasterxml.jackson.core/jackson-core "2.18.2"]
|
[com.fasterxml.jackson.core/jackson-core "2.18.2"]
|
||||||
|
|
@ -99,7 +99,7 @@
|
||||||
[metosin/muuntaja "0.6.11"]
|
[metosin/muuntaja "0.6.11"]
|
||||||
[metosin/sieppari "0.0.0-alpha13"]
|
[metosin/sieppari "0.0.0-alpha13"]
|
||||||
[metosin/jsonista "0.3.13"]
|
[metosin/jsonista "0.3.13"]
|
||||||
[metosin/malli "0.17.0"]
|
[metosin/malli "0.18.0"]
|
||||||
[lambdaisland/deep-diff "0.0-47"]
|
[lambdaisland/deep-diff "0.0-47"]
|
||||||
[meta-merge "1.0.0"]
|
[meta-merge "1.0.0"]
|
||||||
[com.bhauman/spell-spec "0.1.2"]
|
[com.bhauman/spell-spec "0.1.2"]
|
||||||
|
|
|
||||||
|
|
@ -1009,7 +1009,7 @@
|
||||||
{:content
|
{:content
|
||||||
{"application/json"
|
{"application/json"
|
||||||
{:schema
|
{:schema
|
||||||
{:$ref "#/components/schemas/reitit.openapi-test~1Plus"}}}}}}
|
{:$ref "#/components/schemas/reitit.openapi-test.Plus"}}}}}}
|
||||||
"/get"
|
"/get"
|
||||||
{:get
|
{:get
|
||||||
{:parameters
|
{:parameters
|
||||||
|
|
@ -1019,19 +1019,15 @@
|
||||||
{:in "query"
|
{:in "query"
|
||||||
:name :y
|
:name :y
|
||||||
:required true
|
:required true
|
||||||
:schema {:$ref "#/components/schemas/reitit.openapi-test~1Y"}}]}}}
|
:schema {:$ref "#/components/schemas/reitit.openapi-test.Y"}}]}}}
|
||||||
:components
|
:components
|
||||||
{:schemas
|
{:schemas
|
||||||
{"reitit.openapi-test/Plus"
|
{"reitit.openapi-test.Plus"
|
||||||
{:type "object"
|
{:type "object"
|
||||||
:properties
|
:properties
|
||||||
{:x {:type "integer"}
|
{:x {:type "integer"}
|
||||||
:y {:$ref "#/components/schemas/reitit.openapi-test~1Y"}}
|
:y {:$ref "#/components/schemas/reitit.openapi-test.Y"}}
|
||||||
:required [:x :y]}
|
:required [:x :y]}
|
||||||
"reitit.openapi-test/Y" {:type "integer"}}}}
|
"reitit.openapi-test.Y" {:type "integer"}}}}
|
||||||
spec))
|
spec))
|
||||||
;; TODO: the OAS 3.1 json schema disallows "/" in :components :schemas keys,
|
|
||||||
;; even though the text of the spec allows it. See:
|
|
||||||
;; https://github.com/seriousme/openapi-schema-validator/blob/772375bf4895f0e641d103c27140cdd1d2afc34e/schemas/v3.1/schema.json#L282
|
|
||||||
#_
|
|
||||||
(is (nil? (validate spec))))))
|
(is (nil? (validate spec))))))
|
||||||
|
|
|
||||||
|
|
@ -161,14 +161,14 @@
|
||||||
expected {:x-id #{::math}
|
expected {:x-id #{::math}
|
||||||
:swagger "2.0"
|
:swagger "2.0"
|
||||||
:info {:title "my-api"}
|
:info {:title "my-api"}
|
||||||
:definitions {"reitit.swagger-test/req-key" {:type "string"
|
:definitions {"reitit.swagger-test.req-key" {:type "string"
|
||||||
:x-anyOf [{:type "string"}
|
:x-anyOf [{:type "string"}
|
||||||
{:type "string"}]}
|
{:type "string"}]}
|
||||||
"reitit.swagger-test/req-val" {:type "object"
|
"reitit.swagger-test.req-val" {:type "object"
|
||||||
:x-anyOf [{:type "object"}
|
:x-anyOf [{:type "object"}
|
||||||
{:type "string"}]}
|
{:type "string"}]}
|
||||||
"reitit.swagger-test/resp-map" {:type "object"},
|
"reitit.swagger-test.resp-map" {:type "object"},
|
||||||
"reitit.swagger-test/resp-string" {:type "string"
|
"reitit.swagger-test.resp-string" {:type "string"
|
||||||
:minLength 1}}
|
:minLength 1}}
|
||||||
:paths {"/api/spec/plus/{z}" {:patch {:parameters []
|
:paths {"/api/spec/plus/{z}" {:patch {:parameters []
|
||||||
:summary "patch"
|
:summary "patch"
|
||||||
|
|
@ -287,12 +287,12 @@
|
||||||
:schema
|
:schema
|
||||||
{:type "object"
|
{:type "object"
|
||||||
:additionalProperties
|
:additionalProperties
|
||||||
{:$ref "#/definitions/reitit.swagger-test~1req-val"}}}]
|
{:$ref "#/definitions/reitit.swagger-test.req-val"}}}]
|
||||||
:responses {200
|
:responses {200
|
||||||
{:schema
|
{:schema
|
||||||
{:$ref "#/definitions/reitit.swagger-test~1resp-map"
|
{:$ref "#/definitions/reitit.swagger-test.resp-map"
|
||||||
:x-anyOf [{:$ref "#/definitions/reitit.swagger-test~1resp-map"}
|
:x-anyOf [{:$ref "#/definitions/reitit.swagger-test.resp-map"}
|
||||||
{:$ref "#/definitions/reitit.swagger-test~1resp-string"}]}
|
{:$ref "#/definitions/reitit.swagger-test.resp-string"}]}
|
||||||
:description ""}
|
:description ""}
|
||||||
500 {:description "fail"}}
|
500 {:description "fail"}}
|
||||||
:summary "plus put with definitions"}}
|
:summary "plus put with definitions"}}
|
||||||
|
|
@ -532,24 +532,24 @@
|
||||||
{:get {:no-doc true
|
{:get {:no-doc true
|
||||||
:handler (swagger/create-swagger-handler)}}]]))
|
:handler (swagger/create-swagger-handler)}}]]))
|
||||||
spec (:body (app {:request-method :get, :uri "/swagger.json"}))]
|
spec (:body (app {:request-method :get, :uri "/swagger.json"}))]
|
||||||
(is (= {:definitions {"reitit.swagger-test/Plus" {:properties {:x {:$ref "#/definitions/reitit.swagger-test~1X"},
|
(is (= {:definitions {"reitit.swagger-test.Plus" {:properties {:x {:$ref "#/definitions/reitit.swagger-test.X"},
|
||||||
:y {:$ref "#/definitions/reitit.swagger-test~1Y"}},
|
:y {:$ref "#/definitions/reitit.swagger-test.Y"}},
|
||||||
:required [:x :y],
|
:required [:x :y],
|
||||||
:type "object"},
|
:type "object"},
|
||||||
"reitit.swagger-test/X" {:format "int64",
|
"reitit.swagger-test.X" {:format "int64",
|
||||||
:type "integer"},
|
:type "integer"},
|
||||||
"reitit.swagger-test/Y" {:format "int64",
|
"reitit.swagger-test.Y" {:format "int64",
|
||||||
:type "integer"},
|
:type "integer"},
|
||||||
"reitit.swagger-test/Result" {:type "object",
|
"reitit.swagger-test.Result" {:type "object",
|
||||||
:properties {:result {:type "integer", :format "int64"}},
|
:properties {:result {:type "integer", :format "int64"}},
|
||||||
:required [:result]}},
|
:required [:result]}},
|
||||||
:paths {"/post" {:post {:parameters [{:description "",
|
:paths {"/post" {:post {:parameters [{:description "",
|
||||||
:in "body",
|
:in "body",
|
||||||
:name "body",
|
:name "body",
|
||||||
:required true,
|
:required true,
|
||||||
:schema {:$ref "#/definitions/reitit.swagger-test~1Plus"}}]
|
:schema {:$ref "#/definitions/reitit.swagger-test.Plus"}}]
|
||||||
:responses {200 {:description ""
|
:responses {200 {:description ""
|
||||||
:schema {:$ref "#/definitions/reitit.swagger-test~1Result"}}}}}
|
:schema {:$ref "#/definitions/reitit.swagger-test.Result"}}}}}
|
||||||
"/get" {:get {:parameters [{:in "query"
|
"/get" {:get {:parameters [{:in "query"
|
||||||
:name :x
|
:name :x
|
||||||
:description ""
|
:description ""
|
||||||
|
|
@ -563,7 +563,7 @@
|
||||||
:required true
|
:required true
|
||||||
:format "int64"}]
|
:format "int64"}]
|
||||||
:responses {200 {:description ""
|
:responses {200 {:description ""
|
||||||
:schema {:$ref "#/definitions/reitit.swagger-test~1Result"}}}}}}
|
:schema {:$ref "#/definitions/reitit.swagger-test.Result"}}}}}}
|
||||||
:swagger "2.0",
|
:swagger "2.0",
|
||||||
:x-id #{:reitit.swagger/default}}
|
:x-id #{:reitit.swagger/default}}
|
||||||
spec))))
|
spec))))
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue