Solved

Integração com API REST


Userlevel 1


Bom dia!


O pipefy oferece a possibilidade de integração com aplicação utilizando um WS REST? Se sim, poderia utilizar todos os verbos ou há alguma restrição e qual seria a documentação para este caso?"

icon

Best answer by ijoire7 10 September 2021, 16:24

View original

10 replies

Userlevel 6
Badge +6

Olá Renata!

 

O Pipefy oferece a possibilidade de integração utilizando a API através de GraphQL.

 

O GraphQL tem um único endpoint e todas as operações são realizadas por meio desse caminho utilizando o verbo POST.

POST https://api.pipefy.com/graphql

 

Para obter dados, você faz uma query. Para modificar os dados, você faz uma mutation

 

Segue abaixo uma query simples em cURL:

curl --request POST \
--url https://api.pipefy.com/graphql \
--header 'authorization: Bearer YOUR_TOKEN' \
--header 'content-type: application/json' \
--data '{"query":"{ me { name } }"}'

 

Segue abaixo o link para a documentação de nossa API:

 

https://developers.pipefy.com/reference

 

 

Caso queira aprender mais sobre GraphQL, estes links abaixo pode te ajudar. 

 

https://graphql.org/learn/queries/

 

https://www.howtographql.com/

 

 

Userlevel 1

nos parametros "query":"{ me { name } }" o que deve ser preenchido? 

onde eu encontro qual o id do meu workflow para eu criar o card via rest no pipefy?

 

poderiam me ajudar?

Obrigado

Userlevel 2

nos parametros "query":"{ me { name } }" o que deve ser preenchido? 

onde eu encontro qual o id do meu workflow para eu criar o card via rest no pipefy?

 

poderiam me ajudar?

Obrigado

Conseguiu resolver? Posso te ajudar caso ainda precise. Consegui implementar criação e movimentação de card via API. Deu um trabalhinho, mas ficou bom! =D

Userlevel 2

nos parametros "query":"{ me { name } }" o que deve ser preenchido? 

onde eu encontro qual o id do meu workflow para eu criar o card via rest no pipefy?

 

poderiam me ajudar?

Obrigado

Conseguiu resolver? Posso te ajudar caso ainda precise. Consegui implementar criação e movimentação de card via API. Deu um trabalhinho, mas ficou bom! =D

Olá Leandro. Gostaria de ver como você implementou essa parte de criação de cards e movimentação.

Userlevel 2

nos parametros "query":"{ me { name } }" o que deve ser preenchido? 

onde eu encontro qual o id do meu workflow para eu criar o card via rest no pipefy?

 

poderiam me ajudar?

Obrigado

Conseguiu resolver? Posso te ajudar caso ainda precise. Consegui implementar criação e movimentação de card via API. Deu um trabalhinho, mas ficou bom! =D

Olá Leandro. Gostaria de ver como você implementou essa parte de criação de cards e movimentação.

me chama no leandrohesi@gmail.com e eu te explico

Userlevel 2

Olá, Leandro. Tudo bem. Eu te enviei um e-mail no leandrohesi@gmail.com, mas provavelmente você não conseguiu ver ainda ou não teve tempo de responder.

Quando puder ter um tempinho aí, gostaria de ver essa implementação das chamadas dos serviços para a criação de cards e movimentações no pipefy.

Desde já agradeço.

Userlevel 2

Bom dia, minha dúvida também é essa: "query":"{ me { name } }"  o que colocar? 

O pessoal que está respondendo aí já deveria sanar essa dúvida por aqui mesmo para não ficar a todo momento respondendo a mesma pergunta de um a um. kkk

Userlevel 2

Olá, Leandro. Tudo bem. Eu te enviei um e-mail no leandrohesi@gmail.com, mas provavelmente você não conseguiu ver ainda ou não teve tempo de responder.

Quando puder ter um tempinho aí, gostaria de ver essa implementação das chamadas dos serviços para a criação de cards e movimentações no pipefy.

Desde já agradeço.

Olá, se tiver esta implementação e puder me passar agradeço demais! Preciso disso mesmo que você solicitou também. :slight_smile:

Userlevel 2

Consegui aqui e espero poder ajudar:

 

{ me { name } } é o que você quer fazer de busca, por exemplo: :point_down:

{
allCards(pipeId: 301742761){
edges{
node{
id
}
}
}
}


Aí ele buscará todos os cards do pipe com este pipeId. Isso que será adicionado no { me { name } }.

 

 

***********************

 

 

No Authorization deve ser incluído o nome Bearer antes do seu Token. Exemplo :point_down:

 
 

 

***********************

 

 

No Content-type o tipo de conteúdo que você quer gerar. Eu por exemplo utilizei o JSON. Exemplo :point_down:

 

 

 

***********************

 

 

Resultado JSON (ids dos cards do meu pipe escolhido. No caso só tinha um card criado) :point_down: 

{
  "data": {
    "allCards": {
      "edges": [
        {
          "node": {
            "id": "445472542"
          }
        }
      ]
    }
  }

 

Resultado em Node.js :point_down:

 

const sdk = require('api')('@pipefy-developers/v1.0#1mld74kq6v5yiu');

sdk['graphql-endpoint']({
query: '{allCards(pipeId: 301742761){edges{node{id}}}}'
}, {
Authorization: 'Bearer dasd32422iou42i3dasasdascsc'
})
.then(res => console.log(res))
.catch(err => console.error(err));

 

 

 

LINK da página para criar o exemplo: https://developers.pipefy.com/reference/graphql-endpoint

Userlevel 2

Olá pessoal,

Estou com um problema ao consumir a api usando o exemplo em nodejs.

Tenho o seguinte retorno:

 


{
> '0': {
> instancePath: '/paths',
> schemaPath: '#/additionalProperties',
> keyword: 'additionalProperties',
> params: { additionalProperty: '' },
> message: 'must NOT have additional properties',
> isIdentifierLocation: true
> },
> stack: 'SyntaxError: OpenAPI schema validation failed.\n' +
> '\n' +
> 'ADDITIONAL PROPERTY must NOT have additional properties\n' +
> '\n' +
> ' 24 | ],\n' +
> ' 25 | "paths": {\n' +
> '> 26 | "": {\n' +
> ' | ^^ is not expected to be here!\n' +
> ' 27 | "post": {\n' +
> ' 28 | "summary": "Example",\n' +
> ' 29 | "description": "",\n' +
>
> message: 'OpenAPI schema validation failed.\n' +
> '\n' +
> 'ADDITIONAL PROPERTY must NOT have additional properties\n' +
> '\n' +
> ' 24 | ],\n' +
> ' 25 | "paths": {\n' +
> '> 26 | "": {\n' +
> ' | ^^ is not expected to be here!\n' +
> ' 27 | "post": {\n' +
> ' 28 | "summary": "Example",\n' +
> ' 29 | "description": "",',
> length: 1,
> concat: [Function: concat],
> copyWithin: [Function: copyWithin],
> fill: [Function: fill],
> find: [Function: find],
> findIndex: [Function: findIndex],
> lastIndexOf: [Function: lastIndexOf],
> pop: [Function: pop],
> push: [Function: push],
> reverse: [Function: reverse],
> shift: [Function: shift],
> unshift: [Function: unshift],
> slice: [Function: slice],
> sort: [Function: sort],
> splice: [Function: splice],
> includes: [Function: includes],
> indexOf: [Function: indexOf],
> join: [Function: join],
> keys: [Function: keys],
> entries: [Function: entries],
> values: [Function: values],
> forEach: [Function: forEach],
> filter: [Function: filter],
> flat: [Function: flat],
> flatMap: [Function: flatMap],
> map: [Function: map],
> every: [Function: every],
> some: [Function: some],
> reduce: [Function: reduce],
> reduceRight: [Function: reduceRight],
> at: [Function: at],
> toJSON: [Function: toJSON],
> details: [
> {
> instancePath: '/paths',
> schemaPath: '#/additionalProperties',
> keyword: 'additionalProperties',
> params: [Object],
> message: 'must NOT have additional properties',
> isIdentifierLocation: true
> }
> ],
> name: 'SyntaxError',
> toString: [Function: toString],
> [Symbol(Symbol.iterator)]: [Function: values],
> [Symbol(Symbol.unscopables)]: [Object: null prototype] {
> copyWithin: true,
> entries: true,
> fill: true,
> find: true,
> findIndex: true,
> flat: true,
> flatMap: true,
> includes: true,
> keys: true,
> values: true,
> at: true
> }
> }

 

Código usado:

sdk['graphql-endpoint']({  query: '{allCards(pipeId: 302194528){edges{node{id}}}}'}, {  Authorization: 'Bearer *token*'})  .then(res => console.log(res))  .catch(err => console.error(err))

Alguma ideia, ou sugestão de algum caminho?
Obrigado

Reply