Remove all x-amazon
-tags and integrations from your Open API 3 or Swagger 2 specification. Useful if you are using Cloudformation to specify your API Gateways, and want to provide your consumers with the same specification but not wanting to disclose your internal Amazon integrations.
Try it out online at https://deforest.io
pip install --user deforest
- Clean keys starting with the string
x-amazon
- Clean arbitrary paths using
x-deforest-ignore
keys - Handles JSON and YAML input
- Handles JSON and YAML output (defaults to YAML)
- Support for AWS CloudFormation templates
- AWS::ApiGateway::RestApi resource type
- AWS::Serverless::Api resource type
Usage: deforest [OPTIONS] INFILE
Options:
-o, --outfile TEXT specify output file, default is
./<title>-<version>.<format>, ignored if input is
a CloudFormation template and the template
contains more than one ApiGateway resource)
-f, --format [yaml|json] output format [default: yaml]
-i, --indent INTEGER if output format is json, specify indentation
-d, --debug if enabled, show debug logs
--no-ignore if set, deforest will export paths marked as
ignored
--version Show the version and exit.
--help Show this message and exit.
Version 0.1.1 and later supports CloudFormation templates as input. If more than one API Gateway is part of the template, the --outfile
flag will be ignored.
Version 0.2.0 introduced support for deforest to ignore certain paths. If you specify x-deforest-ignore: true
anywhere in your specification, deforest will not extract its parent node to the end results. Example:
paths:
"/validation":
post:
responses:
"200":
schema:
type: array
items:
"$ref": "#/definitions/Error"
headers:
test-method-response-header:
type: string
get:
x-deforest-ignore: true
parameters:
- name: q1
in: query
required: true
responses:
"200":
schema:
type: array
items:
"$ref": "#/definitions/Error"
headers:
test-method-response-header:
type: string
will result in
paths:
/validation:
post:
responses:
"200":
headers:
test-method-response-header:
type: string
schema:
items:
$ref: "#/definitions/Error"
type: array
If we'd written this:
paths:
"/validation":
x-deforest-ignore: true
post:
responses:
"200":
schema:
type: array
items:
"$ref": "#/definitions/Error"
headers:
test-method-response-header:
type: string
get:
parameters:
- name: q1
in: query
required: true
responses:
"200":
schema:
type: array
items:
"$ref": "#/definitions/Error"
headers:
test-method-response-header:
type: string
we'd get an empty result since the parent node is removed:
paths: {}
If x-deforest-ignore: false
, or missing, the node will be extracted as usual. If the runtime flag --no-ignore
is set, the nodes will be extracted as usual as well.
If you wish to see a specific feature, please create an issue in the issue tracker - and if you want to help develop deforest, you're free to create a pull request as well. All submitted code will be subject to the licensing specified in the LICENSE file.