How to Build a Jumpseller App
Learn how to build a Jumpseller App using our API to extend your store with custom integrations and functionality.
OAuth 2 es el protocolo estandar de la industria para autorizacion. En general, OAuth proporciona a los clientes un acceso delegado y seguro a los recursos del servidor en nombre del propietario del recurso. Especifica un proceso para que los propietarios de recursos autoricen el acceso de terceros a sus recursos del servidor sin compartir sus credenciales. Disenado especificamente para funcionar con HTTP, OAuth esencialmente permite que los tokens de acceso sean emitidos a clientes de terceros por un servidor de autorizacion, con la aprobacion del propietario del recurso. El tercero luego usa el token de acceso para acceder a los recursos protegidos alojados por el servidor de recursos.
En Jumpseller, este flujo de autorizacion genera un access token que puedes usar para solicitar informacion de la API de Jumpseller.
El servicio OAuth 2 de Jumpseller soporta el flujo de Authorization Code, es decir, usa tu client id para solicitar un codigo y luego intercambiar este codigo por un access token y un refresh token. Por defecto, el access token expira en 1 hora, pero puedes obtener uno nuevo con el refresh token.
El access token es usado por el cliente para acceder a la API de Jumpseller.
La idea de los refresh tokens es que si un access token es comprometido, como tiene una vida corta, el atacante tiene una ventana limitada para abusar de el.
Los refresh tokens, si son comprometidos, son inutiles porque el atacante requiere el client id y el secret ademas del refresh token para obtener un access token.
Entre los diferentes flujos soportados por OAuth 2, el Authorization Code Flow es el utilizado por Jumpseller. La mayoria de los lenguajes de programacion ya proporcionan bibliotecas que abstraen el flujo OAuth 2 mostrado a continuacion y pueden facilitar tu trabajo.

Estos son los pasos del flujo de authorization code:
Comencemos a entender cada uno de ellos.
Este paso comienza con la aplicacion solicitando autorizacion al servicio OAuth 2 de Jumpseller:
GET https://accounts.jumpseller.com/oauth/authorize
Esta solicitud debe incluir los siguientes parametros en el query string:
| Query Parameter | Descripcion/Valor |
|---|---|
| client_id | Requerido. El client ID de tu aplicacion registrada. |
| redirect_uri | Requerido. La URI a la que se redirige despues de que el usuario otorga o deniega la autorizacion. |
| response_type | Requerido. Configuralo como code. |
| scope | Requerido. La lista de scopes separados por espacios necesarios para tu aplicacion. Revisa la lista de scopes. |
Una solicitud tipica se ve asi:
GET https://accounts.jumpseller.com/oauth/authorize?client_id=e27af9be9e7343dc29095d292d7a1103383a5d010c8912783e0fa54f993ca751&redirect_uri=http%3A%2F%2Flocalhost%3A8000%2Fcallback&response_type=code&scope=read_orders%20write_products%20read_customers%20write_promotions

Despues de solicitar el endpoint /oauth/authorize, el servicio OAuth 2 de Jumpseller le presentara al usuario los detalles sobre los scopes para los cuales se esta solicitando acceso. Luego se le pide al usuario que autorice el acceso a los conjuntos de datos definidos en los scopes.
Sin importar si el usuario autoriza o deniega, el servicio OAuth 2 de Jumpseller redirige de vuelta a la redirect_uri informada. Desde nuestro ejemplo en el paso 1, esta direccion es http://localhost:8000/callback.
Si el usuario autoriza la solicitud, el query string de la respuesta contendra el parametro code. El parametro code es un codigo de autorizacion que puede usarse para intercambiarlo por un access token y un refresh token. Por ejemplo:
GET http://localhost:8000/callback?code=f04bb200f5779644a65e0a174f49776004bc3de060a96f961f72c5835533d006
Cuando tengas el codigo de autorizacion, necesitaras hacer una solicitud POST e intercambiarlo por un access token. Esta solicitud POST se hace al endpoint:
POST https://accounts.jumpseller.com/oauth/token
El cuerpo de esta solicitud POST debe tener los siguientes parametros:
| Query Parameter | Descripcion/Valor |
|---|---|
| client_id | Requerido. Este es el client id de tu aplicacion OAuth 2. |
| client_secret | Requerido. Este es el client secret de tu aplicacion OAuth 2. |
| grant_type | Requerido. Este campo debe contener el valor authorization_code. |
| code | Requerido. El codigo de autorizacion retornado de la solicitud al endpoint /authorize. |
| redirect_uri | Requerido. Esto se usa solo para validacion y debe ser EXACTAMENTE el mismo informado en la solicitud /oauth/authorize. Usa urn:ietf:wg:oauth:2.0:oob para pruebas desde la terminal. |
Este es el formato cURL para solicitar tus tokens usando el codigo:
curl -F grant_type=authorization_code \
-F client_id=6e19c63534c711bd2ec82da2a4bcc80638c79223b6bad064ce81a8987ec49ecb \
-F client_secret=bfab60ff47504b29bf2a29c4a8f30800286a36b590b1c36ce619f5255f43b0ef \
-F code=f04bb200f5779644a65e0a174f49776004bc3de060a96f961f72c5835533d006 \
-F redirect_uri=urn:ietf:wg:oauth:2.0:oob \
-X POST https://accounts.jumpseller.com/oauth/token
En una respuesta exitosa para esta solicitud, el servicio OAuth 2 de Jumpseller retorna un codigo HTTP 200 OK en el encabezado de la respuesta y los siguientes datos JSON:
{
"access_token":"80de978742714f8747036188cf6bab538e976adf72144d545e185ae444bc473d",
"token_type":"bearer",
"expires_in":3600,
"refresh_token":"86454df3e89cd34bd006ac68a76f6f2af884822ed68ce417777a4cffaae64b61",
"created_at":1502473092
}
Entendamos cada clave-valor:
| Clave | Valor |
|---|---|
| access_token | Un access token que puedes usar para solicitar, por ejemplo, la API de Jumpseller. |
| token_type | La forma en que el access token anterior debe ser usado. Siempre es "bearer". |
| expires_in | El periodo de tiempo en segundos hasta que tu access token expire. |
| refresh_token | Este es un token usado para refrescar/reemplazar tu access token cuando esta expirado. |
| created_at | El formato de timestamp de tu |
Recomendamos almacenar estas credenciales en la base de datos de tu aplicacion.
Con este access token puedes comenzar a hacer solicitudes a la API de Jumpseller. Hagamos una simple solicitud GET al endpoint /store/info.json:
curl -H 'Content-Type: application/json' \
-H "Authorization: Bearer 80de978742714f8747036188cf6bab538e976adf72144d545e185ae444bc473d" \
https://api.jumpseller.com/v1/store/info.json
La respuesta de esta solicitud retorna los siguientes datos JSON:
{
"store": {
"name":"Your Store",
"code":"yourstore",
"currency":"EUR",
"country":"PT",
"email":"youremail@example.com"
}
}
Ve a la pagina de la API de Jumpseller para conocer nuestros endpoints.
El access token es valido por solo 1 hora, asi que cuando estes construyendo tu aplicacion web es tu responsabilidad verificar si el access token actual esta expirado y luego usar el refresh token para solicitar un nuevo access token.
OBS: Guarda los access y refresh tokens asi como una fecha de expiracion creada a partir del valor expires_in en tu base de datos. De esta forma puedes verificar si esta expirado y luego refrescarlo cada vez que sea necesario.
Para refrescar tu access token, debes hacer una solicitud POST al siguiente endpoint:
POST https://accounts.jumpseller.com/oauth/token
El cuerpo de esta solicitud POST debe tener los siguientes parametros:
| Parametro | Descripcion/Valor |
|---|---|
| client_id | Requerido. Este es el client id de tu aplicacion OAuth 2. |
| client_secret | Requerido. Este es el client secret de tu aplicacion OAuth 2. |
| grant_type | Requerido. Este campo debe contener el valor refresh_token. |
| refresh_token | Requerido. El refresh token retornado del intercambio del codigo de autorizacion. |
Este es el formato cURL para solicitar tus tokens refrescados:
curl -F grant_type=refresh_token \
-F client_id=6e19c63534c711bd2ec82da2a4bcc80638c79223b6bad064ce81a8987ec49ecb \
-F client_secret=bfab60ff47504b29bf2a29c4a8f30800286a36b590b1c36ce619f5255f43b0ef \
-F refresh_token=86454df3e89cd34bd006ac68a76f6f2af884822ed68ce417777a4cffaae64b61 \
-X POST https://accounts.jumpseller.com/oauth/token
La respuesta tendra la misma estructura JSON del paso 5 pero con tokens completamente nuevos.
Los scopes definen a que datos puede acceder tu aplicacion. Solicita solo los scopes que tu aplicacion necesita. Multiples scopes se separan por espacios en el parametro scope.
| Scope | Descripcion |
|---|---|
read_products | Leer productos, variantes, imagenes, opciones y campos personalizados |
read_orders | Leer ordenes, despachos e historial de ordenes |
read_customers | Leer cuentas de clientes y grupos |
read_categories | Leer categorias de productos |
read_store | Leer informacion y configuracion de la tienda |
read_settings | Leer configuracion de la tienda |
read_shipping_methods | Leer metodos de envio y tarifas |
read_payment_methods | Leer metodos de pago |
read_hooks | Leer webhooks |
read_promotions | Leer promociones y descuentos |
read_taxes | Leer reglas de impuestos |
read_pages | Leer paginas de la tienda |
read_countries | Leer informacion de paises |
read_custom_fields | Leer campos personalizados de productos |
read_checkout_custom_fields | Leer campos adicionales del checkout |
read_customer_categories | Leer categorias de clientes |
read_jsapps | Leer aplicaciones JavaScript |
read_apps | Leer aplicaciones instaladas |
read_fulfillments | Leer informacion de despachos |
read_locations | Leer ubicaciones de bodega |
read_transaction_ledgers | Leer balance de la tienda |
| Scope | Descripcion |
|---|---|
write_products | Crear, actualizar y eliminar productos |
write_orders | Crear, actualizar y reembolsar ordenes |
write_customers | Crear, actualizar y eliminar clientes |
write_categories | Crear, actualizar y eliminar categorias |
write_store | Actualizar configuracion de la tienda |
write_settings | Actualizar configuracion de la tienda |
write_shipping_methods | Crear y actualizar metodos de envio |
write_payment_methods | Crear y actualizar metodos de pago |
write_hooks | Crear, actualizar y eliminar webhooks |
write_promotions | Crear, actualizar y eliminar promociones |
write_taxes | Crear y actualizar reglas de impuestos |
write_pages | Crear, actualizar y eliminar paginas |
write_countries | Actualizar configuracion de paises |
write_custom_fields | Crear y actualizar campos personalizados |
write_checkout_custom_fields | Actualizar campos adicionales del checkout |
write_customer_categories | Crear y actualizar categorias de clientes |
write_jsapps | Crear, actualizar y eliminar aplicaciones JavaScript |
write_fulfillments | Crear y actualizar despachos |
write_locations | Crear y actualizar ubicaciones |
write_store_setup | Crear nuevas tiendas a traves del endpoint de configuracion de tienda |
write_reviews | Administrar resenas de productos |
La especificacion completa de la API incluyendo las definiciones de seguridad OAuth 2.0 esta disponible en:
https://api.jumpseller.com/swagger.json
Ahora que entiendes el flujo de authorization code de OAuth 2, es momento de aprender mas sobre la API de Jumpseller y usarla con tu access token.
Comienza tu prueba gratuita de 7 días. No se requiere tarjeta de crédito.