La acción de búsqueda permite consultar cualquier punto final para recibir los datos deseados que han sido filtrados. El usuario puede elegir manipular la respuesta añadiendo uno o más filtros que ajustan el rango de datos devueltos. No hay límite en el número de filtros que se pueden usar en una solicitud de API.

Detalles de una solicitud de búsqueda API versión 3

Aquí tienes un ejemplo de solicitud de búsqueda.

Punto final
Representa el objeto, o la colección de objetos, de la solicitud.

En el ejemplo anterior, el endpoint es source, lo que limita lo que se puede hacer con la petición de la API a acciones diseñadas específicamente para manipular objetos de datos de usuario.

Acción
Especifica qué acciones realizar para el endpoint especificado.

En el ejemplo anterior, la acción es Buscar. La búsqueda se utiliza para obtener datos de un punto final que cumple un conjunto específico de filtros.

Matriz de filtros
Contiene la lista de parámetros requeridos que deben cumplirse antes de que un objeto de datos sea devuelto por la solicitud de la API. Una búsqueda puede tener un número infinito de filtros que están formateados como un array. Un array se define como una disposición de objetos o elementos interrelacionados para realizar una tarea concreta.
En la API versión 3, un array está estructurado de la siguiente manera: {ClaveValor}.
  • Clave: El atributo de búsqueda debe estar incluido entre comillas dobles (").
  • Valor: La cuerda o número que se debe emparejar con la tecla. Por ejemplo: action=search&args=[{"full_name":"Steve Joe"}] solo devolvería registros donde "full_name" (Clave) es "Steve Joe" (Valor). Se pueden usar cualquier número de filtros siempre que encajen en la estructura clave:valor y estén separados por comas.
Nota

Cuando añades valores de filtro a la solicitud de búsqueda de la API, las cadenas de texto deben estar dentro de comillas.

La Minitab Connect acción de búsqueda del endpoint API está limitada a consultas simples. Las solicitudes de búsqueda compuesta deben ser contra diferentes claves. Por ejemplo: {"A":"Bob"},{"B":"Prueba"}. Consultar una clave dos veces en la misma solicitud de búsqueda da como resultado una respuesta que contiene todos los resultados que solo coinciden con la segunda condición. Consultas complejas contra una sola clave son posibles a través del punto final de la interfaz de origen usando js_filter.

Datos de respuesta de la API

Cada solicitud exitosa de la API de la versión 3 devuelve datos en forma de objeto JSON. En este ejemplo, nos centraremos en una respuesta sencilla de la API.

La solicitud de API versión 3

La solicitud de API que se utilizará es la 'Solicitud de ejemplo de API' mencionada arriba.1 A continuación se desglosa el ejemplo:

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

  • Esta solicitud se conecta al sistema en https://connect.minitab.com/ y especifica que se trata de una solicitud API versión 3 con /api/3.
  • El Endpoint/User es el núcleo de las solicitudes de la API y todo lo que sigue apunta a él. En este ejemplo, se solicita acceso al punto final del usuario.
  • Antes de conceder acceso, el sistema debe determinar si la solicitud proviene de una fuente autorizada. La solicitud proporciona credenciales para que el servidor autentique ?apikey=4535464564474127781 2
  • Como esta es la primera variable en la URL de la solicitud, debe ir precedida con un signo de interrogación (?).
  • Tras pasar la autenticación, el sistema pasa a la acción. &action=search Esta acción configura el sistema para aceptar un array de filtros que determinará los parámetros de búsqueda.
    Nota

    Esta variable de configuración está separada de la clave API por un ampersand (&). Todas las variables excepto la primera variable están preempeñadas con un ampersand.

  • En este punto, se lee la matriz de filtros. &args=[{"full_name":"Steve Joe"}] El array de filtros indica al sistema que busque en los objetos Userdata y devuelva todos los que tengan un atributo de full_name igual a "Steve Joe".
  • El sistema devuelve el objeto JSON que contiene todos los resultados.

El objeto respuesta

La respuesta recibida de una solicitud API es un objeto JSON que contiene todos los objetos de datos de usuario con el atributo "fname" y el valor "Steve". Todos los objetos de respuesta tienen la misma estructura básica y se devuelven como una cadena de caracteres con formato JSON.

La cadena formateada en 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}]"} 
  

Búsqueda de un GUID de endpoint específico

Este tema describe el proceso para usar la solicitud de búsqueda de la versión 3 de la API para recibir el GUID de un punto final deseado configurando el array de filtros. También explica cómo determinar qué atributos están disponibles para filtrar en un endpoint dado.

Determinar contra qué punto final debe buscarse

Cada objeto en Minitab Connect tiene un extremo correspondiente que puede ser buscado mediante un array de filtros. El primer paso para identificar un ID específico es determinar qué punto final debe usarse en la solicitud de búsqueda de la API. Se puede encontrar más información sobre los endpoints, así como un listado de todos los endpoints actuales, en La Minitab Connect API. Una vez identificado el punto final requerido, el siguiente paso es solicitar la lista de atributos contra los que se puede buscar.

(Para este artículo, se utilizará el endpoint 'usuario'.)

Ejecutando la solicitud de la API versión 3 y la respuesta recibida

Cuando tu solicitud API contiene toda la información requerida, puedes ejecutar la solicitud. Cada solicitud API exitosa de la versión 3 devuelve datos en forma de objeto JSON. Como la petición no incluía un ID de endpoint, la respuesta JSON contendrá todos los datos NULL. Sin embargo, los datos no son lo importante; En este ejemplo, el nombre del atributo antes de los datos es lo que buscamos. Estos son los atributos del endpoint. Aquí está el resultado de la solicitud de API de ejemplo:

{  
   "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"

Los atributos que se pueden usar para buscar se encuentran dentro del objeto de respuesta JSON -> "data" -> "atributos". En este ejemplo, usando el endpoint de usuario, los atributos son los siguientes: user_id, user_guid, full_name, correo electrónico, teléfono, user_type_id, cust_id, adobe_key, inicio de sesión, last_active, is_active, excepciones, notas, two_factor, auth_token, expires, password_history, access_type, notification_preference, primary_id, primary_guid. Cualquiera o todos estos atributos pueden usarse en un array de filtros para centrarse en un ID de endpoint específico.

La acción de búsqueda y la creación de un array de filtros

Ahora hemos adquirido toda la información necesaria para crear nuestra acción de búsqueda, incluido el array de filtros que contiene todos los atributos y valores que representan el ID de endpoint deseado. Esta acción, &action=search, configura el sistema para aceptar un array de filtros que determinará los parámetros de búsqueda. Ten en cuenta que la acción está precedida por un ampersand (&). Recuerda que todas las variables excepto la primera variable están precedidas con un ampersand.

En este punto, puedes crear el array de filtros. Dependiendo de la información disponible, utilizaremos diferentes atributos para construir nuestro array de filtros. Supongamos que conocemos la siguiente información:

  • Nombre del usuario: Barry Joe
  • El usuario está activo
Hay múltiples condicionales disponibles para facilitar la búsqueda. A continuación se presenta la lista de condicionales que pueden usarse para hacer comparaciones:
  • EQ (igual a)
  • ne (no igual a)
  • BW (comienza con)
  • Ew: (termina con)
  • cn (contiene)
  • BN (no comienza con)
  • en (no termina en)
  • NC (no contiene)
  • en (en [lista separada por comas])
  • ni (no en [lista separada por comas])
  • nu (NULL)
  • nn (No NULL)
  • Lt (menos que)
  • le (menor o igual a)
  • gt (mayor que)
  • ge (mayor o igual a)

Con esta información y la lista de atributos disponibles para el endpoint del usuario, determinamos que necesitamos los atributos full_name, cust_id y is_active. El array de filtros es el siguiente:

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

La solicitud de búsqueda completa de la API versión 3 es la siguiente:

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

Cuando ejecutamos esta petición, recibimos un ú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"

El ID del endpoint es 17. Cualquier futura solicitud de API versión 3 que afecte a este usuario contendrá este ID.

1 La solicitud de ejemplo de API contiene una clave de API inválida para fines de demostración y resultará en un error si se usa tal cual. Esto es por motivos de seguridad. Se sustituyó por una clave de API válida para generar una respuesta válida de la API.
2 La clave API proporcionada es solo para fines de demostración. Se debe proporcionar una clave de API válida o la solicitud de la API dará lugar a un error.