# Repository Besides providing a RESTful API, the Vieter server is also a Pacman-compatible repository server. This section describes the various routes that make this possible. ## Get a package archive or database file ```shell curl -L https://example.com/bur/x86_64/tuxedo-keyboard-3.0.10-1-x86_64.pkg.tar.zst ``` This endpoint is really the entire repository. It serves both the package archives & the database files for a specific arch-repo. It has three different behaviors, depending on `filename`: * If the file extension is one of `.db`, `.files`, `.db.tar.gz` or `.files.tar.gz`, it tries to serve the requested database file. * If the filename contains `.pkg`, it serves the package file. * Otherwise, it assumes `filename` is the name & version of a package inside the repository (e.g. `vieter-0.3.0_alpha.2-1`) & serves that package's `desc` file from inside the database archive. ### HTTP Request `GET /:repo/:arch/:filename` ### URL Parameters Parameter | Description --------- | ----------- repo | Repository containing the package arch | Arch-repo containing the package filename | actual filename to request ## Check whether file exists ```shell curl -L https://example.com/bur/x86_64/tuxedo-keyboard-3.0.10-1-x86_64.pkg.tar.zst ``` The above request can also be performed as a HEAD request. The behavior is the same, except no data is returned besides an error 404 if the file doesn't exist & an error 200 otherwise. ### HTTP Request `GET /:repo/:arch/:filename` ### URL Parameters Parameter | Description --------- | ----------- repo | Repository containing the package arch | Arch-repo containing the package filename | actual filename to request ## Publish package ```shell curl \ -H 'X-Api-Key: secret' \ -XPOST \ -T tuxedo-keyboard-3.0.10-1-x86_64.pkg.tar.zst \ https://example.com/some-repo/publish ``` This endpoint allows you to publish a new package archive to a given repo. If the package's architecture is not `any`, it is added to that specific arch-repo. Otherwise, it is added to the configured default architecture & any other already present arch-repos. ### HTTP Request `POST /:repo/publish` ### URL Parameters Parameter | Description --------- | ----------- repo | Repository to publish package to ## Remove package from arch-repo ```shell curl \ -H 'X-Api-Key: secret' \ -XDELETE \ https://example.com/vieter/x86_64/mike ``` This endpoint allows you to remove a package from a given arch-repo. ### HTTP Request `DELETE /:repo/:arch/:pkg` ### URL Parameters Parameter | Description --------- | ----------- repo | Repository to delete package from arch | Specific arch-repo to remove package from pkg | Name of package to remove (without any version information) ## Remove arch-repo ```shell curl \ -H 'X-Api-Key: secret' \ -XDELETE \ https://example.com/vieter/x86_64 ``` This endpoint allows removing an entire arch-repo. ### HTTP Request `DELETE /:repo/:arch` ### URL Parameters Parameter | Description --------- | ----------- repo | Repository to delete arch-repo from arch | Specific architecture to remove ## Remove repo ```shell curl \ -H 'X-Api-Key: secret' \ -XDELETE \ https://example.com/vieter ``` This endpoint allows removing an entire repo. ### HTTP Request `DELETE /:repo` ### URL Parameters Parameter | Description --------- | ----------- repo | Repository to delete