termo_core 0.1.7 → 0.1.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -26,6 +26,23 @@ export interface ParametrosDeBuscarPeloFiltroBoard {
26
26
  favoritos?: boolean;
27
27
  dono_id?: string;
28
28
  }
29
+ /**
30
+ * Parâmetros de consulta e de cabeçalho de `/board/{id}/elementos`.
31
+ */
32
+ export interface ParametrosDeElementosListarBoard {
33
+ /**
34
+ * Só os elementos deste tipo.
35
+ */
36
+ tipo?: string;
37
+ /**
38
+ * Só os elementos dentro deste frame (pelo id).
39
+ */
40
+ frame?: string;
41
+ /**
42
+ * Trecho do texto, da descrição ou de uma célula, sem diferenciar maiúsculas.
43
+ */
44
+ busca?: string;
45
+ }
29
46
  /**
30
47
  * Lista os boards paginados
31
48
  *
@@ -37,7 +54,7 @@ export declare function buscar_paginador_board(credencial_de_acesso: CredencialD
37
54
  /**
38
55
  * Cria um board
39
56
  *
40
- * Livre para todo colaborador logado; quem cria é o dono. `nome` é obrigatório (até 120 caracteres), `descricao` vai até 500, `cor` segue o formato `#00397c` (padrão `#00397c`) e `visibilidade` é `ORGANIZACAO` (padrão, todos veem e editam) ou `MEMBROS` (só o dono e os `membro_ids`). O canvas nasce vazio e é editado em tempo real em `GET /board/ws/{id}?token=<JWT>` (WebSocket no protocolo do Yjs).
57
+ * Livre para todo colaborador logado; quem cria é o dono. `nome` é obrigatório (até 120 caracteres), `descricao` vai até 5000, `cor` segue o formato `#00397c` (padrão `#00397c`) e `visibilidade` é `ORGANIZACAO` (padrão, todos veem e editam) ou `MEMBROS` (só o dono e os `membro_ids`). O canvas nasce vazio. Para ler e editar o que fica dentro do board (notas, textos, formas, conectores, cards, tabelas, frames, imagens e traços) use as rotas `/board/{id}/elementos` (listar, criar, atualizar, excluir e organizar); a tela edita o mesmo canvas em tempo real em `GET /board/ws/{id}?token=<JWT>` (WebSocket no protocolo do Yjs), e o que a API muda aparece na hora para quem está com o board aberto.
41
58
  *
42
59
  * `POST /board`
43
60
  */
@@ -98,6 +115,59 @@ export declare function deletar_pelo_id_board(credencial_de_acesso: CredencialDe
98
115
  * `POST /board/{id}/duplicar`
99
116
  */
100
117
  export declare function duplicar_board(credencial_de_acesso: CredencialDeAcesso, id: string, opcoes_da_chamada?: OpcoesDaChamada): Promise<tipos.Board>;
118
+ /**
119
+ * Lista os elementos do canvas de um board
120
+ *
121
+ * Tudo o que está dentro do board, na ordem de desenho (frames primeiro, depois do `z` menor para o maior), com `limites` (a caixa que contém tudo; use para saber onde há espaço livre). Coordenadas em px do canvas: `x` cresce para a direita, `y` para baixo, e (`x`, `y`) é o canto de cima à esquerda da caixa `w` x `h`. Filtros: `tipo`, `frame` (só o que está dentro daquele frame) e `busca` (trecho do texto, da descrição ou de uma célula). Leia antes de alterar para conhecer os ids e as posições.
122
+ *
123
+ * `GET /board/{id}/elementos`
124
+ */
125
+ export declare function elementos_listar_board(credencial_de_acesso: CredencialDeAcesso, id: string, parametros?: ParametrosDeElementosListarBoard, opcoes_da_chamada?: OpcoesDaChamada): Promise<tipos.ConteudoDoBoard>;
126
+ /**
127
+ * Cria elementos no canvas de um board
128
+ *
129
+ * Cria de 1 a 500 elementos de uma vez (o que a pessoa faz com as ferramentas da tela), e quem está com o board aberto vê na hora. Só `tipo` é obrigatório; o resto vem do padrão do tipo.
130
+ *
131
+ * Tipos e padrões (w x h em px):
132
+ * - `sticky` (nota adesiva, 200x200, `cor` #fff9b1; a letra diminui sozinha até o `texto` caber);
133
+ * - `texto` (texto solto sem fundo, `tamanhoFonte` 24; sem `w`/`h`, o tamanho é medido pelo texto);
134
+ * - `forma` (200x120, `forma`: retangulo, arredondado, elipse, losango, triangulo, paralelogramo, hexagono, cilindro ou seta; `texto` centralizado, `cor` de fundo, `corBorda`, `espessura`);
135
+ * - `card` (320x160: `texto` é o título, `descricao` o corpo, `cor` a faixa lateral, `concluido`);
136
+ * - `tabela` (480 de largura, `linhas`: matriz de textos, a primeira linha é o cabeçalho; sem `h`, a altura acompanha as linhas);
137
+ * - `frame` (800x600, área com título em `texto` que agrupa outros elementos e fica sempre por baixo);
138
+ * - `conector` (linha com seta entre dois elementos: `de` e `para` com `id` do elemento e `lado` opcional cima/direita/baixo/esquerda; `estiloLinha` reta, curva ou cotovelo; `setaInicio`, `setaFim`, `tracejado`, `texto` como rótulo, `corBorda`);
139
+ * - `imagem` (320x240, `url` https:// ou a devolvida por `POST /board/{id}/imagem`);
140
+ * - `caneta` (traço livre: `pontos` [x0, y0, x1, y1, ...] relativos a (x, y), `corBorda`, `espessura`).
141
+ *
142
+ * Posição: com `x` e `y`, o elemento fica exatamente ali. Sem eles, o servidor posiciona em fileiras abaixo de tudo o que já existe, sem sobrepor. Com `frame` (id ou `chave` de um frame), o elemento entra no frame: `x`/`y` passam a ser relativos ao canto do frame e, sem eles, os elementos se arrumam em grade dentro do frame, que cresce para caber todos. `chave` é um apelido livre para outro elemento do mesmo pedido apontar para este (ex.: um conector `{"de": {"id": "inicio"}, "para": {"id": "fim"}}` ou `"frame": "custos"`). Cores: `#rrggbb` (paleta das notas: #fff9b1, #f5d128, #ffcee0, #f16c7f, #d5f692, #93d275, #a6ccf5, #6cd8fa, #c9b8f5, #ffc78f, #e6e6e6, #ffffff). A resposta traz os elementos criados com os ids, na ordem do pedido. Para arrumar o que já existe, use `POST /board/{id}/elementos/organizar`.
143
+ *
144
+ * `POST /board/{id}/elementos`
145
+ */
146
+ export declare function elementos_criar_board(credencial_de_acesso: CredencialDeAcesso, id: string, corpo_da_requisicao: tipos.ElementosCriar, opcoes_da_chamada?: OpcoesDaChamada): Promise<tipos.ResultadoDosElementos>;
147
+ /**
148
+ * Altera elementos do canvas de um board
149
+ *
150
+ * Altera de 1 a 500 elementos de uma vez pelo `id`: só os campos enviados mudam (texto, cores, tamanho, forma, células da tabela, pontas do conector etc.). Mover: `x`/`y` (posição nova) ou `dx`/`dy` (deslocamento). Redimensionar: `w`/`h`. Camadas: `z`, ou `ordem` `frente`/`tras`. Como na tela, mover um frame leva junto o que está dentro dele. `travado: true` impede a tela de mover ou apagar o elemento. O tipo não muda (exclua e crie de novo). A resposta traz os elementos como ficaram, inclusive os que andaram junto com um frame.
151
+ *
152
+ * `PATCH /board/{id}/elementos`
153
+ */
154
+ export declare function elementos_atualizar_board(credencial_de_acesso: CredencialDeAcesso, id: string, corpo_da_requisicao: tipos.ElementosAtualizar, opcoes_da_chamada?: OpcoesDaChamada): Promise<tipos.ResultadoDosElementos>;
155
+ /**
156
+ * Exclui elementos do canvas de um board
157
+ *
158
+ * Exclui os `ids` informados; os conectores presos a eles saem junto (como na tela). Ids que não existem são ignorados. `todos: true` limpa o canvas inteiro. A resposta lista os ids removidos.
159
+ *
160
+ * `POST /board/{id}/elementos/excluir`
161
+ */
162
+ export declare function elementos_excluir_board(credencial_de_acesso: CredencialDeAcesso, id: string, corpo_da_requisicao: tipos.ElementosExcluir, opcoes_da_chamada?: OpcoesDaChamada): Promise<tipos.ResultadoDosElementos>;
163
+ /**
164
+ * Organiza elementos do canvas em grade, linha ou coluna
165
+ *
166
+ * Arruma os elementos sem sobrepor: `layout` `grade` (padrão; `colunas` opcional, cada coluna com a largura do maior e cada linha com a altura do maior), `linha` ou `coluna`, com `espaco` px entre eles (padrão 40). A ordem segue `ordenar_por`: `posicao` (padrão, ordem de leitura atual), `texto` (alfabética) ou `criacao`. Sem `ids`, organiza os que estão dentro do `frame` ou, sem frame, todos os do board menos conectores e frames. O arranjo começa em `x`/`y`, dentro do `frame` (que cresce para caber) ou onde os elementos já começam. `frame_titulo` cria um frame com esse título em volta do arranjo. Os conectores acompanham sozinhos os elementos que ligam. A resposta traz os elementos como ficaram.
167
+ *
168
+ * `POST /board/{id}/elementos/organizar`
169
+ */
170
+ export declare function elementos_organizar_board(credencial_de_acesso: CredencialDeAcesso, id: string, corpo_da_requisicao: tipos.ElementosOrganizar, opcoes_da_chamada?: OpcoesDaChamada): Promise<tipos.ResultadoDosElementos>;
101
171
  /**
102
172
  * Envia uma imagem para o canvas
103
173
  *
@@ -21,7 +21,7 @@ export function buscar_paginador_board(credencial_de_acesso, parametros = {}, op
21
21
  /**
22
22
  * Cria um board
23
23
  *
24
- * Livre para todo colaborador logado; quem cria é o dono. `nome` é obrigatório (até 120 caracteres), `descricao` vai até 500, `cor` segue o formato `#00397c` (padrão `#00397c`) e `visibilidade` é `ORGANIZACAO` (padrão, todos veem e editam) ou `MEMBROS` (só o dono e os `membro_ids`). O canvas nasce vazio e é editado em tempo real em `GET /board/ws/{id}?token=<JWT>` (WebSocket no protocolo do Yjs).
24
+ * Livre para todo colaborador logado; quem cria é o dono. `nome` é obrigatório (até 120 caracteres), `descricao` vai até 5000, `cor` segue o formato `#00397c` (padrão `#00397c`) e `visibilidade` é `ORGANIZACAO` (padrão, todos veem e editam) ou `MEMBROS` (só o dono e os `membro_ids`). O canvas nasce vazio. Para ler e editar o que fica dentro do board (notas, textos, formas, conectores, cards, tabelas, frames, imagens e traços) use as rotas `/board/{id}/elementos` (listar, criar, atualizar, excluir e organizar); a tela edita o mesmo canvas em tempo real em `GET /board/ws/{id}?token=<JWT>` (WebSocket no protocolo do Yjs), e o que a API muda aparece na hora para quem está com o board aberto.
25
25
  *
26
26
  * `POST /board`
27
27
  */
@@ -149,6 +149,104 @@ export function duplicar_board(credencial_de_acesso, id, opcoes_da_chamada) {
149
149
  formato_da_resposta: "json",
150
150
  }, opcoes_da_chamada);
151
151
  }
152
+ /**
153
+ * Lista os elementos do canvas de um board
154
+ *
155
+ * Tudo o que está dentro do board, na ordem de desenho (frames primeiro, depois do `z` menor para o maior), com `limites` (a caixa que contém tudo; use para saber onde há espaço livre). Coordenadas em px do canvas: `x` cresce para a direita, `y` para baixo, e (`x`, `y`) é o canto de cima à esquerda da caixa `w` x `h`. Filtros: `tipo`, `frame` (só o que está dentro daquele frame) e `busca` (trecho do texto, da descrição ou de uma célula). Leia antes de alterar para conhecer os ids e as posições.
156
+ *
157
+ * `GET /board/{id}/elementos`
158
+ */
159
+ export function elementos_listar_board(credencial_de_acesso, id, parametros = {}, opcoes_da_chamada) {
160
+ return chamar_servico({
161
+ servico: SERVICO_DESTA_API,
162
+ metodo_http: "GET",
163
+ caminho_da_rota: `/board/${codificar_parametro_de_caminho(id)}/elementos`,
164
+ credencial_de_acesso,
165
+ parametros_de_consulta: parametros,
166
+ formato_da_resposta: "json",
167
+ }, opcoes_da_chamada);
168
+ }
169
+ /**
170
+ * Cria elementos no canvas de um board
171
+ *
172
+ * Cria de 1 a 500 elementos de uma vez (o que a pessoa faz com as ferramentas da tela), e quem está com o board aberto vê na hora. Só `tipo` é obrigatório; o resto vem do padrão do tipo.
173
+ *
174
+ * Tipos e padrões (w x h em px):
175
+ * - `sticky` (nota adesiva, 200x200, `cor` #fff9b1; a letra diminui sozinha até o `texto` caber);
176
+ * - `texto` (texto solto sem fundo, `tamanhoFonte` 24; sem `w`/`h`, o tamanho é medido pelo texto);
177
+ * - `forma` (200x120, `forma`: retangulo, arredondado, elipse, losango, triangulo, paralelogramo, hexagono, cilindro ou seta; `texto` centralizado, `cor` de fundo, `corBorda`, `espessura`);
178
+ * - `card` (320x160: `texto` é o título, `descricao` o corpo, `cor` a faixa lateral, `concluido`);
179
+ * - `tabela` (480 de largura, `linhas`: matriz de textos, a primeira linha é o cabeçalho; sem `h`, a altura acompanha as linhas);
180
+ * - `frame` (800x600, área com título em `texto` que agrupa outros elementos e fica sempre por baixo);
181
+ * - `conector` (linha com seta entre dois elementos: `de` e `para` com `id` do elemento e `lado` opcional cima/direita/baixo/esquerda; `estiloLinha` reta, curva ou cotovelo; `setaInicio`, `setaFim`, `tracejado`, `texto` como rótulo, `corBorda`);
182
+ * - `imagem` (320x240, `url` https:// ou a devolvida por `POST /board/{id}/imagem`);
183
+ * - `caneta` (traço livre: `pontos` [x0, y0, x1, y1, ...] relativos a (x, y), `corBorda`, `espessura`).
184
+ *
185
+ * Posição: com `x` e `y`, o elemento fica exatamente ali. Sem eles, o servidor posiciona em fileiras abaixo de tudo o que já existe, sem sobrepor. Com `frame` (id ou `chave` de um frame), o elemento entra no frame: `x`/`y` passam a ser relativos ao canto do frame e, sem eles, os elementos se arrumam em grade dentro do frame, que cresce para caber todos. `chave` é um apelido livre para outro elemento do mesmo pedido apontar para este (ex.: um conector `{"de": {"id": "inicio"}, "para": {"id": "fim"}}` ou `"frame": "custos"`). Cores: `#rrggbb` (paleta das notas: #fff9b1, #f5d128, #ffcee0, #f16c7f, #d5f692, #93d275, #a6ccf5, #6cd8fa, #c9b8f5, #ffc78f, #e6e6e6, #ffffff). A resposta traz os elementos criados com os ids, na ordem do pedido. Para arrumar o que já existe, use `POST /board/{id}/elementos/organizar`.
186
+ *
187
+ * `POST /board/{id}/elementos`
188
+ */
189
+ export function elementos_criar_board(credencial_de_acesso, id, corpo_da_requisicao, opcoes_da_chamada) {
190
+ return chamar_servico({
191
+ servico: SERVICO_DESTA_API,
192
+ metodo_http: "POST",
193
+ caminho_da_rota: `/board/${codificar_parametro_de_caminho(id)}/elementos`,
194
+ credencial_de_acesso,
195
+ corpo_json: corpo_da_requisicao,
196
+ formato_da_resposta: "json",
197
+ }, opcoes_da_chamada);
198
+ }
199
+ /**
200
+ * Altera elementos do canvas de um board
201
+ *
202
+ * Altera de 1 a 500 elementos de uma vez pelo `id`: só os campos enviados mudam (texto, cores, tamanho, forma, células da tabela, pontas do conector etc.). Mover: `x`/`y` (posição nova) ou `dx`/`dy` (deslocamento). Redimensionar: `w`/`h`. Camadas: `z`, ou `ordem` `frente`/`tras`. Como na tela, mover um frame leva junto o que está dentro dele. `travado: true` impede a tela de mover ou apagar o elemento. O tipo não muda (exclua e crie de novo). A resposta traz os elementos como ficaram, inclusive os que andaram junto com um frame.
203
+ *
204
+ * `PATCH /board/{id}/elementos`
205
+ */
206
+ export function elementos_atualizar_board(credencial_de_acesso, id, corpo_da_requisicao, opcoes_da_chamada) {
207
+ return chamar_servico({
208
+ servico: SERVICO_DESTA_API,
209
+ metodo_http: "PATCH",
210
+ caminho_da_rota: `/board/${codificar_parametro_de_caminho(id)}/elementos`,
211
+ credencial_de_acesso,
212
+ corpo_json: corpo_da_requisicao,
213
+ formato_da_resposta: "json",
214
+ }, opcoes_da_chamada);
215
+ }
216
+ /**
217
+ * Exclui elementos do canvas de um board
218
+ *
219
+ * Exclui os `ids` informados; os conectores presos a eles saem junto (como na tela). Ids que não existem são ignorados. `todos: true` limpa o canvas inteiro. A resposta lista os ids removidos.
220
+ *
221
+ * `POST /board/{id}/elementos/excluir`
222
+ */
223
+ export function elementos_excluir_board(credencial_de_acesso, id, corpo_da_requisicao, opcoes_da_chamada) {
224
+ return chamar_servico({
225
+ servico: SERVICO_DESTA_API,
226
+ metodo_http: "POST",
227
+ caminho_da_rota: `/board/${codificar_parametro_de_caminho(id)}/elementos/excluir`,
228
+ credencial_de_acesso,
229
+ corpo_json: corpo_da_requisicao,
230
+ formato_da_resposta: "json",
231
+ }, opcoes_da_chamada);
232
+ }
233
+ /**
234
+ * Organiza elementos do canvas em grade, linha ou coluna
235
+ *
236
+ * Arruma os elementos sem sobrepor: `layout` `grade` (padrão; `colunas` opcional, cada coluna com a largura do maior e cada linha com a altura do maior), `linha` ou `coluna`, com `espaco` px entre eles (padrão 40). A ordem segue `ordenar_por`: `posicao` (padrão, ordem de leitura atual), `texto` (alfabética) ou `criacao`. Sem `ids`, organiza os que estão dentro do `frame` ou, sem frame, todos os do board menos conectores e frames. O arranjo começa em `x`/`y`, dentro do `frame` (que cresce para caber) ou onde os elementos já começam. `frame_titulo` cria um frame com esse título em volta do arranjo. Os conectores acompanham sozinhos os elementos que ligam. A resposta traz os elementos como ficaram.
237
+ *
238
+ * `POST /board/{id}/elementos/organizar`
239
+ */
240
+ export function elementos_organizar_board(credencial_de_acesso, id, corpo_da_requisicao, opcoes_da_chamada) {
241
+ return chamar_servico({
242
+ servico: SERVICO_DESTA_API,
243
+ metodo_http: "POST",
244
+ caminho_da_rota: `/board/${codificar_parametro_de_caminho(id)}/elementos/organizar`,
245
+ credencial_de_acesso,
246
+ corpo_json: corpo_da_requisicao,
247
+ formato_da_resposta: "json",
248
+ }, opcoes_da_chamada);
249
+ }
152
250
  /**
153
251
  * Envia uma imagem para o canvas
154
252
  *
@@ -38,6 +38,12 @@ export interface BoardCriar {
38
38
  nome: string;
39
39
  visibilidade?: string | null;
40
40
  }
41
+ export interface CaixaDoCanvas {
42
+ h: number;
43
+ w: number;
44
+ x: number;
45
+ y: number;
46
+ }
41
47
  /**
42
48
  * Resumo do colaborador (id e nome) para mostrar autoria.
43
49
  */
@@ -45,6 +51,156 @@ export interface ColaboradorResumo {
45
51
  id: string;
46
52
  nome: string;
47
53
  }
54
+ /**
55
+ * O canvas de um board.
56
+ */
57
+ export interface ConteudoDoBoard {
58
+ /**
59
+ * Os elementos na ordem de desenho (frames primeiro, depois do `z` menor para o maior).
60
+ */
61
+ elementos: Array<ElementoBoard>;
62
+ limites?: CaixaDoCanvas | null;
63
+ total: number;
64
+ }
65
+ export interface ElementoAlterarParte2 {
66
+ /**
67
+ * Desloca o elemento em relação à posição atual (soma ao `x`).
68
+ */
69
+ dx?: number | null;
70
+ /**
71
+ * Desloca o elemento em relação à posição atual (soma ao `y`).
72
+ */
73
+ dy?: number | null;
74
+ h?: number | null;
75
+ id: string;
76
+ /**
77
+ * `frente` traz o elemento para a frente de todos; `tras` manda para trás de todos.
78
+ */
79
+ ordem?: string | null;
80
+ w?: number | null;
81
+ x?: number | null;
82
+ y?: number | null;
83
+ z?: number | null;
84
+ }
85
+ /**
86
+ * Mudança num elemento existente: só o que vier muda (o resto fica como está).
87
+ */
88
+ export type ElementoAlterar = PropriedadesElemento & ElementoAlterarParte2;
89
+ export interface ElementoBoardParte2 {
90
+ h?: number;
91
+ /**
92
+ * UUID v7 do elemento.
93
+ */
94
+ id: string;
95
+ /**
96
+ * `sticky`, `texto`, `forma`, `conector`, `imagem`, `frame`, `caneta`, `card` ou `tabela`.
97
+ */
98
+ tipo: string;
99
+ w?: number;
100
+ x?: number;
101
+ y?: number;
102
+ z?: number;
103
+ }
104
+ /**
105
+ * Um elemento do canvas. Coordenadas em px do canvas: `x` cresce para a direita, `y` para baixo,
106
+ * e (`x`, `y`) é o canto de cima à esquerda da caixa de `w` por `h`. `z` é a ordem de desenho
107
+ * (maior fica na frente; frames ficam sempre por baixo).
108
+ */
109
+ export type ElementoBoard = PropriedadesElemento & ElementoBoardParte2;
110
+ export interface ElementoNovoParte2 {
111
+ /**
112
+ * Apelido livre deste elemento dentro do pedido, para um conector (`de.id`/`para.id`) ou o
113
+ * `frame` de outro elemento do mesmo pedido apontar para ele antes de ele ter id.
114
+ */
115
+ chave?: string | null;
116
+ /**
117
+ * Id (ou `chave`) de um frame: o elemento entra nele. Com `frame`, `x` e `y` são relativos ao
118
+ * canto do frame; sem eles, os elementos se organizam em grade dentro do frame, que cresce
119
+ * para caber todos.
120
+ */
121
+ frame?: string | null;
122
+ h?: number | null;
123
+ /**
124
+ * `sticky`, `texto`, `forma`, `conector`, `imagem`, `frame`, `caneta`, `card` ou `tabela`.
125
+ */
126
+ tipo: string;
127
+ w?: number | null;
128
+ /**
129
+ * Canto de cima à esquerda. Sem `x` e `y`, o servidor posiciona o elemento: abaixo do que já
130
+ * existe no board, em fileiras, ou em grade dentro do `frame`.
131
+ */
132
+ x?: number | null;
133
+ y?: number | null;
134
+ /**
135
+ * Ordem de desenho; sem ela, o elemento entra na frente de todos.
136
+ */
137
+ z?: number | null;
138
+ }
139
+ /**
140
+ * Elemento a criar. Só `tipo` é obrigatório; o resto vem do padrão do tipo (o mesmo da
141
+ * ferramenta da tela).
142
+ */
143
+ export type ElementoNovo = PropriedadesElemento & ElementoNovoParte2;
144
+ export interface ElementosAtualizar {
145
+ /**
146
+ * De 1 a 500 mudanças.
147
+ */
148
+ elementos: Array<ElementoAlterar>;
149
+ }
150
+ export interface ElementosCriar {
151
+ /**
152
+ * De 1 a 500 elementos, criados na ordem.
153
+ */
154
+ elementos: Array<ElementoNovo>;
155
+ }
156
+ export interface ElementosExcluir {
157
+ /**
158
+ * Ids a excluir. Os conectores presos a eles saem junto.
159
+ */
160
+ ids?: Array<string> | null;
161
+ /**
162
+ * `true` apaga o canvas inteiro (ignora `ids`).
163
+ */
164
+ todos?: boolean | null;
165
+ }
166
+ export interface ElementosOrganizar {
167
+ /**
168
+ * Colunas da grade (padrão: a raiz quadrada da quantidade, arredondada para cima).
169
+ */
170
+ colunas?: number | null;
171
+ /**
172
+ * Espaço entre os elementos em px (padrão 40).
173
+ */
174
+ espaco?: number | null;
175
+ /**
176
+ * Id de um frame existente: o arranjo vai para dentro dele e o frame cresce para caber.
177
+ */
178
+ frame?: string | null;
179
+ /**
180
+ * Cria um frame novo com este título em volta do arranjo.
181
+ */
182
+ frame_titulo?: string | null;
183
+ /**
184
+ * Os elementos a organizar. Sem `ids`: os que estão dentro do `frame`, ou (sem frame) todos
185
+ * os do board menos conectores e frames.
186
+ */
187
+ ids?: Array<string> | null;
188
+ /**
189
+ * `grade` (padrão), `linha` (um ao lado do outro) ou `coluna` (um embaixo do outro).
190
+ */
191
+ layout?: string | null;
192
+ /**
193
+ * `posicao` (padrão: ordem de leitura atual, de cima para baixo e da esquerda para a direita),
194
+ * `texto` (ordem alfabética) ou `criacao` (do mais antigo ao mais novo).
195
+ */
196
+ ordenar_por?: string | null;
197
+ /**
198
+ * Canto de cima à esquerda do arranjo. Padrão: dentro do `frame`, ou onde os elementos já
199
+ * começam.
200
+ */
201
+ x?: number | null;
202
+ y?: number | null;
203
+ }
48
204
  export interface ImagemEnviar {
49
205
  /**
50
206
  * O arquivo em base64 (pode vir como data URL: `data:image/png;base64,...`).
@@ -98,6 +254,110 @@ export interface PaginaBoardAutoComplete {
98
254
  tamanho: number;
99
255
  total: number;
100
256
  }
257
+ /**
258
+ * A ponta de um conector: presa a um elemento (e a um lado dele, ou o mais próximo) ou solta
259
+ * em (x, y).
260
+ */
261
+ export interface PontaConector {
262
+ /**
263
+ * Id do elemento em que a ponta fica presa. Ao criar, aceita também a `chave` de um
264
+ * elemento criado no mesmo pedido. Sem `id`, a ponta fica solta em (`x`, `y`).
265
+ */
266
+ id?: string | null;
267
+ /**
268
+ * Lado do elemento: `cima`, `direita`, `baixo` ou `esquerda`. Sem lado, o canvas usa o
269
+ * lado voltado para a outra ponta.
270
+ */
271
+ lado?: string | null;
272
+ x?: number;
273
+ y?: number;
274
+ }
275
+ /**
276
+ * O que cada tipo de elemento pode ter além da posição e do tamanho. Os nomes seguem o canvas
277
+ * (camelCase). Campo ausente fica como está (ou com o padrão do tipo, ao criar).
278
+ */
279
+ export interface PropriedadesElemento {
280
+ /**
281
+ * `esquerda`, `centro` ou `direita`.
282
+ */
283
+ alinhamento?: string | null;
284
+ /**
285
+ * Só do `card`: marcado como concluído.
286
+ */
287
+ concluido?: boolean | null;
288
+ /**
289
+ * Cor de fundo (`#rrggbb` ou `transparent`): nota, forma, frame e a faixa do card.
290
+ */
291
+ cor?: string | null;
292
+ /**
293
+ * Cor da borda da forma, da linha do conector e do traço da caneta.
294
+ */
295
+ corBorda?: string | null;
296
+ /**
297
+ * Cor do texto (sem ela, o canvas escolhe a que dá contraste com o fundo).
298
+ */
299
+ corTexto?: string | null;
300
+ de?: PontaConector | null;
301
+ /**
302
+ * Só do `card`: o texto abaixo do título (até 5000 caracteres).
303
+ */
304
+ descricao?: string | null;
305
+ /**
306
+ * Espessura da linha, da borda ou do traço (0 a 50).
307
+ */
308
+ espessura?: number | null;
309
+ /**
310
+ * Só do `conector`: `reta`, `curva` (padrão) ou `cotovelo`.
311
+ */
312
+ estiloLinha?: string | null;
313
+ /**
314
+ * Só da `forma`: `retangulo`, `arredondado`, `elipse`, `losango`, `triangulo`,
315
+ * `paralelogramo`, `hexagono`, `cilindro` ou `seta`.
316
+ */
317
+ forma?: string | null;
318
+ /**
319
+ * Só da `tabela`: as células, linha a linha (a primeira linha é o cabeçalho). Até 200
320
+ * linhas e 50 colunas; linhas mais curtas são completadas com células vazias.
321
+ */
322
+ linhas?: Array<Array<string>> | null;
323
+ negrito?: boolean | null;
324
+ para?: PontaConector | null;
325
+ /**
326
+ * Só da `caneta`: pontos relativos a (x, y), em pares `[x0, y0, x1, y1, ...]`.
327
+ */
328
+ pontos?: Array<number> | null;
329
+ setaFim?: boolean | null;
330
+ setaInicio?: boolean | null;
331
+ /**
332
+ * Tamanho da letra em px (6 a 400). Na nota, a letra diminui sozinha até o texto caber.
333
+ */
334
+ tamanhoFonte?: number | null;
335
+ /**
336
+ * O texto do elemento (até 5000 caracteres): o da nota, do bloco de texto, da forma, o
337
+ * rótulo do conector, o título do frame e o título do card.
338
+ */
339
+ texto?: string | null;
340
+ tracejado?: boolean | null;
341
+ /**
342
+ * Travado: não sai do lugar nem é apagado pela tela (a API altera assim mesmo).
343
+ */
344
+ travado?: boolean | null;
345
+ /**
346
+ * Só da `imagem`: endereço `https://` (ou o `/board/imagem/{id}` devolvido por
347
+ * `POST /board/{id}/imagem`).
348
+ */
349
+ url?: string | null;
350
+ }
101
351
  export interface RespostaDeErro {
102
352
  erro: string;
103
353
  }
354
+ export interface ResultadoDosElementos {
355
+ /**
356
+ * Os elementos criados ou alterados, como ficaram (os criados na ordem do pedido).
357
+ */
358
+ elementos: Array<ElementoBoard>;
359
+ /**
360
+ * Ids dos elementos removidos.
361
+ */
362
+ removidos: Array<string>;
363
+ }