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

# Commit et upload

> Envoyez une nouvelle application sur Square Cloud ou committez de nouveaux fichiers vers une application existante.

## Envoyer une nouvelle application

`api.applications.create(file)` envoie un zip et crée une toute nouvelle application. L'argument `file` est soit un chemin de fichier local, soit un `Buffer`.

```typescript theme={null}
import { SquareCloudAPI } from "@squarecloud/api";
import { join } from "node:path";

const api = new SquareCloudAPI(process.env.SQUARE_API_KEY!);

const result = await api.applications.create(join(__dirname, "my-app.zip"));

console.log(result.id);   // ID de l'application nouvellement créée
console.log(result.name); // nom d'affichage
console.log(result.lang); // slug du langage (e.g. "javascript")
console.log(result.ram);  // RAM allouée en Mo
```

Le zip doit contenir au minimum :

* **Fichier principal** — point d'entrée de votre application
* **Fichier de dépendances** — `package.json`, `requirements.txt`, etc.
* **`squarecloud.app`** — fichier de configuration avec le nom, la description, le fichier principal, la version, etc. Consultez le [guide du fichier de configuration](/fr/getting-started/config-file)

## Committer des fichiers vers une application existante

`app.commit(file, fileName?)` envoie des fichiers dans une application déjà déployée. Passez un zip pour remplacer plusieurs fichiers à la fois, ou un seul fichier pour ne mettre à jour que celui-ci.

| Paramètre  | Type               | Description                                                                                                             |
| ---------- | ------------------ | ----------------------------------------------------------------------------------------------------------------------- |
| `file`     | `string \| Buffer` | Chemin de fichier local ou contenu `Buffer`                                                                             |
| `fileName` | `string?`          | Nom associé à l'envoi. Un `.zip` est extrait sur le serveur ; toute autre extension est écrite comme un fichier unique. |

<Tabs>
  <Tab title="Committer un seul fichier (Buffer)">
    ```typescript theme={null}
    const content = Buffer.from("console.log('hello')\n");
    await app.commit(content, "index.js");
    ```
  </Tab>

  <Tab title="Committer un zip depuis le disque">
    ```typescript theme={null}
    import { readFile } from "node:fs/promises";

    const zip = await readFile("./dist.zip");
    await app.commit(zip, "dist.zip");
    ```
  </Tab>

  <Tab title="Committer un fichier par chemin">
    ```typescript theme={null}
    import { join } from "node:path";

    const filePath = join(__dirname, "index.js");
    await app.commit(filePath, "index.js");
    ```
  </Tab>
</Tabs>

<Warning>
  En v3, `commit()` acceptait un troisième argument `restart`. **En v4, ce troisième paramètre a été supprimé** — utilisez `app.restart()` après le commit si vous avez besoin d'un redémarrage.
</Warning>

```typescript theme={null}
await app.commit(zip, "dist.zip");
await app.restart();
```
