Solicitações de busca

A ação de busca permite que qualquer endpoint consulte os dados desejados que foram filtrados. O usuário pode optar por manipular a resposta adicionando um ou mais filtros que ajustam a faixa de dados retornados. Não há limite para o número de filtros que podem ser usados em uma requisição de API.

Detalhes de uma solicitação de busca API versão 3

Aqui está um exemplo de solicitação de busca.

Endpoint
Representa o objeto, ou coleção de objetos, da solicitação.

No exemplo acima, o endpoint é source, o que limita o que pode ser feito com a requisição da API a ações especificamente projetadas para manipular objetos de dados do usuário.

Ação
Especifica quais ações tomar para o endpoint especificado.

No exemplo acima, a ação é Buscar. A busca é usada para obter dados de um endpoint que atenda a um conjunto específico de filtros.

Matriz de Filtros
Contém a lista de parâmetros necessários que devem ser atendidos antes que um objeto de dados seja retornado pela solicitação da API. Uma busca pode ter um número infinito de filtros formatados como um array. Um array é definido como um arranjo de objetos ou itens inter-relacionados para realizar uma tarefa específica.
Na API da versão 3, um array é estruturado da seguinte forma: {Valor-chave}.
  • Chave: O atributo de busca deve estar incluído entre aspas duplas (").
  • Valor: A corda ou número a ser correspondido à tecla. Por exemplo: action=search&args=[{"full_name":"Steve Joe"}] só retornaria registros onde "full_name" (Chave) é "Steve Joe" (Valor). Qualquer número de filtros pode ser usado, desde que se encaixem na estrutura Chave:Valor e sejam separados por vírgulas.
Observação

Quando você adiciona valores de filtro à solicitação de busca da API, as strings de texto devem estar dentro das aspas.

A Minitab Connect ação de busca no endpoint da API é limitada a consultas simples. Solicitações de busca composta devem ser feitas contra chaves diferentes. Por exemplo: {"A":"Bob"},{"B":"Test"}. Consultar uma chave duas vezes na mesma solicitação resulta em uma resposta que contém todos os resultados que correspondem apenas à segunda condição. Consultas complexas contra uma única chave são possíveis via o endpoint da interface de origem usando js_filter.

Dados de resposta da API

Cada requisição de API bem-sucedida na versão 3 retorna dados na forma de um objeto JSON. Neste exemplo, vamos focar em uma resposta simples da API.

A solicitação da API versão 3

A solicitação de API que será usada é a 'Request de Exemplo de API' acima.1 A seguir uma análise do exemplo:

https://connect.minitab.com/api/3/User?apikey=45354645654474127781&action=search&args=[{"full_name":"Steve Joe"}]

  • Essa requisição se conecta ao sistema em https://connect.minitab.com/ e especifica que se trata de uma requisição API versão 3 com /api/3.
  • O Endpoint/User é o núcleo das requisições da API e tudo que vem a seguir apontará para ele. Neste exemplo, é solicitado acesso ao endpoint do usuário.
  • Antes de conceder acesso, o sistema deve determinar se a solicitação vem de uma fonte autorizada. A solicitação fornece credenciais para o servidor autenticar ?apikey=4535464564474127781 2
  • Como essa é a primeira variável na URL da solicitação, ela deve ser precedida por um ponto de interrogação (?).
  • Após passar pela autenticação, o sistema passa para a ação. &ação=busca Essa ação configura o sistema para aceitar um array de filtros que determinará os parâmetros de busca.
    Observação

    Essa variável de configuração é separada da chave API por um ampersand (&). Todas as variáveis, exceto a primeira variável, são precedidas por um ampersand.

  • Neste ponto, o array de filtros é lido. &args=[{"full_name":"Steve Joe"}] O array de filtro instrui o sistema a pesquisar nos objetos Userdata e retornar todos os que têm um atributo de full_name igual a "Steve Joe".
  • O sistema retorna o objeto JSON que contém todos os resultados.

O objeto resposta

A resposta recebida de uma solicitação de API é um objeto JSON que contém todos os objetos de dados do usuário com o atributo "fname" e o valor "Steve". Todos os objetos de resposta possuem a mesma estrutura básica e são retornados como uma string formatada em JSON.

A string formatada em JSON

{"data":[{"type":"User","id":"999","attributes":{"user_id":"999","user_guid":"558877tu8822","full_name:"Steve
	 Joe","email":"Steve_Smith@minitab.com","phone":"","user_type_id":"66","cust_id":"1","adobe_key":null,"login":null,"theme":"","last_active":null,"is_active":"1","exceptions":[],"notes":"","two_factor":"0","auth_token":null,"expires":null,"password_history":null,"access_type":"40","notification_preference":"noti","primary_id":"user_id","primary_guid":"user_guid"},"meta":{"valid":true,"getters":{"EXCEPTIONSON":"getExceptionsOn","FULLUSERLIST":"getFullUserList","CUSTOMERUSERLIST":"getCustomerUserList","NOTIFICATIONS":"getNotifications","DBSTATUS":"getDBStatus","DBTABLES":"getDBTables","DBVIEWS":"getDBViews","JOBS":"getJobs","UIREFRESH":"getUIRefresh","USERGUID":"getUserGUID","USERID":"getUserID","NAME":"getName","FULLNAME":"getFullName","FNAME":"getFName","MNAME":"getMName","LNAME":"getLName","EMAIL":"getEmail","PHONE":"getPhone","ADOBEKEY":"getAdobeKey","LOGIN":"getLogin","CUSTID":"getCustId","USERTYPEID":"getUserTypeID","THEME":"getTheme","LASTACTIVE":"getLastActive","ISACTIVE":"getIsActive","EXCEPTIONS":"getExceptions","NOTES":"getNotes","TWOFACTOR":"getTwoFactor","AUTHTOKEN":"getAuthToken","EXPIRES":"getExpires","PASSWORDHISTORY":"getPasswordHistory","CUSTOMERSTATS":"getCustomerStats","RELATIVES":"getRelatives","ACCESSTYPE":"getAccessType","NOTIFICATIONPREFERENCE":"getNotificationPreference","ACTIVEUSERS":"getActiveUsers","CONTYPE":"getConType","ID":"getID","PRIMARYID":"getPrimaryID","GUID":"getGUID","PRIMARYGUID":"getPrimaryGUID","PROPERTIES":"getProperties"},"setters":{"CDBO":"setCDBO","USERGUID":"setUserGUID","FNAME":"setFName","MNAME":"setMName","LNAME":"setLName","EMAIL":"setEmail","PHONE":"setPhone","ADOBEKEY":"setAdobeKey","LOGIN":"setLogin","CUSTID":"setCustID","USERTYPEID":"setUserTypeID","THEME":"setTheme","LASTACTIVE":"setLastActive","ISACTIVE":"setIsActive","PASSWORD":"setPassword","NOTES":"setNotes","TWOFACTOR":"setTwofactor","AUTHTOKEN":"setAuthToken","EXPIRES":"setExpires","PASSWORDHISTORY":"setPasswordHistory","ACCESSTYPE":"setAccessType","NOTIFICATIONPREFERENCE":"setNotificationPreference","ID":"setID","DBO":"setDBO"},"actions":{"load":{"parameters":[{"name":"args"}]},"loadExceptions":{"parameters":[]},"addException":{"parameters":[{"name":"args"}]},"updateException":{"parameters":[{"name":"args"}]},"removeException":{"parameters":[{"name":"args"}]},"clearExceptions":{"parameters":[]},"search":{"parameters":[{"name":"args"}]},"remove":{"parameters":[]},"checkPassword":{"parameters":[{"name":"password"}]},"checkPasswordHistory":{"parameters":[{"name":"password"}]},"runDBSQL":{"parameters":[{"name":"args"}]},"removeUIRefresh":{"parameters":[{"name":"args"}]},"createUIRefresh":{"parameters":[{"name":"args"}]},"systemLog":{"parameters":[{"name":"args"}]},"checkLogIn":{"parameters":[{"name":"args"}]},"logIn":{"parameters":[{"name":"args"}]},"removeUser":{"parameters":[]},"whois":{"parameters":[{"name":"auth_token"}]},"auth":{"parameters":[{"name":"args"}]},"commit":{"parameters":[]},"purge":{"parameters":[{"name":"args"}]},"checkRequirements":{"parameters":[{"name":"password"}]},"checkHistory":{"parameters":[{"name":"password"},{"name":"limt"}]},"grantAccess":{"parameters":[{"name":"args"}]},"removeAccess":{"parameters":[{"name":"args"}]},"notify":{"parameters":[{"name":"args"}]},"sharableList":{"parameters":[]},"slackAccounts":{"parameters":[]},"sendSupportRequest":{"parameters":[{"name":"args"}]},"downloadActiveUsers":{"parameters":[{"name":"args"}]},"message":{"parameters":[]},"beginTransaction":{"parameters":[]},"commitTransaction":{"parameters":[]},"rollbackTransaction":{"parameters":[]},"restrictCustomer":{"parameters":[]},"permissionRequired":{"parameters":[{"name":"args"}]}}}}],"meta":{"data_type":"array"},"self":"https:\/\/connect.minitab.com\/api\/3\/User?apikey=5555888817ab43&action=search&args=[{%22full_name%22:%22Steve
	 Joe%22}]"} 
  

Buscando um GUID específico para endpoint

Este tópico descreve o processo para usar a requisição de busca da API versão 3 para receber o GUID de um endpoint desejado configurando o array de filtros. Também aborda como determinar quais atributos estão disponíveis para filtrar em um determinado endpoint.

Determine em qual endpoint deve ser pesquisado

Cada objeto em Minitab Connect possui um ponto final correspondente que pode ser pesquisado usando um array de filtros. O primeiro passo para identificar um ID específico é determinar qual endpoint deve ser usado na solicitação de busca da API. Mais informações sobre endpoints, assim como uma listagem de todos os endpoints atuais, podem ser encontradas em A Minitab Connect API. Uma vez identificado o endpoint necessário, o próximo passo é solicitar a lista de atributos que podem ser pesquisados.

(Para este artigo, será usado o endpoint 'usuário'.)

Executando a solicitação da API versão 3 e a resposta recebida

Quando sua requisição de API contém todas as informações necessárias, você pode executar a solicitação. Cada Solicitação API da versão 3 bem-sucedida retorna dados na forma de um objeto JSON. Como a requisição não incluiu um ID de endpoint, a resposta JSON conterá todos os dados NULL. No entanto, os dados não são o que importa; Neste exemplo, o nome do atributo antes dos dados é o que estamos procurando. Esses são os atributos do endpoint. Aqui está o resultado do exemplo de Solicitação de API:

{  
   "data":{  
      "type":"User",
      "attributes":{  
         "user_id":null,
         "user_guid":null,
         "full_name":null,
         "email":null,
         "phone":null,
         "user_type_id":null,
         "cust_id":null,
         "adobe_key":null,
         "login":null,
         "theme":null,
         "last_active":null,
         "is_active":null,
         "exceptions":null,
         "notes":null,
         "two_factor":null,
         "auth_token":null,
         "expires":null,
         "password_history":null,
         "access_type":null,
         "notification_preference":"noti",
         "primary_id":"user_id",
         "primary_guid":"user_guid"
      },
      "meta":{  }
   },
   "meta":{  },
   "self":"https:\/\/connect.minitab.com\/api\/3\/User?apikey=411412489453456345645"

Os atributos que podem ser usados para buscar podem ser encontrados dentro do objeto de resposta JSON -> "data" -> "atributos". Neste exemplo, usando o endpoint do usuário, os atributos são os seguintes: user_id, user_guid, full_name, e-mail, telefone, user_type_id, cust_id, adobe_key, login, last_active, is_active, exceções, notas, two_factor, auth_token, expires, password_history, access_type, notification_preference, primary_id, primary_guid. Qualquer um ou todos esses atributos podem ser usados em um array de filtro para focar em um ID específico de endpoint.

A ação de busca e a criação de um array de filtros

Agora adquirimos todas as informações necessárias para criar nossa ação de busca, incluindo o array de filtro que contém todos os atributos e valores que representam o ID de endpoint desejado. Essa ação, &action=search, configura o sistema para aceitar um array de filtro que determinará os parâmetros de busca. Note que a ação é precedida por um e amperand (&). Lembre-se de que todas as variáveis, exceto a primeira, são precedidas por um e ampersand.

Neste ponto, você pode criar o array de filtros. Dependendo das informações disponíveis, usaremos diferentes atributos para construir nosso array de filtros. Vamos supor que sabemos as seguintes informações:

  • O nome do usuário: Barry Joe
  • O Usuário está ativo
Múltiplos condicionais estão disponíveis para facilitar a busca. A seguir está a lista de condicionais que podem ser usados para fazer comparações:
  • EQ (igual a)
  • ne (não é igual a)
  • BW (começa com)
  • Ew (termina com)
  • cn (contém)
  • BN (não começa)
  • en (não termina com)
  • NC (não contém)
  • em (em [lista separada por vírgula])
  • Ni (não está na [lista separada por vírgula])
  • nu (NULL)
  • nn (Não NULL)
  • É (menos que)
  • le (menor ou igual a)
  • gt (maior que)
  • ge (maior ou igual a)

Com essas informações e a lista de atributos disponíveis para o endpoint do usuário, determinamos que precisamos dos atributos full_name, cust_id e is_active. O array de filtros é o seguinte:

&args=[{"full_name":["eq","Barry Joe"],"is_active":["eq","1"]}]

A solicitação completa de busca da versão 3 da API é a seguinte:

https://connect.minitab.com/api/3/User?apikey=411412489453456345645&action=search&args=[{"full_name":["eq","Barry Joe"],"is_active":["eq","1"]}]

Quando executamos essa solicitação, recebemos um único resultado:

{  
   "data":{  
      "type":"User",
      "attributes":{  
         "user_id":17,
         "user_guid":"75647362",
         "full_name":"Barry Joe",
         "email":"barry.smith@tmmdata.com",
         "phone":"111-555-1312",
         "user_type_id":20,
         "cust_id":"52342321",
         "adobe_key":null,
         "login":null,
         "theme":"3c",
         "last_active":"2017.10.31 09:53:01",
         "is_active":1,
         "exceptions":null,
         "notes":null,
         "two_factor":null,
         "auth_token":null,
         "expires":null,
         "password_history":null,
         "access_type":50,
         "notification_preference":"noti",
         "primary_id":"user_id",
         "primary_guid":"user_guid"
      },
      "meta":{  }
   },
   "meta":{  },
   "self":"https:\/\/connect.minitab.com\/api\/3\/User?apikey=411412489453456345645"

O ID do endpoint é 17. Qualquer Solicitação futura da API versão 3 que afete este Usuário conterá este ID.

1 A solicitação de API de exemplo contém uma chave de API inválida para fins de demonstração e resultará em erro se usada como está. Isso é por questões de segurança. Uma chave de API válida foi substituída para gerar uma resposta válida da API.
2 A chave de API fornecida é apenas para fins de demonstração. Uma chave de API válida deve ser fornecida, caso contrário a Solicitação de API resultará em um erro.