En este documento, se muestra cómo usar la API de Developer Knowledge para buscar y recuperar de forma programática la documentación para desarrolladores pública de Google. En lugar de extraer manualmente información de las páginas web, la API ayuda a tus aplicaciones a encontrar fragmentos de texto relevantes o recuperar documentos completos en Markdown.
En este documento, encontrarás ejemplos para las siguientes tareas:
- Se está buscando en el corpus de documentación.
- Paginación de los resultados de la búsqueda
- Aplicar filtros complejos a tu búsqueda
- Se recupera el contenido completo del documento.
- Se optimizaron las cargas útiles de las respuestas para reducir la latencia.
Antes de comenzar, configura tu entorno para la herramienta que prefieras:
gcloud
Instala y configura gcloud CLI, y habilita la API de Developer Knowledge.
REST
Habilita la API y genera una clave de API de Developer Knowledge. Luego, guarda tu clave en una variable de entorno:
export DEVELOPERKNOWLEDGE_API_KEY="YOUR_API_KEY"
Reemplaza YOUR_API_KEY por tu clave de API de Developer Knowledge.
Buscar documentos
Usa el comando gcloud developer-knowledge documents search-chunks o el método de REST documents.searchDocumentChunks para encontrar fragmentos de documentos que coincidan con una cadena de consulta. Los resultados incluyen fragmentos de contenido de los documentos coincidentes, junto con una referencia parent que puedes usar para recuperar el contenido completo de esos documentos.
En el siguiente ejemplo, se buscan documentos que coincidan con "BigQuery":
gcloud
gcloud developer-knowledge documents search-chunks \ --query="BigQuery"
REST
curl "https://developerknowledge.googleapis.com/v1/documents:searchDocumentChunks?query=BigQuery&key=$DEVELOPERKNOWLEDGE_API_KEY"
El resultado es similar a este:
{
"results": [
{
"parent": "documents/docs.cloud.google.com/bigquery/docs/introduction",
"id": "chunk_0",
"content": "BigQuery is a fully managed enterprise data warehouse...",
"document": {
"name": "documents/docs.cloud.google.com/bigquery/docs/introduction",
"uri": "https://docs.cloud.google.com/bigquery/docs/introduction",
"title": "BigQuery overview",
"dataSource": "docs.cloud.google.com",
"updateTime": "2025-01-15T12:00:00Z"
},
"relevanceScore": 0.92
}
]
}
Cada resultado de la lista results incluye lo siguiente:
parent: Es el nombre del recurso del documento (por ejemplo,documents/docs.cloud.google.com/bigquery/docs/introduction).id: Es el identificador del fragmento dentro del documento (por ejemplo,chunk_0).content: Es el fragmento de texto coincidente del documento.document: Son los metadatos sobre el documento fuente, como sutitle,uri,dataSourceyupdateTime.relevanceScore: Es la puntuación de relevancia del fragmento para la búsqueda, en el rango de[0.0, 1.0].
Para obtener más información sobre el esquema de respuesta y todos los campos de metadatos disponibles, consulta la referencia de la API de documents.searchDocumentChunks.
Paginar los resultados de la búsqueda
Cuando una búsqueda devuelve varias coincidencias, puedes navegar por el conjunto de resultados con los parámetros de paginación:
--page-size(CLI de gcloud) opageSize(número entero): Especifica la cantidad máxima de resultados que se devolverán por página. Si no se especifica, la API establece de forma predeterminada cinco resultados. El valor máximo permitido es 100; los valores superiores a 100 se convertirán en 100.--limit(gcloud CLI) opageToken(cadena): En la gcloud CLI, usa--limitpara controlar la cantidad total de resultados que se devuelven en las páginas. En las solicitudes de REST, pasa el valor depageTokenque recibiste en una respuesta anterior para recuperar la siguiente página de resultados.
gcloud
Pasa las marcas --page-size y --limit para controlar la cantidad de resultados por página y la cantidad total de resultados devueltos:
gcloud developer-knowledge documents search-chunks \ --query="BigQuery" \ --page-size=5 \ --limit=10
REST
Para solicitar la primera página, pasa el parámetro
pageSizeen tu solicitud:curl "https://developerknowledge.googleapis.com/v1/documents:searchDocumentChunks?query=BigQuery&pageSize=5&key=$DEVELOPERKNOWLEDGE_API_KEY"
Si hay resultados adicionales disponibles, la respuesta incluye un
nextPageToken:{ "results": [ { "parent": "documents/docs.cloud.google.com/bigquery/docs/introduction", "id": "chunk_0", "content": "BigQuery is a fully managed enterprise data warehouse...", "document": { "name": "documents/docs.cloud.google.com/bigquery/docs/introduction", "uri": "https://docs.cloud.google.com/bigquery/docs/introduction", "title": "What is BigQuery?", "dataSource": "docs.cloud.google.com", "updateTime": "2025-01-15T12:00:00Z", "view": "DOCUMENT_VIEW_BASIC" }, "relevanceScore": 0.88 } ], "nextPageToken": "CAUQABgB" }Para recuperar las páginas siguientes, pasa el valor de
nextPageTokenal parámetropageTokenen tu próxima solicitud:curl "https://developerknowledge.googleapis.com/v1/documents:searchDocumentChunks?query=BigQuery&pageSize=5&pageToken=CAUQABgB&key=$DEVELOPERKNOWLEDGE_API_KEY"
Cuando llegues a la última página de resultados, se omitirá
nextPageTokenen la respuesta.
Cómo filtrar los resultados de la búsqueda
Usa la marca --query-filter en la gcloud CLI o el parámetro filter en las solicitudes de REST para aplicar un filtro estricto a los resultados de la búsqueda. La expresión de filtro se aplica a los metadatos del documento principal para cada fragmento.
La expresión de filtro tiene un límite de 500 caracteres.
Campos disponibles
Puedes filtrar los resultados de la búsqueda con los siguientes campos del documento principal:
content_length_bytes(número entero): Es la longitud del campocontentdel documento en bytes.data_source(cadena): Es el dominio de origen del documento, comodocs.cloud.google.comofirebase.google.com. Consulta la referencia del corpus para conocer todas las fuentes de datos compatibles.update_time(marca de tiempo): Es la marca de tiempo en la que se actualizó el documento por última vez. Los valores deben usar el formato RFC 3339 (por ejemplo,"2025-01-01T00:00:00Z").uri(cadena): Es el URI completo del documento (por ejemplo,https://docs.cloud.google.com/bigquery/docs/tables).
Operadores admitidos
El analizador de expresiones de filtro admite diferentes operadores según el tipo de datos del campo:
- Campos de cadena (
data_source,uri): Admiten=(igual a) y!=(no igual a) para la coincidencia exacta de cadenas. No se admiten las coincidencias parciales, de prefijo ni de expresiones regulares. - Campos de marca de tiempo (
update_time): Admiten=,<,<=,>y>=. - Campos de números enteros (
content_length_bytes): Admiten=,!=,<,<=,>y>=. - Operadores lógicos: Combina condiciones con
AND,ORyNOT(o-).
Filtra ejemplos
En los siguientes ejemplos, se muestra cómo construir expresiones de filtro. Cuando uses la gcloud CLI, pasa la expresión a la marca --query-filter. Cuando llames a la API de REST con curl, asegúrate de codificar el parámetro filter en formato URL o usa --data-urlencode.
Cómo hacer coincidir una sola fuente de datos
Restringe los resultados de la búsqueda a un solo dominio de documentación:
data_source = "docs.cloud.google.com"
gcloud
gcloud developer-knowledge documents search-chunks \ --query="Cloud Functions deployment" \ --query-filter='data_source = "docs.cloud.google.com"'
REST
curl -G "https://developerknowledge.googleapis.com/v1/documents:searchDocumentChunks" \ --data-urlencode "query=Cloud Functions deployment" \ --data-urlencode 'filter=data_source = "docs.cloud.google.com"' \ --data-urlencode "key=$DEVELOPERKNOWLEDGE_API_KEY"
Correlaciona varias fuentes de datos
Usa OR para incluir documentos de varias fuentes:
data_source = "docs.cloud.google.com" OR data_source = "firebase.google.com"
gcloud
gcloud developer-knowledge documents search-chunks \ --query="database" \ --query-filter='data_source = "docs.cloud.google.com" OR data_source = "firebase.google.com"'
REST
curl -G "https://developerknowledge.googleapis.com/v1/documents:searchDocumentChunks" \ --data-urlencode "query=database" \ --data-urlencode 'filter=data_source = "docs.cloud.google.com" OR data_source = "firebase.google.com"' \ --data-urlencode "key=$DEVELOPERKNOWLEDGE_API_KEY"
Filtrar por marca de tiempo
Usa operadores de comparación con marcas de tiempo RFC 3339 para encontrar contenido actualizado después de una fecha específica:
update_time >= "2025-01-01T00:00:00Z"
gcloud
gcloud developer-knowledge documents search-chunks \ --query="BigQuery" \ --query-filter='update_time >= "2025-01-01T00:00:00Z"'
REST
curl -G "https://developerknowledge.googleapis.com/v1/documents:searchDocumentChunks" \ --data-urlencode "query=BigQuery" \ --data-urlencode 'filter=update_time >= "2025-01-01T00:00:00Z"' \ --data-urlencode "key=$DEVELOPERKNOWLEDGE_API_KEY"
Filtrar por duración del contenido
Usa operadores de comparación con content_length_bytes para encontrar documentos según su tamaño en bytes:
content_length_bytes < 5000
gcloud
gcloud developer-knowledge documents search-chunks \ --query="Cloud Storage" \ --query-filter='content_length_bytes < 5000'
REST
curl -G "https://developerknowledge.googleapis.com/v1/documents:searchDocumentChunks" \ --data-urlencode "query=Cloud Storage" \ --data-urlencode 'filter=content_length_bytes < 5000' \ --data-urlencode "key=$DEVELOPERKNOWLEDGE_API_KEY"
Combinar la fuente de datos, la marca de tiempo y la agrupación
Combina AND, OR y paréntesis (...) para restringir los resultados a fuentes específicas actualizadas después de una fecha determinada:
(data_source = "developer.chrome.com" OR data_source = "web.dev") AND update_time >= "2025-01-01T00:00:00Z"
gcloud
gcloud developer-knowledge documents search-chunks \ --query="service worker" \ --query-filter='(data_source = "developer.chrome.com" OR data_source = "web.dev") AND update_time >= "2025-01-01T00:00:00Z"'
REST
curl -G "https://developerknowledge.googleapis.com/v1/documents:searchDocumentChunks" \ --data-urlencode "query=service worker" \ --data-urlencode 'filter=(data_source = "developer.chrome.com" OR data_source = "web.dev") AND update_time >= "2025-01-01T00:00:00Z"' \ --data-urlencode "key=$DEVELOPERKNOWLEDGE_API_KEY"
Excluye fuentes de datos
Usa NOT o != para excluir los resultados de una fuente específica:
data_source != "firebase.google.com"
gcloud
gcloud developer-knowledge documents search-chunks \ --query="authentication" \ --query-filter='data_source != "firebase.google.com"'
REST
curl -G "https://developerknowledge.googleapis.com/v1/documents:searchDocumentChunks" \ --data-urlencode "query=authentication" \ --data-urlencode 'filter=data_source != "firebase.google.com"' \ --data-urlencode "key=$DEVELOPERKNOWLEDGE_API_KEY"
Recupera un documento
Usa el comando gcloud developer-knowledge documents describe o el método de REST documents.get para recuperar el contenido completo de un solo documento.
En el siguiente ejemplo, se recupera un documento por su nombre de recurso:
gcloud
gcloud developer-knowledge documents describe \ documents/docs.cloud.google.com/storage/docs/creating-buckets
REST
curl "https://developerknowledge.googleapis.com/v1/documents/docs.cloud.google.com/storage/docs/creating-buckets?key=$DEVELOPERKNOWLEDGE_API_KEY"
La respuesta es un recurso Document que contiene metadatos y el contenido completo en Markdown en el campo content.
Nombres de recursos frente a URIs
Cuando hagas referencia a documentos en la API de Developer Knowledge, ten en cuenta la diferencia entre los nombres de recursos y los URIs web:
- Nombre del recurso (
parent,name): Se formatea comodocuments/{uri_without_scheme}(por ejemplo,documents/docs.cloud.google.com/storage/docs/creating-buckets). Pasa este valor como el argumento posicional engcloud developer-knowledge documents describe, el parámetro de ruta enGetDocumento en el parámetronamesdeBatchGetDocuments. - URI web (
uri): Es la URL web completa, incluido el esquema (por ejemplo,https://docs.cloud.google.com/storage/docs/creating-buckets). Usa este formato para el campouricuando construyas expresiones--query-filterofilter(por ejemplo,uri = "https://docs.cloud.google.com/storage/docs/creating-buckets").
Recupera varios documentos con BatchGetDocuments
Usa el método documents.batchGet para recuperar hasta 20 documentos por nombre en una sola llamada a la API. Esto es más eficiente que realizar varias solicitudes GetDocument.
En el siguiente ejemplo, se recuperan dos documentos por nombre:
curl "https://developerknowledge.googleapis.com/v1/documents:batchGet?names=documents/docs.cloud.google.com/storage/docs/creating-buckets&names=documents/firebase.google.com/docs/firestore/quickstart&key=$DEVELOPERKNOWLEDGE_API_KEY"
La respuesta contiene una lista de los recursos Document solicitados en el orden en que los solicitaste.
Optimiza las cargas útiles de respuesta
El contenido del documento en formato Markdown puede ser grande. Si tu aplicación solo necesita metadatos (como títulos de la página, URIs o marcas de tiempo) o campos específicos, puedes optimizar los tamaños de las cargas útiles para reducir el ancho de banda y la latencia.
Cómo usar las vistas de documentos
La marca --view en la CLI de gcloud o el parámetro view en las solicitudes de REST controlan qué campos se completan en los mensajes Document.
La marca --view y el enum DocumentView admiten los siguientes valores:
--view=basic(CLI de gcloud) oDOCUMENT_VIEW_BASIC: Devuelve solo los campos de metadatos básicos (name,uri,dataSource,title,description,updateTimeyview). Se omite el campocontent.--view=content(gcloud CLI) oDOCUMENT_VIEW_CONTENT: Devuelve campos de metadatos junto con el campocontentde Markdown. Este es el valor predeterminado paragcloud developer-knowledge documents describe,GetDocumentyBatchGetDocuments.--view=full(gcloud CLI) oDOCUMENT_VIEW_FULL: Devuelve todos los campos del documento.
Para recuperar solo los metadatos del documento sin descargar contenido de Markdown grande, especifica la vista básica del documento:
gcloud
gcloud developer-knowledge documents describe \ documents/docs.cloud.google.com/storage/docs/creating-buckets \ --view=basic
REST
curl "https://developerknowledge.googleapis.com/v1/documents/docs.cloud.google.com/storage/docs/creating-buckets?view=DOCUMENT_VIEW_BASIC&key=$DEVELOPERKNOWLEDGE_API_KEY"
También puedes usar view=DOCUMENT_VIEW_BASIC con BatchGetDocuments:
curl "https://developerknowledge.googleapis.com/v1/documents:batchGet?names=documents/docs.cloud.google.com/storage/docs/creating-buckets&names=documents/firebase.google.com/docs/firestore/quickstart&view=DOCUMENT_VIEW_BASIC&key=$DEVELOPERKNOWLEDGE_API_KEY"
Usa máscaras de campo
Para limitar aún más las cargas útiles de respuesta a campos específicos, usa el parámetro de consulta fields (máscara de campo) estándar de las APIs de Google.
Campos de filtro en GetDocument
Para recuperar solo los campos title, uri y updateTime de un documento, haz lo siguiente:
curl "https://developerknowledge.googleapis.com/v1/documents/docs.cloud.google.com/storage/docs/creating-buckets?fields=title,uri,updateTime&key=$DEVELOPERKNOWLEDGE_API_KEY"
Campos de filtro en BatchGetDocuments
Para recuperar solo campos específicos de cada documento en un lote, haz lo siguiente:
curl "https://developerknowledge.googleapis.com/v1/documents:batchGet?names=documents/docs.cloud.google.com/storage/docs/creating-buckets&fields=documents(name,title,uri)&key=$DEVELOPERKNOWLEDGE_API_KEY"
Campos de filtro en SearchDocumentChunks
Para devolver solo el fragmento id y content, el documento principal title y uri, y el nextPageToken de una búsqueda, haz lo siguiente:
curl "https://developerknowledge.googleapis.com/v1/documents:searchDocumentChunks?query=BigQuery&fields=results(id,content,document(title,uri)),nextPageToken&key=$DEVELOPERKNOWLEDGE_API_KEY"
Soluciona errores
La API de Developer Knowledge devuelve códigos de estado HTTP estándar. En los siguientes ejemplos funcionales, se asignan códigos de estado HTTP y sus causas en la API de Developer Knowledge:
400 INVALID_ARGUMENT:- La cadena de expresión
filtersupera los 500 caracteres. - La marca de tiempo
update_timeno es válida (debe usar el formato RFC 3339). - Se proporcionaron más de 20 nombres de documentos en una solicitud de
BatchGetDocuments.
- La cadena de expresión
401 UNAUTHENTICATED: La solicitud no incluye una clave de API o usa una clave no válida. Consulta Autenticación.404 NOT_FOUND: El nombre del documento solicitado no existe o pertenece a un dominio que no se incluye en el corpus.429 RESOURCE_EXHAUSTED: El proyecto excedió su cuota. Consulta Cuotas y límites.
¿Qué sigue?
- Consulta Genera respuestas a partir de la documentación.
- Conéctate al servidor de MCP de Developer Knowledge y, luego, instala la habilidad del agente
retrieving-developer-knowledgepara ayudar a tu asistente de programación basado en IA a buscar y leer documentación oficial. - Explora cómo usar bibliotecas cliente en Python, Node.js, Go o Java.
- Explora cómo usar la CLI de gcloud.
- Explora la referencia del corpus para ver todas las fuentes de documentación admitidas.
- Revisa la referencia de la API de REST para obtener las especificaciones completas de los métodos.
- Consulta las cuotas y los límites para conocer los límites de frecuencia y las cuotas de la API.