{"id":15102778,"url":"https://github.com/deliveryhero/serverless-aws-documentation","last_synced_at":"2025-09-27T00:31:32.425Z","repository":{"id":51911446,"uuid":"75615428","full_name":"deliveryhero/serverless-aws-documentation","owner":"deliveryhero","description":"Serverless 1.0 plugin to add documentation and models to the serverless generated API Gateway","archived":true,"fork":false,"pushed_at":"2021-05-09T03:42:35.000Z","size":234,"stargazers_count":306,"open_issues_count":73,"forks_count":151,"subscribers_count":62,"default_branch":"master","last_synced_at":"2025-08-28T04:01:03.044Z","etag":null,"topics":["api-gateway","aws","aws-apigateway","documentation","documentation-generator","json-schema","serverless"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/deliveryhero.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-12-05T10:45:42.000Z","updated_at":"2025-08-27T12:10:50.000Z","dependencies_parsed_at":"2022-08-23T05:20:59.823Z","dependency_job_id":null,"html_url":"https://github.com/deliveryhero/serverless-aws-documentation","commit_stats":null,"previous_names":["9cookies/serverless-aws-models","9cookies/serverless-aws-documentation"],"tags_count":15,"template":false,"template_full_name":null,"purl":"pkg:github/deliveryhero/serverless-aws-documentation","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/deliveryhero%2Fserverless-aws-documentation","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/deliveryhero%2Fserverless-aws-documentation/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/deliveryhero%2Fserverless-aws-documentation/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/deliveryhero%2Fserverless-aws-documentation/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/deliveryhero","download_url":"https://codeload.github.com/deliveryhero/serverless-aws-documentation/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/deliveryhero%2Fserverless-aws-documentation/sbom","scorecard":{"id":6411,"data":{"date":"2025-08-11","repo":{"name":"github.com/deliveryhero/serverless-aws-documentation","commit":"26fc84de94bb0d764da0e79344e441b28025b05d"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.2,"checks":[{"name":"Code-Review","score":8,"reason":"Found 19/23 approved changesets -- score normalized to 8","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Maintained","score":0,"reason":"project is archived","details":["Warn: Repository is archived."],"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE.md:0","Info: FSF or OSI recognized license: MIT License: LICENSE.md:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 26 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Vulnerabilities","score":0,"reason":"36 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: GHSA-v88g-cgmw-v5xw","Warn: Project is vulnerable to: GHSA-832h-xg76-4gv6","Warn: Project is vulnerable to: GHSA-v6h2-p8h4-qcjw","Warn: Project is vulnerable to: GHSA-mh2h-6j8q-x246","Warn: Project is vulnerable to: GHSA-5q88-cjfq-g2mh","Warn: Project is vulnerable to: GHSA-xp63-6vf5-xf3v","Warn: Project is vulnerable to: GHSA-h6ch-v84p-w6p9","Warn: Project is vulnerable to: GHSA-4gmj-3p3h-gm8h","Warn: Project is vulnerable to: GHSA-fjxv-7rqg-78g4","Warn: Project is vulnerable to: GHSA-2cf5-4w76-r9qv","Warn: Project is vulnerable to: GHSA-3cqr-58rm-57f8","Warn: Project is vulnerable to: GHSA-g9r4-xpmj-mj65","Warn: Project is vulnerable to: GHSA-q2c6-c6pm-g3gh","Warn: Project is vulnerable to: GHSA-765h-qjxv-5f44","Warn: Project is vulnerable to: GHSA-f2jv-r9rf-7988","Warn: Project is vulnerable to: GHSA-44pw-h2cw-w3vq","Warn: Project is vulnerable to: GHSA-jp4x-w63m-7wgm","Warn: Project is vulnerable to: GHSA-c429-5p7v-vgjp","Warn: Project is vulnerable to: GHSA-4hpf-3wq7-5rpr","Warn: Project is vulnerable to: GHSA-f522-ffg8-j8r6","Warn: Project is vulnerable to: GHSA-896r-f27r-55mw","Warn: Project is vulnerable to: GHSA-282f-qqgm-c34q","Warn: Project is vulnerable to: GHSA-p6mc-m468-83gw","Warn: Project is vulnerable to: GHSA-29mw-wpgm-hmr9","Warn: Project is vulnerable to: GHSA-35jh-r3h4-6jhm","Warn: Project is vulnerable to: GHSA-f8q6-p94x-37v3","Warn: Project is vulnerable to: GHSA-vh95-rmgr-6w4m","Warn: Project is vulnerable to: GHSA-xvch-5gv4-984h","Warn: Project is vulnerable to: GHSA-gqgv-6jq5-jjj9","Warn: Project is vulnerable to: GHSA-hrpp-h998-j3pp","Warn: Project is vulnerable to: GHSA-p8p7-x288-28g6","Warn: Project is vulnerable to: GHSA-4rq4-32rv-6wp6","Warn: Project is vulnerable to: GHSA-64g7-mvw6-v9qj","Warn: Project is vulnerable to: GHSA-mf6x-7mm4-x2g7","Warn: Project is vulnerable to: GHSA-72xf-g2v4-qvf3","Warn: Project is vulnerable to: GHSA-xc7v-wxcw-j472"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-14T13:38:34.539Z","repository_id":51911446,"created_at":"2025-08-14T13:38:34.539Z","updated_at":"2025-08-14T13:38:34.539Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":272559941,"owners_count":24955429,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-28T02:00:10.768Z","response_time":74,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["api-gateway","aws","aws-apigateway","documentation","documentation-generator","json-schema","serverless"],"created_at":"2024-09-25T19:06:35.279Z","updated_at":"2025-09-27T00:31:32.150Z","avatar_url":"https://github.com/deliveryhero.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![serverless](http://public.serverless.com/badges/v3.svg)](http://www.serverless.com) [![Build Status](https://travis-ci.org/9cookies/serverless-aws-documentation.svg?branch=master)](https://travis-ci.org/9cookies/serverless-aws-documentation) [![codecov](https://codecov.io/gh/9cookies/serverless-aws-documentation/branch/master/graph/badge.svg)](https://codecov.io/gh/9cookies/serverless-aws-documentation) [![MIT licensed](https://img.shields.io/badge/license-MIT-blue.svg)](https://raw.githubusercontent.com/hyperium/hyper/master/LICENSE)\n\n# Serverless AWS Documentation\n\nThis is a [Serverless](http://www.serverless.com) v1 plugin that adds support for AWS API Gateway\ndocumentation and models (e.g. to export a Swagger JSON file with input/output definitions and full text\ndocumentation for API documentation).\n\n## Important notice\nThis plugin is no longer maintained and therefore archived. \nIf you want to continue this project feel free to fork it and publish it under a new name.\nUnfortunately we can't transfer ownership of this project.\n\n## What is AWS API Gateway documentation?\n\nAmazon introduced a new documentation feature for it's API Gateway on AWS at the end of 2016. With this you can add manually written documentation to all parts of API Gateway such as resources, requests, responses or single path or query parameters. When exporting Swagger from API Gateway these documentation is added to the other information to create a more human understandable documentation.\n\nIn addition to this documentation this plugin also adds support to add models to API Gateway and use it with the serverless functions. Models are JSON Schemas that define the structure of request or response bodies. This includes property structure, their types and their validation. More about this you'll find here: https://spacetelescope.github.io/understanding-json-schema/\n\n## Install\n\nThis plugin only works for Serverless 1.0 and up. For a plugin that supports 0.5 look at\n[this plugin](https://github.com/HyperBrain/serverless-models-plugin).\n\nTo install this plugin, add `serverless-aws-documentation` to your package.json:\n\n```\nnpm install serverless-aws-documentation --save-dev\n```\n\nNext, add the `serverless-aws-documentation` plugin in to serverless.yml file:\nIf you don't already have a plugins section, create one that looks like this:\n\n```YAML\nplugins:\n  - serverless-aws-documentation\n```\n\nTo verify that the plugin was added successfully, run this in your command line:\n```\nserverless\n```\n\nThe plugin should show up in the \"Plugins\" section of the output as \"ServerlessAWSDocumentation\"\n\n## Example serverless.yml\n\nYou can find a fully functioning serverless project with examples of documentation in the `./example/` directory. See the [README.md](./example/README.md) in there for more details.\n\n## Usage\n\nThere are two places you need to touch in the `serverless.yml`: *custom variables* to define your\ngeneral documentation descriptions and models, and the *http* events in your `functions` section to\nadd these models to your requests and responses and add description to function relevant parts.\n\n### Define descriptions for your documentation\n\nFor manual full text descriptions for the parts of your API you need to describe it's structure.\nIn the general part you can describe your API in general, authorizers, models and resources.\nIf you want to find out more about models, you can skip to the next section.\n\n------\n#### Gotcha with 'version' and 'title' on the API\n\nCurrently (August 2017) you'll have trouble with the `title` and `version` fields for you API description. If you define them as below, they'll be correctly created in API Gateway (you can see it in the web console) but when you export the Swagger document from API Gateway, your title and version will be ignored and replaced with something like:\n\n    version: \"2017-08-23T07:59:29Z\"\n    title: dev-your-api-serverless\n\n------\nYour general documentation has to be nested in the custom variables section and looks like this:\n\n```YAML\ncustom:\n  documentation:\n    api:\n      info:\n        version: \"2\" # see note above about this being ignored\n        title: \"Name of your API\" # see note above about this being ignored\n        description: \"This is the best API ever\"\n        termsOfService: \"http://www.example.com/terms-of-service\"\n        contact:\n          name: \"John Smith\"\n          url: \"http://www.example.com/me\"\n          email: \"js@example.com\"\n        license:\n          name: \"Licensing\"\n          url: \"http://www.example.com/licensing\"\n      tags:\n        -\n          name: \"Data Creation\"\n          description: \"Services to create things\"\n        -\n          name: \"Some other tag\"\n          description: \"A tag for other things\"\n    authorizers:\n      -\n        name: \"MyCustomAuthorizer\"\n        description: \"This is an error\"\n    resources:\n      -\n        path: \"some/path\"\n        description: \"This is the description for some/path\"\n      -\n        path: \"some/other/path\"\n        description: \"This is the description for some/other/path\"\n```\n\nYour documentation has to be nested in the `documentation` custom variable. You describe your\ndocumentation parts with the `description` and `summary` (or `title` for the API itself) properties. The summary is some sort of\ntitle and the description is for further explanation. You can see the expected format in the [Swagger v2 specification for the info object](https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#info-object).\n\nOn the upper level, under the `documentation/api` section, you describe your API in the `info` object.\nIn there you also can manually describe the version (needs to be a string). If you don't define the\nversion, the version that API Gateway needs will automatically be generated. This auto version is a\nhash of the documentation you defined, so if you don't change your documentation, the documentation\nin API Gateway won't be touched.\n\nUnderneath you can define `tags`, `authorizers`, `resources` and `models` which are all lists of descriptions.\nIn addition to the description and the summary, Authorizers need the name of the authorizer, resources\nneed the path of the described resource and models need the name of the model. Tags provides the description for tags that are used on `METHOD`s (HTTP events), [more info here](https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md#tag-object).\n\n\n### Define the models\n\nModels have additional information you have to define. Besides the model name, the description and\nthe summary, you need to define the *content type* for this model in addition to the *schema* that\ndescribes the model:\n\n* `contentType`: the content type of the described request/response (like `\"application/json\"` or\n`\"application/xml\"`). This is mandatory.\n* `schema`: The JSON Schema that describes the model. In the examples below external files are\nimported, but you can also define the schema inline using YAML format.\n\nYour models definition could look like this:\n\n```YAML\ncustom:\n  documentation:\n    models:\n      -\n        name: \"ErrorResponse\"\n        description: \"This is an error\"\n        contentType: \"application/json\"\n        schema: ${file(models/error.json)}\n      -\n        name: \"CreateRequest\"\n        description: \"Model for creating something\"\n        contentType: \"application/json\"\n        schema: ${file(models/create_request.json)}\n```\n\nWithin the schema, you can reference and nest any of your models with the `$ref` keyword, its value should be something like `{{model: YourModelName}}`. For example:\n\n```YAML\ncustom:\n  documentation:\n    models:\n      -\n        name: \"Address\"\n        description: \"This is an address\"\n        contentType: \"application/json\"\n        schema:\n          type: \"object\"\n          properties:\n            street:\n              type: \"string\"\n      -\n        name: \"Customer\"\n        description: \"This is a customer\"\n        contentType: \"application/json\"\n        schema:\n          type: \"object\"\n          properties:\n            name:\n              type: \"string\"\n            address:\n              $ref: \"{{model: Address}}\"\n```\n\n### Function specific documentation\n\nWhen you want to describe the parts inside a `RESOURCE` you need to do this in the functions\ndescribed in your `serverless.yml`. Inside the `http` event of your functions you need to add the\n`documentation` property which can hold the following parts:\n\n* The method description which is described directly inside the `documentation` property\n* `requestBody`: The body of your HTTP request\n* `requestHeaders`: A list of headers for your HTTP request (needs `name` of the header)\n* `queryParams`: A list of query parameters (needs `name` of the parameter)\n* `pathParams`: A list of path parameters (needs `name` of the parameter)\n* `methodResponses`: A list of method responses (needs the `statusCode` of the response)\n* `tags`: A list of tags apply to the `METHOD`, which is the HTTP event in serverless. Used in [Swagger-UI](https://swagger.io/swagger-ui/)\n\nThe methodResponses itself can have the following parts:\n\n* `responseBody`: The body of the HTTP request\n* `responseHeaders`: A list of headers for your HTTP response (needs `name` of the header)\n\nWith this your function definition could look like this:\n\n```YAML\ncreateItem:\n  handler: handler.create\n  events:\n    - http:\n        path: create\n        method: post\n        documentation:\n          summary: \"Create something\"\n          description: \"Creates the thing you need\"\n          tags:\n            - \"Data Creation\"\n            - \"Some other tag\"\n          requestBody:\n            description: \"Request body description\"\n          requestHeaders:\n            -\n              name: \"x-header\"\n              description: \"Header description\"\n            -\n              name: \"Authorization\"\n              description: \"Auth Header description\"\n          queryParams:\n            -\n              name: \"sid\"\n              description: \"Session ID\"\n            -\n              name: \"theme\"\n              description: \"Theme for for the website\"\n          pathParams:\n            -\n              name: \"id\"\n              description: \"ID of the thing you want to create\"\n          requestModels:\n            \"application/json\": \"CreateRequest\"\n            \"application/xml\": \"CreateRequestXml\"\n          methodResponses:\n            -\n              statusCode: \"200\"\n              responseBody:\n                description: \"Response body description\"\n              responseHeaders:\n                -\n                  name: \"x-superheader\"\n                  description: \"this is a super header\"\n              responseModels:\n                \"application/json\": \"CreateResponse\"\n            -\n              statusCode: \"400\"\n              responseModels:\n                \"application/json\": \"ErrorResponse\"\n```\n\nTo add your defined models to the function you also need the following properties.\n\n#### requestModels\n\nIn the `requestModels` property you can add models for the HTTP request of the function. You can have\nmultiple models for different `ContentType`s. Inside the `requestModels` property you define the\ncontent type as the key and the model name defined in the models section above as the value.\nHere's short example:\n\n```YAML\nrequestModels:\n  \"application/json\": \"CreateRequest\"\n  \"application/xml\": \"CreateRequestXml\"\n```\n\n#### methodResponses.responseModels\n\nIn the `methodResponses` property you can define multiple response models for this function.\nThe response models are described in the `ResponseModels` property which contains the models for the\ndifferent content types. These response models are described like the `requestModels` above.\n\n```YAML\nmethodResponses:\n  -\n    statusCode: \"200\"\n    responseModels:\n      \"application/json\": \"CreateResponse\"\n      \"application/xml\": \"CreateResponseXml\"\n  -\n    statusCode: \"400\"\n    responseModels:\n      \"application/json\": \"ErrorResponse\"\n```\n\nIn the full example above you also can see the definition of the `requestModels` and `responseModels`\nin a the context of the documentation.\n\n### Deploy the documentation\n\nTo deploy the models you described above you just need to use `serverless deploy` as you are used to.\n\nIf you've defined `requestHeaders` in your documentation this will add those request headers to the CloudFormation being deployed, if you haven't already defined those request parameters yourself. If you don't want this, add the option `--doc-safe-mode` when deploying. If you use that option you need to define the request parameters manually to  have them included in the documentation, e.g.\n\n```YAML\nApiGatewayMethod{normalizedPath}{normalizedMethod}:\n  Properties:\n    RequestParameters:\n      method.request.header.{header-name}: true|false\n```\n\nSee the Serverless documentation for more information on [resource naming](https://serverless.com/framework/docs/providers/aws/guide/resources/), and the AWS documentation for more information on [request parameters](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-apitgateway-method-integration.html#cfn-apigateway-method-integration-requestparameters).\n\n### Download documentation from AWS API Gateway\n\nTo download the deployed documentation you just need to use `serverless downloadDocumentation --outputFileName=filename.ext`.\nFor `yml` or `yaml` extensions application/yaml content will be downloaded from AWS. In any other case - application/json.\nOptional argument --extensions ['integrations', 'apigateway', 'authorizers', 'postman']. Defaults to 'integrations'.\n\n## Contribution\n\nWhen you think something is missing or found some bug, please add an issue to this repo. If you want\nto contribute code, just fork this repo and create a PR when you are finished. Pull Requests are only\naccepted when there are unit tests covering your code.\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdeliveryhero%2Fserverless-aws-documentation","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdeliveryhero%2Fserverless-aws-documentation","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdeliveryhero%2Fserverless-aws-documentation/lists"}