astroselling / jupiter-sdk
Astroselling´s integration SDK
Requires
- php: ^8.2.0
- guzzlehttp/guzzle: ^7.0
Requires (Dev)
- pestphp/pest: ^3.7
README
PHP package para que los sistemas ERP se puedan integrar a la plataforma de gestión de tiendas online Astroselling - https://astroselling.com/
para instalarlo:
- composer require astroselling/jupiter-sdk
En la página de Astroselling, dentro del módulo “Mi cuenta” -https://nova.astroselling.com/admin/account- el usuario puede generar su propia API Key para acceder a estos servicios.
Por cualquier inconveniente, el equipo de soporte está siempre a las órdenes: soporte@astroselling.com
Caso sea necesario hacer la integración directamente, usando otro lenguaje, esta es la documentación de las API´s:
Astroselling Jupiter - API
A continuación se podrán observar un conjunto de endpoints para poder integrar productos a Astroselling. En particular, se detallará cómo crear, actualizar y eliminar productos, obtener los canales asociados a un usuario y sus productos respectivos y visualizar el estado de la plataforma.
En la página de Astroselling, dentro del módulo "Mi cuenta" -https://nova.astroselling.com/admin/account- el usuario puede generar su propia API Key para acceder a estos servicios.
Por cualquier inconveniente, el equipo de soporte está siempre a las órdenes: soporte@astroselling.com
Indice
- Autenticación
- Create Product
- Delete Product
- Get Channel Products
- Get Channel Products Info
- Get Channels
- Healthcheck
- Update Product
Authentication
Para consumir los endpoints se requiere autenticarse con un usuario de Astroselling. El token se puede obtener desde https://nova.astroselling.com, ingresando con el usuario correspondiente y luego ingresando a la sección "Mi Cuenta". Desde allí se podrá, además, generar un nuevo token, invalidando inmediatamente el token anterior.
Existen dos maneras de enviar el TOKEN para autenticar un request:
Autenticación por QueryString:
**Atención: este método es inseguro ya que el token es enviado en la URL.
En la URL del request, añadir el querystring
&api_token={{api_token}}
Ejemplo:
https://nova.astroselling.com/jupiter/v1/channels?api_token={{api_token}}
Autenticación por Bearer Token:
Agregar un header con el nombre "Authentication" y el valor "Bearer {{api_token}}". Ejemplo:
Ejemplo llamado CURL:
curl --location --request GET 'https://nova.astroselling.com/jupiter/v1/channels' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
Ejemplo en PHP con cliente Guzzle:
$response = $client->request('POST', '/api/user', [
'headers' => [
'Authorization' => 'Bearer '.$token,
'Accept' => 'application/json',
],
]);
1. Create Product
Este endpoint se utiliza para dar de alta un producto en Astroselling. En el body del POST se debe de mandar toda la información del producto.
- Esta información también pueden ser las variaciones.
Endpoint:
Method: POST Type: RAW URL: http://nova.astroselling.com/jupiter/v1/jupiter/v1/channels/{{CHANNEL_ID}}/products
Headers:
Key | Value | Description |
---|---|---|
Content-Type | application/json | |
Accept | application/json |
Body:
{ "id_in_erp": "10200240", "sku": "10200240", "title": "Pantalon J\u00fanior", "description": "Pantalon J\u00c3\u00banior", "currency": "USD", "price": 790, "stock": 120, "variations": [ { "id_in_erp": "10200240 001 06", "stock": 1, "price": 790, "sku": "10200240 001 06", "title": "Pantalon J\u00fanior", "attributes": [ { "id": "attr_id_1", "name": "Color", "value": "Verde" }, { "id": "attr_id_1", "name": "Talle", "value": "M" } ], "images": [ { "path": "http://via.placeholder.com/300/09f/fff.png?text=a" }, { "path": "http://via.placeholder.com/300/09f/fff.png?text=b" }, { "path": "http://via.placeholder.com/300/09f/fff.png?text=c" } ] }, { "id_in_erp": "10200240 002 06", "stock": 0, "price": 790, "sku": "10200240 002 06", "title": "Pantalon J\u00fanior", "attributes": [ { "id": "attr_id_1", "name": "Color", "value": "Verde" }, { "id": "attr_id_1", "name": "Talle", "value": "M" } ], "images": [ { "path": "http://via.placeholder.com/300/09f/fff.png?text=1" }, { "path": "http://via.placeholder.com/300/09f/fff.png?text=2" }, { "path": "http://via.placeholder.com/300/09f/fff.png?text=3" } ] } ], "images": [ { "path": "https://contents.mediadecathlon.com/p1484240/ab565f3675dbdd7e3c486175e2c16583/p1484240.jpg" }, { "path": "https://contents.mediadecathlon.com/p1484210/8ae4fe12797325bc4b98b6af45bc208b/p1484210.jpg" } ] }
2. Delete Product
Este endpoint se utiliza para eliminar un producto de un canal.
Endpoint:
Method: DELETE Type: RAW URL: http://nova.astroselling.com/jupiter/v1/jupiter/v1/channels/{{CHANNEL_ID}}/products/{{ID_IN_ERP}}
Headers:
Key | Value | Description |
---|---|---|
Content-Type | application/json | |
Accept | application/json |
3. Get Channel Products
El endpoint en cuestión retorna todos los artículos relacionados a un canal en particular. En particular, veremos los siguientes datos:
- channel_id
- id_in_erp
- sku
- title
- price
- currency
- stock
- description
- extra_info
- variations
- images
Endpoint:
Method: GET Type: URL: http://nova.astroselling.com/jupiter/v1/jupiter/v1/channels/{{CHANNEL_ID}}/products
Headers:
Key | Value | Description |
---|---|---|
Accept | application/json |
Query params:
Key | Value | Description |
---|---|---|
limit | 20 | |
offset | 0 |
4. Get Channel Products Info
Retorna la información de un canal y producto en particular. Específicamente retorna los siguientes atributos
- channel_id
- id_in_erp
- sku
- title
- price
- currency
- stock
- description
- extra_info
- variations
- images
Endpoint:
Method: GET Type: URL: http://nova.astroselling.com/jupiter/v1/jupiter/v1/channels/{{CHANNEL_ID}}/products/{{ID_IN_ERP}}
Headers:
Key | Value | Description |
---|---|---|
Accept | application/json |
5. Get Channels
Entrega una lista de los Canales (con sus respectivos identificadores) que tiene el usuario. A partir de los IDs de la respuesta se podrán ejecutar los próximos endpoints. En particular, retorna el id del Canal, el nombre interno, el método de sincronización (el cual generalmente es "push") y el tipo de Canal.
Endpoint:
Method: GET Type: URL: http://nova.astroselling.com/jupiter/v1/jupiter/v1/channels
Headers:
Key | Value | Description |
---|---|---|
Accept | application/json |
6. Healthcheck
El endpoint en cuestión permite obtener el estado de la plataforma.
- Si la API está saludable, retorna un HTTP Code 200.
Endpoint:
Method: GET Type: URL: http://nova.astroselling.com/jupiter/v1/jupiter/v1/healthcheck
Headers:
Key | Value | Description |
---|---|---|
Accept | application/json |
7. Update Product
Este endpoint se utiliza para actualizar la información de un artículo de un canal. Se debe pasar únicamente los atributos que se quieran actualizar. Luego de hacer el PUT, se recibirá como retorno toda la información del producto de Astroselling actualizado.
- El atributo imágenes debes ser un arreglo.
Endpoint:
Method: PUT Type: RAW URL: http://nova.astroselling.com/jupiter/v1/jupiter/v1/channels/{{CHANNEL_ID}}/products/{{ID_IN_ERP}}
Headers:
Key | Value | Description |
---|---|---|
Content-Type | application/json | |
Accept | application/json |
Body:
{ "price": 103, "stock": 8, "images": [ "https://contents.mediadecathlon.com/p1484240/ab565f3675dbdd7e3c486175e2c16583/p1484240.jpg" ] }
Available Variables:
Key | Value | Type |
---|---|---|
base_url | http://nova.astroselling.com/jupiter/v1 | |
api_token | XXXnBeVSIFFyldmxphoZTpYxfaMRm8xtUocYGpeiA4ftEKcXeP8aJif9AZZZ | |
channel_id | 9999 |