Ficheiros, importações e definições
Cada comando para os ficheiros que a caixa de correio guarda, para importar uma caixa de correio antiga ou uma conta do Resend, para o calendário encontrado no correio e para as definições do espaço de trabalho e de cada endereço.
Visão geral
Cinco espaços de nomes cobrem o que rodeia o correio em si. openemail files é a página Ficheiros: cada anexo enviado e recebido e cada ficheiro carregado, com os bytes e as ligações de transferência com que saiu. openemail imports traz uma caixa de correio antiga para um endereço, e openemail provider-imports traz uma conta do Resend. openemail calendar lê os eventos encontrados no correio, e openemail settings lê e altera as preferências da caixa de correio e a assinatura e o rastreio de cada endereço.
- Um id diz o que designa:
file_para um ficheiro,imp_para uma importação de caixa de correio,pimp_para uma importação do Resend ecal_para um evento de calendário, cada um seguido de 24 caracteres hexadecimais. Uma ligação de transferência tem o seu próprio id, defiles list-linksoufiles create-link. --address-idnuma importação é o id de um endereço, deopenemail domains list-addresses <id>, não o endereço em si.- Os espaços de nomes respondem também a
file,import,provider-importouproviderImports, esetting. Os verbos aceitam os aliases habituais quando os têm:lsparalist,showeviewparaget,neweaddparacreate,editparasettings update, erm,deleremoveparafiles delete. - Nenhum destes comandos pede um código de verificação a um início de sessão no navegador. Os que alteram algo de vez pedem-lhe confirmação, e
--yesresponde por um script. openemail <command> --helplista cada argumento e opção com o tipo, o scope de que a chamada precisa, o método e o caminho, e o que devolve. Acrescente--jsonpara ter a mesma página como dados.
Ficheiros
openemail files lê e gere cada ficheiro que a caixa de correio guarda: os anexos que chegaram, os anexos que saíram e os ficheiros carregados na página Ficheiros. openemail open files abre a mesma página na aplicação web.
| Comando | O que faz |
|---|---|
| openemail files list | Listar uma página de ficheiros com nome, tipo, tamanho, direção, o endereço a que cada um chegou e se pode ser eliminado |
| openemail files get <id> | Ler um ficheiro, com a conversa e a mensagem a que pertence, o seu usage e deletable |
| openemail files stats | Contar os ficheiros e os bytes que ocupam, divididos em recebidos, enviados e carregados, com os tipos e os endereços principais, os últimos 30 dias e as ligações que continuam a funcionar |
| openemail files download <id> | Obter os bytes de um ficheiro exatamente como estão guardados, em --out <file> ou em stdout quando encaminhado |
| openemail files list-links <id> | Listar as ligações de transferência com que um ficheiro saiu, da mais recente para a mais antiga, com quantas vezes cada uma foi descarregada e se foi revogada |
| openemail files create-link <id> | Publicar o ficheiro numa nova ligação de transferência pública que abre sem iniciar sessão |
| openemail files revoke-link <id> <link-id> | Parar uma ligação pública de vez, também no correio já enviado. Pede-lhe confirmação |
| openemail files upload <data> | Carregar um ficheiro a partir de um caminho, ou de stdin com -, até 100 MB |
| openemail files delete <id> | Eliminar de vez um ficheiro carregado de que nada depende. Pede-lhe confirmação |
| openemail files delete-many <ids...> | Eliminar até 100 ficheiros numa só chamada e indicar os que foram mantidos e os que não foram encontrados. Pede-lhe confirmação |
files listfiltra com--q(o nome e o tipo),--kind(image,pdf,audio,videooutext),--direction(inbound,outboundouuploaded),--address,--sincee--until, e ordena com--sort(newest,oldest,largestouname).--sincee--untilaceitam uma data ou data e hora ISO 8601:--sinceinclui o seu momento e--untilpara antes dele.- Só é possível eliminar um ficheiro carregado de que nada depende, e
deletableindica-o de antemão.usagediz o que retém qualquer outro ficheiro:received,sent,linkedpara um ficheiro carregado cuja ligação de transferência ainda funciona, ouscheduledpara um anexado a uma mensagem que ainda não saiu.deleterecusa-os com 409file_in_use.delete-manyelimina o que consegue, lista o resto emkeptcom um motivo para cada um, e lista os ids desconhecidos emmissing. uploadlê o ficheiro no caminho que indicar e guarda-o com o nome desse ficheiro, com o tipo que a extensão implica.--filenamee--content-typesubstituem-nos. A partir de stdin,-precisa de--filename, e sem--content-typeo tipo éapplication/octet-stream. O carregamento espera até 10 minutos, o que--timeout-msaltera.- O id que
uploaddevolve anexa o ficheiro a um envio como{ "fileId": "…" }emopenemail emails send --attachments, que é como sai um ficheiro acima do limite de 5 MB em linha. - Um ficheiro vazio dá 400
upload_empty, um programa ou script (avaliado pelo nome) dá 400upload_dangerous, e um ficheiro com mais de 100 MB dá 413upload_too_large. Um espaço de trabalho guarda até 10 GB de carregamentos e aceita 500 carregamentos por hora. downloadprecisa de--out <file>num terminal e sem ele para com o código de saída2. Encaminhado, os bytes vão para stdout, e--out -também pede stdout. O ficheiro inteiro é mantido em memória.create-linkcria uma ligação nova em cada chamada, com a sua própria contagem de transferências, e a ligação funciona até ser revogada ou o ficheiro ser eliminado. Fica no domínio de ficheiros de--domainquando esse domínio tem um, comofiles.acme.com, senão no domínio de ficheiros do endereço do ficheiro, senão no endereço da API. Um programa ou script é recusado com 422file_unshareable.revoke-linkpode ser repetido sem risco: uma ligação já revogada volta inalterada.- Uma chave ou um início de sessão limitados a determinados endereços ou domínios só veem os ficheiros que lhes chegaram, nunca os ficheiros carregados para todo o espaço de trabalho, e os seus próprios carregamentos pertencem ao primeiro endereço que têm.
- O índice de ficheiros começa no dia em que foi lançado. Os anexos mais antigos continuam nas suas mensagens, onde
openemail threads list-attachments <id>os lê.
Importações de caixas de correio
openemail imports traz uma caixa de correio antiga para um endereço: arquivos do Google Takeout, ficheiros .mbox do Apple Mail, do Thunderbird e da maioria das aplicações de computador, ficheiros .eml, e arquivos .zip ou .tgz que contenham qualquer um deles, até 100 GB por ficheiro e 50 ficheiros por importação. As conversas, as datas e as etiquetas são mantidas. O correio importado é silencioso: não executa regras, reencaminhamentos, notificações, resumos nem webhooks.
import-files é o que quase toda a gente precisa: cria a importação, carrega cada ficheiro por partes com uma linha de progresso e inicia-a. Os outros verbos são esses passos um a um, para terminar um carregamento que parou ou para o conduzir você mesmo. create devolve o plano, chunkBytes e os chunks de cada ficheiro, upload-chunk envia uma parte, upload-state diz que partes chegaram, e start põe a importação em fila. openemail open imports mostra as mesmas importações na aplicação web.
| Comando | O que faz |
|---|---|
| openemail imports list | Listar uma página das importações do espaço de trabalho, da mais recente para a mais antiga, com o estado, os bytes lidos e as contagens. --address-id mantém um endereço |
| openemail imports get <id> | Ler uma importação com o estado, o progresso e as contagens. Consulte-a até dizer completed, failed ou cancelled |
| openemail imports create --address-id <value> --files <json|@file|-> | Criar uma importação a partir de uma lista de { name, bytes } e obter o seu plano de carregamento, com status em uploading |
| openemail imports upload-state <id> | Para cada ficheiro, os índices das partes já guardadas, para que um carregamento interrompido envie só o que falta |
| openemail imports upload-chunk <id> <file> <chunk> <data> | Carregar uma parte de um ficheiro, a partir de um caminho ou de stdin com -. Enviar uma parte de novo substitui-a |
| openemail imports start <id> | Verificar que todas as partes chegaram, reconhecer o formato de cada ficheiro e pôr a importação em fila |
| openemail imports cancel <id> | Parar a importação no próximo ponto de controlo. O correio já importado fica. Pede-lhe confirmação |
| openemail imports list-failures <id> | Listar cada mensagem ou entrada de arquivo que não foi importada, com o motivo |
| openemail imports delete-upload <id> | Eliminar os ficheiros carregados. O correio já importado fica. Pede-lhe confirmação |
| openemail imports import-files --address-id <value> --files <path> | Criar, carregar e iniciar uma importação com um só comando, e voltar assim que estiver em fila |
- O endereço tem de ser um dos domínios próprios do espaço de trabalho em nome do qual a chave ou o início de sessão possa agir. Só corre uma importação por endereço: outra enquanto uma está em fila ou em curso dá 409
already_running. import-filesaceita--filesuma vez por ficheiro, ou vários caminhos separados por vírgulas, e envia cada um com o seu próprio nome de ficheiro.--optionsaceita JSON como{"keepInbox":false,"includeSpam":true}. Emcreateesses mesmos três são interruptores:--options-keep-inbox,--options-include-spame--options-include-trash, cada um desligado com--no-à frente, como em--no-options-keep-inbox.keepInboxestá ligado por predefinição, por isso o correio da caixa de entrada antiga chega a Caixa de entrada com o estado de não lido. Desligado, arquiva tudo em Arquivo. O spam e o lixo ficam de fora, a menos que os inclua.createaceita--filescomo JSON, em linha ou de um ficheiro com@path, e cadabytestem de ser o tamanho exato do ficheiro que carregar depois.- Cada parte tem exatamente
chunkBytes, exceto a última parte de um ficheiro, e uma parte com o comprimento errado dá 400bad_chunk.startrecusa um ficheiro com partes em falta com 412missing_chunks, e um que não seja um arquivo nem uma caixa de correio com 400unsupported_file. Numa importação que já saiu deuploading, devolve a importação inalterada. - Se uma parte continuar a falhar depois das novas tentativas,
import-filespara com a importação emuploading. O bloco abaixo envia as partes em falta do primeiro ficheiro e inicia-a. - Uma importação indica
processedBytesdetotalBytes, ecountscomseen,imported,duplicate,filtered,failedethreads.lastErrorsó é definido quandostatuséfailed. list-failuresdá a cada falha umreason:too-large(mais de 50 MB),unparseable,no-date,storage-error,unreadable-entry,encrypted-entryouarchive-limit, com o assunto e o remetente quando foi possível lê-los.cancelnuma importação terminada dá 409not_cancellable.delete-uploadcancela uma importação que ainda está a ser carregada, e recusa uma que está em fila ou em curso com 409still_running, por isso cancele-a primeiro.
openemail imports get "$import_id" --json > import.jsonopenemail imports upload-state "$import_id" --json > state.jsonchunk=$(jq .chunkBytes import.json)chunks=$(jq '.files[0].chunks' import.json)for i in $(seq 0 $((chunks - 1))); do jq -e --argjson i "$i" '.received[0] | any(. == $i)' state.json > /dev/null && continue dd if=takeout-001.zip bs="$chunk" skip="$i" count=1 2> /dev/null | openemail imports upload-chunk "$import_id" 0 "$i" -doneopenemail imports start "$import_id"Importações do Resend
openemail provider-imports traz um espaço de trabalho do Resend com uma chave de API do Resend com acesso total. As supressões mantêm o motivo, os segmentos tornam-se audiências, os contactos com subscrição chegam com os nomes, e os modelos chegam como modelos HTML com as variáveis declaradas. Os webhooks são registados desligados, porque aqui as entregas são assinadas de outra forma. Uma chave de assinatura ou um token não podem sair do Resend, por isso os domínios e as chaves de API voltam como uma lista de verificação no relatório.
| Comando | O que faz |
|---|---|
| openemail provider-imports inspect <api-key> | Contar o que a conta do Resend contém, por recurso, antes de importar. Nada é guardado e a chave não é mantida |
| openemail provider-imports create --resend-key <value> --resources <a,b> | Pôr em fila uma importação dos recursos que indicar |
| openemail provider-imports list | Listar uma página das importações de fornecedores de envio, da mais recente para a mais antiga, cada uma com o seu relatório |
| openemail provider-imports get <id> | Ler uma importação: o estado, o passo em que está e o relatório até ao momento |
| openemail provider-imports cancel <id> | Parar a importação e apagar a chave do Resend. O que já foi importado fica. Pede-lhe confirmação |
- Passe a chave do Resend como
@pathpara a ler de um ficheiro, ou como-para a ler de stdin, para ficar fora do histórico da sua shell e da lista de processos. Uma chave escrita na linha de comandos continua a funcionar, com um aviso.--dry-runmostra o corpo com a chave ocultada. --resourcesaceita qualquer um desuppressions,audiences,contacts,templates,webhooks,domainseapi-keys, separados por vírgulas ou repetidos.- Uma chave só de envio dá 400
restricted_key. Crie no Resend uma chave com acesso total para a importação, e revogue-a depois. inspectlê a primeira página de cada recurso e devolvecounts, um{ count, more }por recurso, commoredefinido quando um recurso vai além da primeira página.- Corre uma importação por espaço de trabalho de cada vez, e uma segunda dá 409
already_running. Executar a mesma importação duas vezes não duplica nada. A chave só é guardada cifrada enquanto a importação corre, e é apagada quando termina, falha ou é cancelada. - Os contactos que cancelaram a subscrição no Resend ficam de fora e são contados em
report.contacts.unsubscribed. report.domainslista cada domínio do Resend com umstate:absentquando não está neste espaço de trabalho,addedquando está mas não está verificado, everified, com os registos que tinha no Resend. Acrescente um em falta comopenemail domains create.report.apiKeysindica as chaves a criar de novo comopenemail keys create.- Com um início de sessão no navegador só o proprietário do espaço de trabalho pode usar estes comandos, e um membro recebe 403
owner_only. Uma chave de API não está sujeita a isso. Uma chave ou um início de sessão limitados a determinados endereços ou domínios não podem inspecionar nem criar uma importação, já que as audiências, as supressões e os modelos pertencem a todo o espaço de trabalho. createtambém precisa do scope de cada recurso que importa:audiences:writepara as audiências,contacts:writeeaudiences:writepara os contactos,templates:writepara os modelos,webhooks:writepara os webhooks edomains:readpara os domínios.
Calendário
openemail calendar lê os eventos de calendário encontrados no correio. Os três comandos só leem. list-events expande cada evento nas suas ocorrências dentro de um período que indicar, por isso uma reunião semanal é uma linha por semana, e get-event e get-event-ics leem um evento inteiro. openemail open calendar abre o calendário na aplicação web.
| Comando | O que faz |
|---|---|
| openemail calendar list-events --from <when> --to <when> | Listar uma página de ocorrências entre dois momentos, ordenadas pela hora de início, cada uma a apontar para o seu evento através de eventId |
| openemail calendar get-event <id> | Ler um evento com os participantes e as respostas deles, a regra de repetição, as datas excluídas, o organizador e os lembretes |
| openemail calendar get-event-ics <id> | Transferir o evento como documento iCalendar, mostrado ou escrito em --out <file> |
--frome--tosão datas e horas ISO 8601 como2026-10-01T00:00:00Z.--totem de ser posterior a--frome no máximo 366 dias depois, já que uma série que se repete não tem um fim até ao qual listar. Um limite em falta dá 422invalid_parameter. Um limite que não é possível interpretar, um período invertido ou demasiado longo, ou um fuso desconhecido dá 400invalid_parameter.--timezoneé um fuso IANA comoEurope/London, UTC se for omitido. Expande os eventos guardados sem fuso próprio, o que decide o dia em que calha um evento de dia inteiro.get-eventeget-event-icsaceitam oeventIdde uma ocorrência, não ouiddo iCalendar. Uma série que se repete é um só evento, por isso o seustarte o seuenddescrevem a primeira instância.- Os eventos cancelados também são listados, com
statusemCANCELLED.myPartstaté a resposta registada para qualquer endereço que o espaço de trabalho tem nos seus próprios domínios, e null quando nenhum deles é participante. - A paginação continua com
--cursore o mesmo período. Uma chave ou um início de sessão limitados a determinados endereços só veem os eventos que um deles organiza ou em que participa, e qualquer outro evento dá 404. get-event-icsdeclaraMETHOD:PUBLISH, por isso importá-lo mostra o evento tal como está em vez de oferecer aceitá-lo ou recusá-lo. Os eventos com hora são escritos como instantes UTC e os de dia inteiro como datas.DTSTAMPé a hora da transferência, por isso duas transferências de um evento inalterado diferem nessa linha.
Definições
openemail settings lê e altera as preferências da caixa de correio, como o fuso horário, o idioma, o formato de hora e as listas de bloqueio. Quatro definições pertencem a um endereço e não ao espaço de trabalho: signature, openEmailSignature (o rodapé do OpenEmail), trackOpens e trackClicks. Indique o endereço com --address, ou *@acme.com para o catch-all de um domínio.
| Comando | O que faz |
|---|---|
| openemail settings get | Ler cada definição com os valores predefinidos preenchidos. Com --address, as quatro definições por endereço são lidas tal como um envio a partir desse endereço as resolve |
| openemail settings update | Alterar as definições que passar e manter as restantes. A resposta são todas as definições, lidas de novo depois da escrita |
- Sem
--address,getlê as quatro definições por endereço como os valores predefinidos incluídos: sem assinatura, o rodapé do OpenEmail ligado, e o rastreio de aberturas e de ligações ligado. Com ele, vêm dos valores próprios do endereço, depois do catch-all do seu domínio quando o catch-all apanhou esse endereço, e depois dos valores predefinidos. Um endereço com sinal de mais sem definições próprias lê as do seu endereço base. - Sem
--address,updaterecusa--signature,--open-email-signature,--track-opense--track-clickscom 422address_requirede não escreve nada. Com ele,updateaceita só essas quatro, e qualquer outra coisa dá 422not_per_address. O endereço tem de estar neste espaço de trabalho, ou ser*@domainpara um domínio verificado aqui com o catch-all ligado. - Os interruptores desligam-se com
--no-à frente:--no-open-email-signature,--no-track-opense--no-track-clicks. --signatureé HTML com no máximo 150.000 caracteres, sanitizado ao ser escrito, por isso o que volta é o que será enviado. Uma cadeia vazia remove-a. Se um envio a acrescenta depende do envio: consulte--signatureemopenemail emails send --help.- As opções cobrem os campos habituais.
--dataaceita qualquer definição guardada como JSON, em linha, de um ficheiro com@pathou de stdin com-, comotimeFormat,weekStart,undoSendEnabled,blockedSendersoublockedDomains. As chaves que as definições não conhecem são descartadas sem erro, e uma chave conhecida com o tipo errado dá 422invalid_parameter. - Uma lista como
blockedDomainsé substituída por inteiro, por isso leia-a primeiro e devolva-a com a sua alteração, como faz o exemplo abaixo. Uma entrada da lista de bloqueio demasiado curta para ser uma regra dá 422blocklist_entry_too_broad. --timezonee--languagesão guardados tal como são dados, sem verificação, por isso verifique um fuso ou um código de idioma antes de o enviar.- Os campos de privacidade,
externalImages,trustedSenders,blockedSenders,blockedDomains,blockedWordseuseDefaultBlockedWords, pertencem ao espaço de trabalho. Uma chave ou um início de sessão limitados a determinados endereços ou domínios não os podem alterar, e em--addresssó podem indicar um endereço que tenham, ou um catch-all de um domínio que tenham por inteiro. Qualquer uma das recusas dá 422capability_unsupported. - Uma atualização sem nada não altera nada e devolve as definições atuais.
defaultEmailAliassó pré-seleciona o endereço From no editor da aplicação web, e a API nunca o usa para escolher um remetente.
Exemplos
file_id=$(openemail files upload ./price-list.pdf --json | jq -r .id)openemail files create-link "$file_id" --domain acme.com --json | jq -r .urlopenemail files list-links "$file_id"openemail files download "$file_id" --out copy.pdfCada create-link cria uma ligação nova, por isso execute-o uma vez e leia de novo a ligação com list-links. revoke-link para-a mais tarde, também no correio que já saiu.
openemail files list --direction uploaded --all | jq -r 'select(.deletable) | .id' > deletable.txtwc -l < deletable.txtxargs -r -n 100 openemail files delete-many --yes --json < deletable.txt | jq -c '.kept[]'Com --all num pipe, files list mostra um ficheiro por linha. xargs -n 100 passa a delete-many no máximo 100 ids por chamada, e qualquer ficheiro que tenha passado a ser usado entretanto volta em kept com o motivo em vez de fazer falhar a chamada.
domain_id=$(openemail domains list --all | jq -r 'select(.domain == "acme.com") | .id')address_id=$(openemail domains list-addresses "$domain_id" --all | jq -r 'select(.address == "[email protected]") | .id')openemail imports import-files --address-id "$address_id" --files ~/Downloads/takeout-001.zip --files ~/Downloads/takeout-002.zip --json > import.jsonimport_id=$(jq -r .id import.json)until openemail imports get "$import_id" --json | jq -e '.status != "queued" and .status != "running"' > /dev/null; do sleep 60doneopenemail imports get "$import_id" --json | jq '{status, counts, lastError}'openemail imports list-failures "$import_id" --json | jq -r '.data[] | [.reason, .subject] | @tsv'--dry-run em import-files mostra o POST /imports que enviaria, com o nome e o tamanho de cada ficheiro, e não carrega nada. list-failures lê 100 de cada vez: passe o nextCursor que mostrou como --after para a página seguinte.
openemail provider-imports inspect @resend-key.txtopenemail provider-imports create --resend-key @resend-key.txt --resources suppressions,audiences,contacts,templates,webhooks,domains,api-keys --json > resend.jsonpimp_id=$(jq -r .id resend.json)until openemail provider-imports get "$pimp_id" --json | jq -e '.status != "queued" and .status != "running"' > /dev/null; do sleep 10doneopenemail provider-imports get "$pimp_id" --json | jq '.report | {contacts, domains: [.domains[] | {name, state}], apiKeys: [.apiKeys[].name]}'openemail calendar list-events --from 2026-10-01T00:00:00Z --to 2026-11-01T00:00:00Z --timezone Europe/London --all | jq -r 'select(.status != "CANCELLED") | [.start, .summary, .myPartstat] | @tsv'openemail calendar get-event cal_8d3f0a2b9c4e41f7a6b5c2d1 --json | jq '.attendees[] | {email, partstat}'openemail calendar get-event-ics cal_8d3f0a2b9c4e41f7a6b5c2d1 --out standup.icsopenemail settings get --address [email protected] --json | jq '{signature, openEmailSignature, trackOpens, trackClicks}'openemail settings update --address [email protected] --signature "$(cat signature.html)" --no-track-clicks --dry-runopenemail settings update --address [email protected] --signature "$(cat signature.html)" --no-track-clicksopenemail settings update --address '*@acme.com' --no-track-opensopenemail settings update --timezone Europe/London --language enopenemail settings get --json | jq -c '{blockedDomains: ((.blockedDomains + ["spam.example"]) | unique)}' | openemail settings update --data -A simulação mostra o PATCH /settings?address=sales%40acme.com e o seu corpo sem o enviar. A linha do catch-all define o rastreio para cada endereço que o catch-all de acme.com apanha, e a última linha acrescenta um domínio à lista de bloqueio sem retirar os outros.
Scopes, confirmações e erros
| Scope | Comandos |
|---|---|
| files:read | files list, get, stats, download, list-links |
| files:write | files create-link, revoke-link, upload, delete, delete-many |
| threads:read | imports list, get, list-failures |
| threads:write | imports create, upload-state, upload-chunk, start, cancel, delete-upload, import-files |
| settings:read | provider-imports list, get, e settings get |
| settings:write | provider-imports inspect, create, cancel, e settings update |
| calendar:read | calendar list-events, get-event, get-event-ics |
- Um início de sessão ou uma chave sem o scope para com o código de saída
4, indica o scope em falta e explica como o obter. files revoke-link,files delete,files delete-many,imports cancel,imports delete-uploadeprovider-imports cancelpedem-lhe confirmação. Responder que não sai com o código10e não altera nada. Sem supervisão e sem--yes, param com o código de saída2antes de enviar o que quer que seja.- Nenhum comando desta página pede um código de verificação, nem com um início de sessão no navegador nem com uma chave de API, por isso
--yesé tudo o que um script precisa. --dry-runmostra o pedido que uma alteração enviaria, com o corpo, e sai com o código0sem o enviar nem lhe pedir confirmação. O corpo de um ficheiro é mostrado como o seu tamanho e tipo.files list,files list-links,imports list,provider-imports listecalendar list-eventsleem uma página:--limitaceita de 1 a 100 e o servidor envia 25 quando é omitido, e--cursoraceita onextCursorda página anterior.--alllê todas as páginas,--max <n>para depois desse número de itens, e--ndjson, ou--allnum pipe, mostra um objeto JSON por linha. Com--jsonmostram um único documento{ items, hasMore, nextCursor }.imports list-failurespagina à sua maneira:--afteraceita onextCursorda página anterior,--limité no máximo 100, o valor predefinido, e não há--all. Com--jsonmostra{ object, data, nextCursor }.- As leituras e as alterações que têm o mesmo efeito duas vezes são repetidas depois de uma falha de rede:
files revoke-link,imports upload-chunk,imports startesettings update. Qualquer outra alteração é enviada uma vez. Depois de perder uma resposta, verifique antes de tentar de novo: um segundouploadguarda uma segunda cópia e um segundocreate-linkcria uma segunda ligação, um 404 no seu segundofiles deletesignifica que o primeiro funcionou, e um segundodelete-manylista emmissingo que o primeiro eliminou. - Uma recusa sai com o código do seu estado:
4para um 403,5para um 404,6para um 409,7para um 400 ou um 422, e8para um 429.