# ArchiveOverCLI

# ArchiveOverCLI

Lehetőség van az archiválást nem csak a webes felületen keresztül használni. Erre a célra ki lett alakítva egy RESTAPI interfész, amin keresztül elérhetőek a szükséges funkciók.

Az API használatát segédletekkel megtalálhatod [https://api.archiver.niif.hu/?help](https://api.archiver.niif.hu/?help) oldalon.

A használathoz szükséges *token* a webes felületen a [*Token*](https://archiver.niif.hu/hu/archiver/token) fül alatt érhető el.

## Funkcionalitások kivonatolt segédlete:

### Szalag műveletek

* útvonal: **<big>/tape</big>**
    * *<big>GET</big>* - lekérdezhető az elérhető szalagok azonosítói
        *  paraméterek: -
        *  OPCIONÁLIS paraméterek:
            * **tape_id**  - amennyiben csak egy szalag adatai szeretnénk lekérdezni
        *  válasz:
            * Egy JSON, mely tartalmazza az elérhető szalagok azonosítóit és neveit.</br>

            ```json
            [
                { "id" : <szalag id>,
                    "name" : "szalag neve"
                },
                ...
            ]
            ```

        * példa:

            ```bash
            curl --header "token:<TOKEN>" -X GET 'https://api.archiver.niif.hu/tape/'
            ```

    * *<big>POST</big>* - szalag nevét lehet beállítani
        * paraméterek:
            * **tape_id** - szalag azonosítója
            * **name**    - beállítandó név
        * válasz: -
        * példa:

            ```bash
            curl --header "token:<TOKEN>" https://api.archiver.niif.hu/tape/ --data "tape_id=<ID>&name=<NAME>"
            ```

    * *<big>DELETE</big>* - szalag tartalmának törlése
        * paraméterek:
            * **tape_id** - melyik szalag tartalmát szeretnénk törölni
        * válasz: -
        * példa:

            ```bash
            curl --header "token:<TOKEN>" -X DELETE 'https://api.archiver.niif.hu/tape/?tape_id=<ID>'
            ```

### Feladatokkal kapcsolatos műveletek

* útvonal: **<big>/archive</big>**
    * *<big>POST</big>* - új archiválási feladata beküldése
        *  paraméterek:
            * **tape_id** - szalag azonosító
            * **url**     - archiválandó forrás elérhetősége </br> Amennyiben az url tartalmaz '&'-t, azt '%26'-val kell helyettesíteni.
        *  OPCIONÁLIS paraméterek:
            * **name**    - átnevezés
            * **email**   - értesítendő email címe
            * **level**   - értesítési szintszintek:
                * 1 - csak a sikeres archiválásról kérek értesítés
                * 2 - sikeres és hibás archiválásról is kérek értesítést
        *  válasz:
            * A sikeresen beküldött feladat ID-ja.
        *  példa:

            ```bash
            curl --header "token:<TOKEN>" https://api.archiver.niif.hu/archive/ --data "tape_id=<ID>&url=<URL>"
            curl --header "token:<TOKEN>" https://api.archiver.niif.hu/archive/ --data "tape_id=<ID>&url=<URL>&name=<NAME>"
            ```

    * *<big>GET</big>* - lekérdezhető a beküldött feladat állapota
        * paraméterek:
            * **job_id** - lekérdezendő feladat ID-je
        * válasz:
            * Egy JSON, mely tartalmazza a feladat és az archivált fájl(ok) státuszát.</br>  A "directories" elem csak hibás könyvtár létrehozáskor jelenik meg a JSON-ban.

            ```json
            {
                "state":"feladat állapota",
                "directories" : [
                    {
                        "dir":"könyvtár neve",
                        "state":"error",
                        "error_message":"HTTP error: 500 \"Internal Server Error\""
                    },
                    ...
                ],
                "files" : [
                    {
                        "file":"fájl neve elérési úttal",
                        "state":"complete",
                        "checksum":"c9b96a05482a91970309f8087b3ac9c6",
                        "ts":"2015-04-14 15:53:01"
                    },
                ...
                ]
            }
            ```

        * példa:</br>

            ```bash
            curl --header "token:<TOKEN>" -X GET 'https://api.archiver.niif.hu/archive/?job_id=<ID>'
            ```

* útvonal: **<big>/restore</big>**
    * *<big>POST</big>* - új visszaállítási feladata beküldése
        * paraméterek:
            * **tape_id** - szalag azonosító
            * **url**     - visszaállítás helye</br> Amennyiben az url tartalmaz '&'-t, azt '%26'-val kell helyettesíteni.
            * **file**    - visszaállítandó fájl, több verzió esetén a legutolsó változat kerül visszaállításra
        * OPCIONÁLIS paraméterek:
            * **name**    - átnevezés
            * **email**   - értesítendő email címe
            * **level**   - értesítési szint</br> szintek:
                * 1 - csak a sikeres visszaállításról kérek értesítés
                * 2 - sikeres és hibás visszaállításról is kérek értesítést
        * válasz:
            * A sikeresen beküldött feladat ID-ja.
        * példa:

            ```bash
            curl --header "token:<TOKEN>" https://api.archiver.niif.hu/restore/ --data "tape_id=<ID>&url=<URL>&file=<FILE>"
            curl --header "token:<TOKEN>" https://api.archiver.niif.hu/restore/ --data "tape_id=<ID>&url=<URL>&file=<FILE>&name=<NAME>"
            ```

    * *<big>GET</big>* - lekérdezhető a beküldött feladat állapota
        * paraméterek:
            * **job_id** - lekérdezendő feladat ID-je
        * válasz:
            * Egy JSON, mely tartalmazza a feladat és a visszaállított fájl(ok) státuszát.</br>           A "directories" elem csak hibás könyvtár létrehozáskor jelenik meg a JSON-ban.

            ```json
            {
                "state":"feladat állapota",
                "directories" : [
                    {
                        "dir":"könyvtár neve",
                        "state":"error",
                        "error_message":"HTTP error: 500 \"Internal Server Error\""
                    },
                    ...
                ],
                "files" : [
                    {
                        "file":"fájl neve elérési úttal",
                        "state":"complete",
                        "checksum":"c9b96a05482a91970309f8087b3ac9c6",
                        "ts":"2015-04-14 15:53:01"
                    },
                ...
                ]
            }
            ```

        * példa:</br>

            ```bash
            curl --header "token:<TOKEN>" -X GET 'https://api.archiver.niif.hu/restore/?job_id=<ID>'
            ```

### Fájl műveletek

* útvonal: **<big>/file</big>**
    * *<big>GET</big>* - lekérdezhető a szalagon található fájlok listája
        * paraméterek:
            * **tape_id** - szalag azonosító
        * OPCIONÁLIS paraméterek:
            * **path**    - megadható, hogy a szalagon milyen path alatt található fájlokat listázzon csak. </br> Természetesen a lista tartalmazza a path alatt található alkönyvtárakban lévő fájlokat is.
        * válasz:
            * Egy JSON, mely tartalmazza a szalagon elérhető fájlokat és azok méretét.

            ```json
            [
                { "file":"fájl neve elérési úttal",
                    "size":"méret bájtban"
                },
                ...
            ]
            ```

    * példa:

        ```bash
        curl --header "token:<TOKEN>" -X GET 'https://api.archiver.niif.hu/file/?tape_id=<ID>'
        curl --header "token:<TOKEN>" -X GET 'https://api.archiver.niif.hu/file/?tape_id=<ID>&path=<PATH>'
        ```