# Documentação API: integração App e-Bolsa ## :gear: API ### BaseAddress > > :globe_with_meridians: API Dev: https://api-ebolsa-dev.educadventista.org > :globe_with_meridians: API Live: https://api-ebolsa.educadventista.org ### Documentation > :green_book: Swagger: /api/doc --- ## Endpoints ### :closed_lock_with_key: Autenticação 1. Chamada Post obter o token - >[post]=[/api/v2/identity/token] - Exemplo de body: ````json { "username": "string", "password": "string", "baseUri": "string" } ```` - Passar no parâmetro baseUri do body a URL: https://ebolsa.educadventista.org - O userId, Name and SurName estao dentro do token - A imagem do usuario pode ser uma imagem estática padrao por enquanto - Exemplo de retorno ````json { "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA1LzA1L2lkZW50aXR5L2NsYWltcy9uYW1laWRlbnRpZmllciI6ImQwYWFmYmQyLTU5ZGItNDhmNC1iYTUzLTZlYmRlOTRlMWU3NSIsImh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzLzIwMDUvMDUvaWRlbnRpdHkvY2xhaW1zL2VtYWlsYWRkcmVzcyI6ImplZmZlcnNvbi5wYXNzb3NAdWNiLm9yZy5iciIsImVtYWlsY29uZmlybWVkIjoiVHJ1ZSIsImZ1bGxOYW1lIjoiSmVmZmVyc29uIEJyaXRvIFBhc3NvcyBkb3MgU2FudG9zIiwiaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3MvMjAwNS8wNS9pZGVudGl0eS9jbGFpbXMvbmFtZSI6IkplZmZlcnNvbiIsImh0dHA6Ly9zY2hlbWFzLnhtbHNvYXAub3JnL3dzLzIwMDUvMDUvaWRlbnRpdHkvY2xhaW1zL3N1cm5hbWUiOiJTYW50b3MiLCJpcEFkZHJlc3MiOiIiLCJpbWFnZV91cmwiOiIiLCJodHRwOi8vc2NoZW1hcy54bWxzb2FwLm9yZy93cy8yMDA1LzA1L2lkZW50aXR5L2NsYWltcy9kbnMiOiJlYm9sc2EuZWR1Y2FkdmVudGlzdGEub3JnIiwibmJmIjoiMTY1Njk2NTI1MyIsImV4cCI6MTY1NzEzODA1MywiaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS93cy8yMDA4LzA2L2lkZW50aXR5L2NsYWltcy9yb2xlIjpbIk93bmVyIiwiU3VwZXIgQWRtaW4iXX0.s6lZf9puMLafDLgB-YmprujUJcuwJdzr2fxrdOIPmyo", "refreshToken": "Mru5TkvdXv+jfyHKTxCi2vSsQkxdtkKQ2rCbZaEnIwI=", "refreshTokenExpiryTime": "2022-07-11T20:07:33.7137747Z" } ```` 2. Forgot Password - Endpoint para receber um e-mail para redefinição de senha - - > [post]=[/api/v2/identity/account/forgot-password] ````json { "userName": "string", "origin": "string" } ```` - Passar no parâmetro origin do body a URL: https://ebolsa.educadventista.org - Irá retornar o e-mail para o qual o link de redefinição foi enviado de forma obsfucada ````json { "email": "je*************s@iatec.com" } ```` ### :house: Home 1. Chamada Get para obter a lista de anos - >[get]=[/api/v2/scholarships/process-periods/year-processes/years] - Ira retornar apenas os anos em que o responsavel autenticado possui registro de bolsa. 2. Chamada Get para obter a lista de ProcessPeriod para o ano especificado no parametro. - >[get]=[/api/v2/year-processes/{year}/process-periods] - Para identificar se o processo é de renovação ou de novos, usa-se o campo *processType* que representa o enum com os seguintes valores: Renew = 1, New = 2 3. Chamada Get para obter o Scholarship passando o ProcessPeriodId como parametro. - >[get]=[/api/v2/process-periods/{process-period-id}/scholarship] - exibir o status do processo com base no campo enum "ScholarshipStatus" que representa os seguintes valores [NotFinished = 0, Applied = 1,Documentation = 2,Reviewed = 3,Analysis = 4,Result = 5]. * 0: A inscrição ainda está em andamento (não finalizada) * 1: Incrição finalizada (formulário) - Exibir botão para envio de documentação * 2: Documentação enviada (no digital) ou entregue (no presencial) - Exibir botão caso existam pendências ou documentos complementares * 3: Revisão finalizada sem pendências - Exibir botão caso existam pendências ou documentos complementares * 4: Analise socioeconômica finalizada * 5: Resultado liberado (para um, ou todos os candidatos) 4. Com base no objeto scholarship, caso (DigitalProcess = 1 and CompletedStep = 5), exibir o botao "Iniciar envio". - Existe uma data limite para envio da documentação. O botão deve ser exibido apenas se estiver dentro do prazo. A data limite será retornada no objeto ProcessPeriod e campo "documentationUploadDeadLine". 5. Com base no registro mais recente (usando o campo createdAt) de ScholarshipReview (objeto filho de Scholarship), caso o campo ReviewStatus = 1, exibir o botao "Reenviar documentos". - O campo ReviewStatus é do tipo enum com os seguintes valores: ReviewStarted = 0, Pendent = 1, Resent = 2, Done = 3, None = 4, NotFinished = 5. 6. O texto com o protocolo precisaremos retirar da tela inicial, pois o protocolo é por candidato. Para exibir de forma correta, precisariamos exibir a lista de candidatos que compoe aquele scholarship e exibir lá um protocolo para cada candidato. --- ### :bell: Push Notification * O endpoint utiliza o verbo http Path (mais detalhes em: JSON Patch | jsonpatch.com); * O nome do campo onde gravaremos o token será: **FcmRegistrationToken**; * O userId pode ser recuperado no payload do Token, no claim **nameidentifier**; * Após o request, o endpoint retornará o status code de sucesso **204 No Content**; **Endpoint:** - >[PATCH]=[/api/v2/users/{userId}] - Exemplo de body: ````json { "op": "replace", "path": "/fcmregistrationtoken", "value": "4116-b086-7ba912dabd5" } --- ### :newspaper: Listar Comprovantes #### Ao acionar o botão "Iniciar envio", deve-se ir para tela para iniciar o envio da documentação. 1. Obter a lista de membros familiares passando o ScholarshipId. - >[Get]=[/api/v2/scholarships/{scholarshipId}/family-members] 2. Chamada Get para obter a lista de comprovantes passando o ScholarshipId como parâmetro. - >[Get]=[/api/v2/scholarships/{scholarshipId}/scholarship-proofs] - Os parâmetros *familyMemberId*, *isFamilyGroup* e *proofReference* podem ser usados para filtrar e obter os documentos específicos de um membro familiar, ou por tipo a que o documento se refere. - O campo *proofReference* é do tipo enum com os seguintes valores (FamilyGroup = 0, FamilyMember = 1, Student = 2, Ocupation = 3, AssetsPropriety = 4, AssetsFinancing = 5, AssetsVehicle = 6) - Para se obter a lista de comprovantes de um membro específico, passa-se o id do membro familiar. - Para se obter a lista de comprovantes que são referente a grupo familiar (documentos que não são referentes a uma pessoa), informa-se no parâmetro *isFamilyGroup* o valor de "true". 3. Chamada Get para obter a lista de itens do comprovante, passando o scholarshipProofId como parâmetro. - > [Get]=[/api/v2/scholarship-proofs/{scholarshipProofId}/scholarship-proof-documents] --- ### :paperclip: Upload 1. Listar tipos de documentos aceitos pelo comprovante - > ~~[Get]=[[/api/v2/document-entity-proofs/{entityProofId}]~~ - > ~~[Get]=[/api/v2/entity-proof-itens/{entityProofItemId}/document-entity-proofs]~~ - > [Get]=[/api/v2/proof-item-configs/{proofItemConfigId}/proof-document-configs] - Caso o usuário selecione da lista um item que seja do tipo declaração, ou seja, o campo document.isDeclaration == true, deve se exibir o termo de aceite da teclaração e enviar o aceite no request ao fazer o **PUT** para upload do documento. 2. Envio de documento - > [Put]=[api/v2/scholarship-proof-documents/{scholarshipProofDocumentId}/upload] - Enviar usando multipart/form-data ![](https://i.imgur.com/GmKQk8v.png) 3. Substituição de documento - Para substituir um documento, a mesma chamada POST deve ser enviada com os mesmos parâmetros, pois a exclusão/inserção do novo documento será feita de forma automática pela API. 4. Get de um documento enviado - Após o upload, o objeto ScholarshipProofDocument terá o fileId populado, sendo possível recuperar os dados do arquivo através do endpoint abaixo: - > [Get]=[/api/v2/files/{id}] - Exemplo de retorno: ````json { "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "purpose": 1, "fileKey": "string", "cloudType": 1, "contentType": "string", "createdAt": "2022-07-13T13:48:12.123Z", "filename": "string", "size": 0, "title": "string", "url": "string" } ```` 5. Finalizar envio - Para finalizar o envio dos documentos, o seguinte endpoint deve ser chamado passando o scholarshipId na rota, conforme exemplo abaixo: - > [Put]=[/api/v2/scholarship/{scholarshipId}/step-six] ### :heavy_exclamation_mark: Reenvio de Documento (re-upload das pendências pós revisão) 1. Listar apenas membros familiares com pendencias de documentação com base na última revisão. - > [Get]=[/api/v2/scholarships/{scholarshipId}/family-members?hasPendences=true] 2. Listar ultima revisão - Endpoint para listar sempre a revisão mais recente - > [Get]=[/api/v2/scholarships/{scholarshipId}/scholarship-reviews/latest] 2. Listar comprovantes pendentes de uma revisão - > [Get]=[/api/v2/scholarship-reviews/{scholarshipReviewId}/scholarship-proofs] - Os parâmetros *familyMemberId*, *isFamilyGroup* e *proofReference* podem ser usados para filtrar e obter os documentos específicos de um membro familiar, ou por tipo a que o documento se refere. - O campo *proofReference* é do tipo enum com os seguintes valores (FamilyGroup = 0, FamilyMember = 1, Student = 2, Ocupation = 3, AssetsPropriety = 4, AssetsFinancing = 5, AssetsVehicle = 6) - Para se obter a lista de comprovantes de um membro específico, passa-se o id do membro familiar. - Para se obter a lista de comprovantes que são referente a grupo familiar (documentos que não são referentes a uma pessoa), informa-se no parâmetro *isFamilyGroup* o valor de "true". 3. Enviar documento de uma revisão - O reenvio do documento pendente após uma revisão ter sido feita, deve ser feito por outro endpoint para upload, com o parâmetro adiconal da revisão correspondente. - > [Put]=[/api/v2/scholarship-reviews/{scholarshipReviewId}/scholarship-proof-documents/{scholarshipProofDocumentId}/upload] - Exemplo de body: ````json { "File": Srting($binary) "ScholarshipProofDocumentId": "6bbd0975-220d-4ae5-a8b9-224ae586c084", "DocumentId": "ba779fd8-c2ed-4f98-ada7-60aa2751e48c", "AcceptTerm": false, "scholarshipReviewId": "24764fcb-9792-4b5d-88ca-c74d194a416c" } ```` 4. Finalizar envio - Para finalizar o envio dos documentos, o seguinte endpoint deve ser chamado passando o scholarshipRevewId na rota, conforme exemplo abaixo: - > [Put]=[/api/v2/scholarship-reviews/{scholarshipReviewId}] - Exemplo de body: ````json { "ScholarshipId": "6bbd0975-220d-4ae5-a8b9-224ae586c084", "scholarshipReviewId": "24764fcb-9792-4b5d-88ca-c74d194a416c" } ```` ### :page_with_curl: Resultados 1. Com base na data de divulgação dos resultados obtidos no parâmetro **resultRelease** do endpoint **process-periods** exibir o botão **Resultados** 2. Para obter a lista de alunos usa-se o endpoint abaixo passando o scholarshipId como parâmetro do tipo **path** - > [Get]=[/api/v2/scholarships/{scholarshipId}/students] 3. As labels com o resultado e seus respectivos textos são: - <span style="background-color:green; color: white; padding-left: 10px; padding-right: 10px; border-radius: 25px">**Deferido 100%**</span> - Informamos que com base na análise do perfil socioeconômico e demais critérios estabelecidos pela entidade, a solicitação de Bolsa de Estudo para o ano letivo de {**ano_do_processo**} foi deferida com percentual de 100%. Em consonância com o Edital, para receber o benefício supra, o responsável legal, deverá comparecer a secretaria escolar, munido de todos os documentos necessários para efetivar a matrícula do bolsista, consonante aos prazos previstos no cronograma descrito no Edital. **A não efetivação da matrícula do estudante, pelo responsável legal, cancela o processo de recebimento do benefício** da bolsa de estudo. Em caso de dúvida, entre em contato com a unidade escolar. - <span style="background-color:green; color: white; padding-left: 10px; padding-right: 10px; border-radius: 25px">**Deferido 50%**</span> - Informamos que com base na análise do perfil socioeconômico e demais critérios estabelecidos pela entidade, a solicitação de Bolsa de Estudo para o ano letivo de {ano_do_processo} foi deferida com percentual de 50%. Em consonância com o Edital, para receber o benefício supra, o responsável legal, deverá comparecer a secretaria escolar, munido de todos os documentos necessários para efetivar a matrícula do bolsista, consonante aos prazos previstos no cronograma descrito no Edital. **A não efetivação da matrícula do estudante, pelo responsável legal, cancela o processo de recebimento do benefício** da bolsa de estudo. Em caso de dúvida, entre em contato com a unidade escolar. - <span style="background-color:red; color: white; padding-left: 10px; padding-right: 10px; border-radius: 25px">**Indeferido**</span> - Informamos que com base na análise do perfil socioeconômico e demais critérios estabelecidos pela entidade, a solicitação de Bolsa de Estudo para o ano letivo de {**ano_do_processo**} foi indeferida [motivo_do_indeferimento]. Em caso de dúvida, entre em contato com a unidade escolar. Em caso de dúvida, entre em contato com a unidade escolar.