# Registar uma aplicação no OpenPlatform

> Os campos do registo de uma aplicação no OpenPlatform: endereço, os dois tokens partilhados, os indicadores que decidem como se abre, as suas permissões e quem lhe pode aceder.

Framework: openplatform
Product: OpenPlatform (openplatform@5)
Language: pt
Content-SHA256: a948b28738d075994b181f82e2d8559992d8a2f3cd0a0bbe01da9d62fa292a1b
Snapshot: c0700e321579725c5cf4f5ace1ad7d2866d1b4f93c24a63c0b41b6b7998e976c
Sources: 
Review: not-recorded

Uma aplicação é um registo que o administrador cria no ecrã de **configuração** (`/setup/`, a API de apps do plugin `setup`). O registo é o contrato entre o OpenPlatform e a sua aplicação: onde vive, como os dois provam quem são e o que o utilizador pode fazer nela. O esquema do registo é `@Apps` em `plugins/setup/schemas/apps.js`.

| Campo | Obrigatório | Significado |
|---|---|---|
| `name` | sim | o nome mostrado no portal |
| `url` | sim | o endereço que o OpenPlatform abre |
| `reqtoken` | sim | um segredo que escolhe e que **ambos os lados conhecem**: assina o pedido |
| `restoken` | sim | um segundo segredo, também partilhado: a aplicação usa-o para assinar a sua resposta |
| `color`, `icon` | não | o aspeto da aplicação no portal |
| `meta` | não | um endereço (URL) que devolve os metadados da aplicação: o ecrã de configuração pode descarregá-los (`Apps/download`) para preencher o registo |
| `sortindex` | não | a ordem na lista (uma aplicação nova vai para o fim) |
| `notifications` | não | se a aplicação pode enviar notificações |
| `isexternal` | não | a aplicação **não** é aberta dentro da moldura do portal: a resposta à aplicação diz `iframe: false` |
| `isbookmark` | não | a aplicação é uma simples ligação: sem troca de tokens, apenas um identificador de sessão na query string |
| `isnewtab` | não | abre-a num novo separador do navegador em vez da moldura do portal (a definição `newtab` fá-lo para todas as aplicações) |
| `isscrollbar` | não | a moldura da aplicação no portal mantém a sua barra de deslocamento (o portal põe `scrolling` em `yes` ou `no`) |
| `isdisabled` | não | desligá-la para todos: o utilizador recebe "App has been temporary disabled" |
| `permissions` | não | a lista de permissões da aplicação: cada uma tem um `id`, um `name` e um `value` (veja [grupos e permissões](/en/openplatform/groups-and-permissions/)) |

A tabela `tbl_app` tem também uma coluna `allow` ("permite apenas endereços IP específicos"): quando contém endereços, a aplicação só pode chamar os endpoints do protocolo do OpenPlatform a partir deles. O esquema de configuração acima não a lista, por isso é uma coluna da base de dados que preenche diretamente.

## Os dois tokens

`reqtoken` e `restoken` nunca são enviados ao navegador. O OpenPlatform deriva deles, para cada lançamento, os valores que viajam: o token no endereço da aplicação e o cabeçalho que a aplicação devolve. A derivação está em [como uma app se liga](/en/openplatform/how-an-app-connects/). Use valores aleatórios longos e um par diferente para cada aplicação.

## Remover e alterar

Uma aplicação nunca é apagada da tabela: removê-la (`Apps/remove`) define `isremoved` e a data da remoção e limpa a cache dos utilizadores que a tinham, e `isdisabled` desliga-a sem a remover. Quando o endereço da plataforma (a definição `url`) muda, o OpenPlatform limpa as ligações de notificação de todos os utilizadores e apaga as sessões de aplicação abertas, porque ambos contêm esse endereço ([definições e base de dados](/en/openplatform/settings-and-database/)).

Lembre-se da regra do README: uma aplicação registada não é visível para ninguém até lhe ser atribuído um grupo.
