Azure / Azure/data-api-builder
[Enh]: Complete our OpenAPI implementation
Nadie ha tomado este issue todavía.
- Lenguaje dominante
- C#
- Estrellas
- 1.5k
- Forks
- 372
- Merge medio
- 3 d 22 h
- PR fusionados (30 d)
- 9
Descripción
### What
Improve DAB’s OpenAPI generation. Enhance with OpenAPI 3.1.
### Enhancements
#### 1. Per role OpenAPI generation
The OpenAPI document must reflect the permissions and visibility for each role.
* `https://localhost:8080/openapi` → current role by context
* `https://localhost:8080/openapi/anonymous` → anonymous role
* `https://localhost:8080/openapi/authenticated` → authenticated role
* `https://localhost:8080/openapi/{custom-role}` → specific custom role
Each variant filters entities, fields, and methods according to that role’s access.
#### 2. Multi data source awareness
Each operation must indicate which configured data source it targets.
```json
"paths": {
"/api/Author": {
"get": {
"summary": "Get all authors",
"x-data-source": "sql1", // from data-source.name
"responses": { }
}
}
}
```
`x-data-source` maps directly to the `data-source.name` defined in configuration.
#### 3. Include and exclude field support
When entity configuration includes `include` or `exclude`, only permitted properties appear in the OpenAPI schema.
```json
"components": {
"schemas": {
"Author": {
"type": "object",
"properties": {
"id": { "type": "integer" },
"name": { "type": "string" } // for example
}
}
}
}
```
#### 4. Request body strict mode
When `request-body-strict` is enabled, the request and response payloads share the same schema.
Keys are optional in update operations but otherwise identical.
#### 5. Permissions driven REST methods
Generated paths must match `permissions.actions`.
Only allowed HTTP verbs appear for each entity.
```json
"paths": {
"/api/Author": {
"get": { "summary": "Read all authors" },
"post": { "summary": "Create a new author" }
} // for example, no delete
}
```
#### 6. Proper type formats
The OpenAPI schema must include `format` for date and time types.
| SQL Server Type | OpenAPI Type | OpenAPI Format | Example |
| ---------------- | ------------ | -------------- | ----------------------------------- |
| `date` | string | date | "2025-10-29" |
| `datetime` | string | date-time | "2025-10-29T13:45:30Z" |
| `datetime2` | string | date-time | "2025-10-29T13:45:30.1234567Z" |
| `smalldatetime` | string | date-time | "2025-10-29T13:45:00Z" |
| `datetimeoffset` | string | date-time | "2025-10-29T13:45:30.1234567-07:00" |
| `time` | string | time | "13:45:30.1234567" |
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Línea de trabajo
Comienza por los puntos de entrada /openapi, /openapi/anonymous, /openapi/authenticated y /openapi/{custom-role}, y después inspecciona la generación existente de OpenAPI y el manejo de la configuración. Compara los documentos generados con los requisitos indicados de roles, fuentes de datos, campos, strict-body, permisos y formatos de fecha/hora; se considera terminado cuando cada requisito está cubierto y verificado por las pruebas correspondientes, aunque no se menciona ninguna en el issue.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- csharp, openapi, sql
- Área
- api, backend-api-design, databases
- Tipo de issue
- Nueva funcionalidad
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Estado de actividad
- Estancado
- Claridad
- Bastante claro
- Aptitud para principiantes
- 25/100