Pular para o conteúdo

Relê a planilha e mostra o resumo e as primeiras linhas

POST/api/import/spreadsheet/{id}/preview

Auth
Exige token
Quem pode:
SuperAdmin
X-CommunityId
X-CommunityId Envie o X-CommunityId da comunidade em que a operação acontece.

Owner e admin. Não grava nem baixa nada. Sem `mapping`, refaz a análise (outra aba, `headerRow`, `delimiter` ou `encoding`). Com `mapping` (e `options`), devolve também `summary` e `rows`: - `summary`: `totalRows`, `toImport`, `byType` (`post`, `article`, `short`), `backdated` (data mais de 5 min no passado: entram em silêncio, sem pontos nem e-mail de novidades), `withoutDate` (publicados com a data da importação), `skipped` e `skippedByReason` (`NO_TITLE`, `NO_BODY`, `NO_SPACE`, `INVALID_DATE`, `FUTURE_DATE`, `BODY_TOO_LONG`, `DUPLICATE_IN_FILE`, `AUTHOR_NOT_MEMBER`: e-mail de quem não é desta comunidade, `AUTHOR_ROLE_PROTECTED`: e-mail de alguém com papel igual ou acima do de quem importa; o SuperAdmin importa em nome de qualquer um), `withWarnings`, `warningsByCode` (`TYPE_UNKNOWN`, `TITLE_TRUNCATED`, `SPACE_NOT_FOUND`, `SPACE_WRONG_MODULE`, `NO_DATE`, `AUTHOR_NOT_FOUND` só com `unknownAuthor: importer`, `TAGS_IGNORED`), `imagesToFetch`, `bodyBytes` e `caps` (limites da importação), `dateOrder` e `timeZone` (fuso em que datas sem fuso são lidas). Quem pede a prévia é tratado como quem vai importar (regras de autor). - `rows`: as 10 primeiras linhas como serão gravadas (`type`, `title`, `bodyPreview`, `space`, `author` com `isImporter`, `publishedAt`, `backdated`, `tags`, `images`, `warnings`) ou puladas (`skipped: true`, `reason`). Só enquanto a importação está `ANALYZED`.

Parâmetros

NomeOndeTipoDescrição
idobrigatóriopathstring (uuid)

Headers

NomeTipoDescrição
X-CommunityIdopcionalstring (uuid)ID da comunidade em que a operação acontece. Obrigatório na maioria dos endpoints com escopo de comunidade.

Corpo da requisição application/json

NomeTipoDescrição
sheetopcionalstring
headerRowopcionalinteger≥ 1, ≤ 30
delimiteropcional, | ; | | |
encodingopcionalutf-8 | windows-1252 | iso-8859-1 | utf-16le | utf-16be
mappingopcionalobject[]
mapping[].columnobrigatóriointegerO `index` da coluna, como veio na análise.
mapping[].targetobrigatórioignore | title | body | authorEmail | publishedAt | space | type | tags`title` (obrigatório em post e artigo), `body` (Markdown ou HTML; imagens são baixadas e hospedadas na Memberfy), `authorEmail` (pessoa da comunidade; sem correspondência, quem importa), `publishedAt` (data de publicação no fuso da comunidade), `space` (id, slug ou nome), `type` (post, artigo ou curto), `tags` (separadas por vírgula, ponto e vírgula ou barra vertical). Cada destino em uma coluna só.
optionsopcionalobject
options.spaceIdopcionalstring (uuid)Space padrão (módulo `content` ou `feed`). Obrigatório sem coluna `space`; vale também quando o space da linha não existe ou não aceita o tipo.
options.typeopcionalpost | article | shortTipo das linhas sem coluna `type` (padrão `post`). `post` e `artigo` viram post com título; `short` vira post curto (até 500 caracteres, só em space de feed).
options.visibilityopcionalpublic | membersPadrão `members`.
options.unknownAuthoropcionalskip | importerLinha com e-mail de quem não é da comunidade: `skip` (padrão) pula a linha; `importer` publica como quem importa, com aviso.
options.dateOrderopcionalDMY | MDYOrdem de datas como 03/04/2024. Sem a opção, deduzida da coluna (um dia acima de 12 decide) ou do idioma da comunidade.

Respostas

CódigoDescrição
200A análise, com `summary` e `rows` quando veio `mapping`.
400Requisição inválida — falha de validação.
401Token ausente, inválido ou expirado.
403Autenticado, mas sem permissão para esta operação.
404Recurso não encontrado.
409A importação não está mais `ANALYZED`.
429Outra planilha está sendo lida (`reason: busy`).

Exemplo com curl

curl -X POST "https://api.memberfy.net/api/import/spreadsheet/<id>/preview" \
  -H "Authorization: Bearer $TOKEN" \
  -H "X-CommunityId: $COMMUNITY_ID" \
  -H "Content-Type: application/json" \
  -d '{}'