Relê a planilha e mostra o resumo e as primeiras linhas
POST/api/import/spreadsheet/{id}/preview
- Auth
- Requiere token
- Quién puede:
- SuperAdmin
- X-CommunityId
X-CommunityIdEnvía el X-CommunityId de la comunidad en la que ocurre la operación.
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
| Nombre | Dónde | Tipo | Descripción |
|---|---|---|---|
idobligatorio | path | string (uuid) |
Headers
| Nombre | Tipo | Descripción |
|---|---|---|
X-CommunityIdopcional | string (uuid) | ID da comunidade em que a operação acontece. Obrigatório na maioria dos endpoints com escopo de comunidade. |
Cuerpo de la solicitud application/json
| Nombre | Tipo | Descripción |
|---|---|---|
sheetopcional | string | |
headerRowopcional | integer | ≥ 1, ≤ 30 |
delimiteropcional | , | ; | | | | |
encodingopcional | utf-8 | windows-1252 | iso-8859-1 | utf-16le | utf-16be | |
mappingopcional | object[] | |
mapping[].columnobligatorio | integer | O `index` da coluna, como veio na análise. |
mapping[].targetobligatorio | ignore | 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ó. |
optionsopcional | object | |
options.spaceIdopcional | string (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.typeopcional | post | article | short | Tipo 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.visibilityopcional | public | members | Padrão `members`. |
options.unknownAuthoropcional | skip | importer | Linha com e-mail de quem não é da comunidade: `skip` (padrão) pula a linha; `importer` publica como quem importa, com aviso. |
options.dateOrderopcional | DMY | MDY | Ordem de datas como 03/04/2024. Sem a opção, deduzida da coluna (um dia acima de 12 decide) ou do idioma da comunidade. |
Respuestas
| Código | Descripción |
|---|---|
200 | A análise, com `summary` e `rows` quando veio `mapping`. |
400 | Requisição inválida — falha de validação. |
401 | Token ausente, inválido ou expirado. |
403 | Autenticado, mas sem permissão para esta operação. |
404 | Recurso não encontrado. |
409 | A importação não está mais `ANALYZED`. |
429 | Outra planilha está sendo lida (`reason: busy`). |
Ejemplo con 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 '{}'