Skip to content

[FAQ] Perguntas Frequentes

monilouise edited this page Oct 21, 2016 · 4 revisions

1. Sobre o cadastro de usuários no metamodelo, na versão atual disponível o usuário é único em todo modelo.

Estamos avaliando se essa restrição será mantida ou se será feito algum tratamento adicional para o relacionamento entre um usuário e mais de um aplicativo.

A vinculação de um usuário com um app ocorre quando o usuário tem perfil para o app. Verifique os endpoints abaixo relativos a tipo de perfil:

http://mobile-aceite.tcu.gov.br/appCivicoRS/swagger/index.html?url=/appCivicoRS/v2/api-docs#!/aplicativos/recuperarTiposPerfilUsingGET

http://mobile-aceite.tcu.gov.br/appCivicoRS/swagger/index.html?url=/appCivicoRS/v2/api-docs#!/aplicativos/cadastrarTipoPerfilUsingPOST

http://mobile-aceite.tcu.gov.br/appCivicoRS/swagger/index.html?url=/appCivicoRS/v2/api-docs#!/pessoas/associarPerfilUsingPOST

http://mobile-aceite.tcu.gov.br/appCivicoRS/swagger/index.html?url=/appCivicoRS/v2/api-docs#!/pessoas/recuperarPerfilUsingGET

Adicionalmente, ao realizar o cadastro de um aplicativo, deve ser informado o usuário responsável por ele:

http://mobile-aceite.tcu.gov.br/appCivicoRS/swagger/index.html?url=/appCivicoRS/v2/api-docs#!/aplicativos/cadastrarAplicativoUsingPOST


2. Sobre as avaliações presentes no metamodelo, o endpoint

(GET) /rest/postagens/tipopostagem/{codTipoPostagem}/tipoobjeto/{codTipoObjetoDestino}/objeto/{codObjetoDestino}

Retorna média e quantidade de avaliações para determinado objeto. Para que esse valor esteja disponível, não é suficiente criar a postagem. É necessário criar também o conteúdo da postagem, por meio do endpoint

(POST) /rest/postagens/{codPostagem}/conteudos

Assim, sua aplicação deve criar, por meio do endpoint acima, um conteúdo com um valor numérico para o campo “valor”, conforme o JSON schema abaixo:

{
  "JSON": "string",
  "texto": "string",
  "valor": 0
}

3. Estrutura de retorno de postagens em "Timeline"

Via Swagger, sob o contexto de Postagens, existe uma requisição chamada /postagens/timeline. Essa solução retorna um tipo mais abrangente de busca de postagens, enviando tanto as informações completas do autor, todos os conteúdos da postagem buscada, uma lista com todas as postagens filhas dela, e uma lista de tipos das postagens relacionadas (Bastante coisa!).

Eis o modelo Java da resposta:

@ApiModel("Timeline")
public class DtoTimeline extends HalObject {

    private Long codPostagem;
    private Date dataHoraPostagem;
    private Long codTipoPostagem;
    private Long codObjetoDestino;
    private Long codTipoObjetoDestino;

    private Long codAutor;
    private String nomeAutor;
    private byte[] fotoPerfilAutor;

    private DtoConteudo[] conteudosSalvos;
    private DtoTipoPostagemRelacionada[] tipoPostagensRelacionadas;
    private DtoPostagem[] postagensRelacionadas;
}

No momento, a busca é feita de forma similar ao endpoint 'postagens', em que são utilizados parâmetros opcionais para filtrar os resultados, que são exibidos em ordem cronológica de postagem (como uma timeline).

  • O primeiro bloco contém as informações padrão de uma postagem: seu código, data/hora, e códigos de objeto/tipos.
  • No próximo, informações de código de autor, nome e a foto de perfil também são enviados.
  • No último bloco, são enviados os conteúdos da postagem (agora abertos ao invés de apenas links), todas as postagens relacionadas (abertas) e uma nova estrutura* para contabilizar quantidades de postagens relacionadas. - Essa última estrutura exibe uma lista de pares que determinam quantas postagens de determinado tipo são relacionadas à certa postagem. Tomando como exemplo uma postagem que tem 5 comentários (TipoPostagem = 1) e 10 likes (TipoPostagem=2), sua lista seria da seguinte forma (JSON, apenas dessa parte da estrutura):
"tipoPostagensRelacionadas": [
      {
        "codTipoPostagem": 0001,
        "qteTipoPostagem": 5,
        "links": []
      },
      {
        "codTipoPostagem": 0002,
        "qteTipoPostagem": 10,
        "links": []
      
      }   
    ]

Uma vez que todas as postagens relacionadas estão sendo retornadas, a lógica para saber se o usuário deu like na postagem ou não já pode ser feita com as informações que esse endpoint está enviando.

Segue o Model Schema do retorno desse endpoint:

{
    "codAutor": 0,
    "codObjetoDestino": 0,
    "codPostagem": 0,
    "codTipoObjetoDestino": 0,
    "codTipoPostagem": 0,
    "conteudos": [
      {
        "JSON": "string",
        "codConteudoPost": 0,
        "links": [
          {
            "href": "string",
            "rel": "string",
            "templated": true
          }
        ],
        "postagem": {
          "codAutor": 0,
          "codObjetoDestino": 0,
          "codPostagem": 0,
          "codTipoObjetoDestino": 0,
          "codTipoPostagem": 0,
          "conteudos": [
            {
              "codConteudoPostagem": 0,
              "links": [
                "Link"
              ]
            }
          ],
          "dataHoraPostagem": "2016-10-14T14:55:51.623Z",
          "latitude": 0,
          "links": [
            "Link"
          ],
          "longitude": 0
        },
        "texto": "string",
        "valor": 0
      }
    ],
    "dataHoraPostagem": "2016-10-14T14:55:51.623Z",
    "fotoPerfilAutor": [
      "string"
    ],
    "links": [
      "Link"
    ],
    "nomeAutor": "string",
    "postagensRelacionadas": [
      "Postagem"
    ],
    "tipoPostagensRelacionadas": [
      {
        "codTipoPostagem": 0,
        "links": [
          "Link"
        ],
        "qteTipoPostagem": 0
      }
    ]
  }

4. Conceito de "Tipo de Objeto" do Metamodelo

O conceito de tipo de objeto é utilizado para atender ao “objeto de destino” das postagens, permitindo que postagens forneçam feedback sobre quaisquer tipos de objeto.

Na versão atual da API, existe um conjunto de tipos de objeto pré-definidos:

  • 1 Escolas
  • 100 Estabelecimento de saúde
  • 200 Remédios catalogados na ANVISA
  • 300 Posto de atendimento do SINE
  • 400 Centro de Referência Especializado em Assistência Social
  • 500 Centro de Referência em Assistência Social

Apesar da existência de endpoints para cadastro de tipos de objeto, eles não estarão disponíveis na próxima versão da API. Assim, utilize apenas os tipos de objeto citados acima, pois são os únicos que possuem utilidade prática.