microsoft / microsoft/typespec

[@typespec/http] Add support to ignore APIs using @ignoreApi decorator

Open
#8,205 1 comment 0 reactions 0 assignees View on GitHub
compiler:core design:needed triaged:core
Dominant language
Java
Stars
5.9k
Forks
394
Avg merge
1d 23h
Merged PRs (30d)
104

Description

### Clear and concise description of the problem

When defining an interface and their routes, it would be helpful to have a decorator that can let you to ignore certain APIs from being generated in the open api schema (openapi.yaml/json).

Similar to how the attribute `[ApiExplorerSettings(IgnoreApi = true)]` works in C#, the API is reachable, but it's not part of the spec.

```tsp
@route("/widgets")
@tag("Widgets")
interface Widgets {
/** Read widgets */
@get read(@path id: string): Widget | Error;
/** Create a widget */
@post create(@body body: Widget): Widget | Error;

...
/** Get widget operation status*/
@ignoreApi
@route("{id}/operationResults/{operationId}")
@get getAsyncCreateOrUpdateOperationResult(): OperationStatus | Error
}
```

These API routes should still be generated by other emitters, such as "@typespec/http-server-csharp", meaning models/controllers should still include these APIs.

### Checklist

- [x] Follow our [Code of Conduct](https://github.com/microsoft/typespec/blob/main/CODE_OF_CONDUCT.md)
- [x] Read the [docs](https://typespec.io/docs/).
- [x] Check that there isn't already an issue that request the same feature to avoid creating a duplicate.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.