> ## Documentation Index
> Fetch the complete documentation index at: https://docs.mka1.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Gestionar repositorios

> Crea y gestiona repositorios de mka1-repos — repositorios git con alcance de organización para los pesos de modelo y los conjuntos de datos que las cargas de trabajo de Compute consumen y publican.

mka1-repos es el servicio de repositorios de la plataforma para pesos de modelo y conjuntos de datos.
Cada repositorio es un repositorio git ordinario con Git LFS, propiedad de exactamente una organización e identificado por el par `<org>/<name>` — por ejemplo `acme/qwen2.5-0.5b-support`.

Ese identificador es la clave de todo.
Subes artefactos al repositorio desde tu máquina por git, y las cargas de trabajo de Compute resuelven el mismo `<org>/<name>` a través del endpoint de artefactos compatible con Hugging Face de la plataforma para entrenar con ellos o servirlos — consulta [Usar repositorios con Compute](/es/docs/repositories).

Esta guía cubre la API de gestión: crear repositorios, listarlos y leerlos, renombrarlos y eliminarlos.

## Antes de comenzar

Necesitas:

| Requisito                                             | Notas                                                                                                                                                                                                      |
| ----------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Clave de API                                          | Envíala como `Authorization: Bearer <mka1-api-key>` en cada solicitud.                                                                                                                                     |
| Rol de propietario o administrador de la organización | Todos los endpoints de repositorios están restringidos a propietarios y administradores de la organización. No hay permisos por repositorio; el acceso se decide únicamente por tu rol en la organización. |

Los repositorios siempre pertenecen a la organización de quien llama.
Nunca eliges el `org` al crear — se deriva de tu clave de API — y no puedes acceder en absoluto a los repositorios de otra organización.

## Crear un repositorio

Elige un nombre y, opcionalmente, una descripción.
El nombre debe comenzar con una letra o un dígito y tener como máximo 100 caracteres entre letras, dígitos, puntos, guiones bajos y guiones (`^[A-Za-z0-9][A-Za-z0-9._-]{0,99}$`).

<CodeGroup>
  ```ts MKA1 SDK theme={null}
  import { SDK } from '@meetkai/mka1';

  const sdk = new SDK({
    bearerAuth: 'Bearer <mka1-api-key>',
  });

  const repo = await sdk.repos.create({
    createRepoRequest: {
      name: 'qwen2.5-0.5b-support',
      description: 'Fine-tuned weights for the acme assistant.',
    },
  });
  console.log(repo.org, repo.name, repo.id);
  ```

  ```bash curl theme={null}
  curl https://apigw.mka1.com/api/v1/repos \
    --request POST \
    --header 'Content-Type: application/json' \
    --header 'Authorization: Bearer <mka1-api-key>' \
    --data '{
      "name": "qwen2.5-0.5b-support",
      "description": "Fine-tuned weights for the acme assistant."
    }'
  ```
</CodeGroup>

La respuesta es `201` con el repositorio:

```json theme={null}
{
  "id": "rqz4h6k2m5n7p9r3t5v7w9x2",
  "org": "acme",
  "name": "qwen2.5-0.5b-support",
  "description": "Fine-tuned weights for the acme assistant.",
  "created_at": "2026-07-30T09:15:00Z"
}
```

`id` es un identificador opaco y estable — la clave canónica que sobrevive a los renombrados.
`org` y `name` son las etiquetas visibles para el usuario que forman la referencia del repositorio y sus URLs.

La creación aprovisiona el repositorio git subyacente como parte de la solicitud.
Si ese aprovisionamiento falla, la creación devuelve `502 provision_failed` y no se conserva nada, por lo que es seguro reintentar.
El cuerpo de la solicitud rechaza campos desconocidos, y un nombre que ya está en uso en tu organización devuelve `409`.

## La referencia del repositorio y la URL de git

Dos valores identifican un repositorio en el resto de la plataforma:

| Valor                      | Forma                                              | Se usa para                                                                                                             |
| -------------------------- | -------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------- |
| Referencia del repositorio | `<org>/<name>`, p. ej. `acme/qwen2.5-0.5b-support` | Resolución compatible con Hugging Face dentro de las cargas de trabajo de Compute, y herramientas como ms-swift y vLLM. |
| URL de git                 | `https://git.mka1.com/<org>/<name>.git`            | `git clone`, `git push` y transferencias de Git LFS desde tus propias máquinas.                                         |

El host de git autentica con HTTP basic auth: se acepta cualquier nombre de usuario (la convención es el slug de tu organización) y la contraseña es una clave de API de MKA1.

Ambos valores son los que entregas a una carga de trabajo de Compute como variables de entorno — el recorrido completo está en [Usar repositorios con Compute](/es/docs/repositories).

## Listar repositorios

Devuelve todos los repositorios de tu organización.

<CodeGroup>
  ```ts MKA1 SDK theme={null}
  const { repos } = await sdk.repos.list({});
  for (const repo of repos) {
    console.log(`${repo.org}/${repo.name}`, repo.description);
  }
  ```

  ```bash curl theme={null}
  curl https://apigw.mka1.com/api/v1/repos \
    --header 'Authorization: Bearer <mka1-api-key>'
  ```
</CodeGroup>

```json theme={null}
{
  "repos": [
    {
      "id": "rqz4h6k2m5n7p9r3t5v7w9x2",
      "org": "acme",
      "name": "qwen2.5-0.5b-support",
      "description": "Fine-tuned weights for the acme assistant.",
      "created_at": "2026-07-30T09:15:00Z"
    },
    {
      "id": "rb8s2d4f6h8j1l3n5q7s9v2x",
      "org": "acme",
      "name": "support-conversations",
      "description": "Curated support transcripts for fine-tuning.",
      "created_at": "2026-07-28T16:40:00Z"
    }
  ]
}
```

## Obtener un repositorio

Lee un único repositorio por su referencia.

<CodeGroup>
  ```ts MKA1 SDK theme={null}
  const repo = await sdk.repos.get({
    org: 'acme',
    name: 'qwen2.5-0.5b-support',
  });
  console.log(repo.description);
  ```

  ```bash curl theme={null}
  curl https://apigw.mka1.com/api/v1/repos/acme/qwen2.5-0.5b-support \
    --header 'Authorization: Bearer <mka1-api-key>'
  ```
</CodeGroup>

Un repositorio que no existe en tu organización devuelve `404` — incluido cualquier repositorio que pertenezca a otra organización.

## Renombrar o actualizar un repositorio

Las actualizaciones son solo de etiquetas: puedes cambiar `name` y `description`, y un campo omitido se deja sin cambios.

<CodeGroup>
  ```ts MKA1 SDK theme={null}
  const repo = await sdk.repos.update({
    org: 'acme',
    name: 'qwen2.5-0.5b-support',
    patchRepoRequest: {
      name: 'qwen2.5-0.5b-support-v2',
    },
  });
  console.log(repo.name);
  ```

  ```bash curl theme={null}
  curl https://apigw.mka1.com/api/v1/repos/acme/qwen2.5-0.5b-support \
    --request PATCH \
    --header 'Content-Type: application/json' \
    --header 'Authorization: Bearer <mka1-api-key>' \
    --data '{"name": "qwen2.5-0.5b-support-v2"}'
  ```
</CodeGroup>

El `id` del repositorio es estable, así que un renombrado es una actualización de metadatos — el historial de git y los artefactos almacenados quedan intactos.
Renombrar a un nombre que ya existe en tu organización devuelve `409`.

<Warning>
  **Un renombrado cambia la referencia del repositorio y la URL de git.**

  El antiguo `<org>/<name>` deja de resolverse de inmediato.
  Actualiza cada remoto de git, cada valor de entorno `REPO`/`REPO_URL` en los cuerpos de creación de Compute y cada script de entrenamiento o de inferencia que hiciera referencia al nombre antiguo.
</Warning>

## Eliminar un repositorio

<CodeGroup>
  ```ts MKA1 SDK theme={null}
  await sdk.repos.delete({
    org: 'acme',
    name: 'qwen2.5-0.5b-support',
  });
  ```

  ```bash curl theme={null}
  curl https://apigw.mka1.com/api/v1/repos/acme/qwen2.5-0.5b-support \
    --request DELETE \
    --header 'Authorization: Bearer <mka1-api-key>'
  ```
</CodeGroup>

La respuesta es `204` sin cuerpo.
El registro del repositorio se elimina de inmediato — esa eliminación es la autoritativa — mientras que el desmantelamiento del almacenamiento git subyacente es una limpieza de mejor esfuerzo.
Una eliminación repetida de la misma referencia devuelve `404`.

<Warning>
  Eliminar un repositorio elimina el repositorio, su historial de git y todos los artefactos almacenados.
  Esto no se puede deshacer — no hay borrado lógico ni ventana de recuperación.
</Warning>

## Errores

Los endpoints de repositorios devuelven un sobre uniforme con un código estable legible por máquina y el id de correlación de la solicitud:

```json theme={null}
{
  "error": "not_found",
  "correlation_id": "c0a8f3d2-4b6e-4f1a-9c7d-2e5b8a1f6d3c"
}
```

| Estado | Código                         | Significado                                                                                                                                                            |
| ------ | ------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `400`  | `invalid_name`, `invalid_body` | Un nombre que viola el patrón, o un cuerpo malformado o con un campo desconocido (los cuerpos rechazan propiedades desconocidas).                                      |
| `401`  | `unauthorized`                 | Identidad con alcance de organización ausente o incompleta en la solicitud.                                                                                            |
| `403`  | `forbidden`                    | Quien llama no es propietario ni administrador de la organización.                                                                                                     |
| `404`  | `not_found`                    | No existe tal repositorio en tu organización — un repositorio de otra organización se reporta como `404`, nunca como `403`, de modo que su existencia nunca se filtra. |
| `409`  | `name_taken`                   | El nombre ya está en uso en tu organización (al crear o renombrar).                                                                                                    |
| `500`  | `internal`                     | Un error inesperado del lado del servidor.                                                                                                                             |
| `502`  | `provision_failed`             | El repositorio git subyacente no pudo crearse; el repositorio no se conservó, así que reintenta la creación.                                                           |
| `503`  | `org_unresolved`               | El gateway no pudo resolver tu organización; reintenta y contacta a soporte si persiste.                                                                               |

## Referencia de API

Para ver el esquema completo de solicitud y respuesta, abre los grupos de Repositorios en la [Referencia de API](/es/api-reference/introduction).

## Ver también

* [Usar repositorios con Compute](/es/docs/repositories) - sube pesos y conjuntos de datos, y luego entrena o sirve a partir de ellos.
* [Ejecutar un trabajo de ajuste fino](/es/docs/compute-fine-tune-job) - publica pesos fusionados en un repositorio desde un trabajo de entrenamiento.
* [Desplegar un servidor de modelos](/es/docs/compute-deployment) - sirve pesos directamente desde un repositorio con vLLM.
