Temas
Endereço base: https://api.denaryx.com/admin/2026-10. Exemplos e regras no guia Temas. Os erros seguem o formato comum. A especificação inteira: baixar o OpenAPI.
GET /themes
Os temas da biblioteca da loja
Escopo read_themes
Todos os temas da biblioteca (no máximo 20), o publicado primeiro. Cabem numa página só. Os temas de desenvolvimento do CLI (denaryx tema dev) ficam de fora, a menos do development.
Parâmetros
| Nome | Onde | Tipo | Descrição |
|---|---|---|---|
development | consulta | string | only: só os temas de desenvolvimento do CLI; include: a biblioteca e eles. Sem o parâmetro, só a biblioteca.Um de: only, include. |
Resposta
200 Sucesso. (ThemeList)
Os campos da resposta (27)
| Campo | Tipo | Descrição |
|---|---|---|
data | lista de Theme | |
data[].id | string (uuid) | |
data[].name | string | |
data[].source | string | Um de: platform, custom. |
data[].platform_theme | string ou null | |
data[].published | boolean | |
data[].tree | string ou null | |
data[].errors | integer | A partir de 0. |
data[].development | boolean | |
data[].expires_at | string (data e hora) ou null | |
data[].github | objeto ou null | |
data[].github.repository | string | |
data[].github.branch | string | |
data[].github.folder | string | |
data[].github.url | string | |
data[].github.status | string | Um de: active, paused. |
data[].github.last_commit | objeto ou null | |
data[].github.last_commit.sha | string | |
data[].github.last_commit.message | string | |
data[].github.synced_at | string (data e hora) ou null | |
data[].pull_request | objeto ou null | |
data[].pull_request.number | integer | Maior que 0. |
data[].pull_request.repository | string | |
data[].pull_request.url | string | |
data[].created_at | string (data e hora) | |
data[].updated_at | string (data e hora) | |
next_cursor | string ou null |
Erros
401O token falta, não existe, foi revogado ou venceu (authentication_error).403O token não tem o escopo da rota, ou, com write_content, mandou campos que pedem write_products, listados em fields (permission_error).429Chamadas demais: espere o Retry-After (rate_limited).500Erro do nosso lado (api_error).503A API está ocupada com outras chamadas: espere o Retry-After (api_error).
POST /themes
Acrescenta um tema à biblioteca
Escopo write_themes
Um tema da plataforma (source: platform), a cópia de um tema da biblioteca (duplicate) ou o fork de um tema da plataforma, com o código inteiro na loja para gravar os arquivos (fork). A vitrine não muda: o tema vai ao ar só quando é publicado.
Parâmetros
| Nome | Onde | Tipo | Descrição |
|---|---|---|---|
Idempotency-Key | cabeçalho | string | Até 255 caracteres. A mesma escrita mandada de novo com a mesma chave, em até 24 horas, devolve a resposta guardada (com Idempotent-Replayed: true) em vez de acontecer duas vezes. |
Corpo application/json: ThemeCreate
| Campo | Tipo | Descrição |
|---|
Resposta
201 Sucesso. (Theme)
Os campos da resposta (25)
| Campo | Tipo | Descrição |
|---|---|---|
id | string (uuid) | |
name | string | |
source | string | Um de: platform, custom. |
platform_theme | string ou null | |
published | boolean | |
tree | string ou null | |
errors | integer | A partir de 0. |
development | boolean | |
expires_at | string (data e hora) ou null | |
github | objeto ou null | |
github.repository | string | |
github.branch | string | |
github.folder | string | |
github.url | string | |
github.status | string | Um de: active, paused. |
github.last_commit | objeto ou null | |
github.last_commit.sha | string | |
github.last_commit.message | string | |
github.synced_at | string (data e hora) ou null | |
pull_request | objeto ou null | |
pull_request.number | integer | Maior que 0. |
pull_request.repository | string | |
pull_request.url | string | |
created_at | string (data e hora) | |
updated_at | string (data e hora) |
Erros
400A chamada veio com campos inválidos; os campos recusados vão em fields (invalid_request).401O token falta, não existe, foi revogado ou venceu (authentication_error).403O token não tem o escopo da rota, ou, com write_content, mandou campos que pedem write_products, listados em fields (permission_error).404O recurso não existe nesta loja (not_found).409O estado do recurso não permite a mudança, ou ele mudou desde a leitura (conflict).429Chamadas demais: espere o Retry-After (rate_limited).500Erro do nosso lado (api_error).503A API está ocupada com outras chamadas: espere o Retry-After (api_error).
POST /themes/import
Cria um tema a partir de um zip
Escopo write_themes
O zip de um tema (até 50 MB, 2.000 arquivos) vira um tema novo na biblioteca, com o código da loja. O que não é da estrutura de um tema fica de fora e volta em ignored. Com development=true, nasce um tema de desenvolvimento do CLI: fora dos 20 da biblioteca (até 5 por integração e 30 por loja; acima disso, 409 development_theme_limit), com o conteúdo do tema content_from lido pelo código novo, nunca publicado e apagado depois de 7 dias sem gravação.
Parâmetros
| Nome | Onde | Tipo | Descrição |
|---|---|---|---|
Idempotency-Key | cabeçalho | string | Até 255 caracteres. A mesma escrita mandada de novo com a mesma chave, em até 24 horas, devolve a resposta guardada (com Idempotent-Replayed: true) em vez de acontecer duas vezes. |
Corpo multipart/form-data
| Campo | Tipo | Descrição |
|---|---|---|
fileobrigatório | arquivo | O zip do tema. |
name | string | O nome do tema novo. |
development | string | true: um tema de desenvolvimento do CLI, fora da biblioteca. No tema de desenvolvimento, o nome que já existe ganha um número. |
content_from | string | Só com development=true: o id do tema da loja de onde vem o conteúdo (as seções e os ajustes montados no editor). Sem ele, o padrão do tema enviado. |
Resposta
201 Sucesso. (ThemeImport)
Os campos da resposta (27)
| Campo | Tipo | Descrição |
|---|---|---|
theme | Theme | |
theme.id | string (uuid) | |
theme.name | string | |
theme.source | string | Um de: platform, custom. |
theme.platform_theme | string ou null | |
theme.published | boolean | |
theme.tree | string ou null | |
theme.errors | integer | A partir de 0. |
theme.development | boolean | |
theme.expires_at | string (data e hora) ou null | |
theme.github | objeto ou null | |
theme.github.repository | string | |
theme.github.branch | string | |
theme.github.folder | string | |
theme.github.url | string | |
theme.github.status | string | Um de: active, paused. |
theme.github.last_commit | objeto ou null | |
theme.github.last_commit.sha | string | |
theme.github.last_commit.message | string | |
theme.github.synced_at | string (data e hora) ou null | |
theme.pull_request | objeto ou null | |
theme.pull_request.number | integer | Maior que 0. |
theme.pull_request.repository | string | |
theme.pull_request.url | string | |
theme.created_at | string (data e hora) | |
theme.updated_at | string (data e hora) | |
ignored | lista de string |
Erros
400A chamada veio com campos inválidos; os campos recusados vão em fields (invalid_request).401O token falta, não existe, foi revogado ou venceu (authentication_error).403O token não tem o escopo da rota, ou, com write_content, mandou campos que pedem write_products, listados em fields (permission_error).409O estado do recurso não permite a mudança, ou ele mudou desde a leitura (conflict).413O corpo ou o arquivo passou do tamanho máximo (invalid_request).429Chamadas demais: espere o Retry-After (rate_limited).500Erro do nosso lado (api_error).503A API está ocupada com outras chamadas: espere o Retry-After (api_error).
GET /themes/{id}
Um tema
Escopo read_themes
Um tema da biblioteca.
Parâmetros
| Nome | Onde | Tipo | Descrição |
|---|---|---|---|
idobrigatório | caminho | string (uuid) | O id do tema. |
Resposta
200 Sucesso. (Theme)
Os campos da resposta (25)
| Campo | Tipo | Descrição |
|---|---|---|
id | string (uuid) | |
name | string | |
source | string | Um de: platform, custom. |
platform_theme | string ou null | |
published | boolean | |
tree | string ou null | |
errors | integer | A partir de 0. |
development | boolean | |
expires_at | string (data e hora) ou null | |
github | objeto ou null | |
github.repository | string | |
github.branch | string | |
github.folder | string | |
github.url | string | |
github.status | string | Um de: active, paused. |
github.last_commit | objeto ou null | |
github.last_commit.sha | string | |
github.last_commit.message | string | |
github.synced_at | string (data e hora) ou null | |
pull_request | objeto ou null | |
pull_request.number | integer | Maior que 0. |
pull_request.repository | string | |
pull_request.url | string | |
created_at | string (data e hora) | |
updated_at | string (data e hora) |
Erros
401O token falta, não existe, foi revogado ou venceu (authentication_error).403O token não tem o escopo da rota, ou, com write_content, mandou campos que pedem write_products, listados em fields (permission_error).404O recurso não existe nesta loja (not_found).429Chamadas demais: espere o Retry-After (rate_limited).500Erro do nosso lado (api_error).503A API está ocupada com outras chamadas: espere o Retry-After (api_error).
PATCH /themes/{id}
Renomeia um tema
Escopo write_themes
O nome não se repete na loja.
Parâmetros
| Nome | Onde | Tipo | Descrição |
|---|---|---|---|
idobrigatório | caminho | string (uuid) | O id do tema. |
Idempotency-Key | cabeçalho | string | Até 255 caracteres. A mesma escrita mandada de novo com a mesma chave, em até 24 horas, devolve a resposta guardada (com Idempotent-Replayed: true) em vez de acontecer duas vezes. |
Corpo application/json: ThemeUpdate
| Campo | Tipo | Descrição |
|---|---|---|
nameobrigatório | string | Até 60 caracteres. |
Resposta
200 Sucesso. (Theme)
Os campos da resposta (25)
| Campo | Tipo | Descrição |
|---|---|---|
id | string (uuid) | |
name | string | |
source | string | Um de: platform, custom. |
platform_theme | string ou null | |
published | boolean | |
tree | string ou null | |
errors | integer | A partir de 0. |
development | boolean | |
expires_at | string (data e hora) ou null | |
github | objeto ou null | |
github.repository | string | |
github.branch | string | |
github.folder | string | |
github.url | string | |
github.status | string | Um de: active, paused. |
github.last_commit | objeto ou null | |
github.last_commit.sha | string | |
github.last_commit.message | string | |
github.synced_at | string (data e hora) ou null | |
pull_request | objeto ou null | |
pull_request.number | integer | Maior que 0. |
pull_request.repository | string | |
pull_request.url | string | |
created_at | string (data e hora) | |
updated_at | string (data e hora) |
Erros
400A chamada veio com campos inválidos; os campos recusados vão em fields (invalid_request).401O token falta, não existe, foi revogado ou venceu (authentication_error).403O token não tem o escopo da rota, ou, com write_content, mandou campos que pedem write_products, listados em fields (permission_error).404O recurso não existe nesta loja (not_found).409O estado do recurso não permite a mudança, ou ele mudou desde a leitura (conflict).429Chamadas demais: espere o Retry-After (rate_limited).500Erro do nosso lado (api_error).503A API está ocupada com outras chamadas: espere o Retry-After (api_error).
DELETE /themes/{id}
Exclui um tema
Escopo write_themes
O tema publicado, ou com publicação agendada, não sai (409). As publicações antigas dele continuam no painel.
Parâmetros
| Nome | Onde | Tipo | Descrição |
|---|---|---|---|
idobrigatório | caminho | string (uuid) | O id do tema. |
Idempotency-Key | cabeçalho | string | Até 255 caracteres. A mesma escrita mandada de novo com a mesma chave, em até 24 horas, devolve a resposta guardada (com Idempotent-Replayed: true) em vez de acontecer duas vezes. |
Resposta
204 Sucesso, sem corpo.
Erros
401O token falta, não existe, foi revogado ou venceu (authentication_error).403O token não tem o escopo da rota, ou, com write_content, mandou campos que pedem write_products, listados em fields (permission_error).404O recurso não existe nesta loja (not_found).409O estado do recurso não permite a mudança, ou ele mudou desde a leitura (conflict).429Chamadas demais: espere o Retry-After (rate_limited).500Erro do nosso lado (api_error).503A API está ocupada com outras chamadas: espere o Retry-After (api_error).
GET /themes/{id}/files
Os arquivos de um tema
Escopo read_themes
A lista dos arquivos, com o checksum de cada um (a base da gravação) e os problemas da conferência do código. Os de um tema da plataforma vêm só para leitura (read_only).
Parâmetros
| Nome | Onde | Tipo | Descrição |
|---|---|---|---|
idobrigatório | caminho | string (uuid) | O id do tema. |
Resposta
200 Sucesso. (ThemeFiles)
Os campos da resposta (18)
| Campo | Tipo | Descrição |
|---|---|---|
theme_id | string (uuid) | |
read_only | boolean | |
tree | string ou null | |
files | lista de objeto | |
files[].path | string | |
files[].checksum | string | |
files[].size | integer | A partir de 0. |
files[].binary | boolean | |
files[].url | string ou null | |
problems | lista de objeto | |
problems[].code | string ou null | |
problems[].file | string ou null | |
problems[].line | integer ou null | |
problems[].column | integer ou null | |
problems[].end_line | integer ou null | |
problems[].end_column | integer ou null | |
problems[].message | string | |
problems[].severity | string | Um de: error, warning. |
Erros
401O token falta, não existe, foi revogado ou venceu (authentication_error).403O token não tem o escopo da rota, ou, com write_content, mandou campos que pedem write_products, listados em fields (permission_error).404O recurso não existe nesta loja (not_found).429Chamadas demais: espere o Retry-After (rate_limited).500Erro do nosso lado (api_error).503A API está ocupada com outras chamadas: espere o Retry-After (api_error).
PUT /themes/{id}/files
Grava arquivos de texto, tudo ou nada
Escopo write_themes
Grava, apaga e move vários arquivos de uma vez. Cada um diz a base, o checksum lido (null para arquivo novo): se algum mudou desde a leitura, nada é gravado e a resposta é 409 file_conflict, com os conflitos. O corpo tem no máximo 1 MB: mande em partes. O tema conectado a uma branch do GitHub tem o código só para leitura: 409 theme_connected (o código muda pelo git push).
Parâmetros
| Nome | Onde | Tipo | Descrição |
|---|---|---|---|
idobrigatório | caminho | string (uuid) | O id do tema. |
Idempotency-Key | cabeçalho | string | Até 255 caracteres. A mesma escrita mandada de novo com a mesma chave, em até 24 horas, devolve a resposta guardada (com Idempotent-Replayed: true) em vez de acontecer duas vezes. |
Corpo application/json: ThemeFilesWrite
| Campo | Tipo | Descrição |
|---|---|---|
write | lista de objeto | Até 2000 itens.Sem ele: []. |
write[].pathobrigatório | string | Até 200 caracteres. |
write[].contentobrigatório | string | |
write[].baseobrigatório | string ou null | |
delete | lista de objeto | Até 2000 itens.Sem ele: []. |
delete[].pathobrigatório | string | Até 200 caracteres. |
delete[].baseobrigatório | string | |
move | lista de objeto | Até 2000 itens.Sem ele: []. |
move[].fromobrigatório | string | Até 200 caracteres. |
move[].toobrigatório | string | Até 200 caracteres. |
move[].baseobrigatório | string |
Resposta
200 Sucesso. (ThemeFiles)
Os campos da resposta (18)
| Campo | Tipo | Descrição |
|---|---|---|
theme_id | string (uuid) | |
read_only | boolean | |
tree | string ou null | |
files | lista de objeto | |
files[].path | string | |
files[].checksum | string | |
files[].size | integer | A partir de 0. |
files[].binary | boolean | |
files[].url | string ou null | |
problems | lista de objeto | |
problems[].code | string ou null | |
problems[].file | string ou null | |
problems[].line | integer ou null | |
problems[].column | integer ou null | |
problems[].end_line | integer ou null | |
problems[].end_column | integer ou null | |
problems[].message | string | |
problems[].severity | string | Um de: error, warning. |
Erros
400A chamada veio com campos inválidos; os campos recusados vão em fields (invalid_request).401O token falta, não existe, foi revogado ou venceu (authentication_error).403O token não tem o escopo da rota, ou, com write_content, mandou campos que pedem write_products, listados em fields (permission_error).404O recurso não existe nesta loja (not_found).409O estado do recurso não permite a mudança, ou ele mudou desde a leitura (conflict).413O corpo ou o arquivo passou do tamanho máximo (invalid_request).429Chamadas demais: espere o Retry-After (rate_limited).500Erro do nosso lado (api_error).503A API está ocupada com outras chamadas: espere o Retry-After (api_error).
GET /themes/{id}/files/content
O conteúdo de um arquivo
Escopo read_themes
O texto do arquivo, ou o url na CDN de uma imagem, fonte ou vídeo.
Parâmetros
| Nome | Onde | Tipo | Descrição |
|---|---|---|---|
idobrigatório | caminho | string (uuid) | O id do tema. |
pathobrigatório | consulta | string | O caminho do arquivo, como templates/index.json. |
Resposta
200 Sucesso. (ThemeFileContent)
Os campos da resposta (5)
| Campo | Tipo | Descrição |
|---|---|---|
path | string | |
checksum | string | |
binary | boolean | |
content | string ou null | |
url | string ou null |
Erros
400A chamada veio com campos inválidos; os campos recusados vão em fields (invalid_request).401O token falta, não existe, foi revogado ou venceu (authentication_error).403O token não tem o escopo da rota, ou, com write_content, mandou campos que pedem write_products, listados em fields (permission_error).404O recurso não existe nesta loja (not_found).429Chamadas demais: espere o Retry-After (rate_limited).500Erro do nosso lado (api_error).503A API está ocupada com outras chamadas: espere o Retry-After (api_error).
POST /themes/{id}/assets
Envia arquivos para assets/
Escopo write_themes
Imagens, fontes, vídeos e também CSS e JS, até 20 por chamada e 10 MB cada, gravados em assets/<nome do arquivo>. Com as bases, o envio confere os checksums como a gravação; sem elas, o arquivo com o mesmo nome é substituído. O tema conectado a uma branch do GitHub tem o código só para leitura: 409 theme_connected (o código muda pelo git push).
Parâmetros
| Nome | Onde | Tipo | Descrição |
|---|---|---|---|
idobrigatório | caminho | string (uuid) | O id do tema. |
Idempotency-Key | cabeçalho | string | Até 255 caracteres. A mesma escrita mandada de novo com a mesma chave, em até 24 horas, devolve a resposta guardada (com Idempotent-Replayed: true) em vez de acontecer duas vezes. |
Corpo multipart/form-data
| Campo | Tipo | Descrição |
|---|---|---|
filesobrigatório | lista de arquivo | Os arquivos.Até 20 itens. |
bases | string | Opcional, em JSON: { "assets/logo.png": "<checksum lido>" | null }. |
Resposta
200 Sucesso. (ThemeFiles)
Os campos da resposta (18)
| Campo | Tipo | Descrição |
|---|---|---|
theme_id | string (uuid) | |
read_only | boolean | |
tree | string ou null | |
files | lista de objeto | |
files[].path | string | |
files[].checksum | string | |
files[].size | integer | A partir de 0. |
files[].binary | boolean | |
files[].url | string ou null | |
problems | lista de objeto | |
problems[].code | string ou null | |
problems[].file | string ou null | |
problems[].line | integer ou null | |
problems[].column | integer ou null | |
problems[].end_line | integer ou null | |
problems[].end_column | integer ou null | |
problems[].message | string | |
problems[].severity | string | Um de: error, warning. |
Erros
400A chamada veio com campos inválidos; os campos recusados vão em fields (invalid_request).401O token falta, não existe, foi revogado ou venceu (authentication_error).403O token não tem o escopo da rota, ou, com write_content, mandou campos que pedem write_products, listados em fields (permission_error).404O recurso não existe nesta loja (not_found).409O estado do recurso não permite a mudança, ou ele mudou desde a leitura (conflict).413O corpo ou o arquivo passou do tamanho máximo (invalid_request).429Chamadas demais: espere o Retry-After (rate_limited).500Erro do nosso lado (api_error).503A API está ocupada com outras chamadas: espere o Retry-After (api_error).
GET /themes/{id}/versions
As versões do código
Escopo read_themes
As versões guardadas do código de um tema da loja, da mais nova à mais antiga: a cada publicação que mudou o código, a cada envio de zip (e a cada push numa branch do GitHub conectada ao tema, também com reason import e a nota com o commit), antes de restaurar e as salvas à mão.
Parâmetros
| Nome | Onde | Tipo | Descrição |
|---|---|---|---|
idobrigatório | caminho | string (uuid) | O id do tema. |
Resposta
200 Sucesso. (ThemeVersionList)
Os campos da resposta (9)
| Campo | Tipo | Descrição |
|---|---|---|
data | lista de ThemeVersion | |
data[].id | string (uuid) | |
data[].number | integer | Maior que 0. |
data[].tree | string | |
data[].note | string ou null | |
data[].reason | string | Um de: publish, manual, import, fork, before_restore, before_import. |
data[].created_at | string (data e hora) | |
data[].current | boolean | |
next_cursor | string ou null |
Erros
401O token falta, não existe, foi revogado ou venceu (authentication_error).403O token não tem o escopo da rota, ou, com write_content, mandou campos que pedem write_products, listados em fields (permission_error).404O recurso não existe nesta loja (not_found).429Chamadas demais: espere o Retry-After (rate_limited).500Erro do nosso lado (api_error).503A API está ocupada com outras chamadas: espere o Retry-After (api_error).
POST /themes/{id}/versions
Guarda o código de agora como versão
Escopo write_themes
Uma versão com o código em trabalho, com uma nota opcional.
Parâmetros
| Nome | Onde | Tipo | Descrição |
|---|---|---|---|
idobrigatório | caminho | string (uuid) | O id do tema. |
Idempotency-Key | cabeçalho | string | Até 255 caracteres. A mesma escrita mandada de novo com a mesma chave, em até 24 horas, devolve a resposta guardada (com Idempotent-Replayed: true) em vez de acontecer duas vezes. |
Corpo application/json: ThemeVersionCreate
| Campo | Tipo | Descrição |
|---|---|---|
note | string | Até 200 caracteres. |
Resposta
201 Sucesso. (ThemeVersion)
Os campos da resposta (7)
| Campo | Tipo | Descrição |
|---|---|---|
id | string (uuid) | |
number | integer | Maior que 0. |
tree | string | |
note | string ou null | |
reason | string | Um de: publish, manual, import, fork, before_restore, before_import. |
created_at | string (data e hora) | |
current | boolean |
Erros
400A chamada veio com campos inválidos; os campos recusados vão em fields (invalid_request).401O token falta, não existe, foi revogado ou venceu (authentication_error).403O token não tem o escopo da rota, ou, com write_content, mandou campos que pedem write_products, listados em fields (permission_error).404O recurso não existe nesta loja (not_found).409O estado do recurso não permite a mudança, ou ele mudou desde a leitura (conflict).429Chamadas demais: espere o Retry-After (rate_limited).500Erro do nosso lado (api_error).503A API está ocupada com outras chamadas: espere o Retry-After (api_error).
POST /themes/{id}/versions/{version_id}/restore
Volta o código a uma versão
Escopo write_themes
O código da versão volta a ser o trabalho do tema; o de antes vira uma versão. O conteúdo da loja e a vitrine não mudam. O tema conectado a uma branch do GitHub tem o código só para leitura: 409 theme_connected (o código muda pelo git push).
Parâmetros
| Nome | Onde | Tipo | Descrição |
|---|---|---|---|
idobrigatório | caminho | string (uuid) | O id do tema. |
version_idobrigatório | caminho | string (uuid) | O id da versão. |
Idempotency-Key | cabeçalho | string | Até 255 caracteres. A mesma escrita mandada de novo com a mesma chave, em até 24 horas, devolve a resposta guardada (com Idempotent-Replayed: true) em vez de acontecer duas vezes. |
Resposta
200 Sucesso. (ThemeFiles)
Os campos da resposta (18)
| Campo | Tipo | Descrição |
|---|---|---|
theme_id | string (uuid) | |
read_only | boolean | |
tree | string ou null | |
files | lista de objeto | |
files[].path | string | |
files[].checksum | string | |
files[].size | integer | A partir de 0. |
files[].binary | boolean | |
files[].url | string ou null | |
problems | lista de objeto | |
problems[].code | string ou null | |
problems[].file | string ou null | |
problems[].line | integer ou null | |
problems[].column | integer ou null | |
problems[].end_line | integer ou null | |
problems[].end_column | integer ou null | |
problems[].message | string | |
problems[].severity | string | Um de: error, warning. |
Erros
401O token falta, não existe, foi revogado ou venceu (authentication_error).403O token não tem o escopo da rota, ou, com write_content, mandou campos que pedem write_products, listados em fields (permission_error).404O recurso não existe nesta loja (not_found).409O estado do recurso não permite a mudança, ou ele mudou desde a leitura (conflict).429Chamadas demais: espere o Retry-After (rate_limited).500Erro do nosso lado (api_error).503A API está ocupada com outras chamadas: espere o Retry-After (api_error).
POST /themes/{id}/import
Troca os arquivos de um tema pelos de um zip
Escopo write_themes
Os arquivos do zip substituem os do tema; o código de antes vira uma versão, e o conteúdo da loja fica. O tema conectado a uma branch do GitHub tem o código só para leitura: 409 theme_connected (o código muda pelo git push).
Parâmetros
| Nome | Onde | Tipo | Descrição |
|---|---|---|---|
idobrigatório | caminho | string (uuid) | O id do tema. |
Idempotency-Key | cabeçalho | string | Até 255 caracteres. A mesma escrita mandada de novo com a mesma chave, em até 24 horas, devolve a resposta guardada (com Idempotent-Replayed: true) em vez de acontecer duas vezes. |
Corpo multipart/form-data
| Campo | Tipo | Descrição |
|---|---|---|
fileobrigatório | arquivo | O zip do tema. |
Resposta
200 Sucesso. (ThemeImport)
Os campos da resposta (27)
| Campo | Tipo | Descrição |
|---|---|---|
theme | Theme | |
theme.id | string (uuid) | |
theme.name | string | |
theme.source | string | Um de: platform, custom. |
theme.platform_theme | string ou null | |
theme.published | boolean | |
theme.tree | string ou null | |
theme.errors | integer | A partir de 0. |
theme.development | boolean | |
theme.expires_at | string (data e hora) ou null | |
theme.github | objeto ou null | |
theme.github.repository | string | |
theme.github.branch | string | |
theme.github.folder | string | |
theme.github.url | string | |
theme.github.status | string | Um de: active, paused. |
theme.github.last_commit | objeto ou null | |
theme.github.last_commit.sha | string | |
theme.github.last_commit.message | string | |
theme.github.synced_at | string (data e hora) ou null | |
theme.pull_request | objeto ou null | |
theme.pull_request.number | integer | Maior que 0. |
theme.pull_request.repository | string | |
theme.pull_request.url | string | |
theme.created_at | string (data e hora) | |
theme.updated_at | string (data e hora) | |
ignored | lista de string |
Erros
400A chamada veio com campos inválidos; os campos recusados vão em fields (invalid_request).401O token falta, não existe, foi revogado ou venceu (authentication_error).403O token não tem o escopo da rota, ou, com write_content, mandou campos que pedem write_products, listados em fields (permission_error).404O recurso não existe nesta loja (not_found).409O estado do recurso não permite a mudança, ou ele mudou desde a leitura (conflict).413O corpo ou o arquivo passou do tamanho máximo (invalid_request).429Chamadas demais: espere o Retry-After (rate_limited).500Erro do nosso lado (api_error).503A API está ocupada com outras chamadas: espere o Retry-After (api_error).
GET /themes/{id}/export
O zip do código de um tema
Escopo read_themes
Os arquivos de um tema da loja em zip, sem o conteúdo da loja.
Parâmetros
| Nome | Onde | Tipo | Descrição |
|---|---|---|---|
idobrigatório | caminho | string (uuid) | O id do tema. |
Resposta
200 Sucesso: o zip. (application/zip)
Erros
401O token falta, não existe, foi revogado ou venceu (authentication_error).403O token não tem o escopo da rota, ou, com write_content, mandou campos que pedem write_products, listados em fields (permission_error).404O recurso não existe nesta loja (not_found).409O estado do recurso não permite a mudança, ou ele mudou desde a leitura (conflict).429Chamadas demais: espere o Retry-After (rate_limited).500Erro do nosso lado (api_error).503A API está ocupada com outras chamadas: espere o Retry-After (api_error).
POST /themes/{id}/previews
Uma prévia do tema na vitrine
Escopo write_themes
A temporária (60 minutos, acompanha o trabalho) ou um link para mandar ao cliente, com nome, validade e, se congelado, o código e o conteúdo de agora. O endereço aparece só nesta resposta.
Parâmetros
| Nome | Onde | Tipo | Descrição |
|---|---|---|---|
idobrigatório | caminho | string (uuid) | O id do tema. |
Idempotency-Key | cabeçalho | string | Até 255 caracteres. A mesma escrita mandada de novo com a mesma chave, em até 24 horas, devolve a resposta guardada (com Idempotent-Replayed: true) em vez de acontecer duas vezes. |
Corpo application/json: ThemePreviewCreate
| Campo | Tipo | Descrição |
|---|
Resposta
201 Sucesso. (ThemePreview)
Os campos da resposta (7)
| Campo | Tipo | Descrição |
|---|---|---|
url | string (URL) | |
expires_at | string (data e hora) | |
shared | objeto ou null | |
shared.id | string (uuid) | |
shared.name | string | |
shared.frozen_at | string (data e hora) ou null | |
shared.created_at | string (data e hora) |
Erros
400A chamada veio com campos inválidos; os campos recusados vão em fields (invalid_request).401O token falta, não existe, foi revogado ou venceu (authentication_error).403O token não tem o escopo da rota, ou, com write_content, mandou campos que pedem write_products, listados em fields (permission_error).404O recurso não existe nesta loja (not_found).409O estado do recurso não permite a mudança, ou ele mudou desde a leitura (conflict).429Chamadas demais: espere o Retry-After (rate_limited).500Erro do nosso lado (api_error).503A API está ocupada com outras chamadas: espere o Retry-After (api_error).
GET /themes/{id}/check
O que muda se o tema for publicado
Escopo read_themes
Os problemas do código (com erro, não publica), o conteúdo da loja que o código deixa de ler, os modelos de página que faltam e o que está no ar.
Parâmetros
| Nome | Onde | Tipo | Descrição |
|---|---|---|---|
idobrigatório | caminho | string (uuid) | O id do tema. |
Resposta
200 Sucesso. (ThemeCheck)
Os campos da resposta (46)
| Campo | Tipo | Descrição |
|---|---|---|
theme | Theme | |
theme.id | string (uuid) | |
theme.name | string | |
theme.source | string | Um de: platform, custom. |
theme.platform_theme | string ou null | |
theme.published | boolean | |
theme.tree | string ou null | |
theme.errors | integer | A partir de 0. |
theme.development | boolean | |
theme.expires_at | string (data e hora) ou null | |
theme.github | objeto ou null | |
theme.github.repository | string | |
theme.github.branch | string | |
theme.github.folder | string | |
theme.github.url | string | |
theme.github.status | string | Um de: active, paused. |
theme.github.last_commit | objeto ou null | |
theme.github.last_commit.sha | string | |
theme.github.last_commit.message | string | |
theme.github.synced_at | string (data e hora) ou null | |
theme.pull_request | objeto ou null | |
theme.pull_request.number | integer | Maior que 0. |
theme.pull_request.repository | string | |
theme.pull_request.url | string | |
theme.created_at | string (data e hora) | |
theme.updated_at | string (data e hora) | |
can_publish | boolean | |
problems | lista de objeto | |
problems[].code | string ou null | |
problems[].file | string ou null | |
problems[].line | integer ou null | |
problems[].column | integer ou null | |
problems[].end_line | integer ou null | |
problems[].end_column | integer ou null | |
problems[].message | string | |
problems[].severity | string | Um de: error, warning. |
content_impact | lista de objeto | |
content_impact[].where | string | |
content_impact[].change | string | |
missing_templates | lista de objeto | |
missing_templates[].template | string | Um de: product, collection, page. |
missing_templates[].name | string | |
missing_templates[].count | integer | A partir de 0. |
live | objeto ou null | |
live.theme_name | string | |
live.published_at | string (data e hora) |
Erros
401O token falta, não existe, foi revogado ou venceu (authentication_error).403O token não tem o escopo da rota, ou, com write_content, mandou campos que pedem write_products, listados em fields (permission_error).404O recurso não existe nesta loja (not_found).429Chamadas demais: espere o Retry-After (rate_limited).500Erro do nosso lado (api_error).503A API está ocupada com outras chamadas: espere o Retry-After (api_error).
POST /themes/{id}/publish
Publica o tema
Escopo publish_themes
O tema vai para a vitrine, com o código e o conteúdo de agora, e o painel guarda a publicação para voltar a ela. Código com erro não vai ao ar (422 theme_has_errors, com os problemas), e o tema de desenvolvimento do CLI nunca vai (409 development_theme). A vitrine mostra a mudança em até 60 segundos.
Parâmetros
| Nome | Onde | Tipo | Descrição |
|---|---|---|---|
idobrigatório | caminho | string (uuid) | O id do tema. |
Idempotency-Key | cabeçalho | string | Até 255 caracteres. A mesma escrita mandada de novo com a mesma chave, em até 24 horas, devolve a resposta guardada (com Idempotent-Replayed: true) em vez de acontecer duas vezes. |
Corpo application/json: ThemePublish
| Campo | Tipo | Descrição |
|---|---|---|
note | string | Até 200 caracteres. |
Resposta
200 Sucesso. (Theme)
Os campos da resposta (25)
| Campo | Tipo | Descrição |
|---|---|---|
id | string (uuid) | |
name | string | |
source | string | Um de: platform, custom. |
platform_theme | string ou null | |
published | boolean | |
tree | string ou null | |
errors | integer | A partir de 0. |
development | boolean | |
expires_at | string (data e hora) ou null | |
github | objeto ou null | |
github.repository | string | |
github.branch | string | |
github.folder | string | |
github.url | string | |
github.status | string | Um de: active, paused. |
github.last_commit | objeto ou null | |
github.last_commit.sha | string | |
github.last_commit.message | string | |
github.synced_at | string (data e hora) ou null | |
pull_request | objeto ou null | |
pull_request.number | integer | Maior que 0. |
pull_request.repository | string | |
pull_request.url | string | |
created_at | string (data e hora) | |
updated_at | string (data e hora) |
Erros
400A chamada veio com campos inválidos; os campos recusados vão em fields (invalid_request).401O token falta, não existe, foi revogado ou venceu (authentication_error).403O token não tem o escopo da rota, ou, com write_content, mandou campos que pedem write_products, listados em fields (permission_error).404O recurso não existe nesta loja (not_found).409O estado do recurso não permite a mudança, ou ele mudou desde a leitura (conflict).422O pedido é válido, mas não pode ser atendido como está (invalid_request).429Chamadas demais: espere o Retry-After (rate_limited).500Erro do nosso lado (api_error).503A API está ocupada com outras chamadas: espere o Retry-After (api_error).