Úvod

Služba Jokiro umožňuje přístup k úložišti přes programové API. Rozhraní služby využívá protokol HTTP a jako formát přenosu dat JSON. Operace na tomto API podléhají uživatelským oprávněním a pro jejich volání je nutné vlastnit platný Jokiro účet. Všechny operace na API pak vyžadují přihlášení, které je předáno v hlavičce požadavku společně s časovou značkou. Více v sekci Autentikace.

Protože jde o objektové API je většina požadavků typu POST a ve svém těle nese data ve formátu JSON. Odpověď ze serveru potom obsahuje JSON hlavičku, se stavovým kódem odpovědi, časovou značkou atd.

Nahrávání souborů do služby Jokiro je realizováno multipartovým HTTP požadavkem POST. V první části jde JSON objekt s metadaty souboru. V části druhé je potom soubor v binární podobě.

Každý soubor uložený ve službě Jokiro je dostupný ke stažení přes jedinečný klíč, který je získán společně s metadaty souboru. Jde o klíč, který umožňuje jednorázové stažení souboru a po jeho použití je zneplatněn. Pro stažení souboru je tak nutné použít operaci k získání metadat a po obdržení klíče, soubor stáhnout.

Požadavek na každou operaci API musí obsahovat hlavičku se zakódovanými přihlašovacími údaji a časovou značku v milisekundách. Přihlašovací údaje jsou zakódovány společně s bezpečnostním otiskem požadavku včetně časové značky.

Tím je dosaženo bezpečného předání přihlašovacích údajů v požadavku a je tak zamezeno jejich případné krádeži.

Zároveň tak není mozné požadavek před zpracováním na API pozměnit a tím data poškodit. Při každé změně požadavku musí totiž dojít ke změně zakódovaného bezpečnostního otisku. Přenos dat je tak chráněn proti případnému zneužití.

Vytvoření bezpečnostního otisku

Bezpečnostní otisk je složen z několika částí požadavku a tajného hesla Jokiro účtu. Tyto části jsou spojeny a zakódovány algoritmem SHA256.

Otisk je poté připojen k části údajů z Jokiro ID, tedy klíč účtu a uživatelské jméno.

Složení bezpečnostního otisku

otisk = SHA256(adresa_operace + typ_požadavku + čas_v_ms + MD5(tělo_požadavku) + tajné_heslo)
Poznámka
  • požadavky typu GET mají v otisku místo "tělo_požadavku" prázdný řetězec, tedy MD5 z prázdného řetězce
  • požadavky typu POST-MULTIPART obsahují v "tělo_požadavku" pouze první část s metadaty

Příklad bezpečnostního otisku

otisk = SHA256(http://api.jokiro.cz/v1/file/get + POST + 1325372400 + MD5({"path":"/soubor.txt"}) + {vase_tajne_heslo})

Vytvoření podpisu požadavku

Podpis požadavku je složen z údajů Jokiro ID a bezpečnostního otisku.

Složení podpisu

podpis_pozadavku = BASE64(klíč_účtu + : + uživatelské_jméno + : + BASE64(otisk))

Autorizace požadavku

Vytvořený podpis požadavku musí být přidán k požadavku do autorizační hlavičky, společně s hlavičkou časové značky v milisekundách.

Příklad požadavku s autorizací

POST /v1/file/get HTTP/1.1
Host: api.jokiro.cz
Content-Type: application/json; charset=utf-8
Authorization: JKR {podpis_požadavku}
x-jkr-time: {čas_v_ms}
                        
Poznámka
    Časová značka nesmí být starší než dvě minuty, stáří časové značky je při přihlášení kontrolováno.

Operace vytvoření nového souboru. Založí nový soubor do složky "folder" pod názvem "name".

Požadavek je typu MULTIPART. První část s názvem "metadata" obsahuje JSON metadata souboru, část druhá "filedata" potom samotný soubor v binární podobě.

metoda http
POST-MULTIPART
hlavička požadavku
multipart/form-data
vyžaduje vlastnosti
file.name, file.folder
vrací
metadata souboru
Příklad POST-MULTIPART požadavku
POST /v1/file/create HTTP/1.1
Host: api.jokiro.cz
Authorization: JKR {podpis_požadavku}
x-jkr-time: {čas_v_ms}
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: multipart/form-data; boundary=OjXAK91n05h85JTEZNMDiic32kNz1qT
--OjXAK91n05h85JTEZNMDiic32kNz1qT
Content-Disposition: form-data; name="metadata"
Content-Type: application/json; charset=UTF-8
Content-Transfer-Encoding: 8bit
{json_metadata}
--OjXAK91n05h85JTEZNMDiic32kNz1qT
Content-Disposition: form-data; name="filedata"; filename="file"
Content-Type: application/octet-stream
Content-Transfer-Encoding: binary
{binary_dara}
--OjXAK91n05h85JTEZNMDiic32kNz1qT
                        
JSON Požadavek
{
  "file" : {
    "name" : "soubor.txt", /* název souboru */
    "folder" : "/" /* umístění */
  }
}
                        
JSON Odpověď
{
  "status" : "OK",
  "code" : "JKRS001",
  "timestamp" : 1356963361306,
  "file" : {
    "id" : "50e19e212046e99485a46930",
    "name" : "soubor.txt",
    "folder" : "/",
    "path" : "/soubor.txt",
    "created" : 1356963361239,
    "modified" : 1356963361239,
    "createdBy" : "uživatelské jméno",
    "modifiedBy" : "uživatelské jméno",
    "permissions" : {
      "owner" : "uživatelské jméno",
      "group" : "skupina",
      "rights" : "331"
    },
    "md5" : "43b2081467d17278f5797e3be9d2595e",
    "size" : 20,
    "downloadKey" : "5uULVL0gE6JLi7xuZSYz0UYnIMTIw5VE9Rn2AuZj87hRwf6uCY",
    "revision" : 1
  }
}
                        

Operace odstranění souboru. Přesune soubor do koše.

metoda http
POST
hlavička požadavku
application/json
vyžaduje vlastnosti
path
vrací
prázdné
JSON Požadavek
{
  "path" : "/soubor.txt" /* umístění souboru, který má být odstraněn */
}
                        
JSON Odpověď
{
  "status" : "OK",
  "code" : "JKRS001",
  "timestamp" : 1356964441569
}
                        

Operace pro změnu souboru nebo jeho metadat vyžaduje platný objekt "lock", tedy zámek souboru. Tento zámek poskytuje operace "/file/get-for-update". Operaci je nutné použít k získání metadat souboru společně s jeho zámkem pro jeho následnou změnu.

Operace umožňuje změnit název souboru, ovšem ne jeho umístění! Pro změnu umístění souboru je nutné použít operaci "/file/move".

Požadavek je stejně jako operace "/file/create" typu MULTIPART. První část s názvem "metadata" obsahuje JSON metadata souboru, část druhá "filedata" potom samotný soubor v binární podobě. Náhled HTTP požadavku viz "/file/create".

Část požadavku s názvem "filedata" není povinná! Pokud změna souboru znamená pouze změnu metadat, nemusí být část požadavku se souborem uvedena. Naopak část požadavku s názvem "metadata" musí být vždy uvedena.

Revize

  • každá změna souboru, ať již metadat nebo souboru samotného, vyvolá založení nové revize
  • každou revizi souboru identifikuje jedinečné ID
  • metadata souboru obsahují číslo jeho aktuální revize
  • maximální množství revizí souboru je 50 (viz omezení v beta verzi)
metoda http
POST-MULTIPART
hlavička požadavku
multipart/form-data
vyžaduje vlastnosti
file.id, file.name, file.lock (platný zámek)
vrací
metadata souboru
JSON Požadavek
{
  "file" : {
    "id" : "50e1a3d02046e99485a46a0e", /* identifikátor souboru */
    "name" : "novy-nazev-souboru.txt", /* nový název */
    "description" : "Nový popis souboru", /* nový popis */
    "folder" : "/", /* umístění nemůže být změněno */
    "permissions" : { /* nová oprávnění */
      "owner" : "uživatelské jméno",
      "group" : "skupina",
      "rights" : "331"
    },
    "lock" : { /* platný zámek objektu */
      "id" : "HCQ6s9Z0gGqq", /* identifikátor */
      "owner" : "uživatelské jméno", /* vlastník */
      "created" : 1356964816957, /* datum vytvoření */
      "expire" : 1356964816957 /* datum expirace */
    },
  }
}
                        
JSON Odpověď
{
  "status" : "OK",
  "code" : "JKRS001",
  "timestamp" : 1356964817085,
  "file" : {
    "id" : "50e1a3d02046e99485a46a0e",
    "name" : "soubor.txt",
    "description" : "Popis",
    "folder" : "/",
    "path" : "/soubor.txt",
    "created" : 1356964816753,
    "modified" : 1356964817058,
    "createdBy" : "uživatelské jméno",
    "modifiedBy" : "uživatelské jméno",
    "permissions" : {
      "owner" : "uživatelské jméno",
      "group" : "skupina",
      "rights" : "331"
    },
    "md5" : "43b2081467d17278f5797e3be9d2595e",
    "size" : 20,
    "mimeType" : "aplication/octec-stream",
    "downloadKey" : "d62Ku42smqNscMEWf5wGpF4G5IEebAO7wdNPAJGDYvhZ350aI5",
    "revision" : 2
  }
}
                        

Operace pro přesun souboru na jiné umístění. Přesune soubor na "path" do složky "folder".

metoda http
POST
hlavička požadavku
application/json
vyžaduje vlastnosti
path, folder
vrací
prázdné
JSON Požadavek
{
  "path" : "/soubor.txt", /* cesta k souboru */
  "folder" : "/myfolder", /* složka nového umístění */
}
                        
JSON Odpověď
{
  "status" : "OK",
  "code" : "JKRS001",
  "timestamp" : 1356964441569
}
                        

Operace vrací metadata souboru společně s klíčem pro jeho stažení.

metoda http
POST
hlavička požadavku
application/json
vyžaduje vlastnosti
path
vrací
metadata souboru
JSON Požadavek
{
  "path" : "/soubor.txt"
}
                        
JSON Odpověď
{
  "status" : "OK",
  "code" : "JKRS001",
  "timestamp" : 1356964816957,
  "file" : {
    "id" : "50e1a3d02046e99485a46a0e",
    "name" : "soubor.txt",
    "folder" : "/",
    "path" : "/soubor.txt",
    "created" : 1356964816753,
    "modified" : 1356964816753,
    "createdBy" : "uživatelské jméno",
    "modifiedBy" : "uživatelské jméno",
    "permissions" : { /* uživatelská oprávnění */
      "owner" : "uživatelské jméno",
      "group" : "skupina",
      "rights" : "331"
    },
    "md5" : "43b2081467d17278f5797e3be9d2595e", /* otisk souboru */
    "size" : 20, /* velikost v bytech */
    "downloadKey" : "7wZRbRw9UcLUVI9nHomaWbu7dORrtRlgmJwEIlN0Yd7mBLQ5xf", /* klíč ke stažení souboru */
    "revision" : 1
  }
}
                        

Operace vrací metadata souboru společně s jeho zámkem a tím soubor zamkne pro změnu. Volání této operace je nutné v případě, kdy potřebujete změnit soubor nebo jeho metadata. Zámek je totiž povinný pro operaci "/file/update". Po zavolání "/file/update" je zámek zrušen a soubor je tím odemčen.

Volání této operace může skončit s chybou. To v případě, kdy nelze získat platný zámek pro soubor, který je již pravděpodobně zamčen. Soubor může být najednou změněn pouze jedním klientem - platným zámkem.
Varování: tato vlastnost není zcela funkční, objekty sice zámky obsahují, ale jsou automaticky zneplatněny

metoda http
POST
hlavička požadavku
application/json
vyžaduje vlastnosti
path
vrací
metadata souboru
JSON Požadavek
{
  "path" : "/soubor.txt" /* cesta k souboru, který bude zamčen pro update */
}
                        
JSON Odpověď
{
  "status" : "OK",
  "code" : "JKRS001",
  "timestamp" : 1356964816957,
  "file" : {
    "id" : "50e1a3d02046e99485a46a0e",
    "name" : "soubor.txt",
    "folder" : "/",
    "path" : "/soubor.txt",
    "created" : 1356964816753,
    "modified" : 1356964816753,
    "createdBy" : "uživatelské jméno",
    "modifiedBy" : "uživatelské jméno",
    "permissions" : {
      "owner" : "uživatelské jméno",
      "group" : "skupina",
      "rights" : "331"
    },
    "lock" : {
      "id" : "HCQ6s9Z0gGqq",
      "owner" : "uživatelské jméno",
      "created" : 1356964816957,
      "expire" : 1356964816957
    },
    "md5" : "43b2081467d17278f5797e3be9d2595e",
    "size" : 20,
    "downloadKey" : "7wZRbRw9UcLUVI9nHomaWbu7dORrtRlgmJwEIlN0Yd7mBLQ5xf",
    "revision" : 1
  }
}
                        

Operace vrací seznam revizí souboru, včetně informací nutných pro jejich stažení. Pokud soubor nebyl zatím změněn a revize nemá, je vrácen prázdný seznam.

Maximální počet revizí souboru je 50 (viz omezení v beta verzi)

metoda http
POST
hlavička požadavku
application/json
vyžaduje vlastnosti
path
vrací
seznam revizí souboru
JSON Požadavek
{
  "path" : "/soubor.txt"
}
                        
JSON Odpověď
{
  "status" : "OK",
  "code" : "JKRS001",
  "timestamp" : 1356966983627,
  "revisions" : [ { /* seznam revizí - jedna revize souboru */
    "id" : "nrZSQx", /* identifikátor revize */
    "created" : 1356966983484, /* datum vzniku revize */
    "file" : {
      "id" : "50e1ac472046e99485a46ae9",
      "name" : "soubor.txt",
      "folder" : "/",
      "path" : "/soubor.txt",
      "created" : 1356966983160,
      "modified" : 1356966983160,
      "createdBy" : "uživatelské jméno",
      "modifiedBy" : "uživatelské jméno",
      "permissions" : {
        "owner" : "uživatelské jméno",
        "group" : "skupina",
        "rights" : "331"
      },
      "md5" : "43b2081467d17278f5797e3be9d2595e",
      "size" : 20,
      "downloadKey" : "PK1XX9fyrHqgKDSLqHIx42Q4DUsxovO7I0U9f9yq20tYc2L7lU",
      "revision" : 0
    }
  } ]
}
                        

Operace stažení souboru. Ke stažení souboru je potřeba klíč "downloadKey". Ten poskytují operace pro získání metadat souboru, jako "/file/get". Před každým stažením souboru je tak nutné získat nejprve metadata souboru a tím platný klíč k jeho stažení. Klíč je po použití zneplatněn.

metoda http
GET
vyžaduje vlastnosti
downloadKey
vrací
stream souboru
Ukázka HTTP požadavku
GET /v1/file/download/{downloadKey} HTTP/1.1
Host: api.jokiro.cz
Authorization: JKR {podpis_požadavku}
x-jkr-time: {čas_v_ms}
                        

Operace pro zveřejnění souboru ke stažení bez přihlášení. Kromě samotného zveřejnění souboru lze nastavit maximální počet stažení a datum platnosti odkazu. V případě změny těchto hodnot, je počet aktuálních stažení smazán. Operace také umožňuje sdílení zrušit. Adresa ke stažení zveřejněného souboru viz operace "/public".

metoda http
POST
hlavička požadavku
application/json
vyžaduje vlastnosti
path, filePublish.open
vrací
prázdné
JSON Požadavek
{
  "path" : "/soubor.txt" /* Cesta k souboru */
  "filePublish" : {
    "open" : "true", /* boolean - zveřejnit/zrušit */
    "downloadLimit" : 0, /* nepovinné - omezení počtu stažení */
    "validTo" : null, /* nepovinné - datum omezení platnosti (ms) */
  }
}
                        
JSON Odpověď
{
  "status" : "OK",
  "code" : "JKRS001",
  "timestamp" : 1356966418823,
}                            
                        

Operace vytvoří novou složku s názvem "name" ve složce "folder".

metoda http
POST
hlavička požadavku
application/json
vyžaduje vlastnosti
folder.name, folder.folder
vrací
metadata složky
JSON Požadavek
{
  "folder" : {
    "name" : "složka",
    "folder" : "/",
  }
}
                        
JSON Odpověď
{
  "status" : "OK",
  "code" : "JKRS001",
  "timestamp" : 1356966418823,
  "folder" : {
    "id" : "50e1aa122046e99485a46ab0",
    "name" : "složka",
    "folder" : "/",
    "path" : "/složka",
    "created" : 1356966418796,
    "modified" : 1356966418796,
    "createdBy" : "uživatelské jméno",
    "modifiedBy" : "uživatelské jméno",
    "permissions" : {
      "owner" : "uživatelské jméno",
      "group" : "skupina",
      "rights" : "331"
    }
  }
}                            
                        

Operace přesune složku v umístění "path" do koše. Vlastnost "force" určí, zda má být složka přesunuta včetně jejího obsahu.

Operace může skončit s chybou a to v případě, kdy odstraňovaná složka není prázdná a vlastnost "force" není zapnuta = true.

metoda http
POST
hlavička požadavku
application/json
vyžaduje vlastnosti
path, force
vrací
prázdné
JSON Požadavek
{
  "path" : "/složka",
  "force" : false
}
                        
JSON Odpověď
{
  "status" : "OK",
  "code" : "JKRS001",
  "timestamp" : 1356966419021
}
                        

Operace pro změnu metadat složky. Vyžaduje platný objekt "lock", tedy zámek složky. Tento zámek poskytuje operace "/folder/get-for-update". Operaci je nutné použít k získání metadat složky společně s jejím zámkem pro následnou změnu.

Operace umožňuje změnit název složky, ovšem ne její umístění! Pro změnu umístění složky je nutné použít operaci "/folder/move".

metoda http
POST
hlavička požadavku
application/json
vyžaduje vlastnosti
folder.id, folder.name, file.lock (platný zámek)
vrací
metadata složky
JSON Požadavek
{
  "folder" : {
    "id" : "50e1b4b52046e99485a46c39",
    "name" : "nový název", /* nový název */
    "description" : "nový popis", /* nový popis */
    "permissions" : { /* nová oprávnění */
      "owner" : "uživatelské jméno",
      "group" : "skupina",
      "rights" : "331"
    },
    "lock" : { /* platný zámek objektu */
      "id" : "gtW8B0LQ1K5B", /* identifikátor */
      "owner" : "uživatelské jméno", /* vlastník */
      "created" : 1356969141728, /* datum vytvoření */
      "expire" : 1356969141728 /* datum expirace */
    }
  }
}
                        
JSON Odpověď
{
  "status" : "OK",
  "code" : "JKRS001",
  "timestamp" : 1356969141841,
  "folder" : {
    "id" : "50e1b4b52046e99485a46c39",
    "name" : "složka",
    "description" : "Složka",
    "folder" : "/",
    "path" : "/složka",
    "created" : 1356969141548,
    "modified" : 1356969141803,
    "createdBy" : "uživatelské jméno",
    "modifiedBy" : "uživatelské jméno",
    "permissions" : {
      "owner" : "uživatelské jméno",
      "group" : "skupina",
      "rights" : "331"
    }
  }
}
                        

Operace pro přesun složky na jiné umístění. Přesune složku na "path" do složky "folder".

metoda http
POST
hlavička požadavku
application/json
vyžaduje vlastnosti
path, folder
vrací
prázdné
JSON Požadavek
{
  "path" : "/somefolder", /* cesta ke složce */
  "folder" : "/myfolder", /* složka nového umístění */
}
                        
JSON Ospověď
{
  "status" : "OK",
  "code" : "JKRS001",
  "timestamp" : 1356964441569
}
                        

Operace pro výpis obsahu složky. Vrací seznam složek a souborů, pro které je tato složka "path" rodičem.

Metadata souborů obsahují klíče potřebné k jejich stažení. Je tak možné obsah souboru ihned stáhnout.

metoda http
POST
hlavička požadavku
application/json
vyžaduje vlastnosti
path
vrací
obsah složky
JSON Požadavek
{
  "path" : "/myfolder"
}
                        
JSON Odpoveď
{
  "status" : "OK",
  "code" : "JKRS001",
  "timestamp" : 1356968571422,
  "content" : { /* Obsah složky */
    "folders" : [ { /* Složky */
      "id" : "50e1b2262046e99485a46ba7",
      "name" : "složka",
      "folder" : "/složka",
      "path" : "/složka/složka",
      "created" : 1356968486027,
      "modified" : 1356968486027,
      "createdBy" : "uživatelské jméno",
      "modifiedBy" : "uživatelské jméno",
      "permissions" : {
        "owner" : "uživatelské jméno",
        "group" : "skupina",
        "rights" : "331"
      }
    } ],
    "files" : [ { /* Soubory */
      "id" : "50e1b2302046e99485a46bbb",
      "name" : "soubor.txt",
      "folder" : "/složka",
      "path" : "/složka/soubor.txt",
      "created" : 1356968496125,
      "modified" : 1356968496125,
      "createdBy" : "uživatelské jméno",
      "modifiedBy" : "uživatelské jméno",
      "permissions" : {
        "owner" : "uživatelské jméno",
        "group" : "skupina",
        "rights" : "331"
      },
      "md5" : "a3ccfd0aa0b17fd23aa9fd0d84b86c05",
      "size" : 483328,
      "mimeType" : "application/x-msdownload",
      "downloadKey" : "ySctC5nGLEqjUdxheE4WTnITyTSuvb7D0Ggoh2TeO3JAFQNLHC",
      "revision" : 1
    }, {
      "id" : "50e1b2472046e99485a46bcc",
      "name" : "soubor2.txt",
      "folder" : "/složka",
      "path" : "/složka/soubor2.txt",
      "created" : 1356968519078,
      "modified" : 1356968519078,
      "createdBy" : "uživatelské jméno",
      "modifiedBy" : "uživatelské jméno",
      "permissions" : {
        "owner" : "uživatelské jméno",
        "group" : "skupina",
        "rights" : "331"
      },
      "md5" : "a3ccfd0aa0b17fd23aa9fd0d84b86c05",
      "size" : 483328,
      "mimeType" : "application/x-msdownload",
      "downloadKey" : "5duTYAclZRuZTz2Dhrcf8vNS12IMca4HOIFFWaFAoHJVpPPZed",
      "revision" : 1
    } ]
  }
}
                        

Operace vrací metadata složky.

metoda http
POST
hlavička požadavku
application/json
vyžaduje vlastnosti
path
vrací
metadata složky
JSON Požadavek
{
  "path" : "/složka"
}
                        
JSON Odpoveď
{
  "status" : "OK",
  "code" : "JKRS100",
  "timestamp" : 1356967855062,
  "folder" : {
    "id" : "50e1afae2046e99485a46b43",
    "name" : "složka",
    "folder" : "/",
    "path" : "/složka",
    "created" : 1356967854871,
    "modified" : 1356967854871,
    "createdBy" : "uživatelské jméno",
    "modifiedBy" : "uživatelské jméno",
    "permissions" : {
      "owner" : "uživatelské jméno",
      "group" : "skupina",
      "rights" : "331"
    }
  }
}
                        

Operace vrací metadata složky společně s jeho zámkem a tím složku zamkne pro změnu (zámek pouze na úrovni složky, obsah uvnitř složky zamčen není). Volání této operace je nutné v případě, kdy potřebujete změnit metadata složky. Zámek je totiž povinný pro operaci "/folder/update". Po zavolání "/folder/update" je zámek zrušen a složka je tím odemčena.

Volání této operace může skončit s chybou. To v případě, kdy nelze získat platný zámek pro složku, která je již pravděpodobně zamčena. Složka může být najednou měněna pouze jedním klientem - platným zámkem.
Varování: tato vlastnost není zcela funkční, objekty sice zámky obsahují, ale jsou automaticky zneplatněny

metoda http
POST
hlavička požadavku
application/json
vyžaduje vlastnosti
path
vrací
metadata složky
JSON Požadavek
{
  "path" : "/složka"
}
                        
JSON Odpověď
{
  "status" : "OK",
  "code" : "JKRS100",
  "timestamp" : 1356967855062,
  "folder" : {
    "id" : "50e1afae2046e99485a46b43",
    "name" : "složka",
    "folder" : "/",
    "path" : "/složka",
    "created" : 1356967854871,
    "modified" : 1356967854871,
    "createdBy" : "uživatelské jméno",
    "modifiedBy" : "uživatelské jméno",
    "permissions" : {
      "owner" : "uživatelské jméno",
      "group" : "skupina",
      "rights" : "331"
    },
    "lock" : {
      "id" : "043c7atu00QR",
      "owner" : "uživatelské jméno",
      "created" : 1356967855061,
      "expire" : 1356967855061
    }
  }
}
                        

Operace vrací strukturu úložiště, tedy seznam složek pod uvedenou cestou "path". Je tak možné získat velmi rychle seznam všech složek umístěných pod umístěním "path".

metoda http
POST
hlavička požadavku
application/json
vyžaduje vlastnosti
path
vrací
seznam složek
JSON Požadavek
{
  "path" : "/"
}
                        
JSON Odpověď
{
  "status" : "OK",
  "code" : "JKRS100",
  "timestamp" : 1356968784093,
  "content" : {
    "folders" : [ {
      "id" : "50dd77ea29d42ab938f96902",
      "name" : "/",
      "description" : "Root",
      "path" : "/",
      "created" : 1356691434516,
      "modified" : 1356968478194,
      "createdBy" : "uživatelské jméno",
      "modifiedBy" : "uživatelské jméno",
      "permissions" : {
        "owner" : "uživatelské jméno",
        "group" : "skupina",
        "rights" : "331"
      }
    }, {
      "id" : "50e1b21e2046e99485a46b92",
      "name" : "složka",
      "folder" : "/",
      "path" : "/složka",
      "created" : 1356968478194,
      "modified" : 1356968519078,
      "createdBy" : "uživatelské jméno",
      "modifiedBy" : "uživatelské jméno",
      "permissions" : {
        "owner" : "uživatelské jméno",
        "group" : "skupina",
        "rights" : "331"
      }
    }, {
      "id" : "50e1b2262046e99485a46ba7",
      "name" : "složka2",
      "folder" : "/složka",
      "path" : "/složka/složka2",
      "created" : 1356968486027,
      "modified" : 1356968486027,
      "createdBy" : "uživatelské jméno",
      "modifiedBy" : "uživatelské jméno",
      "permissions" : {
        "owner" : "uživatelské jméno",
        "group" : "skupina",
        "rights" : "331"
      }
    } ],
    "files" : [ ]
  }
}
                        

Operace trvale odstraní všechny objekty uvnitř koše.

metoda http
POST
hlavička požadavku
application/json
vyžaduje vlastnosti
prázdné
vrací
prázdné
JSON Požadavek
{
  
}
                        
JSON Odpověď
{
  "status" : "OK",
  "code" : "JKRS100",
  "timestamp" : 1356968784093,
}
                        

Operace stažení souboru z veřejného umístění. Aby bylo možné na soubor přistoupit bez přihlášení, je nutné aby byl uvnitř úložiště označen jako veřejný (fPublic=true). Pro zveřejnění souboru použijte operaci "/file/publish". Ke stažení souboru je potřeba klíč účtu "accountKey" a "path" tedy cesta k souboru uvnitř úložiště.

metoda http
GET
vyžaduje vlastnosti
accountKey
path
vrací
stream souboru
Ukázka HTTP požadavku
GET /v1/public/{accountKey}/?p={path} HTTP/1.1
Host: api.jokiro.cz
                        

Operace vrací informaci o stavu úložiště. Například aktuální hodnotu využitého prostoru.

metoda http
POST
hlavička požadavku
application/json
vyžaduje vlastnosti
prázdné
vrací
informace o stavu úložiště
JSON Požadavek
{
}
                        
JSON Odpověď
{
  "status" : "OK",
  "code" : "JKRS001",
  "timestamp" : 1356968297469,
  "info" : {
    "usedSpace" : 0, /* Využité místo */
    "time" : 1356968297468, /* Aktuální čas serveru */
    "version" : "v1" /* Verze API */
  }
}