# API

> 💡 **Desarrolladores de Python:** Usen el oficial [SDK de Python de clore-ai](https://docs.clore.ai/clore.ai/clore.ai-eng-es/desarrolladores/python-sdk) en lugar de llamadas directas a la API. Maneja autenticación, limitación de tasa, reintentos y manejo de errores automáticamente.
>
> **Inicio rápido:** `pip install clore-ai` — Vea el [documentación del SDK de Python](https://docs.clore.ai/clore.ai/clore.ai-eng-es/desarrolladores/python-sdk) y [Referencia de la CLI](https://docs.clore.ai/clore.ai/clore.ai-eng-es/desarrolladores/cli-guide).

<div data-full-width="true"><figure><img src="https://2330542932-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FbyNlC5NV8aIpXnc76G7w%2Fuploads%2FoEhopGeayaKnbuDjgTEs%2FCLORE%20Docs%20API%20Page.png?alt=media&#x26;token=a0adf6bb-1fde-4f1b-8236-dff2563ffbfd" alt=""><figcaption></figcaption></figure></div>

### Introducción <a href="#introduction" id="introduction"></a>

[CLORE.AI](http://clore.ai/) la API puede usarse para automatizar despliegues de sus cargas de trabajo en [CLORE.AI](http://clore.ai/)

Primero necesita obtener una clave de API\
![alt text](https://clore.ai/assets/html/api-export1.png)\
![alt text](https://clore.ai/assets/html/api-export2.png)

***

### Respuestas de la API <a href="#api-responses" id="api-responses"></a>

Las respuestas se devuelven en formato JSON, pueden tener diferentes campos

El campo siempre devuelto es code, que indica el estado

**campo code**

| código | Descripción                               |
| ------ | ----------------------------------------- |
| `0`    | NORMAL                                    |
| `1`    | ERROR DE BASE DE DATOS                    |
| `2`    | DATOS DE ENTRADA INVÁLIDOS                |
| `3`    | TOKEN DE API INVÁLIDO                     |
| `4`    | PUNTO FINAL INVÁLIDO                      |
| `5`    | EXCEDIDO el límite de 1 solicitud/segundo |
| `6`    | Error especificado en `error` campo       |

***

### Puntos finales <a href="#endpoints" id="endpoints"></a>

#### 1. `billeteras` <a href="#id-1-wallets" id="id-1-wallets"></a>

**Acerca de**

Devuelve billeteras y saldos

**Encabezados**

| Campo  | Tipo     | Obligatorio | Descripción  |
| ------ | -------- | ----------- | ------------ |
| `auth` | `cadena` | Sí          | Token de API |

**Salida**

| Campo        | Tipo       | Descripción         |
| ------------ | ---------- | ------------------- |
| `código`     | `int`      | Código de estado    |
| `billeteras` | `[]string` | Array de billeteras |

**Ejemplo**

**Entrada:**

```
curl -XGET -H 'auth: b8qwqRAL5W7YDyDJeB4XANVvKndbrrPk' 'https://api.clore.ai/v1/wallets'
```

**Salida:**

```
{
  "wallets": [
    {
      "name": "bitcoin",
      "deposit": "tb1q6erw7v02t7hakgmlcl4wfnlykzqj05alndruwr",
      "balance": 0.00153176,
      "withdrawal_fee": 0.0001
    }
  ],
  "code": 0
}
```

#### 2. `mis_servidores` <a href="#id-2-my_servers" id="id-2-my_servers"></a>

**Acerca de**

Devuelve sus servidores que usted está proporcionando a [clore.ai](http://clore.ai/) mercado

**Encabezados**

| Campo  | Tipo     | Obligatorio | Descripción  |
| ------ | -------- | ----------- | ------------ |
| `auth` | `cadena` | Sí          | Token de API |

**Salida**

| Campo                            | Tipo       | Descripción                                                         |
| -------------------------------- | ---------- | ------------------------------------------------------------------- |
| `código`                         | `int`      | Código de estado                                                    |
| `límite`                         | `int`      | Número máximo de servidores que puede poseer                        |
| `servidores`                     | `[]string` | Array de servidores                                                 |
| `servidores[x].name`             | `cadena`   | Nombre del servidor seleccionado por el usuario                     |
| `servidores[x].connected`        | `cadena`   | Si el servidor alguna vez se conectó a [clore.ai](http://clore.ai/) |
| `servidores[x].visibility`       | `cadena`   | Visibilidad en el mercado                                           |
| `servidores[x].pricing`          | `[]string` | Precio/día bajo demanda                                             |
| `servidores[x].online`           | `bool`     | El servidor está en línea                                           |
| `servidores[x].min_spot_pricing` | `[]string` | Precio mínimo/día para alquilar en el mercado spot                  |
| `servidores[x].init_token`       | `cadena`   | Token de inicialización                                             |
| `servidores[x].specs`            | `[]string` | Especificaciones del servidor                                       |

**Ejemplo**

**Entrada:**

```
curl -XGET -H 'auth: b8qwqRAL5W7YDyDJeB4XANVvKndbrrPk' 'https://api.clore.ai/v1/my_servers'
```

**Salida:**

```
{
  "servers": [
    {
      "name": "Michael",
      "connected": false,
      "visibility": "hidden",
      "pricing": { "bitcoin": 0, "usd": 0 },
      "online": false,
      "min_spot_pricing": { "bitcoin": 0, "usd": 0 },
      "init_token": "qnwVIMsZPjUWS7jw6gAbTOeoGQNgTH9XVxJaiCEbG0OlmfjF"
    },
    {
      "name": "Jan Vykydal",
      "connected": true,
      "visibility": "public",
      "pricing": { "bitcoin": 0.00010337, "usd": 0 },
      "online": false,
      "min_spot_pricing": { "bitcoin": 0.00005168, "usd": 0 },
      "specs": {
        "mb": "Z590 GAMING X",
        "cpu": "Intel Core i9-11900",
        "cpus": "8/16",
        "ram": 64,
        "disk": "NVMe 512GB",
        "disk_speed": 2000,
        "gpu": "1x GeForce GTX 1080 Ti",
        "gpuram": 11,
        "net": {
          "down":119.61,
          "up":25.24
        }
      }
    }
  ],
  "limit": 16,
  "code": 0
}
```

**\*USD aún no implementado**

#### 3. `config_servidor` <a href="#id-3-server_config" id="id-3-server_config"></a>

**Acerca de**

Obtener la configuración de un servidor específico

**Encabezados**

| Campo          | Tipo     | Obligatorio | Descripción                 |
| -------------- | -------- | ----------- | --------------------------- |
| `auth`         | `cadena` | Sí          | Token de API                |
| `Content-type` | `cadena` | Sí          | Debe ser `application/json` |

**Cuerpo**

| Campo         | Tipo     | Obligatorio | Descripción         |
| ------------- | -------- | ----------- | ------------------- |
| `server_name` | `cadena` | Sí          | Nombre del servidor |

**Salida**

| Campo                   | Tipo       | Descripción                                                                  |
| ----------------------- | ---------- | ---------------------------------------------------------------------------- |
| `código`                | `int`      | Código de estado                                                             |
| `creation_completed`    | `bool`     | La creación del servidor está completa                                       |
| `config`                | `[]string` | Configuración del servidor                                                   |
| `config.name`           | `cadena`   | Nombre del servidor seleccionado por el usuario                              |
| `config.connected`      | `bool`     | Si el servidor alguna vez se conectó a [clore.ai](http://clore.ai/)          |
| `config.visibility`     | `cadena`   | Visibilidad en el mercado                                                    |
| `config.pricing`        | `[]string` | Precio/día bajo demanda                                                      |
| `config.spot_pricing`   | `[]string` | Precio mínimo/día para alquilar en el mercado spot                           |
| `config.mrl`            | `int`      | Duración máxima de alquiler en horas                                         |
| `config.online`         | `bool`     | El servidor está en línea                                                    |
| `config.initialized`    | `bool`     | Si el servidor alguna vez se conectó a [clore.ai](http://clore.ai/)          |
| `config.id`             | `int`      | ID único del servidor                                                        |
| `config.rental_status`  | `int`      | 0 - no alquilado \| 1 - Alquilado en mercado spot \| 2 - Alquilado On Demand |
| `config.specs`          | `[]string` | Especificaciones del servidor                                                |
| `config.background_job` | `[]string` | Trabajo en segundo plano cuando no está alquilado                            |

**Ejemplo**

**Entrada:**

```
curl -XGET -H 'auth: b8qwqRAL5W7YDyDJeB4XANVvKndbrrPk' -H "Content-type: application/json" -d '{
    "server_name":"Jan Vykydal"
}' 'https://api.clore.ai/v1/server_config'
```

**Salida:**

```
{
  "config": {
    "name": "Jan Vykydal",
    "connected": true,
    "visibility": "public",
    "pricing": { "bitcoin": 0.00010337, "usd": 0 },
    "spot_pricing": { "bitcoin": 0.00005168, "usd": 0 },
    "mrl": 72,
    "online": false,
    "initialized": true,
    "id": 4,
    "rental_status": 0,
    "specs": {
      "mb": "Z590 GAMING X",
      "cpu": "Intel Core i9-11900",
      "cpus": "8/16",
      "ram": 64,
      "disk": "NVMe 512GB",
      "disk_speed": 2000,
      "gpu": "1x GeForce GTX 1080 Ti",
      "gpuram": 11,
      "net": {
        "down":119.61,
        "up":25.24
      }
    },
    "background_job": {
      "times_updated": 1,
      "image": "cloreai/ubuntu20.04-jupyter",
      "command": "",
      "env": []
    }
  },
  "creation_completed": true,
  "code": 0
}
```

**\*USD aún no implementado**

#### 4. `mercado` <a href="#id-4-marketplace" id="id-4-marketplace"></a>

**Acerca de**

Obtener mercado

**Encabezados**

| Campo  | Tipo     | Obligatorio | Descripción  |
| ------ | -------- | ----------- | ------------ |
| `auth` | `cadena` | Sí          | Token de API |

**Salida**

| Campo                        | Tipo       | Descripción                                                                                                     |
| ---------------------------- | ---------- | --------------------------------------------------------------------------------------------------------------- |
| `código`                     | `int`      | Código de estado                                                                                                |
| `mis_servidores`             | `[]string` | Array de IDs de servidores que usted está proporcionando a [clore.ai](http://clore.ai/) (no se pueden alquilar) |
| `servidores`                 | `[]string` | Array de servidores públicos en el mercado                                                                      |
| `servers[x].id`              | `int`      | ID único del servidor                                                                                           |
| `servers[x].owner`           | `int`      | ID único del propietario                                                                                        |
| `servers[x].mrl`             | `int`      | Duración máxima de alquiler en horas                                                                            |
| `servers[x].price.on_demand` | `[]string` | Precio bajo demanda por día                                                                                     |
| `servers[x].spot`            | `[]string` | Precio mínimo del mercado spot por día                                                                          |
| `servers[x].rented`          | `bool`     | Si el servidor está alquilado bajo demanda                                                                      |
| `servidores[x].specs`        | `[]string` | Especificaciones del servidor                                                                                   |

**Ejemplo**

Obtener mercado

**Entrada:**

```
curl -XGET -H 'auth: b8qwqRAL5W7YDyDJeB4XANVvKndbrrPk' 'https://api.clore.ai/v1/marketplace'
```

**Salida:**

```
{
  "servers": [
    {
      "id": 6,
      "owner": 4,
      "mrl": 73,
      "price": { "on_demand": { "bitcoin": 0.00001 },
      "spot": { "bitcoin": 0.000001 }},
      "rented": false,
      "specs": {
        "mb": "Z590 GAMING X",
        "cpu": "11th Gen Intel(R) Core(TM) i9-11900 @ 2.50GHz",
        "cpus": "8/16",
        "ram": 62.67348861694336,
        "disk": "NVMe disk 247.3623046875GB",
        "disk_speed": 0,
        "gpu": "1x NVIDIA GeForce GTX 1080 Ti",
        "gpuram": 11,
        "net": {
          "up": 26.38,
          "down": 118.42,
          "cc": "CZ"
        }
      }
    }
  ],
  "my_servers": [1, 2, 4],
  "code": 0
}
```

#### 5. `mis_pedidos` <a href="#id-5-my_orders" id="id-5-my_orders"></a>

**Acerca de**

Obtener sus pedidos

**Encabezados**

| Campo  | Tipo     | Obligatorio | Descripción  |
| ------ | -------- | ----------- | ------------ |
| `auth` | `cadena` | Sí          | Token de API |

**Cadena de consulta**

| Campo              | Tipo   | Obligatorio | Descripción                              |
| ------------------ | ------ | ----------- | ---------------------------------------- |
| `return_completed` | `bool` | No          | Devolver pedidos completados (expirados) |

**Salida**

| Campo                    | Tipo       | Descripción                                                |
| ------------------------ | ---------- | ---------------------------------------------------------- |
| `código`                 | `int`      | Código de estado                                           |
| `límite`                 | `int`      | Recuento máximo de pedidos activos                         |
| `pedidos`                | `[]string` | Array de pedidos                                           |
| `orders[x].id`           | `int`      | ID único de pedido                                         |
| `orders[x].fee`          | `float`    | Comisión (%) pagada a [clore.ai](http://clore.ai/)         |
| `orders[x].creation_fee` | `float`    | Comisión de creación pagada a [clore.ai](http://clore.ai/) |
| `orders[x].price`        | `float`    | Precio del pedido (coste) por día                          |
| `orders[x].mrl`          | `int`      | Duración máxima de alquiler del pedido en segundos         |
| `orders[x].image`        | `cadena`   | Imagen docker utilizada                                    |
| `orders[x].currency`     | `cadena`   | Moneda usada para facturación                              |
| `orders[x].spend`        | `float`    | Dinero gastado en el pedido                                |
| `orders[x].ct`           | `int`      | Hora de creación (tiempo UNIX)                             |
| `orders[x].p`            | `int`      | Clúster proxy actualmente usado                            |
| `orders[x].specs`        | `[]string` | Especificaciones del servidor                              |
| `orders[x].si`           | `int`      | ID único del servidor                                      |
| `orders[x].pub_cluster`  | `[]string` | Puntos finales públicos con puertos reenviados             |
| `orders[x].tcp_ports`    | `[]string` | Reenvío de puertos TCP                                     |
| `orders[x].http_port`    | `cadena`   | Puerto del contenedor reenviado a través del proxy HTTPS   |
| `orders[x].spot`         | `bool`     | Indicación de que es un pedido spot                        |
| `orders[x].expired`      | `bool`     | Indicación de que el pedido ha expirado                    |

**Entrada:**

```
curl -XGET -H 'auth: b8qwqRAL5W7YDyDJeB4XANVvKndbrrPk' 'https://api.clore.ai/v1/my_orders?return_completed=true'
```

**Salida:**

```
{
  "orders": [
    {
      "id": 38,
      "fee": 5,
      "creation_fee": 3e-7,
      "price": 0.00001,
      "mrl": 262800,
      "image": "cloreai/ubuntu20.04-jupyter",
      "currency": "bitcoin",
      "spend": 6.944444444444445e-9,
      "ct": 1667401396,
      "p": 1,
      "specs": {
        "mb": "Z590 GAMING X",
        "cpu": "11th Gen Intel(R) Core(TM) i9-11900 @ 2.50GHz",
        "cpus": "8/16",
        "ram": 62.67348861694336,
        "disk": "NVMe disk 247.3623046875GB",
        "disk_speed": 2000,
        "gpu": "1x NVIDIA GeForce GTX 1080 Ti",
        "gpuram": 11,
        "net": {
          "up": 26.38,
          "down": 118.42,
        }
      },
      "si": 6,
      "pub_cluster": [ "n1.c1.clorecloud.net", "n2.c1.clorecloud.net" ],
      "tcp_ports": [ "22:10000" ],
      "http_port": "8888"
    },{
      "id": 36,
      "fee": 2.5,
      "creation_fee": 1e-7,
      "price": 0.00001,
      "mrl": 262800,
      "image": "cloreai/ubuntu20.04-jupyter",
      "currency": "bitcoin",
      "spend": 1.3888888888888888e-7,
      "ct": 1667248597,
      "specs": {
        "mb": "Z590 GAMING X",
        "cpu": "11th Gen Intel(R) Core(TM) i9-11900 @ 2.50GHz",
        "cpus": "8/16",
        "ram": 62.67348861694336,
        "disk": "NVMe disk 247.3623046875GB",
        "disk_speed": 2000,
        "gpu": "1x NVIDIA GeForce GTX 1080 Ti",
        "gpuram": 11,
        "net": {
          "up": 26.38,
          "down": 118.42,
        }
      },
      "si": 6,
      "spot": true,
      "expired": true,
      "tcp_ports": []
    }
  ],
  "limit": 13,
  "code": 0
}
```

#### 6. `mercado_spot` <a href="#id-6-spot_marketplace" id="id-6-spot_marketplace"></a>

**Acerca de**

Obtener mercado spot para un servidor específico

**Encabezados**

| Campo  | Tipo     | Obligatorio | Descripción  |
| ------ | -------- | ----------- | ------------ |
| `auth` | `cadena` | Sí          | Token de API |

**Cadena de consulta**

| Campo     | Tipo  | Obligatorio | Descripción           |
| --------- | ----- | ----------- | --------------------- |
| `mercado` | `int` | Sí          | ID único del servidor |

**Salida**

| Campo                       | Tipo     | Descripción                                               |
| --------------------------- | -------- | --------------------------------------------------------- |
| `código`                    | `int`    | Código de estado                                          |
| `existe`                    | `bool`   | Verificación de que el mercado existe                     |
| `mercado`                   | `objeto` | Mercado                                                   |
| `market.offers`             | `array`  | Ofertas de alquiler para el servidor                      |
| `market.offers[x].offer_id` | `int`    | ID único de oferta                                        |
| `market.offers[x].bid`      | `float`  | Precio ofrecido por día                                   |
| `market.offers[x].active`   | `bool`   | Esta oferta está siendo usada actualmente                 |
| `market.offers[x].my`       | `bool`   | Esta oferta es mía                                        |
| `market.server`             | `objeto` | Información del servidor                                  |
| `market.server.min_pricing` | `objeto` | Precio mínimo de oferta por día                           |
| `market.server.mrl`         | `int`    | Duración máxima de alquiler en segundos                   |
| `market.server.visibility`  | `cadena` | Puede crear ofertas solo cuando la visibilidad es pública |
| `market.server.online`      | `bool`   | El servidor está en línea                                 |

**Entrada:**

```
curl -XGET -H 'auth: b8qwqRAL5W7YDyDJeB4XANVvKndbrrPk' 'https://api.clore.ai/v1/spot_marketplace?market=6'
```

**Salida:**

```
{
  "market": {
    "offers": [
      {
        "offer_id": 39,
        "bid": 0.0000042,
        "active": true,
        "my": true
      }
    ],
    "server": {
      "min_pricing": {
        "bitcoin": 0.000001
      },
      "mrl": 262800,
      "visibility": "public",
      "online": true
    }
  },
  "exists": true,
  "code": 0
}
```

#### 7. `set_server_settings` <a href="#id-7-set_server_settings" id="id-7-set_server_settings"></a>

**Acerca de**

Configurar ajustes del servidor que está proporcionando en [clore.ai](http://clore.ai/) mercado

**Encabezados**

| Campo          | Tipo     | Obligatorio | Descripción                 |
| -------------- | -------- | ----------- | --------------------------- |
| `auth`         | `cadena` | Sí          | Token de API                |
| `Content-type` | `cadena` | Sí          | Debe ser `application/json` |

**Cuerpo**

| Campo            | Tipo     | Obligatorio | Descripción                                     |
| ---------------- | -------- | ----------- | ----------------------------------------------- |
| `nombre`         | `cadena` | Sí          | Nombre del servidor seleccionado por el usuario |
| `disponibilidad` | `bool`   | Sí          | Puede el servidor ser alquilado                 |
| `mrl`            | `int`    | Sí          | Duración máxima de alquiler del servidor        |
| `on_demand`      | `float`  | Sí          | Precio por día para su servidor bajo demanda    |
| `spot`           | `float`  | Sí          | Precio mínimo por día para oferta SPOT          |

**Salida**

| Campo    | Tipo  | Descripción      |
| -------- | ----- | ---------------- |
| `código` | `int` | Código de estado |

**Ejemplo**

Vamos a crear una prueba de envío para una transacción enviada desde la billetera actual.

**Entrada:**

```
curl -XPOST -H 'auth: b8qwqRAL5W7YDyDJeB4XANVvKndbrrPk' -H "Content-type: application/json" -d '{
    "name": "Jan Vykydal",
    "availability":true,
    "mrl":96,
    "on_demand":0.0001,
    "spot":0.00000113
}' 'https://api.clore.ai/v1/set_server_settings'
```

**Salida:**

```
{
  "code": 0
}
```

#### 8. `set_spot_price` <a href="#id-8-set_spot_price" id="id-8-set_spot_price"></a>

**Acerca de**

Establecer precio por día en su oferta del mercado SPOT

**Encabezados**

| Campo          | Tipo     | Obligatorio | Descripción                 |
| -------------- | -------- | ----------- | --------------------------- |
| `auth`         | `cadena` | Sí          | Token de API                |
| `Content-type` | `cadena` | Sí          | Debe ser `application/json` |

**Cuerpo**

| Campo           | Tipo    | Obligatorio | Descripción                |
| --------------- | ------- | ----------- | -------------------------- |
| `order_id`      | `int`   | Sí          | ID único de oferta         |
| `desired_price` | `float` | Sí          | Su precio ofrecido por día |

**Ejemplo**

Intentemos actualizar el precio del mercado spot

**Entrada 1 (La reducción fue demasiado grande):**

```
curl -XPOST -H 'auth: b8qwqRAL5W7YDyDJeB4XANVvKndbrrPk' -H "Content-type: application/json" -d '{
    "order_id":39,
    "desired_price":0.00000200
}' 'https://api.clore.ai/v1/set_spot_price'
```

**Salida posible 1 (La reducción fue demasiado grande):**\
Puede reducir el precio de la oferta del mercado spot como máximo 0.00000100 ₿

| Campo      | Tipo     | Descripción                                                       |
| ---------- | -------- | ----------------------------------------------------------------- |
| `código`   | `int`    | Código de estado                                                  |
| `error`    | `cadena` | Campo de descripción del error                                    |
| `max_step` | `float`  | Valor más bajo posible al que actualmente puede reducir el precio |

```
{
    "error":"exceeded_max_step",
    "max_step":0.0000032,
    "code":6
}
```

**Entrada 2 (Paso de precio válido):**

```
curl -XPOST -H 'auth: b8qwqRAL5W7YDyDJeB4XANVvKndbrrPk' -H "Content-type: application/json" -d '{
    "order_id":39,
    "desired_price":0.00000320
}' 'https://api.clore.ai/v1/set_spot_price'
```

**Salida posible 2 (Paso de precio válido):**

```
{
    "code": 0
}
```

**Entrada 3 (Bajar el precio aún más después de enviar la Entrada 2):**

```
curl -XPOST -H 'auth: b8qwqRAL5W7YDyDJeB4XANVvKndbrrPk' -H "Content-type: application/json" -d '{
    "order_id":39,
    "desired_price":0.00000220
}' 'https://api.clore.ai/v1/set_spot_price
```

**Salida posible 3 (Bajar el precio aún más después de enviar la Entrada 2):**\
Puede bajar el precio spot una vez cada 600 segundos

| Campo              | Tipo     | Descripción                                                            |
| ------------------ | -------- | ---------------------------------------------------------------------- |
| `código`           | `int`    | Código de estado                                                       |
| `error`            | `cadena` | Campo de descripción del error                                         |
| `time_to_lowering` | `float`  | Tiempo restante (seg) para la siguiente posibilidad de bajar el precio |

```
{
    "error":"can_lower_every_600_seconds",
    "time_to_lowering":513,
    "code":6
}
```

#### 9. `cancel_order` <a href="#id-9-cancel_order" id="id-9-cancel_order"></a>

**Acerca de**

Establecer precio por día en su oferta del mercado SPOT

**Encabezados**

| Campo          | Tipo     | Obligatorio | Descripción                 |
| -------------- | -------- | ----------- | --------------------------- |
| `auth`         | `cadena` | Sí          | Token de API                |
| `Content-type` | `cadena` | Sí          | Debe ser `application/json` |

**Cuerpo**

| Campo   | Tipo     | Obligatorio | Descripción                                                                                                                     |
| ------- | -------- | ----------- | ------------------------------------------------------------------------------------------------------------------------------- |
| `id`    | `int`    | Sí          | ID único de pedido/oferta                                                                                                       |
| `issue` | `cadena` | No          | Si ha encontrado algún problema con el servidor puede reportarlo al [clore.ai](http://clore.ai/) equipo, máximo 2048 caracteres |

**Salida**

| Campo    | Tipo  | Descripción      |
| -------- | ----- | ---------------- |
| `código` | `int` | Código de estado |

**Ejemplo**

Cancelar pedido/oferta

**Entrada:**\
En este ejemplo estamos reportando problemas con la GPU #1, si no tiene problemas, no incluya el campo issue.\
Puede escribir cualquier mensaje en el campo de texto y lo investigaremos

```
curl -XPOST -H 'auth: b8qwqRAL5W7YDyDJeB4XANVvKndbrrPk' -H "Content-type: application/json" -d '{
    "id":39,
    "issue":"GPU #1 Se sobrecalentaba y reducÍa rendimiento"
}' 'https://api.clore.ai/v1/cancel_order'
```

**Salida:**

```
{
  "code": 0
}
```

#### 10. `create_order` <a href="#id-10-create_order" id="id-10-create_order"></a>

**Acerca de**

Puede crear oferta spot o pedido bajo demanda con este punto final\
Este punto final también permite solo 1 solicitud cada 5 segundos

**Encabezados**

| Campo          | Tipo     | Obligatorio | Descripción                 |
| -------------- | -------- | ----------- | --------------------------- |
| `auth`         | `cadena` | Sí          | Token de API                |
| `Content-type` | `cadena` | Sí          | Debe ser `application/json` |

**Cuerpo**

| Campo                | Tipo     | Obligatorio | Descripción                                                                                                                                                                                     |
| -------------------- | -------- | ----------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `moneda`             | `cadena` | Sí          | Nombre de la moneda                                                                                                                                                                             |
| `imagen`             | `cadena` | Sí          | Imagen válida de dockerhub                                                                                                                                                                      |
| `renting_server`     | `int`    | Sí          | ID del servidor que desea alquilar                                                                                                                                                              |
| `tipo`               | `cadena` | Sí          | `bajo_demanda` O `spot`                                                                                                                                                                         |
| `spotprice`          | `float`  | Depende     | Precio ofrecido por día en el mercado spot, requerido al hacer un pedido spot                                                                                                                   |
| `puertos`            | `objeto` | No          | Configuración de reenvío de puertos, máximo 5 entradas                                                                                                                                          |
| `env`                | `objeto` | No          | <p>Variables de entorno, limitadas a 12000 caracteres en total cuando se convierten a cadena.<br>Nombre de la variable - máximo 128 símbolos<br>Valor de la variable - máximo 1536 símbolos</p> |
| `jupyter_token`      | `cadena` | No          | Token de Jupyter para imágenes que tienen cuadernos jupyter, máximo 32 caracteres \*                                                                                                            |
| `ssh_key`            | `cadena` | No          | Clave SSH para imágenes con SSH, máximo 3072 caracteres \*                                                                                                                                      |
| `ssh_password`       | `cadena` | No          | Contraseña SSH para imágenes con SSH, máximo 32 caracteres \*                                                                                                                                   |
| `comando`            | `cadena` | No          | El comando se ejecutará en el servidor después de la creación del pedido                                                                                                                        |
| `precio_requerido`   | `float`  | No          | Especifique el precio por el que desea iniciar el pedido, si el propietario de la máquina cambia el precio, entonces el pedido no se iniciará (solo bajo demanda)                               |
| `autossh_entrypoint` | `bool`   | No          | Use el entrypoint de clore.ai, que despliega automáticamente el servidor SSH y el personalizado `/root/onstart.sh` script                                                                       |

\* En los campos marcados con estrella solo puede ingresar caracteres de este grupo regexp `/^[a-zA-Z0-9\s-=.@+/]+$/`

**Salida**

| Campo    | Tipo  | Descripción      |
| -------- | ----- | ---------------- |
| `código` | `int` | Código de estado |

**Ejemplo**

**Entrada 1 (Crear oferta spot):**

```
curl -XPOST -H 'auth: 6FcuR7ibcwKR1Z32lEFoSotzUUtzKO2H' -H "Content-type: application/json" -d '
{
    "currency":"bitcoin",
    "image":"cloreai/ubuntu20.04-jupyter",
    "renting_server":6,
    "type":"spot",
    "spotprice":0.000001,
    "ports":{
        "22":"tcp",
        "8888":"http"
    },
    "env":{
        "VARIABLE_NAME":"VARIABLE_VALUE",
    },
    "jupyter_token":"hoZluOjbCOQ5D5yH7R",
    "ssh_password":"Hpcj08ZaOpCbTmn1Eu",
    "command":"#!/bin/sh\napt update -y && apt install htop"
}' 'https://api.clore.ai/v1/create_order'
```

**Salida 1 (Crear oferta spot):**

```
{
  "code":0
}
```

**Entrada 2 (Crear pedido bajo demanda):**

```
curl -XPOST -H 'auth: 6FcuR7ibcwKR1Z32lEFoSotzUUtzKO2H' -H "Content-type: application/json" -d '
{
    "currency":"bitcoin",
    "image":"cloreai/ubuntu20.04-jupyter",
    "renting_server":6,
    "type":"bajo-demanda",
    "ports":{
        "22":"tcp",
        "8888":"http"
    },
    "env":{
        "VARIABLE_NAME":"VARIABLE_VALUE",
    },
    "jupyter_token":"hoZluOjbCOQ5D5yH7R",
    "ssh_password":"Hpcj08ZaOpCbTmn1Eu",
    "command":"#!/bin/sh\napt update -y && apt install htop"
}' 'https://api.clore.ai/v1/create_order'
```

**Salida 2 (Crear pedido bajo demanda):**

```
{
  "code":0
}
```
