SlideShare uma empresa Scribd logo
1 de 42
JOÃO GALDINO M. DE SOUZA | SENIOR PRINCIPAL | INFOSYS CONSULTING
Explorando a API Rest
Jira Cloud
Agenda
Motivação
Por onde começo?
Autenticação
Algumas chamadas interessantes
Exemplo de uso
Introdução
João Galdino M. de Souza
Infosys Consulting
Senior Principal
Experiência como Jira Admin e uso de
REST API no Jira software, Jira
Service Desk e Apps em versão
Server (Saraiva) e Jira Service Desk
em versão cloud (Infosys)
Essa apresentação não é
exaustiva sobre REST API e
expõe algumas lições que
aprendi utilizando esta
interface
Motivação
Usar API Rest, por quê?
Por que usar REST API?
Adicione seu motivo
pessoal aqui
Curiosidade Nerd
(como matar o tédio)
“Preguiça” de
executar tarefas
manualmente
Interagir de forma sistemática com
o Jira
Automatizar tarefas repetitivas
Integrações entre instâncias
diferentes de Jira com controle
mais granular
Economia em relação aos APPs
No Jira Cloud não há acesso ao file
system ou a Base de Dados
Por onde começo?
Escolha suas armas ferramentas
Que cliente utilizar?
Não se esqueça de
Requisitos não
funcionais
Desempenho
Escalabilidade
Robustez
Segurança
Aplicativo (Curl, SOAP UI) ou
programa (Java, C, Go, Java script,
Powershell, Perl, etc)?
Linguagem formal ou script?
Pense na sua plataforma (SO,
ambiente, etc)
Pense em suas competências e
habilidades
Espaço API REST do Jira
Confluence
Cloud
REST API
Jira Cloud
REST API
Jira SD
Cloud
REST API
Jira
Software
Cloud
REST API
Tempo
Timesheet
REST API
Other Apps
Cloud*
Jira Server
REST API
Jira SD
Server
REST API
Jira
Software
Server
REST API
Riada
Insight
REST API
Other Apps
Server*
Outros
produtos
Atlassian
A API REST do Jira – Verifique qual utilizar
Jira Cloud
REST API
Issues
Projects
Users
Groups
Filters
Workflows
Application Roles
Audit Records
Avatars
Dashboards
JQL
Permissions
Tasks
Others
Jira SD Cloud
REST API
Requests
Request types
Customer
Knowledge Base
Service Desk
Jira Software
Cloud REST API
Backlog
Board
Epic
Issue *
Sprint
Deployments
Builds
Feature Flags
Development Information
HTTPS://DEVELOPER.ATLASSIAN.COM/CLOUD/
Documentação
extensa e
completa
Lembre-se de
acessar a versão
que você está
usando
DOCUMENTAÇÃO APPS – GOOGLE “<NOME APP> REST API JIRA”
Nem sempre a
documentação é
boa e completa
Tempo
timesheet API
Autenticação/
Autorização
Como me identificar?
Como me identificar?
O usuário que
será utilizado
para o acesso via
REST API deve
possuir
permissão para
executar as ações
necessárias no
Jira
Connect (para apps)
OAUTH
(para apps que não usam o connect e para
REST)
Basic authentication
Diferente da versão Server, é necessário gerar
um Token para ser utilizado como senha
durante o processo de autenticação
Se estiver usando a versão Server, utilizar o par
usuário e senha normalmente
GERANDO TOKEN PARA USO EM REST API
HTTPS://ID.ATLASSIAN.COM/MANAGE/API-TOKENS
Acessar a URL
acima com o
usuário que fará
os acessos
REST
Este token será
utilizado como a
senha do
usuário em
Basic
Authentication
$cred=get-credential -Message "Enter you
username and password to access Jira Cloud"
$user = $cred.username
$pass =
[Runtime.InteropServices.Marshal]::PtrToString
Auto([Runtime.InteropServices.Marshal]::Secure
StringToBSTR($cred.password))
$pair = "$($user):$($pass)"
$encodedCreds =
[System.Convert]::ToBase64String([System.Text.
Encoding]::ASCII.GetBytes($pair))
$authorization = "Basic $encodedCreds"
Lendo
credencial
de usuário
Lendo usuário
e senha
Montando string
para basic
authentication
Codificando
com BASE64
Powershell
Em uma janela Powershell com o usuário que será utilizado o
programa que fará uso da credencial criar um arquivo que irá
armazenar a credencial criptografada
PS C:> read-host -assecurestring | convertfrom-securestring |
out-file C:cred.txt
No Programa que fará uso da credencial, pode-se ler a credencial
criptografada com o seguinte commando
PS C:> $password = get-content C:cred.txt | convertto-
securestring
Como
armazenar
credenciais
Windows
Armazenar
Credenciais
Windows
Powershell
Powershell
$user = “username”
$pass = get-content C:cred.txt | convertto-
securestring
$pair = "$($user):$($pass)"
$encodedCreds =
[System.Convert]::ToBase64String([System.Text.
Encoding]::ASCII.GetBytes($pair))
$authorization = "Basic $encodedCreds"
Utilizando
credencial
armazenada
Lendo usuário
e senha
Montando string
para basic
authentication
Codificando
com BASE64
Powershell
Criando issues
No Jira Core
Descobrindo os tipos de Issues que podem
ser criados em um projeto
There is
a REST
for that!
Get create issue
metadata
GET /rest/api/3/issue/createmeta
Parametros
ProjectId=1000[,1000]*
ProjectKeys=KEY1[,KEY2]*
Retorno: Json com lista de
Issuetypes
SOAP UI PARA TESTAR AS REQUISIÇÕES EM DESENVOLVIMENTO
Utilize SOAP UI
para obter todos
os IDs e
informações
para gerar as
requisições
necessárias
Ex:
ProjectIds,
UserID,
Issuetypes,
customfields, etc
...
"issuetypes":[
{
"self":
"https://xxx.atlassian.net/rest/api/3/issuety
pe/10500",
"id": "10500",
"description": "Descrição do Issuetype",
"iconUrl": "https://xxx.atlassian.net/...",
"name": "Investigation",
"subtask": false
},
...
Retorno
Precisamos do
id do issue type
{
"fields": {
"project": { "id": "1000“ },
"summary": "REST API Example Task 1",
"issuetype": { "id": “10500“ },
"assignee": { “id": “99:01902...” },
"reporter": { “id": "99:01902..." },
"priority": { "id": "1" },
"description": "This is an example
task created through the REST API."
}
}
Criando
Issue
POST
/rest/api/3/issue
JSON no corpo da
requisição
Após GPDR é
necessário usar id do
usuário e não
username
{
"id": "10000",
"key": "TST-24",
"self":
"http://xxx.atlassian.net/rest/api/3/issue/10
000",
"transition": {
"status": 200,
"errorCollection": {
"errorMessages": [],
"errors": {}
}
}
}
Retorno
JSON com Issue
criada
Sempre
verifique os
status e
mensagens de
erros
Adicionando
comentários em uma
issue
{
"visibility": {
"type": "role",
"value": "Administrators"
},
"body": {
"type": "doc",
"version": 1,
"content": [
{
"type": "paragraph",
"content": [
{
"text": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque eget
venenatis elit. Duis eu justo eget augue iaculis fermentum. Sed semper quam laoreet nisi egestas
at posuere augue semper.",
"type": "text"
}
]
}
]
}
Incluindo
comentários
POST /rest/api/3/issue/<IssueKey>/comment
Parâmetros em
JSON no corpo
da requisição
Transições
Como executar transições com REST API
{ "expand": "transitions",
"transitions": [
{
"id": "111",
"name": "Finish coding",
"to": {
"self": "https://xxx.atlassian.net/rest/api/3/status/12019",
"description": "",
"name": "Ready for Review",
"id": "12019",
"statusCategory": {
"self": "https://xxx.atlassian.net/rest/api/3/statuscategory/4",
"id": 4,
"key": "indeterminate",
"colorName": "yellow",
"name": "In Progress"
}
},
"hasScreen": true,
"isGlobal": false,
"isInitial": false,
"isConditional": true
Pesquisando
transições
disponíveis
GET
/rest/api/3/issue/
{issueIdOrKey}/t
ransitions
GET
/rest/api/3/issue/
TST-
24/transitions
RETORNO >
{
"transition“: {
"id": "111",
}
}
Pode ser necessário incluir outros
campos na transição, de acordo com a
configuração do workflow no Jira
Executando
transição
POST
/rest/api/3/issue/
{issueIdOrKey}/t
ransitions
POST
/rest/api/3/issue/
TST-
24/transitions
Parâmetros no
JSON
Pesquisando Issues
Usando JQL
{
"expand": [ "names", "schema","operations"
],
"jql": "project = TST",
"maxResults": 15,
"fieldsByKeys": false,
"fields": [
"summary",
"status",
"assignee"
],
"startAt": 0
}
Pesquisando
issues com
JQL
POST
/rest/api/3/search
Parâmetros de
busca no corpo
da requisição
Paginação com
campos StartAt e
maxResults
Exemplo
Colocando algumas chamadas para trabalhar para mim...
Fazer backup de todos os issues de um
projeto incluindo os anexos
A opção de compartilhar o resultado de um filtro em DOC
exporta todo o conteúdo das issues, porém não exporta os
anexos.
Opções:
1) Adquirir um APP que permita exportar os anexos
2) Desenvolver um script que use API REST do Jira para
exportar os anexos
3) Entrar em cada um dos issues (413 no total) e fazer o
download de todos os anexos (estimativa de ~8 horas)
APP suportado na
versão do Jira?
(somente 4 de 10 para
Cloud)
APP faz a função
desejada? Os apps
pesquisados não fazia
o download e sim
colocavam links para
download em um PDF
Escolhida Opção 2
Construir um programa para
exportar todos os anexos
via REST API
JQL SEARCH
Última
página?
Não
FIM
GET ISSUE
ATTACHMENT
Anexos?
DOWNLOAD
ATTACHMENT
CREATE
FOLDER
Sim
última
issue?
Não
SIM
NÃO
Pesquisar todos os
issues do cliente
usando JQL que
devem ser exportados
(fazer paginações
para obter todos os
issues)
{
"jql": "project = “XX" AND issuetype !=
Monitoramento AND status not in (Cancelado)
ORDER BY component",
"maxResults": 50,
"fieldsByKeys": false,
"fields": [
"summary",
"status",
"assignee"
],
"startAt": 0
}
JSON usado na pesquisa
Paginação de 50 em 50
POST /rest/api/3/search
Retorno é um JSON com
a lista de issues para a
página
Pesquisar todos os
issues do cliente
usando JQL que
devem ser exportados
(fazer paginações
para obter todos os
issues)
Paginação de 50 em 50, o JSON de retorno indica a quantidade
de issues retornado, é esse o valor que precisa ser controlado
para consumir toda o resultado da pesquisa, no caso será
necessário executar 9 buscas para obter todas as issues
{
"id": "43857",
"self": "https://xxx.atlassian.net/rest/api/3/issue/43857",
"key": “<ID>",
"fields": {"attachment": [
{
"self": "https://xxx.atlassian.net/rest/api/3/attachment/45231",
"id": "45231",
"filename": “nome_do_arquivo.pdf",
"author": {…}
"created": "2018-11-13T17:32:57.684-0200",
"size": 44991,
"mimeType": "application/pdf",
"content": "https://xxx.atlassian.net/secure/attachment/45231/nome_do_arquivo
}, …
JSON resultado (resumido para no slide)
GET /rest/api/3/issue/<ID>?fields=attachment
DICA: Fazendo a consulta
com o parâmetro fields é
possível restringir a resposta
para conter apenas o campo
Attachments (economiza banda
e processamento)
Fazer uma consulta REST
solicitando o campo attachment
"content":
"https://xxx.atlassian.net/secure/attachment/45231/nome_do_arquivo.pdf"
"filename": “nome_do_arquivo.pdf"
GET /rest/api/3/attachment/<ID>
Para cada anexo de cada issue,
fazer o download
Utilizando o endereço obtido no campo content de cada um dos attachments e
o nome do arquivo original, pode-se fazer o download com um simples GET
no endereço e renomear o objeto
Script finalizado
~75 linhas em Powershell
2.639 arquivos de 413 issues
+800MB de anexos
Execução em minutos
Lições aprendidas
Entenda e desenhe o
workflow de como
funcionará a interação
com a API Rest do Jira
Cuidado para não
automatizar apenas
uma parte do workflow
Utilize ferramenta como
o SOAP UI para
explorar as chamadas
REST na fase de
desenvolvimento
Cuidado na
Autenticação,
autorização e
permissões. Escolha
bem qual usuário
utilizar
Atenção com novas
versões do Jira,
causam mudanças no
comportamento da API
REST (pouco comum
mas com alto impacto)
Atenção com a escolha
do cliente que irá
consumir a interface
REST
JOÃO GALDINO M. DE SOUZA | SENIOR PRINCIPAL | INFOSYS CONSULTING
Thank you!

Mais conteúdo relacionado

Mais procurados

AWS와 부하테스트의 절묘한 만남 :: 김무현 솔루션즈 아키텍트 :: Gaming on AWS 2016
AWS와 부하테스트의 절묘한 만남 :: 김무현 솔루션즈 아키텍트 :: Gaming on AWS 2016AWS와 부하테스트의 절묘한 만남 :: 김무현 솔루션즈 아키텍트 :: Gaming on AWS 2016
AWS와 부하테스트의 절묘한 만남 :: 김무현 솔루션즈 아키텍트 :: Gaming on AWS 2016Amazon Web Services Korea
 
Microservice With Spring Boot and Spring Cloud
Microservice With Spring Boot and Spring CloudMicroservice With Spring Boot and Spring Cloud
Microservice With Spring Boot and Spring CloudEberhard Wolff
 
[ScrumDay2020] A evolução da responsabilidade em testes
[ScrumDay2020] A evolução da responsabilidade em testes[ScrumDay2020] A evolução da responsabilidade em testes
[ScrumDay2020] A evolução da responsabilidade em testesJúlio de Lima
 
Chicago alm user group tfs version control poster - tfvc and git
Chicago alm user group   tfs version control poster - tfvc and gitChicago alm user group   tfs version control poster - tfvc and git
Chicago alm user group tfs version control poster - tfvc and gitDave Burnison
 
From Java 17 to 21- A Showcase of JDK Security Enhancements
From Java 17 to 21- A Showcase of JDK Security EnhancementsFrom Java 17 to 21- A Showcase of JDK Security Enhancements
From Java 17 to 21- A Showcase of JDK Security EnhancementsAna-Maria Mihalceanu
 
XP - Extreme Programming
XP - Extreme ProgrammingXP - Extreme Programming
XP - Extreme ProgrammingRodrigo Branas
 
Anatomy of a Spring Boot App with Clean Architecture - Spring I/O 2023
Anatomy of a Spring Boot App with Clean Architecture - Spring I/O 2023Anatomy of a Spring Boot App with Clean Architecture - Spring I/O 2023
Anatomy of a Spring Boot App with Clean Architecture - Spring I/O 2023Steve Pember
 
Testing With OutSystems
Testing With OutSystemsTesting With OutSystems
Testing With OutSystemsOutSystems
 
마이크로서비스를 위한 AWS 아키텍처 패턴 및 모범 사례 - AWS Summit Seoul 2017
마이크로서비스를 위한 AWS 아키텍처 패턴 및 모범 사례 - AWS Summit Seoul 2017마이크로서비스를 위한 AWS 아키텍처 패턴 및 모범 사례 - AWS Summit Seoul 2017
마이크로서비스를 위한 AWS 아키텍처 패턴 및 모범 사례 - AWS Summit Seoul 2017Amazon Web Services Korea
 
gRPC vs REST: let the battle begin!
gRPC vs REST: let the battle begin!gRPC vs REST: let the battle begin!
gRPC vs REST: let the battle begin!Alex Borysov
 
Introduction to Git and GitHub Part 1
Introduction to Git and GitHub Part 1Introduction to Git and GitHub Part 1
Introduction to Git and GitHub Part 1Omar Fathy
 
Teste Tradicional e Teste Ágil: de que lado você esta?
Teste Tradicional e Teste Ágil: de que lado você esta?Teste Tradicional e Teste Ágil: de que lado você esta?
Teste Tradicional e Teste Ágil: de que lado você esta?Danilo Sousa
 
A cultura Ágil Spotify: Exemplo de sucesso de Lean startup, Scrum e Kanban
A cultura Ágil Spotify: Exemplo de sucesso de Lean startup, Scrum e KanbanA cultura Ágil Spotify: Exemplo de sucesso de Lean startup, Scrum e Kanban
A cultura Ágil Spotify: Exemplo de sucesso de Lean startup, Scrum e KanbanMarcelo Horacio Fortino
 
Introducing GitLab (September 2018)
Introducing GitLab (September 2018)Introducing GitLab (September 2018)
Introducing GitLab (September 2018)Noa Harel
 
Scrum - Fundamentos, teorias e práticas!
Scrum - Fundamentos, teorias e práticas!Scrum - Fundamentos, teorias e práticas!
Scrum - Fundamentos, teorias e práticas!Annelise Gripp
 

Mais procurados (20)

Scrum
ScrumScrum
Scrum
 
Discovery kanban
Discovery kanbanDiscovery kanban
Discovery kanban
 
AWS와 부하테스트의 절묘한 만남 :: 김무현 솔루션즈 아키텍트 :: Gaming on AWS 2016
AWS와 부하테스트의 절묘한 만남 :: 김무현 솔루션즈 아키텍트 :: Gaming on AWS 2016AWS와 부하테스트의 절묘한 만남 :: 김무현 솔루션즈 아키텍트 :: Gaming on AWS 2016
AWS와 부하테스트의 절묘한 만남 :: 김무현 솔루션즈 아키텍트 :: Gaming on AWS 2016
 
Microservice With Spring Boot and Spring Cloud
Microservice With Spring Boot and Spring CloudMicroservice With Spring Boot and Spring Cloud
Microservice With Spring Boot and Spring Cloud
 
[ScrumDay2020] A evolução da responsabilidade em testes
[ScrumDay2020] A evolução da responsabilidade em testes[ScrumDay2020] A evolução da responsabilidade em testes
[ScrumDay2020] A evolução da responsabilidade em testes
 
Estimativas Ágeis
Estimativas ÁgeisEstimativas Ágeis
Estimativas Ágeis
 
Chicago alm user group tfs version control poster - tfvc and git
Chicago alm user group   tfs version control poster - tfvc and gitChicago alm user group   tfs version control poster - tfvc and git
Chicago alm user group tfs version control poster - tfvc and git
 
From Java 17 to 21- A Showcase of JDK Security Enhancements
From Java 17 to 21- A Showcase of JDK Security EnhancementsFrom Java 17 to 21- A Showcase of JDK Security Enhancements
From Java 17 to 21- A Showcase of JDK Security Enhancements
 
XP - Extreme Programming
XP - Extreme ProgrammingXP - Extreme Programming
XP - Extreme Programming
 
Anatomy of a Spring Boot App with Clean Architecture - Spring I/O 2023
Anatomy of a Spring Boot App with Clean Architecture - Spring I/O 2023Anatomy of a Spring Boot App with Clean Architecture - Spring I/O 2023
Anatomy of a Spring Boot App with Clean Architecture - Spring I/O 2023
 
Testing With OutSystems
Testing With OutSystemsTesting With OutSystems
Testing With OutSystems
 
마이크로서비스를 위한 AWS 아키텍처 패턴 및 모범 사례 - AWS Summit Seoul 2017
마이크로서비스를 위한 AWS 아키텍처 패턴 및 모범 사례 - AWS Summit Seoul 2017마이크로서비스를 위한 AWS 아키텍처 패턴 및 모범 사례 - AWS Summit Seoul 2017
마이크로서비스를 위한 AWS 아키텍처 패턴 및 모범 사례 - AWS Summit Seoul 2017
 
gRPC vs REST: let the battle begin!
gRPC vs REST: let the battle begin!gRPC vs REST: let the battle begin!
gRPC vs REST: let the battle begin!
 
Introduction to Git and GitHub Part 1
Introduction to Git and GitHub Part 1Introduction to Git and GitHub Part 1
Introduction to Git and GitHub Part 1
 
Teste Tradicional e Teste Ágil: de que lado você esta?
Teste Tradicional e Teste Ágil: de que lado você esta?Teste Tradicional e Teste Ágil: de que lado você esta?
Teste Tradicional e Teste Ágil: de que lado você esta?
 
A cultura Ágil Spotify: Exemplo de sucesso de Lean startup, Scrum e Kanban
A cultura Ágil Spotify: Exemplo de sucesso de Lean startup, Scrum e KanbanA cultura Ágil Spotify: Exemplo de sucesso de Lean startup, Scrum e Kanban
A cultura Ágil Spotify: Exemplo de sucesso de Lean startup, Scrum e Kanban
 
Introduction To Git
Introduction To GitIntroduction To Git
Introduction To Git
 
Introducing GitLab (September 2018)
Introducing GitLab (September 2018)Introducing GitLab (September 2018)
Introducing GitLab (September 2018)
 
Scrum - Fundamentos, teorias e práticas!
Scrum - Fundamentos, teorias e práticas!Scrum - Fundamentos, teorias e práticas!
Scrum - Fundamentos, teorias e práticas!
 
O Método Kanban
O Método KanbanO Método Kanban
O Método Kanban
 

Semelhante a Explorando a API Rest Jira Cloud

Tornando as coisas mais simples com Azure Functions e Node.JS
Tornando as coisas mais simples com Azure Functions e Node.JSTornando as coisas mais simples com Azure Functions e Node.JS
Tornando as coisas mais simples com Azure Functions e Node.JSMatheus Donizete
 
Construindo APIs com Amazon API Gateway e AWS Lambda
Construindo APIs com Amazon API Gateway e AWS LambdaConstruindo APIs com Amazon API Gateway e AWS Lambda
Construindo APIs com Amazon API Gateway e AWS LambdaAmazon Web Services LATAM
 
Desenvolvimento Ágil com Grails.
Desenvolvimento Ágil com Grails.Desenvolvimento Ágil com Grails.
Desenvolvimento Ágil com Grails.Alex Guido
 
Construindo APIs com Amazon API Gateway e AWS Lambda
Construindo APIs com Amazon API Gateway e AWS LambdaConstruindo APIs com Amazon API Gateway e AWS Lambda
Construindo APIs com Amazon API Gateway e AWS LambdaAmazon Web Services LATAM
 
Construindo APIs com Amazon API Gateway e AWS Lambda
Construindo APIs com Amazon API Gateway e AWS LambdaConstruindo APIs com Amazon API Gateway e AWS Lambda
Construindo APIs com Amazon API Gateway e AWS LambdaAmazon Web Services LATAM
 
Construindo APIs com Amazon API Gateway e AWS Lambda
Construindo APIs com Amazon API Gateway e AWS LambdaConstruindo APIs com Amazon API Gateway e AWS Lambda
Construindo APIs com Amazon API Gateway e AWS LambdaAmazon Web Services LATAM
 
API's Automidia: Provendo Meios Estruturados de Integração
API's Automidia: Provendo Meios Estruturados de IntegraçãoAPI's Automidia: Provendo Meios Estruturados de Integração
API's Automidia: Provendo Meios Estruturados de IntegraçãoRequestia Software
 
Google Analytics Reporting API: Bebendo água direto da fonte
Google Analytics Reporting API: Bebendo água direto da fonteGoogle Analytics Reporting API: Bebendo água direto da fonte
Google Analytics Reporting API: Bebendo água direto da fonteJohann Vivot
 
Treze ferramentas/frameworks para desenvolvimento Android
Treze ferramentas/frameworks para desenvolvimento AndroidTreze ferramentas/frameworks para desenvolvimento Android
Treze ferramentas/frameworks para desenvolvimento AndroidAdriano Rocha
 
Treze ferramentas/frameworks para desenvolvimento android
Treze ferramentas/frameworks para desenvolvimento androidTreze ferramentas/frameworks para desenvolvimento android
Treze ferramentas/frameworks para desenvolvimento androidRicardo Longa
 
Automação de testes de API utilizando Postman
Automação de testes de API utilizando PostmanAutomação de testes de API utilizando Postman
Automação de testes de API utilizando PostmanLucas Amaral
 
GraphQL na Era das APIs
GraphQL na Era das APIsGraphQL na Era das APIs
GraphQL na Era das APIsDaniel Varanda
 
Minicurso WebAPI .NET CORE - SemanaTI2018 - UNIVEM
Minicurso WebAPI .NET CORE - SemanaTI2018 - UNIVEMMinicurso WebAPI .NET CORE - SemanaTI2018 - UNIVEM
Minicurso WebAPI .NET CORE - SemanaTI2018 - UNIVEMAlisson Solitto
 
PyData - Consumindo e publicando web APIs com Python
PyData - Consumindo e publicando web APIs com PythonPyData - Consumindo e publicando web APIs com Python
PyData - Consumindo e publicando web APIs com PythonBruno Rocha
 

Semelhante a Explorando a API Rest Jira Cloud (20)

Tornando as coisas mais simples com Azure Functions e Node.JS
Tornando as coisas mais simples com Azure Functions e Node.JSTornando as coisas mais simples com Azure Functions e Node.JS
Tornando as coisas mais simples com Azure Functions e Node.JS
 
Construindo APIs com Amazon API Gateway e AWS Lambda
Construindo APIs com Amazon API Gateway e AWS LambdaConstruindo APIs com Amazon API Gateway e AWS Lambda
Construindo APIs com Amazon API Gateway e AWS Lambda
 
Desenvolvimento Ágil com Grails.
Desenvolvimento Ágil com Grails.Desenvolvimento Ágil com Grails.
Desenvolvimento Ágil com Grails.
 
Grails
GrailsGrails
Grails
 
Construindo APIs com Amazon API Gateway e AWS Lambda
Construindo APIs com Amazon API Gateway e AWS LambdaConstruindo APIs com Amazon API Gateway e AWS Lambda
Construindo APIs com Amazon API Gateway e AWS Lambda
 
Construindo APIs com Amazon API Gateway e AWS Lambda
Construindo APIs com Amazon API Gateway e AWS LambdaConstruindo APIs com Amazon API Gateway e AWS Lambda
Construindo APIs com Amazon API Gateway e AWS Lambda
 
Api v3
Api v3Api v3
Api v3
 
Construindo APIs com Amazon API Gateway e AWS Lambda
Construindo APIs com Amazon API Gateway e AWS LambdaConstruindo APIs com Amazon API Gateway e AWS Lambda
Construindo APIs com Amazon API Gateway e AWS Lambda
 
API's Automidia: Provendo Meios Estruturados de Integração
API's Automidia: Provendo Meios Estruturados de IntegraçãoAPI's Automidia: Provendo Meios Estruturados de Integração
API's Automidia: Provendo Meios Estruturados de Integração
 
Google Analytics Reporting API: Bebendo água direto da fonte
Google Analytics Reporting API: Bebendo água direto da fonteGoogle Analytics Reporting API: Bebendo água direto da fonte
Google Analytics Reporting API: Bebendo água direto da fonte
 
PHP no Google AppEngine
PHP no Google AppEnginePHP no Google AppEngine
PHP no Google AppEngine
 
Treze ferramentas/frameworks para desenvolvimento Android
Treze ferramentas/frameworks para desenvolvimento AndroidTreze ferramentas/frameworks para desenvolvimento Android
Treze ferramentas/frameworks para desenvolvimento Android
 
Treze ferramentas/frameworks para desenvolvimento android
Treze ferramentas/frameworks para desenvolvimento androidTreze ferramentas/frameworks para desenvolvimento android
Treze ferramentas/frameworks para desenvolvimento android
 
Automação de testes de API utilizando Postman
Automação de testes de API utilizando PostmanAutomação de testes de API utilizando Postman
Automação de testes de API utilizando Postman
 
GraphQL na Era das APIs
GraphQL na Era das APIsGraphQL na Era das APIs
GraphQL na Era das APIs
 
Infraestrutura como código
Infraestrutura como códigoInfraestrutura como código
Infraestrutura como código
 
Minicurso WebAPI .NET CORE - SemanaTI2018 - UNIVEM
Minicurso WebAPI .NET CORE - SemanaTI2018 - UNIVEMMinicurso WebAPI .NET CORE - SemanaTI2018 - UNIVEM
Minicurso WebAPI .NET CORE - SemanaTI2018 - UNIVEM
 
PyData - Consumindo e publicando web APIs com Python
PyData - Consumindo e publicando web APIs com PythonPyData - Consumindo e publicando web APIs com Python
PyData - Consumindo e publicando web APIs com Python
 
Como fazer boas libs
Como fazer boas libs Como fazer boas libs
Como fazer boas libs
 
Workshop05
Workshop05Workshop05
Workshop05
 

Mais de Joao Galdino Mello de Souza

Enterprise computing for modern business workloads por Lívio Sousa (IBM)
Enterprise computing for modern business workloads por Lívio Sousa (IBM)Enterprise computing for modern business workloads por Lívio Sousa (IBM)
Enterprise computing for modern business workloads por Lívio Sousa (IBM)Joao Galdino Mello de Souza
 
Pré-Anúncio z/OS 2.4 por Alvaro Salla (MAFFEI) e Fernando Ferreira (IBM)
Pré-Anúncio z/OS 2.4 por Alvaro Salla (MAFFEI) e Fernando Ferreira (IBM)Pré-Anúncio z/OS 2.4 por Alvaro Salla (MAFFEI) e Fernando Ferreira (IBM)
Pré-Anúncio z/OS 2.4 por Alvaro Salla (MAFFEI) e Fernando Ferreira (IBM)Joao Galdino Mello de Souza
 
Scaling Multi-cloud with Infrastructure as Code por André Rocha Agostinho (S...
Scaling  Multi-cloud with Infrastructure as Code por André Rocha Agostinho (S...Scaling  Multi-cloud with Infrastructure as Code por André Rocha Agostinho (S...
Scaling Multi-cloud with Infrastructure as Code por André Rocha Agostinho (S...Joao Galdino Mello de Souza
 
Alta Disponibilidade SQL Server por Marcus Vinicius Bittencourt (O Boticário)
Alta Disponibilidade SQL Server por Marcus Vinicius Bittencourt (O Boticário)Alta Disponibilidade SQL Server por Marcus Vinicius Bittencourt (O Boticário)
Alta Disponibilidade SQL Server por Marcus Vinicius Bittencourt (O Boticário)Joao Galdino Mello de Souza
 
Cloud no Banco Votorantim por Marcus Vinícius de Aguiar Magalhaes (Banco Voto...
Cloud no Banco Votorantim por Marcus Vinícius de Aguiar Magalhaes (Banco Voto...Cloud no Banco Votorantim por Marcus Vinícius de Aguiar Magalhaes (Banco Voto...
Cloud no Banco Votorantim por Marcus Vinícius de Aguiar Magalhaes (Banco Voto...Joao Galdino Mello de Souza
 
Descomplicando a Ciência de Dados por Adelson Lovatto (IBM)
Descomplicando a Ciência de Dados por Adelson Lovatto (IBM)Descomplicando a Ciência de Dados por Adelson Lovatto (IBM)
Descomplicando a Ciência de Dados por Adelson Lovatto (IBM)Joao Galdino Mello de Souza
 
Pré-Anúncio z/OS 2.4 por Alvaro Salla (MAFFEI)
Pré-Anúncio z/OS 2.4 por Alvaro Salla (MAFFEI)Pré-Anúncio z/OS 2.4 por Alvaro Salla (MAFFEI)
Pré-Anúncio z/OS 2.4 por Alvaro Salla (MAFFEI)Joao Galdino Mello de Souza
 
Consumo de CPU, Distorções e Redução de custo de SW por Maria Isabel Soutello...
Consumo de CPU, Distorções e Redução de custo de SW por Maria Isabel Soutello...Consumo de CPU, Distorções e Redução de custo de SW por Maria Isabel Soutello...
Consumo de CPU, Distorções e Redução de custo de SW por Maria Isabel Soutello...Joao Galdino Mello de Souza
 
Qualidade no desenvolvimento de Sistemas por Anderson Augustinho (Celepar)
Qualidade no desenvolvimento de Sistemas por Anderson Augustinho (Celepar)Qualidade no desenvolvimento de Sistemas por Anderson Augustinho (Celepar)
Qualidade no desenvolvimento de Sistemas por Anderson Augustinho (Celepar)Joao Galdino Mello de Souza
 
Assets Tokenization: Novas Linhas de negócio por Lívio Sousa (IBM)
Assets Tokenization: Novas Linhas de negócio por Lívio Sousa (IBM)Assets Tokenization: Novas Linhas de negócio por Lívio Sousa (IBM)
Assets Tokenization: Novas Linhas de negócio por Lívio Sousa (IBM)Joao Galdino Mello de Souza
 
Intelligent Edge e Intelligent Cloud por Vivian Heinrichs (Softline)
Intelligent Edge e Intelligent Cloud por Vivian Heinrichs (Softline)Intelligent Edge e Intelligent Cloud por Vivian Heinrichs (Softline)
Intelligent Edge e Intelligent Cloud por Vivian Heinrichs (Softline)Joao Galdino Mello de Souza
 
Evolução da eficiência operacional no mainframe por Emerson Castelano (Eccox)
Evolução da eficiência operacional no mainframe por Emerson Castelano (Eccox)Evolução da eficiência operacional no mainframe por Emerson Castelano (Eccox)
Evolução da eficiência operacional no mainframe por Emerson Castelano (Eccox)Joao Galdino Mello de Souza
 
Gestão de Capacidade, desempenho e custos no ambiente mainframe zOS: Um caso ...
Gestão de Capacidade, desempenho e custos no ambiente mainframe zOS: Um caso ...Gestão de Capacidade, desempenho e custos no ambiente mainframe zOS: Um caso ...
Gestão de Capacidade, desempenho e custos no ambiente mainframe zOS: Um caso ...Joao Galdino Mello de Souza
 
Eletricidade e Eletrônica 1.01 por Luiz Carlos Orsoni (MAFFEI)
Eletricidade e Eletrônica 1.01 por Luiz Carlos Orsoni (MAFFEI)Eletricidade e Eletrônica 1.01 por Luiz Carlos Orsoni (MAFFEI)
Eletricidade e Eletrônica 1.01 por Luiz Carlos Orsoni (MAFFEI)Joao Galdino Mello de Souza
 
Pervasive Encryption por Eugênio Fernandes (IBM)
Pervasive Encryption por Eugênio Fernandes (IBM)Pervasive Encryption por Eugênio Fernandes (IBM)
Pervasive Encryption por Eugênio Fernandes (IBM)Joao Galdino Mello de Souza
 
Minimizar RNI ambiente CICS por Milton Ferraraccio (Eccox Technology)
Minimizar RNI ambiente CICS por Milton Ferraraccio (Eccox Technology)Minimizar RNI ambiente CICS por Milton Ferraraccio (Eccox Technology)
Minimizar RNI ambiente CICS por Milton Ferraraccio (Eccox Technology)Joao Galdino Mello de Souza
 
Scaling Multi-Cloud with Infrastructure as a Code por André Rocha Agostinho (...
Scaling Multi-Cloud with Infrastructure as a Code por André Rocha Agostinho (...Scaling Multi-Cloud with Infrastructure as a Code por André Rocha Agostinho (...
Scaling Multi-Cloud with Infrastructure as a Code por André Rocha Agostinho (...Joao Galdino Mello de Souza
 
Como obter o melhor do Z por Gustavo Fernandes Araujo (Itau Unibanco)
Como obter o melhor do Z por Gustavo Fernandes Araujo (Itau Unibanco)Como obter o melhor do Z por Gustavo Fernandes Araujo (Itau Unibanco)
Como obter o melhor do Z por Gustavo Fernandes Araujo (Itau Unibanco)Joao Galdino Mello de Souza
 
Lei geral de proteção de dados por Kleber Silva e Ricardo Navarro (Pise4)
Lei geral de proteção de dados por Kleber Silva  e Ricardo Navarro (Pise4)Lei geral de proteção de dados por Kleber Silva  e Ricardo Navarro (Pise4)
Lei geral de proteção de dados por Kleber Silva e Ricardo Navarro (Pise4)Joao Galdino Mello de Souza
 
Detalhes internos da z14/Otimização de códigos - por Luiz Carlos Orsoni (MAFFEI)
Detalhes internos da z14/Otimização de códigos - por Luiz Carlos Orsoni (MAFFEI)Detalhes internos da z14/Otimização de códigos - por Luiz Carlos Orsoni (MAFFEI)
Detalhes internos da z14/Otimização de códigos - por Luiz Carlos Orsoni (MAFFEI)Joao Galdino Mello de Souza
 

Mais de Joao Galdino Mello de Souza (20)

Enterprise computing for modern business workloads por Lívio Sousa (IBM)
Enterprise computing for modern business workloads por Lívio Sousa (IBM)Enterprise computing for modern business workloads por Lívio Sousa (IBM)
Enterprise computing for modern business workloads por Lívio Sousa (IBM)
 
Pré-Anúncio z/OS 2.4 por Alvaro Salla (MAFFEI) e Fernando Ferreira (IBM)
Pré-Anúncio z/OS 2.4 por Alvaro Salla (MAFFEI) e Fernando Ferreira (IBM)Pré-Anúncio z/OS 2.4 por Alvaro Salla (MAFFEI) e Fernando Ferreira (IBM)
Pré-Anúncio z/OS 2.4 por Alvaro Salla (MAFFEI) e Fernando Ferreira (IBM)
 
Scaling Multi-cloud with Infrastructure as Code por André Rocha Agostinho (S...
Scaling  Multi-cloud with Infrastructure as Code por André Rocha Agostinho (S...Scaling  Multi-cloud with Infrastructure as Code por André Rocha Agostinho (S...
Scaling Multi-cloud with Infrastructure as Code por André Rocha Agostinho (S...
 
Alta Disponibilidade SQL Server por Marcus Vinicius Bittencourt (O Boticário)
Alta Disponibilidade SQL Server por Marcus Vinicius Bittencourt (O Boticário)Alta Disponibilidade SQL Server por Marcus Vinicius Bittencourt (O Boticário)
Alta Disponibilidade SQL Server por Marcus Vinicius Bittencourt (O Boticário)
 
Cloud no Banco Votorantim por Marcus Vinícius de Aguiar Magalhaes (Banco Voto...
Cloud no Banco Votorantim por Marcus Vinícius de Aguiar Magalhaes (Banco Voto...Cloud no Banco Votorantim por Marcus Vinícius de Aguiar Magalhaes (Banco Voto...
Cloud no Banco Votorantim por Marcus Vinícius de Aguiar Magalhaes (Banco Voto...
 
Descomplicando a Ciência de Dados por Adelson Lovatto (IBM)
Descomplicando a Ciência de Dados por Adelson Lovatto (IBM)Descomplicando a Ciência de Dados por Adelson Lovatto (IBM)
Descomplicando a Ciência de Dados por Adelson Lovatto (IBM)
 
Pré-Anúncio z/OS 2.4 por Alvaro Salla (MAFFEI)
Pré-Anúncio z/OS 2.4 por Alvaro Salla (MAFFEI)Pré-Anúncio z/OS 2.4 por Alvaro Salla (MAFFEI)
Pré-Anúncio z/OS 2.4 por Alvaro Salla (MAFFEI)
 
Consumo de CPU, Distorções e Redução de custo de SW por Maria Isabel Soutello...
Consumo de CPU, Distorções e Redução de custo de SW por Maria Isabel Soutello...Consumo de CPU, Distorções e Redução de custo de SW por Maria Isabel Soutello...
Consumo de CPU, Distorções e Redução de custo de SW por Maria Isabel Soutello...
 
Qualidade no desenvolvimento de Sistemas por Anderson Augustinho (Celepar)
Qualidade no desenvolvimento de Sistemas por Anderson Augustinho (Celepar)Qualidade no desenvolvimento de Sistemas por Anderson Augustinho (Celepar)
Qualidade no desenvolvimento de Sistemas por Anderson Augustinho (Celepar)
 
Assets Tokenization: Novas Linhas de negócio por Lívio Sousa (IBM)
Assets Tokenization: Novas Linhas de negócio por Lívio Sousa (IBM)Assets Tokenization: Novas Linhas de negócio por Lívio Sousa (IBM)
Assets Tokenization: Novas Linhas de negócio por Lívio Sousa (IBM)
 
Intelligent Edge e Intelligent Cloud por Vivian Heinrichs (Softline)
Intelligent Edge e Intelligent Cloud por Vivian Heinrichs (Softline)Intelligent Edge e Intelligent Cloud por Vivian Heinrichs (Softline)
Intelligent Edge e Intelligent Cloud por Vivian Heinrichs (Softline)
 
Evolução da eficiência operacional no mainframe por Emerson Castelano (Eccox)
Evolução da eficiência operacional no mainframe por Emerson Castelano (Eccox)Evolução da eficiência operacional no mainframe por Emerson Castelano (Eccox)
Evolução da eficiência operacional no mainframe por Emerson Castelano (Eccox)
 
Gestão de Capacidade, desempenho e custos no ambiente mainframe zOS: Um caso ...
Gestão de Capacidade, desempenho e custos no ambiente mainframe zOS: Um caso ...Gestão de Capacidade, desempenho e custos no ambiente mainframe zOS: Um caso ...
Gestão de Capacidade, desempenho e custos no ambiente mainframe zOS: Um caso ...
 
Eletricidade e Eletrônica 1.01 por Luiz Carlos Orsoni (MAFFEI)
Eletricidade e Eletrônica 1.01 por Luiz Carlos Orsoni (MAFFEI)Eletricidade e Eletrônica 1.01 por Luiz Carlos Orsoni (MAFFEI)
Eletricidade e Eletrônica 1.01 por Luiz Carlos Orsoni (MAFFEI)
 
Pervasive Encryption por Eugênio Fernandes (IBM)
Pervasive Encryption por Eugênio Fernandes (IBM)Pervasive Encryption por Eugênio Fernandes (IBM)
Pervasive Encryption por Eugênio Fernandes (IBM)
 
Minimizar RNI ambiente CICS por Milton Ferraraccio (Eccox Technology)
Minimizar RNI ambiente CICS por Milton Ferraraccio (Eccox Technology)Minimizar RNI ambiente CICS por Milton Ferraraccio (Eccox Technology)
Minimizar RNI ambiente CICS por Milton Ferraraccio (Eccox Technology)
 
Scaling Multi-Cloud with Infrastructure as a Code por André Rocha Agostinho (...
Scaling Multi-Cloud with Infrastructure as a Code por André Rocha Agostinho (...Scaling Multi-Cloud with Infrastructure as a Code por André Rocha Agostinho (...
Scaling Multi-Cloud with Infrastructure as a Code por André Rocha Agostinho (...
 
Como obter o melhor do Z por Gustavo Fernandes Araujo (Itau Unibanco)
Como obter o melhor do Z por Gustavo Fernandes Araujo (Itau Unibanco)Como obter o melhor do Z por Gustavo Fernandes Araujo (Itau Unibanco)
Como obter o melhor do Z por Gustavo Fernandes Araujo (Itau Unibanco)
 
Lei geral de proteção de dados por Kleber Silva e Ricardo Navarro (Pise4)
Lei geral de proteção de dados por Kleber Silva  e Ricardo Navarro (Pise4)Lei geral de proteção de dados por Kleber Silva  e Ricardo Navarro (Pise4)
Lei geral de proteção de dados por Kleber Silva e Ricardo Navarro (Pise4)
 
Detalhes internos da z14/Otimização de códigos - por Luiz Carlos Orsoni (MAFFEI)
Detalhes internos da z14/Otimização de códigos - por Luiz Carlos Orsoni (MAFFEI)Detalhes internos da z14/Otimização de códigos - por Luiz Carlos Orsoni (MAFFEI)
Detalhes internos da z14/Otimização de códigos - por Luiz Carlos Orsoni (MAFFEI)
 

Explorando a API Rest Jira Cloud

  • 1. JOÃO GALDINO M. DE SOUZA | SENIOR PRINCIPAL | INFOSYS CONSULTING Explorando a API Rest Jira Cloud
  • 2. Agenda Motivação Por onde começo? Autenticação Algumas chamadas interessantes Exemplo de uso
  • 3. Introdução João Galdino M. de Souza Infosys Consulting Senior Principal Experiência como Jira Admin e uso de REST API no Jira software, Jira Service Desk e Apps em versão Server (Saraiva) e Jira Service Desk em versão cloud (Infosys)
  • 4. Essa apresentação não é exaustiva sobre REST API e expõe algumas lições que aprendi utilizando esta interface
  • 6. Por que usar REST API? Adicione seu motivo pessoal aqui Curiosidade Nerd (como matar o tédio) “Preguiça” de executar tarefas manualmente Interagir de forma sistemática com o Jira Automatizar tarefas repetitivas Integrações entre instâncias diferentes de Jira com controle mais granular Economia em relação aos APPs No Jira Cloud não há acesso ao file system ou a Base de Dados
  • 7. Por onde começo? Escolha suas armas ferramentas
  • 8. Que cliente utilizar? Não se esqueça de Requisitos não funcionais Desempenho Escalabilidade Robustez Segurança Aplicativo (Curl, SOAP UI) ou programa (Java, C, Go, Java script, Powershell, Perl, etc)? Linguagem formal ou script? Pense na sua plataforma (SO, ambiente, etc) Pense em suas competências e habilidades
  • 9. Espaço API REST do Jira Confluence Cloud REST API Jira Cloud REST API Jira SD Cloud REST API Jira Software Cloud REST API Tempo Timesheet REST API Other Apps Cloud* Jira Server REST API Jira SD Server REST API Jira Software Server REST API Riada Insight REST API Other Apps Server* Outros produtos Atlassian
  • 10. A API REST do Jira – Verifique qual utilizar Jira Cloud REST API Issues Projects Users Groups Filters Workflows Application Roles Audit Records Avatars Dashboards JQL Permissions Tasks Others Jira SD Cloud REST API Requests Request types Customer Knowledge Base Service Desk Jira Software Cloud REST API Backlog Board Epic Issue * Sprint Deployments Builds Feature Flags Development Information
  • 12. DOCUMENTAÇÃO APPS – GOOGLE “<NOME APP> REST API JIRA” Nem sempre a documentação é boa e completa Tempo timesheet API
  • 14. Como me identificar? O usuário que será utilizado para o acesso via REST API deve possuir permissão para executar as ações necessárias no Jira Connect (para apps) OAUTH (para apps que não usam o connect e para REST) Basic authentication Diferente da versão Server, é necessário gerar um Token para ser utilizado como senha durante o processo de autenticação Se estiver usando a versão Server, utilizar o par usuário e senha normalmente
  • 15. GERANDO TOKEN PARA USO EM REST API HTTPS://ID.ATLASSIAN.COM/MANAGE/API-TOKENS Acessar a URL acima com o usuário que fará os acessos REST Este token será utilizado como a senha do usuário em Basic Authentication
  • 16. $cred=get-credential -Message "Enter you username and password to access Jira Cloud" $user = $cred.username $pass = [Runtime.InteropServices.Marshal]::PtrToString Auto([Runtime.InteropServices.Marshal]::Secure StringToBSTR($cred.password)) $pair = "$($user):$($pass)" $encodedCreds = [System.Convert]::ToBase64String([System.Text. Encoding]::ASCII.GetBytes($pair)) $authorization = "Basic $encodedCreds" Lendo credencial de usuário Lendo usuário e senha Montando string para basic authentication Codificando com BASE64 Powershell
  • 17. Em uma janela Powershell com o usuário que será utilizado o programa que fará uso da credencial criar um arquivo que irá armazenar a credencial criptografada PS C:> read-host -assecurestring | convertfrom-securestring | out-file C:cred.txt No Programa que fará uso da credencial, pode-se ler a credencial criptografada com o seguinte commando PS C:> $password = get-content C:cred.txt | convertto- securestring Como armazenar credenciais Windows Armazenar Credenciais Windows Powershell Powershell
  • 18. $user = “username” $pass = get-content C:cred.txt | convertto- securestring $pair = "$($user):$($pass)" $encodedCreds = [System.Convert]::ToBase64String([System.Text. Encoding]::ASCII.GetBytes($pair)) $authorization = "Basic $encodedCreds" Utilizando credencial armazenada Lendo usuário e senha Montando string para basic authentication Codificando com BASE64 Powershell
  • 20. Descobrindo os tipos de Issues que podem ser criados em um projeto There is a REST for that! Get create issue metadata GET /rest/api/3/issue/createmeta Parametros ProjectId=1000[,1000]* ProjectKeys=KEY1[,KEY2]* Retorno: Json com lista de Issuetypes
  • 21. SOAP UI PARA TESTAR AS REQUISIÇÕES EM DESENVOLVIMENTO Utilize SOAP UI para obter todos os IDs e informações para gerar as requisições necessárias Ex: ProjectIds, UserID, Issuetypes, customfields, etc
  • 22. ... "issuetypes":[ { "self": "https://xxx.atlassian.net/rest/api/3/issuety pe/10500", "id": "10500", "description": "Descrição do Issuetype", "iconUrl": "https://xxx.atlassian.net/...", "name": "Investigation", "subtask": false }, ... Retorno Precisamos do id do issue type
  • 23. { "fields": { "project": { "id": "1000“ }, "summary": "REST API Example Task 1", "issuetype": { "id": “10500“ }, "assignee": { “id": “99:01902...” }, "reporter": { “id": "99:01902..." }, "priority": { "id": "1" }, "description": "This is an example task created through the REST API." } } Criando Issue POST /rest/api/3/issue JSON no corpo da requisição Após GPDR é necessário usar id do usuário e não username
  • 24. { "id": "10000", "key": "TST-24", "self": "http://xxx.atlassian.net/rest/api/3/issue/10 000", "transition": { "status": 200, "errorCollection": { "errorMessages": [], "errors": {} } } } Retorno JSON com Issue criada Sempre verifique os status e mensagens de erros
  • 26. { "visibility": { "type": "role", "value": "Administrators" }, "body": { "type": "doc", "version": 1, "content": [ { "type": "paragraph", "content": [ { "text": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque eget venenatis elit. Duis eu justo eget augue iaculis fermentum. Sed semper quam laoreet nisi egestas at posuere augue semper.", "type": "text" } ] } ] } Incluindo comentários POST /rest/api/3/issue/<IssueKey>/comment Parâmetros em JSON no corpo da requisição
  • 28. { "expand": "transitions", "transitions": [ { "id": "111", "name": "Finish coding", "to": { "self": "https://xxx.atlassian.net/rest/api/3/status/12019", "description": "", "name": "Ready for Review", "id": "12019", "statusCategory": { "self": "https://xxx.atlassian.net/rest/api/3/statuscategory/4", "id": 4, "key": "indeterminate", "colorName": "yellow", "name": "In Progress" } }, "hasScreen": true, "isGlobal": false, "isInitial": false, "isConditional": true Pesquisando transições disponíveis GET /rest/api/3/issue/ {issueIdOrKey}/t ransitions GET /rest/api/3/issue/ TST- 24/transitions RETORNO >
  • 29. { "transition“: { "id": "111", } } Pode ser necessário incluir outros campos na transição, de acordo com a configuração do workflow no Jira Executando transição POST /rest/api/3/issue/ {issueIdOrKey}/t ransitions POST /rest/api/3/issue/ TST- 24/transitions Parâmetros no JSON
  • 31. { "expand": [ "names", "schema","operations" ], "jql": "project = TST", "maxResults": 15, "fieldsByKeys": false, "fields": [ "summary", "status", "assignee" ], "startAt": 0 } Pesquisando issues com JQL POST /rest/api/3/search Parâmetros de busca no corpo da requisição Paginação com campos StartAt e maxResults
  • 32. Exemplo Colocando algumas chamadas para trabalhar para mim...
  • 33. Fazer backup de todos os issues de um projeto incluindo os anexos A opção de compartilhar o resultado de um filtro em DOC exporta todo o conteúdo das issues, porém não exporta os anexos. Opções: 1) Adquirir um APP que permita exportar os anexos 2) Desenvolver um script que use API REST do Jira para exportar os anexos 3) Entrar em cada um dos issues (413 no total) e fazer o download de todos os anexos (estimativa de ~8 horas) APP suportado na versão do Jira? (somente 4 de 10 para Cloud) APP faz a função desejada? Os apps pesquisados não fazia o download e sim colocavam links para download em um PDF
  • 34. Escolhida Opção 2 Construir um programa para exportar todos os anexos via REST API
  • 36. Pesquisar todos os issues do cliente usando JQL que devem ser exportados (fazer paginações para obter todos os issues) { "jql": "project = “XX" AND issuetype != Monitoramento AND status not in (Cancelado) ORDER BY component", "maxResults": 50, "fieldsByKeys": false, "fields": [ "summary", "status", "assignee" ], "startAt": 0 } JSON usado na pesquisa Paginação de 50 em 50 POST /rest/api/3/search Retorno é um JSON com a lista de issues para a página
  • 37. Pesquisar todos os issues do cliente usando JQL que devem ser exportados (fazer paginações para obter todos os issues) Paginação de 50 em 50, o JSON de retorno indica a quantidade de issues retornado, é esse o valor que precisa ser controlado para consumir toda o resultado da pesquisa, no caso será necessário executar 9 buscas para obter todas as issues
  • 38. { "id": "43857", "self": "https://xxx.atlassian.net/rest/api/3/issue/43857", "key": “<ID>", "fields": {"attachment": [ { "self": "https://xxx.atlassian.net/rest/api/3/attachment/45231", "id": "45231", "filename": “nome_do_arquivo.pdf", "author": {…} "created": "2018-11-13T17:32:57.684-0200", "size": 44991, "mimeType": "application/pdf", "content": "https://xxx.atlassian.net/secure/attachment/45231/nome_do_arquivo }, … JSON resultado (resumido para no slide) GET /rest/api/3/issue/<ID>?fields=attachment DICA: Fazendo a consulta com o parâmetro fields é possível restringir a resposta para conter apenas o campo Attachments (economiza banda e processamento) Fazer uma consulta REST solicitando o campo attachment
  • 39. "content": "https://xxx.atlassian.net/secure/attachment/45231/nome_do_arquivo.pdf" "filename": “nome_do_arquivo.pdf" GET /rest/api/3/attachment/<ID> Para cada anexo de cada issue, fazer o download Utilizando o endereço obtido no campo content de cada um dos attachments e o nome do arquivo original, pode-se fazer o download com um simples GET no endereço e renomear o objeto
  • 40. Script finalizado ~75 linhas em Powershell 2.639 arquivos de 413 issues +800MB de anexos Execução em minutos
  • 41. Lições aprendidas Entenda e desenhe o workflow de como funcionará a interação com a API Rest do Jira Cuidado para não automatizar apenas uma parte do workflow Utilize ferramenta como o SOAP UI para explorar as chamadas REST na fase de desenvolvimento Cuidado na Autenticação, autorização e permissões. Escolha bem qual usuário utilizar Atenção com novas versões do Jira, causam mudanças no comportamento da API REST (pouco comum mas com alto impacto) Atenção com a escolha do cliente que irá consumir a interface REST
  • 42. JOÃO GALDINO M. DE SOUZA | SENIOR PRINCIPAL | INFOSYS CONSULTING Thank you!