Skip to main content

Remove all x-amazon tags from your OAS3 specification

Project description

deforest

PyPI version Build Status

Remove all x-amazon-tags 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.

Installation

pip install --user deforest

Features

  • Clean keys starting with the string x-amazon
  • 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

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.

CloudFormation templates

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.

Hide paths

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.

Limitations

The output file looses its order of the keys in the file, which shouldn't affect you if you're using a converter to create a graphical documentation/specification - but can be confusing if you have a specific internal order you wish to keep.

Contribute

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.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

deforest-0.4.0.tar.gz (10.4 kB view details)

Uploaded Source

Built Distributions

deforest-0.4.0-py3.7.egg (28.7 kB view details)

Uploaded Source

deforest-0.4.0-py3-none-any.whl (13.6 kB view details)

Uploaded Python 3

File details

Details for the file deforest-0.4.0.tar.gz.

File metadata

  • Download URL: deforest-0.4.0.tar.gz
  • Upload date:
  • Size: 10.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/46.0.0 requests-toolbelt/0.9.1 tqdm/4.43.0 CPython/3.7.5

File hashes

Hashes for deforest-0.4.0.tar.gz
Algorithm Hash digest
SHA256 0dec032a214dea78cf242f89bf9d4ac03f2a6424ca9d422ce7eeb9a6e3ba0125
MD5 afd048f813891f0d47e8a40b1ab88708
BLAKE2b-256 2421d5cb0496a62215d5e5f2f168a9d5bd15323969e14c3c1469b125cdf85e34

See more details on using hashes here.

File details

Details for the file deforest-0.4.0-py3.7.egg.

File metadata

  • Download URL: deforest-0.4.0-py3.7.egg
  • Upload date:
  • Size: 28.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/46.0.0 requests-toolbelt/0.9.1 tqdm/4.43.0 CPython/3.7.5

File hashes

Hashes for deforest-0.4.0-py3.7.egg
Algorithm Hash digest
SHA256 ca0e718d04c2221bb78f45d942266c9a796cd421b7b65b6bf79b8d28fc2765f7
MD5 2859474eb8cf1e540d8af23a6b42166c
BLAKE2b-256 80c4dc7467147dc254dc5b519ca4f4f1d8199d3572451c4b9fd0c37bc5e7501e

See more details on using hashes here.

File details

Details for the file deforest-0.4.0-py3-none-any.whl.

File metadata

  • Download URL: deforest-0.4.0-py3-none-any.whl
  • Upload date:
  • Size: 13.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/46.0.0 requests-toolbelt/0.9.1 tqdm/4.43.0 CPython/3.7.5

File hashes

Hashes for deforest-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 b643973578494f16034b50e8ce953fb33a164cc203b032faddc3fd50f3464e83
MD5 667ddaf443d62ccbd77c5a776004dc10
BLAKE2b-256 bd2812ad7716358f684e3152783b8bf825c0b80fc8fcbe89b76af44c16ef216e

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page