Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /

Público API Principles

La API pública de Cloud Manager sigue los principios de la arquitectura REST para exponer recursos internos que brindan acceso programático a las funciones de Cloud Manager.

Al igual que los cambios realizados a través de la interfaz web, los cambios realizados a través de la API están sujetos a Cloud Manager precios. Si agregas servidores y generas cargos, debes tener una tarjeta de crédito válida registrada en Cloud Manager o tu cuenta podría ser bloqueada.

La API tiene las siguientes características:

JSON entities
Todas las entidades se expresan en JSON.
Interfaz navegable
Al utilizar un mecanismo de enlace consistente, puede explorar toda la API comenzando en el recurso raíz y siguiendo los enlaces a los recursos relacionados.
Control de acceso de usuarios

Las capacidades de API de cada usuario de Cloud Manager coinciden con los permisos que les otorgan sus Roles de Cloud Manager.

Ejemplo

API Lista de acceso a la red

El API de Cloud Manager puede proteger el acceso a la API de administración de Cloud Manager a través de una Lista de acceso API. Esta lista restringe el acceso a la API a direcciones IP o CIDR específicas. Cada clave de API tiene su propia lista de acceso a la API de gestión de Cloud Manager. Cuando creas una nueva organización usando la UI de Cloud Manager, MongoDB Atlas habilita por defecto el requisito de lista de acceso a la API.

Para aprender más, consulte (Opcional) Requerir una lista de acceso a API para su organización.

Solo HTTPS
Puedes acceder a la API solo a través de HTTPS, lo que garantiza que todos los datos enviados a través de la red estén completamente cifrados utilizando TLS.

Todos los recursos admiten un subconjunto de estos métodos HTTP comunes:

Método
Propósito

GET

Recupera la representación JSON de un recurso.

POST

Cree un nuevo recurso utilizando la representación JSON proporcionada.

PUT

Reemplace un recurso con la representación JSON proporcionada.

PATCH

Actualiza los campos especificados en un recurso usando la representación JSON proporcionada.

DELETE

Remover un recurso.

HEAD

Recupera el encabezado de la respuesta sin la representación JSON del recurso.

Todas las entidades se representan en JSON. Se aplican las siguientes reglas para solicitudes y convenciones de respuesta:

Aplica el encabezado de tipo de contenido correcto
Al enviar JSON al servidor a través POST de o,PUT asegúrese de especificar el encabezado de solicitud de tipo de contenido correcto: Content-Type: application/json
Establecer fechas como ISO 8601 Strings

Al enviar fechas al servidor (como parámetros de query o campos en entidades de solicitud POST o PATCH), utiliza fechas formateadas según el estándar ISO 8601. Si no especificas una zona horaria, Cloud Manager asume UTC. Incluye un designador de zona horaria para evitar cualquier ambigüedad.

Ejemplo

  • El 27 de septiembre de 2018 se expresa como 2018-09-27.

  • El 27 de septiembre de 2018 a las 4:00 PM EDT se expresa (con zona horaria) como 2018-09-27T16:00-04:00.

En algunos casos, se devuelve una marca de tiempo como una representación JSON de una marca de tiempo BSON, particularmente en los recursos de copia de seguridad. Esta representación de una BSON marca de tiempo proporciona un documento JSON como un objeto con dos campos:

Campo
Definición

date

Segundos desde la Unix epoch

increment

Un número entero ordinal incremental de 32 bits para operaciones dentro de un segundo determinado.

Ejemplo

La tercera operación del 27 de septiembre de 2018 a las 4:00 PM EDT se expresa (con zona horaria) como

{ date: 2018-09-27T16:00-04:00, increment: 3 }
Rechazando campos inválidos

Los campos no válidos se rechazan en lugar de ser ignorados.

Ejemplo

Si intenta crear una nueva entidad y escribe mal uno de los campos, o si intenta actualizar una entidad existente e incluye un campo que no se puede modificar, Cloud Manager responde con un código de estado HTTP 400 y un mensaje de error que indica qué campo no era válido.

Devuelve fechas como ISO 8601 Cadenas
Todas las fechas se devuelven como strings con formato ISO 8601designados en UTC.
Campo de etiquetas para desambiguar unidades

Los campos que contienen valores numéricos en una determinada unidad se nombran de modo que se pueda desambiguar la unidad que se utiliza.

Ejemplo

La disponibilidad de un host se devuelve en milisegundos, por lo que el nombre del campo de la entidad del host es uptimeMsec.

Devuelve los valores por defecto para los campos sin otros valores

Los campos que no tienen un valor actual se devuelven con un valor por defecto apropiado.

Ejemplo

Cloud Manager no dispone de estadísticas para un host recién descubierto, por lo que cualquier campo relacionado con estadísticas tiene un valor de cero.

Se omiten los campos que no tienen un valor por defecto razonable en la entidad.

Ejemplo

Un host que no utiliza autenticación omite el campo username de la entidad devuelta.

Devuelve los campos en orden alfabético
Los campos de los documentos JSON que devuelve Cloud Manager están en orden alfabético. El orden puede variar. No dependa del orden de los campos.

Cada recurso incluye uno o más enlaces a subrecursos y/o recursos relacionados.

Ejemplo

Un host tiene un vínculo al Proyecto al que pertenece, al set de réplicas al que pertenece, y así sucesivamente.

Los enlaces se colocan en el campo links de una entidad, que es una matriz de objetos de relación de enlace. Cada relación de enlace tiene dos campos:

Campo
Definición

rel

Nombre (o tipo) de la relación. Muchos de estos se consideran como Tipos de Relaciones de Extensión y tienen el prefijo http://mms.mongodb.com.

href

Target URL.

Todas las entidades incluyen por lo menos una relación de enlace llamada self, que es simplemente su propia URL. Cuando una entidad forma parte de una lista (por ejemplo, al solicitar todos los hosts en un proyecto), sólo incluye la relación de enlace self.

Ejemplo

Esta es una parte de un recurso host con algunos enlaces:

1{
2 "id": "xxx",
3 "projectId": "yyy",
4 "hostname": "mongodb.example.com",
5 "port": 27017,
6 "links": [
7 {
8 "rel": "self",
9 "href": "https://cloud.mongodb.com/api/public/v1.0/projects/xxx/hosts/yyy"
10 },
11 {
12 "rel": "http://mms.mongodb.com/project",
13 "href": "https://cloud.mongodb.com/api/public/v1.0/projects/xxx"
14 }
15 ]
16}

Para obtener más información, consulte la especificación de enlace web.

Nota

Aunque la Especificación de vinculación web describe un formato para incluir enlaces en los encabezados de respuesta HTTP, no es obligatorio. Para que la API sea fácilmente navegable, incluye los enlaces en el cuerpo de la respuesta en lugar de en los encabezados de la respuesta.

Algunos recursos devuelven una lista de entidades.

Ejemplo

Puedes solicitar una lista de todos los hosts en un Proyecto.

Cuando se espera una lista de entidades en una respuesta, los resultados se devuelven en lotes delimitados por dos parámetros de query:

Campo
Definición

pageNum

Número de página (basado en 1). El valor predeterminado es 1 si no se especifica.

itemsPerPage

Número de artículos para devolver por página, hasta un máximo de 500. Por defecto a 100 si no se especifica.

La entidad de respuesta contiene tres campos:

Campo
Definición

totalCount

Número total de items en el conjunto completo de resultados.

Por ejemplo, si un proyecto tiene un total de 57 host, y realizas una solicitud con pageNum=6 y itemsPerPage=10, entonces totalCount es 57.

results

Conjunto de resultados, que es un arreglo de documentos de entidades.

links

Contiene una a tres relaciones de enlace:

  • previous para la página anterior de resultados (omitido para la primera página);

  • next para la página siguiente de resultados (omitido para la última página);

  • self para la página actual (siempre presente).

Si solicitas una lista de entidades y no hay resultados, la API responde con un HTTP código de estado 200 y un results arreglo vacío. No responde con un 404 en este caso, ya que la lista de entidades puede no estar vacía en el futuro.

Si ha solicitado una lista de entidades en un contexto que no existe (es decir, la lista de hosts de un proyecto inexistente), esto genera un estado de respuesta HTTP 404.

Ejemplo

Esta es una respuesta HTTP para la segunda página de 10 hosts en un proyecto con un total de 57 hosts:

1{
2
3 "totalCount": 57,
4 "results": [
5 {
6 "id": "yyy",
7 "projectId": "xxx",
8 // additional host properties...
9 },
10 // additional host documents...
11 ],
12 "links": [
13 {
14 "rel" : "self",
15 "href" : "https://www.mongodb.com/api/public/v1.0/projects/xxx/hosts?pageNum=2&itemsPerPage=10"
16 },
17 {
18 "rel": "previous",
19 "href": "https://www.mongodb.com/api/public/v1.0/projects/xxx/hosts?itemsPerPage=10&pageNum=1"
20 },
21 {
22 "rel": "next",
23 "href": "https://www.mongodb.com/api/public/v1.0/projects/xxx/hosts?itemsPerPage=10&pageNum=3"
24 }
25 ]
26}

Es posible que algunos clientes no puedan acceder a los encabezados de respuesta HTTP ni al código de estado. En ese caso, puede solicitar que la respuesta incluya envelope un, que es simplemente una capa adicional de información en el documento JSON que contiene los detalles relevantes que normalmente se encontrarían en los encabezados de respuesta.

Por defecto, la API no incluye la respuesta en un sobre. Para solicitar uno, simplemente añade el parámetro de query envelope=true.

Para las respuestas que contienen una sola entidad, el sobre contiene dos campos:

Campo
Definición

status

HTTP status code.

content

Entidad solicitada.

Para las respuestas que contiene una lista de entidades, ya existe una envoltura que envuelve los resultados, así que especificar envelope=true como un query en este caso sólo agrega el campo status al sobres actual.

De forma predeterminada, el espacio en blanco innecesario se elimina del JSON que Cloud Manager devuelve. Para pedir un JSON con formato legible, simplemente puedes añadir el parámetro de query pretty=true a cualquier solicitud:

curl --user '{PUBLIC-KEY}:{PRIVATE-KEY}' --digest \
--header 'Accept: application/json' \
--include \
--request GET "https://cloud.mongodb.com/api/public/v1.0?pretty=true"

Nota

Todos los ejemplos en este documento muestran JSON en formato bastante legible para mayor claridad, aunque algunos URLde ejemplo pueden no contener este parámetro de query adicional.

Las respuestas utilizan los códigos de respuesta HTTP estándar, incluidos:

Código
Significado
notas

200

Vale

La solicitud fue exitosa. Esta es la respuesta típica a una solicitud GET exitosa.

201

Creado.

Se creó un nuevo recurso. Esta es la respuesta típica a una solicitud POST exitosa.

202

Accepted

Se aceptó una solicitud para una operación asincrónica.

400

Solicitud incorrecta

Algo estaba mal con la solicitud del cliente.

401

No autorizado

Se requiere autenticación, pero no estaba presente en la solicitud. Normalmente, esto significa que la información de autenticación digest fue omitida de la solicitud, las credenciales proporcionadas son incorrectas o el usuario asociado con la clave API dada no está autorizado para acceder al recurso solicitado.

403

Forbidden

No se permite el acceso al recurso especificado.

404

No encontrado

El recurso solicitado no existe.

405

Método no permitido

El método HTTP no es compatible con el recurso especificado. Recuerde que cada recurso puede admitir únicamente un subconjunto de HTTP métodos.

Por ejemplo, no tienes permitido DELETE el recurso root.

409

Conflicto

Normalmente, esta es la respuesta a una solicitud para crear o modificar una propiedad de una entidad que es única cuando ya existe una entidad con el mismo valor para esa propiedad.

Por ejemplo, si intentas crear un proyecto con el mismo nombre que un proyecto existente, la solicitud falla.

5xx

Diversos errores de servidor

Algo inesperado salió mal. Intenta de nuevo más tarde y considera notificar al Soporte de Cloud Manager.

Cuando una solicitud resulta en un error, el cuerpo de la respuesta contiene un documento JSON con detalles adicionales sobre lo que salió mal. El documento contiene cinco campos:

Campo
Tipo de dato
Definición

detail

string

Descripción legible por humanos del error de solicitud de API.

error

entero

errorCode

string

Constante con nombre que representa el error de solicitud de API como se muestra en Códigos de error de la API de Administración de Cloud Manager.

parameters

Arreglo de cadenas

Lista de parámetros pasados ​​en la solicitud de API.

reason

string

Ejemplo

Cloud Manager devuelve el cuerpo de esta respuesta para una solicitud con formato incorrecto:

1{
2 "detail" : "Cannot find resource /api/public/v1.0/softwareComponents/version.",
3 "error" : 404,
4 "errorCode" : "RESOURCE_NOT_FOUND",
5 "parameters" : [ "/api/public/v1.0/softwareComponents/version" ],
6 "reason" : "Not Found"
7}

Para revisar la lista de códigos, consulta Códigos de error de la API de administración de Cloud Manager.

El API Cloud Manager utiliza uno de dos métodos para autenticar las solicitudes: claves API o cuentas de servicio. Esto garantiza que las claves y los tokens de acceso que sirven como nombres de usuario y contraseñas nunca se envíen a través de la red. Para conocer los detalles de uso, consulte Acceso programático a Cloud Manager con una cuenta de servicio.

Cuenta de servicio
Claves de API

Nuevo método de autenticación en Cloud Manager utilizando el protocolo estándar de la industria OAuth 2.0, con el flujo de Credenciales del Cliente.

Método heredado de autenticación en Cloud Manager que utiliza autenticación HTTP digest.

Una cuenta de servicio te permite gestionar permisos y crear tokens de acceso. Una cuenta de servicio tiene un ID de cliente y un secreto que funcionan como nombre de usuario y contraseña para crear tokens de acceso. Un token de acceso permite hacer solicitudes de API a Cloud Manager.

Las claves API tienen dos partes: una clave pública y una clave privada. Estas dos partes sirven la misma función que un nombre de usuario y una contraseña cuando haces solicitudes de API a Cloud Manager.

Después de crear una cuenta de servicio, usarás su ID de cliente y secreto para generar un token de acceso, que autentica tus solicitudes API. Los tokens de acceso solo son válidos durante 1 hora (3600 segundos) según la especificación OAuth 2.0. La expiración de los tokens de acceso previene ataques de repetición, en los que un token de acceso filtrado podría usarse sin una restricción temporal.

Cloud Manager genera un valor hash de la llave pública y la llave privada usando un valor único llamado nonce. El nonce sólo es válido por un breve periodo de tiempo según la especificación HTTP digest. Esto es para prevenir ataques de repetición, por lo que no se puede almacenar en caché un nonce y usarlo para siempre.

Cloud Manager roles limita las operaciones que una cuenta de servicio puede realizar con su token de acceso. Debes conceder roles a las cuentas de servicio como lo harías para los usuarios para asegurar que el token de acceso pueda llamar a los endpoints de la API sin errores.

Los roles de Cloud Manager limitan qué operaciones pueden realizar las claves de API. Debe otorgar roles a las claves API como lo haría para los usuarios para garantizar que las claves API puedan realizar llamadas a los puntos finales de API sin errores.

Cloud Manager vincula muchos recursos a un proyecto. Muchas URL de recursos de API siguen el formato./api/public/v1.0/groups/<PROJECT-ID>/ Para estos recursos, la cuenta de servicio debe ser miembro de la organización que aloja el proyecto. De lo contrario, Cloud Manager responde con un 401 error.

Cloud Manager vincula varios recursos a un proyecto. Muchos recursos de la API URLs siguen el formato de /api/public/v1.0/groups/<PROJECT-ID>/. Para estos recursos, las claves de la API deben ser nodo de la organización que aloja el Proyecto. De lo contrario, Cloud Manager responde con un error 401.

Cada cuenta de servicio pertenece solo a una organización, pero puedes conceder acceso de la cuenta de servicio a cualquier número de proyectos de esa organización.

Cada clave API pertenece sólo a una organización, pero se puede conceder acceso a las claves API a cualquier número de proyectos en esa organización.

Algunos métodos de recursos exigen mayor seguridad y están protegidos adicionalmente por listas de acceso que permiten el acceso al recurso solo desde las direcciones IP enumeradas. Cada usuario configura su propia lista de direcciones IP que permite el acceso al recurso.

El recurso Configuración de automatización y los recursos Obtener el estado de automatización del plan más reciente proporcionan endpoints que permiten modificar la implementación de un proyecto y recuperar el estado de la implementación. Puede modificar una implementación enviando una nueva configuración de automatización a Cloud Manager. La configuración de la automatización es donde se describen y configuran los procesos de MongoDB que se van a implementar. Cloud Manager se refiere a esto como el “estado objetivo” de la implementación. Cuando envías una nueva configuración de automatización a través de la API, las automatizaciones ajustan el estado actual del sistema para que coincida con el estado objetivo.

Importante

La API no cuenta con protección para evitar modificaciones simultáneas. Si dos administradores comienzan con una configuración basada en la versión actual, realizan sus propias modificaciones y luego las envían, prevalecerá la última modificación.

Ciertos recursos están sujetos a limitaciones de velocidad.

Para recursos con límite de velocidad, Cloud Manager permite hasta 100 solicitudes por minuto por proyecto. Tenga en cuenta que se asigna una clave API pública a cada usuario de Cloud Manager, pero este puede acceder a varios proyectos.

Ejemplo

Consideremos dos usuarios: A y B.

El usuario A pertenece al proyecto X y el usuario B a los proyectos X y Y.

  1. A las 13:00, el Usuario A realiza 50 solicitudes a un recurso con limitación de velocidad en el proyecto X, todas las cuales se completan antes de las 13:00:20.

  2. A la 1:00:30pm, el Usuario B intenta realizar 60 solicitudes a un recurso sujeto a limitaciones de velocidad en el proyecto X.

    Dado que el usuario A ya agotó 50 solicitudes en el minuto 1:00 p. m. para el proyecto X, las últimas 10 solicitudes que el usuario B intenta realizar son rechazadas. Sin embargo, el usuario B puede realizar solicitudes a un recurso con límite de velocidad en el proyecto Y, ya que cada proyecto mantiene un contador de solicitudes independiente.

  3. A la 1:01pm, las solicitudes para el proyecto X pueden proceder, porque el contador de solicitudes utilizado para limitar la tasa de solicitudes se restablece cada minuto.

Si excedes el límite de velocidad, la API devuelve un código de respuesta HTTP 429 Too Many Requests.

Consulta Recursos de la API de administración de Cloud Manager para obtener una referencia completa de todos los recursos disponibles en la API pública de Cloud Manager.

Volver

API

En esta página