API keys
Tus aplicaciones acceden a una base de datos con una API key: una clave y un secreto que se envían en dos cabeceras. Las bases de datos, las API keys y los owners se gestionan en la consola de InceptionDB, con la sesión de tu cuenta de hola.cloud.
Crear una base de datos
En la consola, abre el selector de base de datos y elige New database. Está lista en un segundo. Su ID aparece en la página de resumen: es el valor de INCEPTIONDB_DATABASE.
Crear una API key
- Elige la base de datos y abre API keys & settings.
- Pulsa New API key y ponle el nombre de la aplicación que la va a usar, como
backend-production. - Copia el secreto. Se muestra una sola vez: InceptionDB solo guarda un hash.
La consola te da las credenciales listas para usar, por ejemplo como variables de entorno:
1export INCEPTIONDB_DATABASE="your-database-id"
2export INCEPTIONDB_API_KEY="your-api-key"
3export INCEPTIONDB_API_SECRET="your-api-secret"
Una API key da acceso a todas las colecciones de su base de datos, y solo a esa base de datos.
Usarla
Envía la clave y el secreto en las cabeceras Api-Key y Api-Secret de cada petición:
curl "https://inceptiondb.hola.cloud/v1/databases/$INCEPTIONDB_DATABASE/collections" \
-H "Api-Key: $INCEPTIONDB_API_KEY" \
-H "Api-Secret: $INCEPTIONDB_API_SECRET"GET /v1/databases/$INCEPTIONDB_DATABASE/collections HTTP/1.1
Host: inceptiondb.hola.cloud
Api-Key: $INCEPTIONDB_API_KEY
Api-Secret: $INCEPTIONDB_API_SECRET
package main
import (
"fmt"
"io"
"net/http"
"os"
)
func main() {
req, err := http.NewRequest("GET", "https://inceptiondb.hola.cloud/v1/databases/" + os.Getenv("INCEPTIONDB_DATABASE") + "/collections", nil)
if err != nil {
panic(err)
}
req.Header.Set("Api-Key", os.Getenv("INCEPTIONDB_API_KEY"))
req.Header.Set("Api-Secret", os.Getenv("INCEPTIONDB_API_SECRET"))
resp, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
responseBody, err := io.ReadAll(resp.Body)
if err != nil {
panic(err)
}
fmt.Println(string(responseBody))
}
<?php
$ch = curl_init();
curl_setopt_array($ch, [
CURLOPT_URL => 'https://inceptiondb.hola.cloud/v1/databases/' . getenv('INCEPTIONDB_DATABASE') . '/collections',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_HTTPHEADER => [
'Api-Key: ' . getenv('INCEPTIONDB_API_KEY'),
'Api-Secret: ' . getenv('INCEPTIONDB_API_SECRET'),
],
]);
$response = curl_exec($ch);
if ($response === false) {
throw new Exception(curl_error($ch));
}
curl_close($ch);
echo $response;
import os
import requests
headers = {
"Api-Key": os.environ["INCEPTIONDB_API_KEY"],
"Api-Secret": os.environ["INCEPTIONDB_API_SECRET"],
}
response = requests.request(
"GET",
"https://inceptiondb.hola.cloud/v1/databases/" + os.environ["INCEPTIONDB_DATABASE"] + "/collections",
headers=headers
)
print(response.text)
const response = await fetch("https://inceptiondb.hola.cloud/v1/databases/" + process.env.INCEPTIONDB_DATABASE + "/collections", {
method: "GET",
headers: {
"Api-Key": process.env.INCEPTIONDB_API_KEY,
"Api-Secret": process.env.INCEPTIONDB_API_SECRET
}
});
console.log(await response.text());
// Fill in your values. Never put an API secret in code that runs in a public web page.
const INCEPTIONDB_DATABASE = "your-inceptiondb-database";
const INCEPTIONDB_API_KEY = "your-inceptiondb-api-key";
const INCEPTIONDB_API_SECRET = "your-inceptiondb-api-secret";
const response = await fetch("https://inceptiondb.hola.cloud/v1/databases/" + INCEPTIONDB_DATABASE + "/collections", {
method: "GET",
headers: {
"Api-Key": INCEPTIONDB_API_KEY,
"Api-Secret": INCEPTIONDB_API_SECRET
}
});
const text = await response.text();
console.log(text);
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class Main {
public static void main(String[] args) throws Exception {
var request = HttpRequest.newBuilder()
.uri(URI.create("https://inceptiondb.hola.cloud/v1/databases/" + System.getenv("INCEPTIONDB_DATABASE") + "/collections"))
.method("GET", HttpRequest.BodyPublishers.noBody())
.header("Api-Key", System.getenv("INCEPTIONDB_API_KEY"))
.header("Api-Secret", System.getenv("INCEPTIONDB_API_SECRET"))
.build();
var response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}1[{"defaults":{"id":"uuid()"},"indexes":0,"name":"customers","total":3}]
Una clave o un secreto incorrectos responden 403 Forbidden.
Mantenla segura
- Guarda el secreto en tu servidor, en variables de entorno o en un gestor de secretos. Nunca en el código, en un repositorio ni en una página web o app móvil: cualquiera que lo vea puede leer y cambiar tus datos.
- Usa una API key por aplicación o entorno. Así puedes revocar una sin afectar a las demás.
- Si un secreto se filtra, crea una clave nueva, despliégala y revoca la antigua en API keys & settings. Las claves revocadas dejan de funcionar al instante.
Owners
Los owners son los usuarios de hola.cloud que gestionan una base de datos desde la consola: sus colecciones, API keys y otros owners. Se añaden y se quitan en API keys & settings. Una base de datos siempre conserva al menos un owner, y no puedes quitarte a ti mismo.
Operaciones de cuenta y el API
Crear, renombrar y borrar bases de datos, y gestionar API keys y owners, se hace en la consola. También son endpoints HTTP (ver la referencia del API), pero necesitan la sesión de un usuario identificado: una API key no puede llamarlos. Cada acción de la consola muestra su petición: pulsa las bolas de la derecha de la pantalla.
Comentarios