diff --git a/README.md b/README.md index 43e6af0..483e90c 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@ To use, pipe in an Overlay definition and it'll output the result as YAML. **Example Overlay** ```yaml -overlays: 1.0.0 +overlay: 1.0.0 extends: https://petstore3.swagger.io/api/v3/openapi.json actions: - target: '$.paths' diff --git a/overlays-test-suite/v1.0.0/all-actions.yml b/overlays-test-suite/v1.0.0/all-actions.yml index e41d88d..e6e689f 100644 --- a/overlays-test-suite/v1.0.0/all-actions.yml +++ b/overlays-test-suite/v1.0.0/all-actions.yml @@ -7,7 +7,7 @@ refs: two: {} input: - overlays: 1.0.0 + overlay: 1.0.0 extends: http://example.com actions: - target: $.* diff --git a/overlays-test-suite/v1.0.0/remove-root.yml b/overlays-test-suite/v1.0.0/remove-root.yml index 9626d40..28efed9 100644 --- a/overlays-test-suite/v1.0.0/remove-root.yml +++ b/overlays-test-suite/v1.0.0/remove-root.yml @@ -6,7 +6,7 @@ refs: one: 1 input: - overlays: 1.0.0 + overlay: 1.0.0 extends: http://example.com actions: - target: '$' diff --git a/overlays-test-suite/v1.0.0/where-empty-false.yml b/overlays-test-suite/v1.0.0/where-empty-false.yml index 197e38b..63a2821 100644 --- a/overlays-test-suite/v1.0.0/where-empty-false.yml +++ b/overlays-test-suite/v1.0.0/where-empty-false.yml @@ -19,7 +19,7 @@ refs: /string: 'foo' input: - overlays: 1.0.0 + overlay: 1.0.0 extends: http://example.com actions: - target: $.paths.* diff --git a/overlays-test-suite/v1.0.0/where-empty.yml b/overlays-test-suite/v1.0.0/where-empty.yml index d48136b..4fbb9f4 100644 --- a/overlays-test-suite/v1.0.0/where-empty.yml +++ b/overlays-test-suite/v1.0.0/where-empty.yml @@ -19,7 +19,7 @@ refs: /string: 'foo' input: - overlays: 1.0.0 + overlay: 1.0.0 extends: http://example.com actions: - target: $.paths.* diff --git a/overlays-test-suite/v1.0.0/where-not-only.yml b/overlays-test-suite/v1.0.0/where-not-only.yml index f1c97c4..692a2b6 100644 --- a/overlays-test-suite/v1.0.0/where-not-only.yml +++ b/overlays-test-suite/v1.0.0/where-not-only.yml @@ -11,7 +11,7 @@ refs: bar: true input: - overlays: 1.0.0 + overlay: 1.0.0 extends: http://example.com actions: - target: $.* diff --git a/overlays-test-suite/v1.0.0/where-not.yml b/overlays-test-suite/v1.0.0/where-not.yml index e68c5c9..4cb9be6 100644 --- a/overlays-test-suite/v1.0.0/where-not.yml +++ b/overlays-test-suite/v1.0.0/where-not.yml @@ -11,7 +11,7 @@ refs: bar: true input: - overlays: 1.0.0 + overlay: 1.0.0 extends: http://example.com actions: - target: $.* diff --git a/overlays-test-suite/v1.0.0/where-target-not.yml b/overlays-test-suite/v1.0.0/where-target-not.yml index 42ae496..03279ef 100644 --- a/overlays-test-suite/v1.0.0/where-target-not.yml +++ b/overlays-test-suite/v1.0.0/where-target-not.yml @@ -11,7 +11,7 @@ refs: bar: true input: - overlays: 1.0.0 + overlay: 1.0.0 extends: http://example.com actions: - target: '$.*' diff --git a/overlays-test-suite/v1.0.0/where.yml b/overlays-test-suite/v1.0.0/where.yml index 316c8f1..5e1e022 100644 --- a/overlays-test-suite/v1.0.0/where.yml +++ b/overlays-test-suite/v1.0.0/where.yml @@ -11,7 +11,7 @@ refs: bar: true input: - overlays: 1.0.0 + overlay: 1.0.0 extends: http://example.com actions: - target: $.* diff --git a/overlays.schema.json b/overlays.schema.json index d161739..043d4f4 100644 --- a/overlays.schema.json +++ b/overlays.schema.json @@ -1,9 +1,9 @@ { "$id": "https://github.com/OAI/Overlay-Specification/blob/main/versions/1.0.0.md", - "required": ["overlays", "actions"], + "required": ["overlay", "info", "actions"], "type": "object", "properties": { - "overlays": { + "overlay": { "type": "string", "description": "Version of the specification", "const": "1.0.0" @@ -11,23 +11,51 @@ "extends": { "type": "string" }, + "info": { + "required": ["title", "version"], + "type": "object", + "properties": { + "title": { + "type": "string" + }, + "version": { + "type": "string" + } + }, + "patternProperties": { + "^x-": true + }, + "additionalProperties": false + }, "actions": { "type": "array", "description": "List of actions to take", + "minItems": 1, "items": { - "type": "object", - "required": ["target"], - "properties": { - "target": { - "type": "string" - }, - "remove": { - "type": "boolean", - "const": true - }, - "update": true - } + "type": "object", + "required": ["target"], + "properties": { + "target": { + "type": "string" + }, + "description": { + "type": "string" + }, + "remove": { + "type": "boolean", + "default": false + }, + "update": true + }, + "patternProperties": { + "^x-": true + }, + "additionalProperties": false } } - } + }, + "patternProperties": { + "^x-": true + }, + "additionalProperties": false } diff --git a/samples/apply-403-to-security.yml b/samples/apply-403-to-security.yml index 6c12c11..e093173 100644 --- a/samples/apply-403-to-security.yml +++ b/samples/apply-403-to-security.yml @@ -1,4 +1,4 @@ -overlays: 1.0.0 +overlay: 1.0.0 extends: https://petstore3.swagger.io/api/v3/openapi.json actions: - target: '$.paths.*[?(@.security)].responses' diff --git a/samples/basic.yml b/samples/basic.yml index a01c48c..89cffa9 100644 --- a/samples/basic.yml +++ b/samples/basic.yml @@ -1,4 +1,4 @@ -overlays: 1.0.0 +overlay: 1.0.0 extends: https://petstore3.swagger.io/api/v3/openapi.json actions: - target: '$.paths' diff --git a/samples/only-user-tag.yml b/samples/only-user-tag.yml index 7db13ad..ad3e935 100644 --- a/samples/only-user-tag.yml +++ b/samples/only-user-tag.yml @@ -1,4 +1,4 @@ -overlays: 1.0.0 +overlay: 1.0.0 extends: https://petstore3.swagger.io/api/v3/openapi.json actions: - target: '$.paths.*' diff --git a/samples/update-get-pets.overlay.yml b/samples/update-get-pets.overlay.yml index 751b9d4..10c9830 100644 --- a/samples/update-get-pets.overlay.yml +++ b/samples/update-get-pets.overlay.yml @@ -1,4 +1,4 @@ -overlays: 1.0.0 +overlay: 1.0.0 extends: https://petstore.swagger.io/v2/swagger.json actions: - target: '$.paths."/pet/{petId}".get' diff --git a/samples/x-internal.overlay.yml b/samples/x-internal.overlay.yml index 7009cda..b751b65 100644 --- a/samples/x-internal.overlay.yml +++ b/samples/x-internal.overlay.yml @@ -1,4 +1,4 @@ -overlays: 1.0.0 +overlay: 1.0.0 extends: ./x-internal.source.yml actions: - target: '$..[?(@["x-internal"])]' diff --git a/split-into-overlay.js b/split-into-overlay.js index 2e0e65f..d85e3ff 100644 --- a/split-into-overlay.js +++ b/split-into-overlay.js @@ -4,7 +4,7 @@ const jsonPointerToJsonPath = require('./json-pointer-to-json-path') const get = require('./get') module.exports = function splitIntoOverlay(input, {targets=[], fields=[], where=[]} = {}) { - let overlay = {overlays: '1.0.0'} + let overlay = {overlay: '1.0.0'} targets = Array.isArray(targets) ? targets : [targets] where = Array.isArray(where) ? where : [where] if(!targets.length) diff --git a/split-into-overlay.test.js b/split-into-overlay.test.js index 00f842e..c061734 100644 --- a/split-into-overlay.test.js +++ b/split-into-overlay.test.js @@ -4,7 +4,7 @@ describe('splitIntoOverlay', () => { it('create an empty overlay definition by default', async () => { const overlay = splitIntoOverlay({}) expect(overlay).toEqual({ - overlays: '1.0.0' + overlay: '1.0.0' }) }) @@ -17,7 +17,7 @@ describe('splitIntoOverlay', () => { } const overlay = splitIntoOverlay(input, {targets: '$.*'}) expect(overlay).toEqual({ - overlays: '1.0.0', + overlay: '1.0.0', actions: [{ target: '$["one"]', update: {} @@ -39,7 +39,7 @@ describe('splitIntoOverlay', () => { } const overlay = splitIntoOverlay(input, {targets: ['$.one', '$.two']}) expect(overlay).toEqual({ - overlays: '1.0.0', + overlay: '1.0.0', actions: [{ target: '$["one"]', update: 1 @@ -60,7 +60,7 @@ describe('splitIntoOverlay', () => { } const overlay = splitIntoOverlay(input, {targets: '$.*'}) expect(overlay).toEqual({ - overlays: '1.0.0', + overlay: '1.0.0', actions: [ { target: '$["one"]', @@ -102,7 +102,7 @@ describe('splitIntoOverlay', () => { fields: ['description', 'summary'], }) expect(overlay).toEqual({ - overlays: '1.0.0', + overlay: '1.0.0', actions: [{ target: '$["paths"]["/foo"]["get"]', update: { @@ -143,7 +143,7 @@ describe('splitIntoOverlay', () => { }) expect(overlay).toEqual({ - overlays: '1.0.0', + overlay: '1.0.0', actions: [{ target: '$["paths"]["/foo"]["get"]', update: {