Descrição da nova funcionalidade
Eu, como sistema de publicação (scms-upload), gostaria que o Core disponibilizasse um endpoint para registrar que um artigo identificado por pid_v3 e sps_pkg_name foi publicado ou atualizado no site público, então o Core possa recuperar os metadados do artigo no PidProviderXML, criar ou atualizar o registro de Article e, por consequência, disponibilizá-lo no OAI-PMH, que só expõe artigos com status público.
Critérios de aceitação
Para que esta tarefa seja considerada concluída, os seguintes pontos devem ser contemplados:
- O endpoint deve aceitar requisições
POST com o corpo contendo ao menos pid_v3 e sps_pkg_name como parâmetros de identificação do artigo;
- Ao receber a requisição, o Core deve consultar o
PidProviderXML usando pid_v3 e/ou sps_pkg_name para recuperar os metadados do artigo (título, autores, resumos, palavras-chave, DOI, ISSN, fascículo, datas etc.);
- Com os dados recuperados, o Core deve criar o registro de
Article caso ele ainda não exista, ou atualizá-lo caso já exista (operação upsert);
- O
Article criado ou atualizado deve ter seu status definido como público, tornando-o elegível para exposição via OAI-PMH;
- O endpoint deve retornar resposta adequada:
201 Created para criação, 200 OK para atualização, com o identificador interno do Article no corpo da resposta;
- O endpoint deve retornar
400 Bad Request se pid_v3 ou sps_pkg_name não forem fornecidos ou forem inválidos;
- O endpoint deve retornar
404 Not Found se o PidProviderXML não localizar nenhum registro correspondente;
- O endpoint deve ser protegido por autenticação via token, sendo acessível apenas por sistemas autorizados (ex: scms-upload), não por usuários finais;
- O mecanismo de obtenção de token deve seguir o padrão já adotado no projeto — endpoint dedicado que recebe credenciais (
username/password) e retorna um token de acesso a ser enviado no header Authorization: Token <token> nas chamadas subsequentes;
- Deve haver registro de log da operação (criação vs. atualização,
pid_v3, sps_pkg_name, timestamp);
- O OAI-PMH deve, sem alterações adicionais, passar a listar o artigo após a execução bem-sucedida do endpoint, uma vez que o filtro de elegibilidade já é baseado no status público do
Article;
- Deve ser criada ou atualizada a documentação no wiki do projeto cobrindo:
- Descrição do endpoint (rota, método HTTP, parâmetros, exemplos de request/response);
- Fluxo de obtenção de token (endpoint, payload, formato do header de autenticação);
- Comportamento esperado em cada cenário (criação, atualização, erros);
- Pré-requisitos para que o artigo passe a ser exposto pelo OAI-PMH após o registro.
Anexos
N/A
Referências
- Modelo
PidProviderXML — app pid_provider do Core
- Modelo
Article — app article do Core
- Protocolo OAI-PMH implementado no Core e seu filtro de artigos públicos
Descrição da nova funcionalidade
Eu, como sistema de publicação (scms-upload), gostaria que o Core disponibilizasse um endpoint para registrar que um artigo identificado por
pid_v3esps_pkg_namefoi publicado ou atualizado no site público, então o Core possa recuperar os metadados do artigo no PidProviderXML, criar ou atualizar o registro deArticlee, por consequência, disponibilizá-lo no OAI-PMH, que só expõe artigos com status público.Critérios de aceitação
Para que esta tarefa seja considerada concluída, os seguintes pontos devem ser contemplados:
POSTcom o corpo contendo ao menospid_v3esps_pkg_namecomo parâmetros de identificação do artigo;PidProviderXMLusandopid_v3e/ousps_pkg_namepara recuperar os metadados do artigo (título, autores, resumos, palavras-chave, DOI, ISSN, fascículo, datas etc.);Articlecaso ele ainda não exista, ou atualizá-lo caso já exista (operação upsert);Articlecriado ou atualizado deve ter seu status definido como público, tornando-o elegível para exposição via OAI-PMH;201 Createdpara criação,200 OKpara atualização, com o identificador interno doArticleno corpo da resposta;400 Bad Requestsepid_v3ousps_pkg_namenão forem fornecidos ou forem inválidos;404 Not Foundse oPidProviderXMLnão localizar nenhum registro correspondente;username/password) e retorna um token de acesso a ser enviado no headerAuthorization: Token <token>nas chamadas subsequentes;pid_v3,sps_pkg_name, timestamp);Article;Anexos
N/A
Referências
PidProviderXML— apppid_providerdo CoreArticle— apparticledo Core