Metadata y URLs de Docs¶
Puedes personalizar varias configuraciones de metadata en tu aplicaci贸n FastAPI.
Metadata para la API¶
Puedes establecer los siguientes campos que se usan en la especificaci贸n OpenAPI y en las interfaces autom谩ticas de documentaci贸n de la API:
| Par谩metro | Tipo | Descripci贸n | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
title |
str |
El t铆tulo de la API. | ||||||||||||
summary |
str |
Un resumen corto de la API. Disponible desde OpenAPI 3.1.0, FastAPI 0.99.0. | ||||||||||||
description |
str |
Una breve descripci贸n de la API. Puede usar Markdown. | ||||||||||||
version |
string |
La versi贸n de la API. Esta es la versi贸n de tu propia aplicaci贸n, no de OpenAPI. Por ejemplo, 2.5.0. |
||||||||||||
terms_of_service |
str |
Una URL a los T茅rminos de Servicio para la API. Si se proporciona, debe ser una URL. | ||||||||||||
contact |
dict |
La informaci贸n de contacto para la API expuesta. Puede contener varios campos.
|
| Par谩metro | Tipo | Descripci贸n |
|---|---|---|
name | str | El nombre identificativo de la persona/organizaci贸n de contacto. |
url | str | La URL que apunta a la informaci贸n de contacto. DEBE tener el formato de una URL. |
email | str | La direcci贸n de correo electr贸nico de la persona/organizaci贸n de contacto. DEBE tener el formato de una direcci贸n de correo. |
license_infodictlicense_info fields
| Par谩metro | Tipo | Descripci贸n |
|---|---|---|
name | str | REQUERIDO (si se establece un license_info). El nombre de la licencia utilizada para la API. |
identifier | str | Una expresi贸n de licencia SPDX para la API. El campo identifier es mutuamente excluyente del campo url. Disponible desde OpenAPI 3.1.0, FastAPI 0.99.0. |
url | str | Una URL a la licencia utilizada para la API. DEBE tener el formato de una URL. |
Puedes configurarlos de la siguiente manera:
from fastapi import FastAPI
description = """
ChimichangApp API helps you do awesome stuff. 馃殌
## Items
You can **read items**.
## Users
You will be able to:
* **Create users** (_not implemented_).
* **Read users** (_not implemented_).
"""
app = FastAPI(
title="ChimichangApp",
description=description,
summary="Deadpool's favorite app. Nuff said.",
version="0.0.1",
terms_of_service="http://example.com/terms/",
contact={
"name": "Deadpoolio the Amazing",
"url": "http://x-force.example.com/contact/",
"email": "dp@x-force.example.com",
},
license_info={
"name": "Apache 2.0",
"url": "https://www.apache.org/licenses/LICENSE-2.0.html",
},
)
@app.get("/items/")
async def read_items():
return [{"name": "Katana"}]
Consejo
Puedes escribir Markdown en el campo description y se mostrar谩 en el resultado.
Con esta configuraci贸n, la documentaci贸n autom谩tica de la API se ver铆a as铆:

Identificador de licencia¶
Desde OpenAPI 3.1.0 y FastAPI 0.99.0, tambi茅n puedes establecer la license_info con un identifier en lugar de una url.
Por ejemplo:
from fastapi import FastAPI
description = """
ChimichangApp API helps you do awesome stuff. 馃殌
## Items
You can **read items**.
## Users
You will be able to:
* **Create users** (_not implemented_).
* **Read users** (_not implemented_).
"""
app = FastAPI(
title="ChimichangApp",
description=description,
summary="Deadpool's favorite app. Nuff said.",
version="0.0.1",
terms_of_service="http://example.com/terms/",
contact={
"name": "Deadpoolio the Amazing",
"url": "http://x-force.example.com/contact/",
"email": "dp@x-force.example.com",
},
license_info={
"name": "Apache 2.0",
"identifier": "MIT",
},
)
@app.get("/items/")
async def read_items():
return [{"name": "Katana"}]
Metadata para etiquetas¶
Tambi茅n puedes agregar metadata adicional para las diferentes etiquetas usadas para agrupar tus path operations con el par谩metro openapi_tags.
Este toma una list que contiene un diccionario para cada etiqueta.
Cada diccionario puede contener:
name(requerido): unstrcon el mismo nombre de etiqueta que usas en el par谩metrotagsen tus path operations yAPIRouters.description: unstrcon una breve descripci贸n de la etiqueta. Puede tener Markdown y se mostrar谩 en la interfaz de documentaci贸n.externalDocs: undictque describe documentaci贸n externa con:description: unstrcon una breve descripci贸n para la documentaci贸n externa.url(requerido): unstrcon la URL para la documentaci贸n externa.
Crear metadata para etiquetas¶
Probemos eso en un ejemplo con etiquetas para users y items.
Crea metadata para tus etiquetas y p谩sala al par谩metro openapi_tags:
from fastapi import FastAPI
tags_metadata = [
{
"name": "users",
"description": "Operations with users. The **login** logic is also here.",
},
{
"name": "items",
"description": "Manage items. So _fancy_ they have their own docs.",
"externalDocs": {
"description": "Items external docs",
"url": "https://fastapi.tiangolo.com/",
},
},
]
app = FastAPI(openapi_tags=tags_metadata)
@app.get("/users/", tags=["users"])
async def get_users():
return [{"name": "Harry"}, {"name": "Ron"}]
@app.get("/items/", tags=["items"])
async def get_items():
return [{"name": "wand"}, {"name": "flying broom"}]
Nota que puedes utilizar Markdown dentro de las descripciones, por ejemplo "login" se mostrar谩 en negrita (login) y "fancy" se mostrar谩 en cursiva (fancy).
Consejo
No tienes que agregar metadata para todas las etiquetas que uses.
Usar tus etiquetas¶
Usa el par谩metro tags con tus path operations (y APIRouters) para asignarlas a diferentes etiquetas:
from fastapi import FastAPI
tags_metadata = [
{
"name": "users",
"description": "Operations with users. The **login** logic is also here.",
},
{
"name": "items",
"description": "Manage items. So _fancy_ they have their own docs.",
"externalDocs": {
"description": "Items external docs",
"url": "https://fastapi.tiangolo.com/",
},
},
]
app = FastAPI(openapi_tags=tags_metadata)
@app.get("/users/", tags=["users"])
async def get_users():
return [{"name": "Harry"}, {"name": "Ron"}]
@app.get("/items/", tags=["items"])
async def get_items():
return [{"name": "wand"}, {"name": "flying broom"}]
Informaci贸n
Lee m谩s sobre etiquetas en Configuraci贸n de Path Operation.
Revisa la documentaci贸n¶
Ahora, si revisas la documentaci贸n, mostrar谩 toda la metadata adicional:

Orden de las etiquetas¶
El orden de cada diccionario de metadata de etiqueta tambi茅n define el orden mostrado en la interfaz de documentaci贸n.
Por ejemplo, aunque users ir铆a despu茅s de items en orden alfab茅tico, se muestra antes porque agregamos su metadata como el primer diccionario en la list.
URL de OpenAPI¶
Por defecto, el esquema OpenAPI se sirve en /openapi.json.
Pero puedes configurarlo con el par谩metro openapi_url.
Por ejemplo, para configurarlo para que se sirva en /api/v1/openapi.json:
from fastapi import FastAPI
app = FastAPI(openapi_url="/api/v1/openapi.json")
@app.get("/items/")
async def read_items():
return [{"name": "Foo"}]
Si quieres deshabilitar el esquema OpenAPI completamente, puedes establecer openapi_url=None, eso tambi茅n deshabilitar谩 las interfaces de usuario de documentaci贸n que lo usan.
URLs de Docs¶
Puedes configurar las dos interfaces de usuario de documentaci贸n incluidas:
- Swagger UI: servida en
/docs.- Puedes establecer su URL con el par谩metro
docs_url. - Puedes deshabilitarla estableciendo
docs_url=None.
- Puedes establecer su URL con el par谩metro
- ReDoc: servida en
/redoc.- Puedes establecer su URL con el par谩metro
redoc_url. - Puedes deshabilitarla estableciendo
redoc_url=None.
- Puedes establecer su URL con el par谩metro
Por ejemplo, para configurar Swagger UI para que se sirva en /documentation y deshabilitar ReDoc:
from fastapi import FastAPI
app = FastAPI(docs_url="/documentation", redoc_url=None)
@app.get("/items/")
async def read_items():
return [{"name": "Foo"}]