blob: 11f9ea4d1af0af233433a1183a1a1ec7c5827fca [file] [view]
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
# API specs
Auto-generated OpenAPI specs for Apache Custos.
## Layout
One spec per code-ownership unit:
| Spec | Path | Scope |
|---|---|---|
| Core | `api/core.openapi.yaml` | Core REST endpoints. |
| Connector | `connectors/<NAME>/api/<name>.openapi.yaml` | A connector's endpoints under `/connectors/<name>/`. |
Connector specs ship alongside the connector code; the core spec never
declares connector endpoints. The reference connector today is AMIE at
`connectors/ACCESS/AMIE-Processor/api/amie.openapi.yaml`.
## Generating
Specs are produced from [`swag`](https://github.com/swaggo/swag)
annotations on each handler in the Go source. Regenerate after editing
any annotation:
```
make gen-api
```
CI enforces freshness via `make verify-no-drift`: modifying a handler
annotation without committing the regenerated spec fails the build. The
`swag` version is pinned in `go.sum`; `go generate` invokes it through
`go run`, so contributors do not need to install the binary separately.
## Consuming
Both files are standard OpenAPI documents and load into any
OpenAPI-aware client, viewer, or codegen tool.