API MEO Cloud para programadores

Construa a sua própria cloud

Autenticação

Se já desenvolveu alguma aplicação que integre com o Facebook, Twitter ou Flickr, certamente já teve de lidar com alguma das versões do OAuth. OAuth é o protocolo que deve usar para autenticar todos os pedidos feitos à API da MEO Cloud. Uma pesquisa rápida irá revelar inúmeras classes e bibliotecas que implementam este protocolo. Na MEO Cloud usamos a especificação 1.0a three-legged oauth, ou a 2.0. Não vale a pena reinventar a roda. Recomendamos que use aquela com que se sinta mais familiarizado.

Para usar OAuth, em primeiro lugar precisa registar a sua aplicação. Ao registar, ser-lhe-á fornecida uma consumer key e um secret necessários para assinar os pedidos à API. A consumer key identifica univocamente a sua aplicação perante a MEO Cloud.

Dado que o nome dos ficheiros consta muitas vezes da path dos URLs, é imprescindível que seja feito um correcto encoding para que a assinatura OAuth seja validada. Em particular, os caracteres '#', '%' e ';' muitas vezes causam problemas por não serem escapados pelas libs usadas. No componente path de um URL estes caracteres excluídos (e o delimitador) têm de ser escapados.

Ok, ok. Já sei disso tudo! Digam-me quais são os endpoints.

OAuth 1.0a

Request Token:

https://meocloud.pt/oauth/request_token

Authorize Token:

https://meocloud.pt/oauth/authorize

Access Token:

https://meocloud.pt/oauth/access_token

OAuth 2.0

Authorize:

https://meocloud.pt/oauth2/authorize

Token:

https://meocloud.pt/oauth2/token

Voltar ao topo

Encoding

Se o pedido que está a fazer usar uma string (ex: nome de um ficheiro ou pasta), então deve ser codificado em UTF-8.

Voltar ao topo

Códigos de erro

A nossa API fala HTTPS pelo que responde com HTTP Status Codes. Já os deve conhecer todos de cor mas ainda assim aqui fica um exemplo:

200 - OK
400 - BAD REQUEST
401 - UNAUTHORIZED
403 - FORBIDDEN
404 - NOT FOUND
405 - METHOD NOT ALLOWED
406 - NOT ACCEPTABLE
500 - INTERNAL SERVER ERROR
507 - OVER QUOTA
Voltar ao topo

Transporte

Todos os pedidos quer à API, quer a OAuth endpoints e API-Content são feitos usando SSL.

Voltar ao topo

API Endpoints

API:

https://api.meocloud.pt

API-CONTENT:

https://api-content.meocloud.pt

Lembre-se de que uma vez que usamos OAuth, a sua classe/biblioteca de OAuth irá automaticamente adicionar vários parâmetros ao pedido original contendo os tokens e assinatura

Permissões

No registo da aplicação existem dois modos de acesso que podem ser escolhidos, e isto será reflectido na página de autorização vista pelo utilizador:

sandbox: acesso restrito a uma pasta que será criada na área do utilizador

meocloud: acesso sem restrições a toda a área do utilizador

Metadata

Compatibilidade: compatível com Dropbox mas com itens adicionais na resposta

Devolve toda a metadata existente relativa a um ficheiro ou pasta.

https://api.meocloud.pt/1/Metadata/[meocloud|sandbox]/[pathname]

Métodos permitidos

GET

Parâmetros

file_limit: Como medida de proteção, este método não devolve mais do que 10,000 entradas. Este parâmetro permite-lhe especificar um valor diferente do default 10,000.

hash: Ao usar /Metadata para obter informação relativa a uma pasta, ser-lhe-á devolvido um valor no campo hash. Ao invocar este método de novo, pode passar este parâmetro e receber uma resposta simples (HTTP code 304) informando de que nada foi alterado.

list: (booleano), default True. Quando True, ao obter metadata de uma pasta, este método incluirá o conteúdo da pasta na resposta.

include_deleted: (booleano) Permite escolher se os ficheiros e pastas apagados são incluídos na resposta.

rev: Use este parâmetro para solicitar a metadata de uma versão específica da pasta ou ficheiro.

Exemplo de pedido

GET /1/Metadata/meocloud/stuff/Téstâção?list=true

Exemplo de resposta

{
   "hash": "36a8306b-1a13-11e2-859b-3c0754179fed",
   "bytes": 0,
   "thumb_exists": false,
   "rev": "509fc400-2f65-11e2-9501-3c0754179fed",
   "modified": "Fri, 12 Oct 2012 15:36:59 +0000",
   "client_mtime": "Mon, 18 Jul 2011 18:04:35 +0000",
   "is_link": true,
   "path": "/stuff/Téstâção",
   "is_dir": true,
   "root": "meocloud",
   "contents": [
      {
         "bytes": 209466,
         "thumb_exists": true,
         "rev": "c7061c18-17cb-11e2-85d6-0050568c00ab",
         "modified": "Wed, 19 Sep 2012 20:05:42 +0000",
         "path": "/stuff/Téstâção/1968_bizzarini_5300_gt_strada_15_sb.jpg",
         "is_dir": false,
         "icon": "image_jpg",
         "root": "meocloud",
         "mime_type": "image/jpeg",
         "size": "204 KB"
      },
      {
         "bytes": 132280,
         "thumb_exists": true,
         "rev": "b6991d94-17cb-11e2-85d6-0050568c00ab",
         "modified": "Wed, 19 Sep 2012 20:05:59 +0000",
         "path": "/stuff/Téstâção/2522881488_3d5fd5edc9.jpg",
         "is_dir": false,
         "icon": "image_jpg",
         "root": "meocloud",
         "mime_type": "image/jpeg",
         "size": "129 KB"
      },
      {
         "hash": "922c212e-1a0d-11e2-b542-3c0754179fed",
         "bytes": 0,
         "thumb_exists": false,
         "rev": "36a8306b-1a13-11e2-859b-3c0754179fed",
         "modified": "Fri, 12 Oct 2012 15:36:59 +0000",
         "path": "/stuff/Téstâção/teste",
         "is_dir": true,
         "root": "meocloud",
         "size": "0 bytes"
      }
   ],
   "size":"0 bytes"
}

Erros devolvidos

304 - Conteúdo da pasta não modificado (apenas quando o parâmetro hash é passado)
406 - Demasiadas entradas
Voltar ao topo

MetadataShare

Compatibilidade: exclusivo MEO Cloud

Devolve a metadata relativa a um ficheiro ou pasta partilhada

https://api.meocloud.pt/1/MetadataShare/[shareid]/[pathname]

Métodos permitidos

GET

Parâmetros

file_limit: Como medida de proteção, este método não devolve mais do que 10,000 entradas. Este parâmetro permite-lhe especificar um valor diferente do default 10,000

Exemplo de pedido

GET /1/MetadataShare/bb26f0f6-d66f-46a7-8905-1fc125a293e7/Téstâção

Exemplo de resposta

{
   "hash": "36a8306b-1a13-11e2-859b-3c0754179fed",
   "rev": "509fc400-2f65-11e2-9501-3c0754179fed",
   "thumb_exists": false,
   "bytes": 0,
   "modified": "Fri, 12 Oct 2012 15:36:59 +0000",
   "bottom_cursor": "teste",
   "top_cursor": "1968_bizzarini_5300_gt_strada_15_sb.jpg",
   "path": "/Téstâção",
   "is_dir": true,
   "root": "meocloud",
   "contents": [
      {
         "bytes": 209466,
         "thumb_exists": true,
         "rev": "c7061c18-17cb-11e2-85d6-0050568c00ab",
         "modified": "Wed, 19 Sep 2012 20:05:42 +0000",
         "path": "/Téstâção/1968_bizzarini_5300_gt_strada_15_sb.jpg",
         "is_dir": false,
         "icon": "image_jpg",
         "root": "meocloud",
         "mime_type": "image/jpeg",
         "size": "204 KB"
      },
      {
         "bytes": 132280,
         "thumb_exists": true,
         "rev": "b6991d94-17cb-11e2-85d6-0050568c00ab",
         "modified": "Wed, 19 Sep 2012 20:05:59 +0000",
         "path": "/Téstâção/2522881488_3d5fd5edc9.jpg",
         "is_dir": false,
         "icon": "image_jpg",
         "root": "meocloud",
         "mime_type": "image/jpeg",
         "size": "129 KB"
      },
      {
         "hash": "922c212e-1a0d-11e2-b542-3c0754179fed",
         "bytes": 0,
         "thumb_exists": false,
         "rev": "36a8306b-1a13-11e2-859b-3c0754179fed",
         "modified": "Fri, 12 Oct 2012 15:36:59 +0000",
         "path": "/Téstâção/teste",
         "is_dir": true,
         "root": "meocloud",
         "size": "0 bytes"
      }
   ],
   "size": "0 bytes"
}
Voltar ao topo

Shares

Compatibilidade: com Dropbox

Usado para criar uma partilha por link de um ficheiro ou pasta

A propriedade 'link_shareid' foi 'deprecated' e será removida no futuro. Utilizar a propriedade 'shareid'.

https://api.meocloud.pt/1/Shares/[meocloud|sandbox]/[pathname]

Métodos permitidos

POST

Exemplo de pedido

POST /1/Shares/meocloud/Documents/teste.txt

Exemplo de resposta

{
  "url": "https://meocloud.pt/link/9229c40c-0f29-41ef-bb11-b400f9416a10/teste.txt",
  "expires": "Tue, 01 Jan 2030 00:00:00 +0000",
  "shareid": "9229c40c-0f29-41ef-bb11-b400f9416a10"
}

Erros devolvidos

Ver acima
Voltar ao topo

SetLinkTTL

Compatibilidade: exclusivo MEO Cloud

Usado para configurar um tempo de vida para um link.

https://api.meocloud.pt/1/SetLinkTTL

Métodos permitidos

POST

Exemplo de pedido

POST /1/SetLinkTTL
Post fields: ttl=86400 shareid=9a3c9576-37a9-40fd-8f7b-181f4da2f124

Exemplo de resposta

{
}

Erros devolvidos

Ver acima
Voltar ao topo

RemoveLinkTTL

Compatibilidade: exclusivo MEO Cloud

Usado para remover o tempo de vida para um link.

https://publicapi.meocloud.pt/1/RemoveLinkTTL

Métodos permitidos

POST

Exemplo de pedido

POST /1/RemoveLinkTTL
Post fields: shareid=9a3c9576-37a9-40fd-8f7b-181f4da2f124

Exemplo de resposta

{}

Erros devolvidos

Ver acima
Voltar ao topo

SetLinkPasswd

Compatibilidade: exclusivo MEO Cloud

Usado para definir uma senha de acesso para um link de partilha.

https://publicapi.meocloud.pt/1/SetLinkPasswd

Métodos permitidos

POST

Exemplo de pedido

POST /1/SetLinkPasswd
Post fields: passwd=somepasswd shareid=9a3c9576-37a9-40fd-8f7b-181f4da2f124

Exemplo de resposta

{}

Erros devolvidos

Ver acima
Voltar ao topo

RemoveLinkPasswd

Compatibilidade: exclusivo MEO Cloud

Usado para remover a senha associada a um link de partilha.

https://publicapi.meocloud.pt/1/RemoveLinkPasswd

Métodos permitidos

POST

Exemplo de pedido

POST /1/RemoveLinkPasswd
Post fields: shareid=9a3c9576-37a9-40fd-8f7b-181f4da2f124

Exemplo de resposta

{}

Erros devolvidos

Ver acima
Voltar ao topo

ShortenLinkURL

Compatibilidade: exclusivo MEO Cloud

Usado para obter um link de partilha mais curto.

https://api.meocloud.pt/1/ShortenLinkURL

Métodos permitidos

POST

Exemplo de pedido

POST /1/ShortenLinkURL
Post fields: shareid=9a3c9576-37a9-40fd-8f7b-181f4da2f124

Exemplo de resposta

{
  "url": "https://gbhu3u.s.cld.pt"
}

Erros devolvidos

Ver acima
Voltar ao topo

DestroyShortURL

Compatibilidade: exclusivo MEO Cloud

Usado para remover link de partilha curto.

https://api.meocloud.pt/1/DestroyShortURL

Métodos permitidos

POST

Exemplo de pedido

POST /1/DestroyShortURL/gbhu3u

Exemplo de resposta

{
  "share_uuid": "9a3c9576-37a9-40fd-8f7b-181f4da2f124"
}

Erros devolvidos

Ver acima
Voltar ao topo

LinkDomain

Compatibilidade: exclusivo MEO Cloud

Usado para adicionar/remover um domínio próprio a um link de partilha.

https://api.meocloud.pt/1/LinkDomain

Métodos permitidos

POST / DELETE

Exemplo de pedido

POST /1/LinkDomain
Post fields: shareid=9a3c9576-37a9-40fd-8f7b-181f4da2f124 domain=example.com

Exemplo de resposta

{
}

Erros devolvidos

Ver acima
Voltar ao topo

ShareFolder

Compatibilidade: exclusivo MEO Cloud

Partilha uma pasta com um ou mais utilizadores da MEO Cloud. Pode invocar este método múltiplas vezes com diferentes endereços de mail.

https://api.meocloud.pt/1/ShareFolder/[meocloud|sandbox]/[pathname]

Métodos permitidos

POST

Parâmetros

to_email: Endereço de mail do destinatário da partilha. Caso o destinatário não tenha conta na MEO Cloud, ser-lhe-á solicitada a criação de uma conta antes de poder aceitar o convite.

Exemplo de pedido

POST /1/ShareFolder/meocloud/stuff/Téstâção

Exemplo de resposta

{ "req_id": "509fc400-2f65-11e2-9501-3c0754179fed" }
Voltar ao topo

ListSharedFolders

Compatibilidade: exclusivo MEO Cloud

Faz uma lista de todas as pastas partilhadas em equipa. A lista inclui os nomes e mails dos utilizadores com quem a pasta está partilhada bem como metadata sobre o dono da pasta

https://api.meocloud.pt/1/ListSharedFolders

Métodos permitidos

GET

Exemplo de pedido

GET /1/ListSharedFolders

Exemplo de resposta

{
   "b66f89c7-f512-431d-9863-e00ab7c26506":{
      "folder_type":"shared",
      "is_owner":true,
      "users":[
         {
            "id":"d6aef5c8-9594-4e4a-ae85-7405cd8a4ee8",
            "owner":true,
            "user":true,
            "name":"Luci Gel"
         },
         {
            "id":"e328c1e9-149c-4065-815e-274de86c5f32",
            "name":"Zé das couves"
         }
      ],
      "shared_folder_path":"/teste"
   },
   "208a4cd9-ad56-4202-a75b-59211a5d3ef1":{
      "folder_type":"shared",
      "is_owner":true,
      "users":[
         {
            "id":"d6aef5c8-9594-4e4a-ae85-7405cd8a4ee8",
            "owner":true,
            "user":true,
            "name":"Luci Gel"
         },
         {
            "id":"e328c1e9-149c-4065-815e-274de86c5f32",
            "name":"Zé das couves"
         }
      ],
      "shared_folder_path":"/teste§"
   }
}
Voltar ao topo

ChangeShareOwner

Compatibilidade: exclusivo MEO Cloud

Transfere a pasta para outro dono. Ao chamar este método irá ser despoletado uma confirmação para o destinatário.

https://api.meocloud.pt/1/ChangeShareOwner

Métodos permitidos

POST

Parâmetros

shareid: Identificador da pasta partilhada. Pode ser obtido através do ListSharedFolders.

to_userid: Identificador do destinatário. Pode ser obtido através do ListSharedFolders, pois tem de já pertencer à pasta partilhada.

Exemplo de pedido

POST /1/ChangeShareOwner

Exemplo de resposta

{ "req_id": "509fc400-2f65-11e2-9501-3c0754179fed" }
Voltar ao topo

ParticipantLeavesSharedFolder

Compatibilidade: exclusivo MEO Cloud

Sai de uma pasta partilhada do qual não é o dono.

https://api.meocloud.pt/1/ParticipantLeavesSharedFolder/[meocloud|sandbox]/[pathname]

Métodos permitidos

POST

Exemplo de pedido

POST /1/ParticipantLeavesSharedFolder/meocloud/stuff/Téstâção

Exemplo de resposta

{}
Voltar ao topo

RemoveParticipantFromSharedFolder

Compatibilidade: exclusivo MEO Cloud

Retira um participante de uma pasta partilhada do qual se é dono.

https://api.meocloud.pt/1/RemoveParticipantFromSharedFolder/[meocloud|sandbox]/[pathname]

Métodos permitidos

POST

Exemplo de pedido

POST /1/RemoveParticipantFromSharedFolder/meocloud/stuff/Téstâção

Parâmetros

participantid: Identificação do participante, que é devolvida pelo ListSharedFolders.

Exemplo de resposta

{}
Voltar ao topo

OwnerUnsharesFolder

Compatibilidade: exclusivo MEO Cloud

Remove a partilha de uma pasta da qual se é dono.

https://api.meocloud.pt/1/OwnerUnsharesFolder/[meocloud|sandbox]/[pathname]

Métodos permitidos

POST

Exemplo de pedido

POST /1/OwnerUnsharesFolder/meocloud/stuff/Téstâção

Exemplo de resposta

{}
Voltar ao topo

Thumbnails

Compatibilidade: compatível com Dropbox mas com itens adicionais na resposta

Devolve um thumbnail em formato binário. Note que na MEO Cloud, para além das imagens existem alguns formatos adicionais com thumbnails (ex: mp3)

https://api-content.meocloud.pt/1/Thumbnails/[meocloud|sandbox]/[pathname]

Métodos permitidos

GET

Parâmetros

format: jpeg ou png

size: xs(32x32) ou s(64x64) ou m(120x120) ou l(640x480) ou xl(1024x768)

crop: true ou false

Exemplo de pedido

GET /1/Thumbnails/meocloud/Photos/Brinquedos.jpg?size=m

Resposta

O thumbnail é devolvido em formato binário

Erros devolvidos

404	Thumbnail não encontrado
415	Não foi possível gerar um thumbnail
Voltar ao topo

Revisions

Compatibilidade: compatível com Dropbox mas com itens adicionais na resposta

Este método permite obter informação relativa às versões anteriores de um ficheiro. Atenção que existe um limite de 30 dias para cada versão, até um máximo de 7.

https://api.meocloud.pt/1/Revisions/[meocloud|sandbox]/[pathname]

Métodos permitidos

GET

Parâmetros

rev_limit: Limite do número de versões devolvido

Exemplo de pedido

GET /1/Revisions/meocloud/Public/test.js?rev_limit=4

Exemplo de resposta

[{
	"bytes": 2072,
	"thumb_exists": false,
	"rev": "cdc0e31c-31e8-11e2-b300-e0db5501ca40",
	"modified": "Mon, 19 Nov 2012 01:31:06 +0000",
	"path": "/Public/test.js",
	"is_dir": false,
	"icon": "text_js",
	"root": "meocloud",
	"mime_type": "application/javascript",
	"size": "2 KB"
}, {
	"bytes": 2055,
	"thumb_exists": false,
	"rev": "51ceb3ca-31dd-11e2-a0bf-e0db550199f4",
	"modified": "Sun, 18 Nov 2012 23:20:10 +0000",
	"path": "/Public/test.js",
	"is_dir": false,
	"icon": "text_js",
	"root": "meocloud",
	"mime_type": "application/javascript",
	"size": "2 KB"
}, {
	"bytes": 2055,
	"thumb_exists": false,
	"rev": "8132a132-31d6-11e2-927c-e0db5501ca40",
	"modified": "Sun, 18 Nov 2012 23:20:10 +0000",
	"path": "/Public/test.js",
	"is_dir": false,
	"icon": "text_js",
	"root": "meocloud",
	"mime_type": "application/javascript",
	"size": "2 KB"
}, {
	"bytes": 2055,
	"thumb_exists": false,
	"rev": "7f776b2a-31d6-11e2-98bc-e0db550199f4",
	"modified": "Sun, 18 Nov 2012 23:20:10 +0000",
	"path": "/Public/test.js",
	"is_dir": false,
	"icon": "text_js",
	"root": "meocloud",
	"mime_type": "application/javascript",
	"size": "2 KB"
}]

Erros devolvidos

406	Demasiadas entradas a devolver
Voltar ao topo

Restore

Compatibilidade: compatível com Dropbox mas com itens adicionais na resposta

Use este método para repor uma determinada versão de um ficheiro.

https://api.meocloud.pt/1/Restore/[meocloud|sandbox]/[pathname]

Métodos permitidos

POST

Parâmetros

rev: Obrigatório. A identificação da versão específica a repor.

Exemplo de pedido

POST /1/Restore/meocloud/Public/test.js
Post fields: rev=384186e2-31e9-11e2-927c-e0db5501ca40

Exemplo de resposta

{
	"bytes": 2055,
	"thumb_exists": false,
	"rev": "384186e2-31e9-11e2-927c-e0db5501ca40",
	"modified": "Sun, 18 Nov 2012 23:20:10 +0000",
	"cursor": "action_restore,d75af216-d1aa-46bf-9673-6bf2d9ce7002_384256ee-31e9-11e2-927c-e0db5501ca40,event_3840937c-31e9-11e2-927c-e0db5501ca40",
	"path": "/Public/test.js",
	"is_dir": false,
	"icon": "text_js",
	"root": "meocloud",
	"mime_type": "application/javascript",
	"size": "2 KB"
}

Erros devolvidos

404	Impossível obter a revisão pedida
Voltar ao topo

Media

Compatibilidade: compatível com Dropbox mas com itens adicionais na resposta

Devolve um link direto para um ficheiro (sem a normal moldura de html).

https://api.meocloud.pt/1/Media/[meocloud|sandbox]/[pathname]

Métodos permitidos

POST

Exemplo de pedido

POST /1/Media/meocloud/Movies/SAPO1.mp4

Exemplo de resposta

{
  "url": "https://cld.pt/download/9229c40c-0f29-41ef-bb11-b400f9416a10/SAPO1.mp4",
	"expires": "Mon, 19 Nov 2012 05:37:12 +0000"
}

Erros devolvidos

Ver acima
Voltar ao topo

Files

Compatibilidade: com Dropbox

Este endpoint permite fazer o download ou upload de ficheiros

https://api-content.meocloud.pt/1/Files/[meocloud|sandbox]/[pathname]

Métodos usados para download

GET

Parâmetros

rev: Caso pretenda fazer download de uma versão específica do ficheiro

Exemplo de pedido

GET /1/Files/meocloud/Photos/Brinquedos.jpg

Métodos usados para upload

POST / PUT

Parâmetros

overwrite: (booleano) Determina o comportamento caso já exista o ficheiro no destino. Em caso de True, o ficheiro é reescrito. Em caso de False, o ficheiro é renomeado

parent_rev: Caso pretenda reescrever um ficheiro, envie a última versão dele neste parâmetro.

O BODY do pedido contém o ficheiro a ser enviado

Exemplo de pedido

PUT or POST /Files/meocloud/Photos/Brinquedos.jpg?overwrite=false

Erros devolvidos

404 Ficheiro ou versão não encontrados
406 Parâmetros incorretos recebidos
      
Voltar ao topo

Delta

Compatibilidade: compatível com Dropbox mas com itens adicionais na resposta

Este método é útil para sincronizar alterações. Ao invocar /Delta com o parâmetro cursor, apenas as modificações ocorridas a partir da data de obtenção do cursor anterior serão listadas.

https://api.meocloud.pt/1/Delta

Métodos permitidos

POST

Parâmetros

cursor: Serve de marcador. Só as alterações ocorridas após a data de obtenção do cursor serão listadas.

Exemplo de pedido

POST /1/Delta

Exemplo de resposta

{
	"has_more": true,
	"cursor": "1353289183.061f533a-fbe4-416f-b188-8797a349a419_0,d75af216-d1aa-46bf-9673-6bf2d9ce7002_8b76871a-2ec2-11e2-809f-e0db55018fa4,4f320e3f-ca48-4911-b5b2-813bad0e828b_0",
	"reset": true,
	"entries": [
		["/",
		{
			"hash": "e879eab4-2d8d-11e2-b317-e0db5501ca40",
			"bytes": 0,
			"thumb_exists": false,
			"rev": "e87a3186-2d8d-11e2-b317-e0db5501ca40",
			"modified": "Tue, 13 Nov 2012 12:30:28 +0000",
			"path": "/",
			"is_dir": true,
			"root": "meocloud",
			"size": "0 bytes"
		}],
		["/sites",
		{
			"hash": "f45d9f88-2d8d-11e2-840a-e0db5501ca40",
			"bytes": 0,
			"thumb_exists": false,
			"rev": "f45de240-2d8d-11e2-840a-e0db5501ca40",
			"modified": "Tue, 13 Nov 2012 12:30:48 +0000",
			"path": "/Sites",
			"is_dir": true,
			"root": "meocloud",
			"size": "0 bytes"
		}],
	]
}

Erros devolvidos

Ver acima
Voltar ao topo

LongpollDelta

Compatibilidade: compatível com Dropbox

Um endpoint com long-polling para esperar por alterações numa conta. Em conjunto com o Delta, permite com baixa latência ser notificado de alterações numa conta. Ao contrário da maioria dos métodos, este não requer autenticação. O cursor enviado só pode ser adquirido mediante uma chamada autenticada ao Delta.

https://notifications.meocloud.pt/notifications/longpoll_delta

Métodos permitidos

GET

Parâmetros

cursor: Um cursor obtido numa chamada ao Delta.

timeout: Um inteiro, opcional, que indica um timeout em segundos. O valor por omissão é de 30, que é também o valor mínimo. O máximo é 480. O pedido irá bloquear no máximo durante intervalo de tempo, mais até 90 segundos de atraso aleatório para evitar que os clientes se sincronizem. É de notar que algumas infrastruturas de rede não suportam timeouts longos.

Exemplo de pedido

GET /notifications/longpoll_delta?cursor=xpto

Exemplo de resposta

O pedido irá bloquear até haver alterações an conta, ou o timeout ser atingido. Em ambos os casos o código HTTP da resposta será 200, e a resposta será um dicionário JSON. O valor do atributo changes indica se há alterações. Se o valor for true, deve usar-se o método Delta para obter essas alterações. Se o valor for false, o timeout foi atingido. Se presente, o valor do atributo backoff indica quantos segundos o seu código deve esperar até chamar o LongpollDelta de novo.

{"changes": false, "backoff": 60}

Erros devolvidos

400 O parametro offset não coincide com o que o servidor esperava. O corpo da resposta será um JSON semelhante ao em cima, indicando o offset correcto
Voltar ao topo

LatestCursor

Compatibilidade: exclusivo MEO Cloud

Obter o cursor actual para chamadas ao Delta ou LongpollDelta.

https://api.meocloud.pt/1/LatestCursor

Métodos permitidos

GET

Exemplo de pedido

GET /1/LatestCursor

Exemplo de resposta

{
  "cursor": "1395750608.de3c49cd-5625-47f3-9dea-27847af0e022_ac0020f0-94d7-11e3-a269-0050568c00ab,f035141d-0e1e-4636-8497-a4d2b0297bd3_718ef9b4-7489-11e3-a1dc-0050568c00ab,3a07f67b-d5eb-48b1-bba4-b22db1d412fb_9608d5e6-9d4a-11e3-a9af-0050568c00ab,7e11ed1e-0ab1-429c-bd77-b1eda6465cd1_56214dea-c7b8-11e2-889a-0050568c00ab,39236c8e-7468-4d82-af3b-ba9f7294c03b_dfe14ae2-4d1b-11e3-8a6c-0050568c00b1,04ffcc4b-2086-473b-9f31-91b6ea346055_195e3452-aaa9-11e3-9bd1-0050568c00ab,2c6aabfc-eb86-4456-b5a9-bb62ee0a8d00_b52ad0aa-7487-11e3-a1dc-0050568c00ab,24314b80-4b45-4a17-a9e2-00ac8c2d14e6_b0a1cfee-7490-11e3-a1dc-0050568c00ab"
}

Erros devolvidos

Ver acima
Voltar ao topo

ChunkedUpload

Compatibilidade: compatível com Dropbox

Envia ficheiros grandes para a MEO Cloud em múltiplas partes. Permite também continuar um envio se este foi interrompido. Este método permite envios maiores do que aqueles permitidos pelo método Files.

Utilização típica:

  • Enviar um pedido PUT para /1/ChunkedUpload com a primeira parte do ficheiro sem enviar upload_id, recebendo na resposta um upload_id.
  • Enviar as outras partes do ficheiro em pedidos PUT subsequentes usando o upload_id recebido na resposta à primeira parte e enviando o offset que indica o número de bytes transferidos até agora.
  • Após cada parte ter sido enviada, o servidor responde com um novo offset que representa o total de bytes transferido.
  • Depois da última parte ser transferida, enviar um POST para /1/CommitChunkedUpload para completar o envio.

Cada parte pode um tamanho variável, até 150MB. O tamanho recomendado é 4MB. Usar tamanhos maiores resulta em menos chamadas à API e melhor taxa de transferência, mas caso esta seja interrompida irá ser necessário recomeçar do início da última parte enviada com sucesso. Se o offset enviado não corresponder ao offset esperado pelo servidor, este irá ignorar o pedido e responder com um erro 400 indicando o offset esperado. Para continuar, recomece o envio desse ponto no ficheiro.

Um envio por partes pode demorar um máximo de 24 horas até expirar.

https://api-content.meocloud.pt/1/ChunkedUpload

Métodos permitidos

PUT

Parâmetros

upload_id: O ID único da sessão de envio actual. Se deixado em branco o servidor irá criar uma nova sessão.

offset: O offset em bytes deste chunk, relativamente ao início do ficheiro completo. O servidor irá verificar que este offset coincide com o que ele está à espera. Se não coincidir, o servidor irá retornar um erro com o offset esperado.

O BODY do pedido contém o chunk a ser enviado

Exemplo de pedido

PUT /1/ChunkedUpload

Exemplo de resposta

{
    "upload_id": "452tffffer-dscew-dewd",
    "offset": 12345,
    "expires": "Wed, 12 Jun 2013 11:51:35 +0000"
}

Erros devolvidos

404 O upload_id não existe ou expirou
400 O parametro offset não coincide com o que o servidor esperava. O corpo da resposta será um JSON semelhante ao em cima, indicando o offset correcto
Voltar ao topo

CommitChunkedUpload

Compatibilidade: compatível com Dropbox

Completa um upload iniciado através do método ChunkedUpload. Este método é semelhante ao Files. A grande diferença é que enquanto o Files recebe o conteúdo do ficheiro no corpo do pedido, o CommitChunkedUpload recebe um parâmetro upload_id, que é obtido quando o conteúdo do ficheiro é enviado via o ChunkedUpload.

https://api-content.meocloud.pt/1/CommitChunkedUpload/[root]/[pathname]

Métodos permitidos

POST

Parâmetros no URL

root: Obrigatório. Use meocloud ou sandbox consoante o registo que fez da sua aplicação.

pathname: Path completo do ficheiro a enviar.

Parâmetros POST

overwrite: (booleano) Determina o comportamento caso já exista o ficheiro no destino. Em caso de True, o ficheiro é reescrito. Em caso de False, o ficheiro é renomeado

parent_rev: Caso pretenda reescrever um ficheiro, envie a última versão dele neste parâmetro.

upload_id: Identifica a sessão de upload que se pretende concluir.

Exemplo de pedido

POST /1/CommitChunkedUpload/meocloud/teste.txt

Exemplo de resposta

{
	"bytes": 2055,
	"thumb_exists": false,
	"rev": "a291b836-31ea-11e2-a86d-e0db5501ca40",
	"modified": "Sun, 18 Nov 2012 23:20:10 +0000",
	"cursor": "action_copy,d75af216-d1aa-46bf-9673-6bf2d9ce7002_a2928126-31ea-11e2-a86d-e0db5501ca40,event_a291600c-31ea-11e2-a86d-e0db5501ca40",
	"path": "/Temp/test.js",
	"is_dir": false,
	"icon": "text_js",
	"root": "meocloud",
	"mime_type": "application/javascript",
	"size": "2 KB"
}

Erros devolvidos

400 Devolvido quando o pedido não contém um upload_id ou se não existe nenhuma sessão de upload com esse id
Voltar ao topo

Zipdir

Compatibilidade: exclusivo MEO Cloud

Faz o download de uma directoria no formato Zip.

https://api-content.meocloud.pt/1/Zipdir/[meocloud|sandbox]/[pathname]

Métodos permitidos

GET

Parâmetros no URL

root: Obrigatório. Use meocloud ou sandbox consoante o registo que fez da sua aplicação.

pathname: Path completo da directoria.

Exemplo de pedido

GET /1/Zipdir/meocloud/dir

Erros devolvidos

Ver acima
Voltar ao topo

SaveUrl

Compatibilidade: compatível com Dropbox

Faz o download do ficheiro indicado no parâmetro url para a cloud do utilizador.

https://api-content.meocloud.pt/1/SaveUrl/[meocloud|sandbox]/[pathname]

Métodos permitidos

POST

Parâmetros no URL

root: Obrigatório. Use meocloud ou sandbox consoante o registo que fez da sua aplicação.

pathname: Path completo onde o ficheiro deverá ser guardado.

Exemplo de pedido

POST /1/SaveUrl/meocloud/MinhasImagens/umafoto.jpg
Post fields: url=http://example.com/someimage.jpg

Exemplo de resposta

{
"status": "PENDING",
"job": "ef111367-c5e9-4be4-9da4-f09fdbe516bf"
}

Erros devolvidos

Ver acima
Voltar ao topo

SaveUrlJob

Compatibilidade: compatível com Dropbox

Retorna o estado de um job iniciado por uma chamada a SaveUrl.

https://api-content.meocloud.pt/1/SaveUrlJob/[jobid]

Métodos permitidos

GET

Parâmetros no URL

jobid: Job id do qual obter o estado.

Exemplo de pedido

GET /1/SaveUrlJob/ef111367-c5e9-4be4-9da4-f09fdbe516bf

Exemplo de resposta

{
"status": "COMPLETE"
}

Exemplo de resposta de erro

{
"status": "FAILED",
"error": "Job timed out"
}

Estados possíveis

PENDING: Registado mas ainda não iniciado
DOWNLOADING: Download em curso
COMPLETE: Download efectuado com sucesso
FAILED: Download falhado

Erros devolvidos

Ver acima
Voltar ao topo

Copy

Compatibilidade: compatível com Dropbox mas com itens adicionais na resposta

Copia um ficheiro

https://api.meocloud.pt/1/Fileops/Copy

Métodos permitidos

POST

Parâmetros

root: Obrigatório. Use meocloud ou sandbox consoante o registo que fez da sua aplicação.

from_path: path completo de origem

to_path: path completo de destino (incluindo a root)

from_copy_ref: Ver abaixo para uma explicação

Exemplo de pedido

POST /1/Fileops/Copy
Post fields: from_path=/Public/test.js&to_path=/Temp/test.js

Exemplo de resposta

{
	"bytes": 2055,
	"thumb_exists": false,
	"rev": "a291b836-31ea-11e2-a86d-e0db5501ca40",
	"modified": "Sun, 18 Nov 2012 23:20:10 +0000",
	"cursor": "action_copy,d75af216-d1aa-46bf-9673-6bf2d9ce7002_a2928126-31ea-11e2-a86d-e0db5501ca40,event_a291600c-31ea-11e2-a86d-e0db5501ca40",
	"path": "/Temp/test.js",
	"is_dir": false,
	"icon": "text_js",
	"root": "meocloud",
	"mime_type": "application/javascript",
	"size": "2 KB"
}

Erros devolvidos

403	Cópia não válida (ex: o ficheiro já existe)
404	Path de origem não existente
406	Demasiados ficheiros
Voltar ao topo

CopyRef

Compatibilidade: com Dropbox

Cria uma referência para uma pasta ou ficheiro, que depois pode ser usada no Copy para copiar conteúdos entre contas MEO Cloud distintas.

https://api.meocloud.pt/1/CopyRef/[meocloud|sandbox]/[pathname]

Métodos permitidos

GET

Exemplo de pedido

GET /1/CopyRef/meocloud/Photos/Brinquedos.mp4

Exemplo de resposta

{
     "copy_ref": "z1X6ATl6aWtzOGq0c3g5Ng",
     "expires": "Fri, 31 Jan 2042 21:01:05 +0000"
}

Erros devolvidos

Ver acima
Voltar ao topo

CopyRefDetails

Compatibilidade: exclusivo MEO Cloud

Devolve os detalhes de uma referência criada com o CopyRef.

https://api.meocloud.pt/1/CopyRefDetails

Métodos permitidos

GET

Exemplo de pedido

GET /1/CopyRefDetails?copy_ref=3e6356ef-7555-4123-b1b2-94fb31a057ea

Exemplo de resposta

{
  "name": "123123",
  "bytes": 48,
  "is_dir": false,
  "size": "48 bytes",
  "mime_type": "application/octet-stream",
  "icon": "page_white.gif"
}

Erros devolvidos

Ver acima
Voltar ao topo

Delete

Compatibilidade: compatível com Dropbox mas com itens adicionais na resposta

Remove um ficheiro ou pasta.

https://api.meocloud.pt/1/Fileops/Delete

Métodos permitidos

POST

Parâmetros

root: Obrigatório. Use meocloud ou sandbox consoante o registo que fez da sua aplicação.

path: Path completo do ficheiro a remover

Exemplo de pedido

POST /1/Fileops/Delete
Post fields: path=/Temp/Test.js

Exemplo de resposta

{
	"is_deleted": true,
	"bytes": 0,
	"thumb_exists": false,
	"rev": "5a70e526-31eb-11e2-927c-e0db5501ca40",
	"modified": "Sun, 18 Nov 2012 23:20:10 +0000",
	"cursor": "action_delete,d75af216-d1aa-46bf-9673-6bf2d9ce7002_5a71bd20-31eb-11e2-927c-e0db5501ca40,event_5a7086da-31eb-11e2-927c-e0db5501ca40",
	"path": "/Temp/test.js",
	"is_dir": false,
	"icon": "text_js",
	"root": "meocloud",
	"mime_type": "application/javascript",
	"size": "0 bytes"
}

Erros devolvidos

404	Ficheiro inexistente
406	Demasiados ficheiros
Voltar ao topo

Move

Compatibilidade: compatível com Dropbox mas com itens adicionais na resposta

Move um ficheiro ou pasta para uma nova localização.

https://api.meocloud.pt/1/Fileops/Move

Métodos permitidos

POST

Parâmetros

root: Obrigatório. Use meocloud ou sandbox consoante o registo que fez da sua aplicação.

from_path: Path completo de origem

to_path: Path completo de destino (incluindo a root)

Exemplo de pedido

POST /1/Fileops/Move
Post fields: from_path=/Temp/test.js&to_path=/Testes/test.js

Exemplo de resposta

{
	"bytes": 2055,
	"thumb_exists": false,
	"rev": "d2b76d48-31eb-11e2-927c-e0db5501ca40",
	"modified": "Sun, 18 Nov 2012 23:20:10 +0000",
	"cursor": "action_move,d75af216-d1aa-46bf-9673-6bf2d9ce7002_d2b846d2-31eb-11e2-927c-e0db5501ca40,event_d2b71a96-31eb-11e2-927c-e0db5501ca40",
	"path": "/Testes/test.js",
	"is_dir": false,
	"icon": "text_js",
	"root": "meocloud",
	"mime_type": "application/javascript",
	"size": "2 KB"
}

Erros devolvidos

403	Erro durante a movimentação. (ex: o path de destino já existe)
404	Não encontrado
406	Demasiados ficheiros
Voltar ao topo

CreateFolder

Compatibilidade: compatível com Dropbox mas com itens adicionais na resposta

Cria uma nova pasta.

https://api.meocloud.pt/1/Fileops/CreateFolder

Métodos permitidos

POST

Parâmetros

root: Obrigatório. Use meocloud ou sandbox consoante o registo que fez da sua aplicação.

path: Path completo de destino da nova pasta.

Exemplo de pedido

POST /1/Fileops/CreateFolder
Post fields: path=/NewStuff				

Exemplo de resposta

{
	"hash": "061ba0c8-31ec-11e2-846d-e0db5501ca40",
	"bytes": 0,
	"thumb_exists": false,
	"rev": "061c0e1e-31ec-11e2-846d-e0db5501ca40",
	"modified": "Mon, 19 Nov 2012 01:54:15 +0000",
	"path": "/NewStuff",
	"is_dir": true,
	"root": "meocloud",
	"size": "0 bytes"
}

Erros devolvidos

403	Já existe uma pasta no destino indicado.
Voltar ao topo

UndeleteTree

Compatibilidade: exclusivo MEO Cloud

Recuperar um ficheiro ou pasta.

https://api.meocloud.pt/1/UndeleteTree

Métodos permitidos

POST

Parâmetros

root: Obrigatório. Use meocloud ou sandbox consoante o registo que fez da sua aplicação.

path: Path completo do ficheiro ou pasta.

Exemplo de pedido

POST /1/UndeleteTree/meocloud/deleteddir

Exemplo de resposta

{
    "size": "0 bytes",
    "rev": "1f477dd351f",
    "thumb_exists": false,
    "bytes": 0,
    "modified": "Wed, 10 Aug 2011 18:21:30 +0000",
    "path": "/deleteddir",
    "is_dir": true,
    "icon": "folder",
    "root": "meocloud",
    "revision": 5023410,
    "is_deleted": true
}

Erros devolvidos

404 Ficheiro ou pasta não encontrados.
Voltar ao topo

Forgetfile

Compatibilidade: exclusivo MEO Cloud

Remover definitivamente um ficheiro, quando este já está apagado.

https://api.meocloud.pt/1/Fileops/ForgetFile

Métodos permitidos

POST

Parâmetros

root: Obrigatório. Use meocloud ou sandbox consoante o registo que fez da sua aplicação.

path: Path completo do ficheiro.

Exemplo de pedido

POST /1/Fileops/ForgetFile

Exemplo de resposta

{
    "res": "ok"
}

Erros devolvidos

404 Ficheiro não encontrado.
403 Ficheiro não apagado.
Voltar ao topo

SetApplicationKV

Compatibilidade: exclusivo MEO Cloud

Acrescenta/altera o valor de uma chave na Key-Value store específica da aplicação.

https://api.meocloud.pt/1/SetApplicationKV

Métodos permitidos

POST

Parâmetros

key: Nome da chave.

value: Valor a atribuír à chave.

Exemplo de pedido

POST /1/SetApplicationKV

Exemplo de resposta

{
}
Voltar ao topo

GetApplicationKV

Compatibilidade: exclusivo MEO Cloud

Obtém o valor de uma ou mais chaves da Key-Value store específica da aplicação.

https://api.meocloud.pt/1/GetApplicationKV

Métodos permitidos

GET

Parâmetros

key: Nome da chave.

Exemplo de pedido

POST /1/GetApplicationKV?key=key1&key=key2

Exemplo de resposta

{
        "key2": {"timestamp": 1395686281, "value": "360"},
        "key1": {"timestamp": 1395686270, "value": "3600"}
}
Voltar ao topo

DelApplicationKV

Compatibilidade: exclusivo MEO Cloud

Remove uma chave da Key-Value store específica da aplicação.

https://api.meocloud.pt/1/DelApplicationKV

Métodos permitidos

POST

Parâmetros

key: Nome da chave.

Exemplo de pedido

POST /1/DelApplicationKV

Exemplo de resposta

{
}
Voltar ao topo

SetUserKV

Compatibilidade: exclusivo MEO Cloud

Acrescenta/altera o valor de uma chave na Key-Value store específica do utilizador.

https://api.meocloud.pt/1/SetUserKV

Métodos permitidos

POST

Parâmetros

key: Nome da chave.

value: Valor a atribuír à chave.

Exemplo de pedido

POST /1/SetUserKV

Exemplo de resposta

{
}
Voltar ao topo

GetUserKV

Compatibilidade: exclusivo MEO Cloud

Obtém o valor de uma ou mais chaves da Key-Value store específica do utilizador.

https://api.meocloud.pt/1/GetUserKV

Métodos permitidos

GET

Parâmetros

key: Nome da chave.

Exemplo de pedido

POST /1/GetUserKV?key=key1&key=key2

Exemplo de resposta

{
        "key2": {"timestamp": 1395686281, "value": "360"},
        "key1": {"timestamp": 1395686270, "value": "3600"}
}
Voltar ao topo

DelUserKV

Compatibilidade: exclusivo MEO Cloud

Remove uma chave da Key-Value store específica do utilizador.

https://api.meocloud.pt/1/DelUserKV

Métodos permitidos

POST

Parâmetros

key: Nome da chave.

Exemplo de pedido

POST /1/DelUserKV

Exemplo de resposta

{
}
Voltar ao topo

Account/Info

Compatibilidade: compatível com Dropbox mas com itens adicionais na resposta

Mostra informação sobre o utilizador.

https://api.meocloud.pt/1/Account/Info

Métodos permitidos

GET

Exemplo de pedido

GET /1/Account/Info

Exemplo de resposta

{
   display_name:"Zé das Couves",
   uid:285363235833635011527804093794089586408,
   last_event:"Wed, 19 Sep 2012 20:05:42 +0000",
   quota_info:{
      shared:3715091,
      quota:5368709120,
      normal:1675021812
   },
   active:true,
   email:"dude@sapo.pt",
   language: "en"
}

Erros devolvidos

Ver acima
Voltar ao topo

ListEvents

Compatibilidade: exclusivo MEO Cloud

Mostra informação sobre os últimos eventos na conta de um utilizador.

https://api.meocloud.pt/1/ListEvents

Métodos permitidos

GET

Exemplo de pedido

GET /1/ListEvents

Exemplo de resposta

[
  {
    "eventid": "8f23d3ca-b42e-11e3-8e67-0050568c00ab",
    "count": 1,
    "csaction": "upload",
    "date": "Tue, 25 Mar 2014 15:03:01 +0000",
    "type": "changeset",
    "first": {
      "hash": "ZlOXc-sjCuPONsBI1LpouKh0SEim-ong0bbJX1l0Q6uz559ydJ6BmwqfBNfm5yHnoh5kQ_IL8zie9KD5D_gCtg",
      "involved_users": "[]",
      "is_dir": false,
      "revision": "8f240c50-b42e-11e3-8e67-0050568c00ab",
      "csaction": "add",
      "path": "\/Python-2.7.3.tar.bz2"
    }
  },
  {
    "eventid": "fb0d895e-b42a-11e3-a4ff-0050568c00b1",
    "count": 2,
    "csaction": "copy",
    "date": "Tue, 25 Mar 2014 14:37:24 +0000",
    "type": "changeset",
    "first": {
      "hash": "4e083e30-b0f4-11e2-9941-406c8f001c8a",
      "involved_users": "[]",
      "is_dir": true,
      "revision": "fb0dbcf8-b42a-11e3-a4ff-0050568c00b1",
      "csaction": "add",
      "path": "\/Welcome kit"
    }
  },
  {
    "eventid": "fb05ac66-b42a-11e3-afb1-0050568c00ab",
    "count": 1,
    "csaction": "create_dir",
    "date": "Tue, 25 Mar 2014 14:37:24 +0000",
    "type": "changeset",
    "first": {
      "hash": "fb059ce4-b42a-11e3-afb1-0050568c00ab",
      "involved_users": "[]",
      "is_dir": true,
      "revision": "fb067646-b42a-11e3-afb1-0050568c00ab",
      "csaction": "add",
      "path": "\/"
    }
  }
]

Erros devolvidos

    Ver acima
Voltar ao topo

DisableAccessToken

Compatibilidade: compatível com Dropbox

Termina autorização da aplicação.

https://api.meocloud.pt/1/DisableAccessToken

Métodos permitidos

POST

Exemplo de pedido

GET /1/DisableAccessToken

Exemplo de resposta

{}

ChangeUserLanguage

Compatibilidade: exclusivo MEO Cloud

Usado para alterar a linguagem do utilizador. Essa linguagem pode ser obtida usando o método Account/Info.

https://api.meocloud.pt/1/ChangeUserLanguage

Métodos permitidos

POST

Parâmetros

lang_code: Obrigatório. O código da linguagem pretendida (ex: pt, en).

Exemplo de pedido

POST /1/ChangeUserLanguage
Post fields: lang_code=en

Exemplo de resposta

{}
Voltar ao topo