serverless-openapi-documentation icon indicating copy to clipboard operation
serverless-openapi-documentation copied to clipboard

How to use serverless-openapi-documentation with serverless Typescript template?

Open federico-dobal opened this issue 5 years ago • 2 comments

Issue described here:

https://stackoverflow.com/questions/64117950/how-to-use-serverless-openapi-documentation-with-serverless-typescript-template

federico-dobal avatar Sep 29 '20 10:09 federico-dobal

I'd love to know it as well

prabhanjansyn avatar Dec 04 '20 11:12 prabhanjansyn

Oh jeez. It seems to be over a year since this issue has been opened and no resolution. I hope I'm not necro-posting.

I figured out how to somewhat get serverless-openapi-documentation working with the serverless TS template. I say "somewhat" because there's a few kinks that I found when using this plugin but it's a good place to start for anyone else looking into this.

Initial Configuration

For initial configurations, I created a new typescript file called docs. Inside it has the following contents

const docs = {
  version: '1',
  title: 'Some title',
  description: 'My API description',
  models: [ ... ]
};

export default docs;

This is then imported into the "custom" property of the serverless template like so:

import docs from "./docs";

...
custom: {
  documentation: docs
  ...
...

Then added the serverless-openapi-documentation into my list of plugins.

Setting up functions

To set up functions, I separated out the functions configuration in its own typescript file and assigned it to a constant like so:

export const functions: any = {
  myFunction: {
    ...,
    documentation: {
      ...
    }
  }
}

After that, I then imported this separate file into my main serverless template like so:

import {functions} from "./functions"

const serverlessConfiguration = {
  ...,
  functions,
  ...
}

The problem now

When running serverless openapi generate, it creates an openapi.yml that contains documentation about my functions, models and response types but it can't seem to translate pathParams or queryParams properly.

I specified them in my documentation like so:

            pathParams: [
              {
                name: 'id',
                description: 'Hotel ID to retrieve',
                schema: {
                  type: 'string'
                }
              }
            ],

But it doesn't seem to be included in the openapi.yml output. Am I missing anything here?

chrisrabe avatar Apr 27 '22 06:04 chrisrabe