loopbackio / loopbackio/loopback-next

Define a required parameter using a sugar API

Open
#1,940 8 comments 0 reactions 0 assignees View on GitHub
developer-experience feature good first issue Hacktoberfest REST
Dominant language
TypeScript
Stars
5.1k
Forks
1.1k
Avg merge
2d 21h
Merged PRs (30d)
27

Description

At the moment, it is not possible to use `@param` shortcuts like `@param.query.string` to define a required parameter.

One has to use `@param` directly (but don't have to specify the type since LB4 can infer the type from TypeScript metadata). For example:

```ts
@param({name: 'format', in: 'query', required: true}) format?: string
```

Ideally, I would like LB4 to provide the following syntax for annotating parameters as required:

```ts
@param.query.string('format', {required: true}) format?: string
```

## Acceptance criteria

- [ ] Modify all `@param.SOURCE.TYPE()` shortcuts (and possibly other similar shortucts) to accept a new optional argument of type `Partial` and use the provided properties to enhance (or amend) the spec generated by the decorator.
- [ ] Modify `@param.array()` in a similar way, the new optional argument will be the fourth arg.
- [ ] Modify `@param.query.object()` similarly, the new optional argument will be the third arg.
- [ ] Verify that the API documentation is able to pick up the changes

---

## 🎆 Hacktoberfest 2020

Greetings :wave: to all Hacktoberfest 2020 participants!

Here are few tips 👀 to make your start easier, see also #6456:

- Before you start working on this issue, please leave a comment to let others know.
- If you are new to GitHub pull requests, then you can learn about the process in [Submitting a pull request to LoopBack 4](https://loopback.io/doc/en/lb4/submitting_a_pr.html).
- If this is your first contribution to LoopBack, then please take a look at our [Developer guide](https://loopback.io/doc/en/lb4/code-contrib-lb4.html)
- Feel free to ask for help in `#loopback-contributors` channel, you can join our Slack workspace [here](https://join.slack.com/t/loopbackio/shared_invite/zt-8lbow73r-SKAKz61Vdao~_rGf91pcsw).

Contributor guide

Open the contributing guide

Research direction

Start by locating the TypeScript implementations of the @param.SOURCE.TYPE(), @param.array(), and @param.query.object() shortcuts, then inspect how their generated ParameterObject specifications are exposed to API documentation. Update the shortcuts to accept the stated optional properties and verify that the documentation reflects them, including required parameters.

Written by the indexing model from the issue text.

Assessment

Tech stack
openapi, typescript
Domain
api, documentation
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Clearly specified
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.