Add Activepieces integration for workflow automation

- Add Activepieces fork with SmoothSchedule custom piece
- Create integrations app with Activepieces service layer
- Add embed token endpoint for iframe integration
- Create Automations page with embedded workflow builder
- Add sidebar visibility fix for embed mode
- Add list inactive customers endpoint to Public API
- Include SmoothSchedule triggers: event created/updated/cancelled
- Include SmoothSchedule actions: create/update/cancel events, list resources/services/customers

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
poduck
2025-12-18 22:59:37 -05:00
parent 9848268d34
commit 3aa7199503
16292 changed files with 1284892 additions and 4708 deletions

View File

@@ -0,0 +1,153 @@
{
"Shopify": "Shopify",
"Ecommerce platform for online stores": "Ecommerce platform for online stores",
"Shop Name": "Shop Name",
"Admin Token": "Admin Token",
"\n**Shop Name**:\n\nYou can find your shop name in the url For example, if the URL is `https://example.myshopify.com/admin`, then your shop name is **example**.\n\n**Admin Token**:\n\n1. Login to your Shopify account\n2. Go to Settings -> Apps\n3. Click on Develop apps\n4. Create an App\n5. Fill the app name\n6. Click on Configure Admin API Scopes (Select the following scopes 'read_orders', 'write_orders', 'write_customers', 'read_customers', 'write_products', 'read_products', 'write_draft_orders', 'read_draft_orders')": "\n**Shop Name**:\n\nYou can find your shop name in the url For example, if the URL is `https://example.myshopify.com/admin`, then your shop name is **example**.\n\n**Admin Token**:\n\n1. Login to your Shopify account\n2. Go to Settings -> Apps\n3. Click on Develop apps\n4. Create an App\n5. Fill the app name\n6. Click on Configure Admin API Scopes (Select the following scopes 'read_orders', 'write_orders', 'write_customers', 'read_customers', 'write_products', 'read_products', 'write_draft_orders', 'read_draft_orders')\n7. Click on Install app\n8. Copy the Admin Access Token\n",
"Adjust Inventory Level": "Adjust Inventory Level",
"Cancel Order": "Cancel Order",
"Close Order": "Close Order",
"Create Collect": "Create Collect",
"Create Customer": "Create Customer",
"Create Draft Order": "Create Draft Order",
"Create Fulfillment Event": "Create Fulfillment Event",
"Create Order": "Create Order",
"Create Product": "Create Product",
"Create Transaction": "Create Transaction",
"Get Asset": "Get Asset",
"Get Customer": "Get Customer",
"Get Customers": "Get Customers",
"Get Customer Orders": "Get Customer Orders",
"Get Fulfillment": "Get Fulfillment",
"Get Fulfillments": "Get Fulfillments",
"Get Locations": "Get Locations",
"Get Product": "Get Product",
"Get Product Variant": "Get Product Variant",
"Get Products": "Get Products",
"Get Transaction": "Get Transaction",
"Get Order Transactions": "Get Order Transactions",
"Update Customer": "Update Customer",
"Update Order": "Update Order",
"Update Product": "Update Product",
"Upload Product Image": "Upload Product Image",
"Custom API Call": "Custom API Call",
"Adjust inventory level of an item at a location.": "Adjust inventory level of an item at a location.",
"Cancel an order.": "Cancel an order.",
"Close an order.": "Close an order.",
"Add a product to a collection.": "Add a product to a collection.",
"Create a new customer.": "Create a new customer.",
"Create a new draft order.": "Create a new draft order.",
"Create a new fulfillment event.": "Create a new fulfillment event.",
"Create a new order.": "Create a new order.",
"Create a new product.": "Create a new product.",
"Create a new transaction.": "Create a new transaction.",
"Get a theme's asset.": "Get a theme's asset.",
"Get an existing customer's information.": "Get an existing customer's information.",
"Get an existing customers.": "Get an existing customers.",
"Get an existing customer's orders.": "Get an existing customer's orders.",
"Get a fulfillment.": "Get a fulfillment.",
"Get an order's fulfillments.": "Get an order's fulfillments.",
"Get locations.": "Get locations.",
"Get existing product.": "Get existing product.",
"Get a product variant.": "Get a product variant.",
"Get existing products by title.": "Get existing products by title.",
"Get an existing transaction's information.": "Get an existing transaction's information.",
"Get an order's transactions.": "Get an order's transactions.",
"Update an existing customer.": "Update an existing customer.",
"Update an existing order.": "Update an existing order.",
"Update an existing product.": "Update an existing product.",
"Upload a new product image.": "Upload a new product image.",
"Make a custom API call to a specific endpoint": "Make a custom API call to a specific endpoint",
"Inventory Item": "Inventory Item",
"Location": "Location",
"Adjustment": "Adjustment",
"Order": "Order",
"Product": "Product",
"Collection": "Collection",
"Email": "Email",
"Verified Email": "Verified Email",
"Send Email Invite": "Send Email Invite",
"First Name": "First Name",
"Last Name": "Last Name",
"Phone Number": "Phone Number",
"Tags": "Tags",
"Product Variant": "Product Variant",
"Title": "Title",
"Quantity": "Quantity",
"Price": "Price",
"Customer": "Customer",
"Fulfillment": "Fulfillment",
"Status": "Status",
"Message": "Message",
"Send Receipt": "Send Receipt",
"Send Fulfillment Receipt": "Send Fulfillment Receipt",
"Description": "Description",
"Product Type": "Product Type",
"Product Image": "Product Image",
"Vendor": "Vendor",
"Type": "Type",
"Currency": "Currency",
"Amount": "Amount",
"Authorization Key": "Authorization Key",
"Parent ID": "Parent ID",
"Source": "Source",
"Test": "Test",
"Asset Key": "Asset Key",
"Theme": "Theme",
"Customer ID": "Customer ID",
"Transaction": "Transaction",
"Note": "Note",
"Image": "Image",
"Position": "Position",
"Method": "Method",
"Headers": "Headers",
"Query Parameters": "Query Parameters",
"Body": "Body",
"No Error on Failure": "No Error on Failure",
"Timeout (in seconds)": "Timeout (in seconds)",
"The ID of the inventory item.": "The ID of the inventory item.",
"The ID of the location.": "The ID of the location.",
"Positive values increase inventory, negative values decrease it.": "Positive values increase inventory, negative values decrease it.",
"The ID of the order.": "The ID of the order.",
"The ID of the product.": "The ID of the product.",
"The ID of the collection.": "The ID of the collection.",
"Whether the customer has verified their email.": "Whether the customer has verified their email.",
"A string of comma-separated tags for filtering and search": "A string of comma-separated tags for filtering and search",
"The ID of the product to create the order with.": "The ID of the product to create the order with.",
"The ID of the variant to create the order with.": "The ID of the variant to create the order with.",
"The ID of the customer to use.": "The ID of the customer to use.",
"The ID of the fulfillment.": "The ID of the fulfillment.",
"Product description (supports HTML)": "Product description (supports HTML)",
"A categorization for the product used for filtering and searching products": "A categorization for the product used for filtering and searching products",
"The public URL or the base64 image to use": "The public URL or the base64 image to use",
"The ID of the order to create a transaction for.": "The ID of the order to create a transaction for.",
"The ID of an associated transaction.": "The ID of an associated transaction.",
"An optional origin of the transaction. Set to external to import a cash transaction for the associated order.": "An optional origin of the transaction. Set to external to import a cash transaction for the associated order.",
"Whether the transaction is a test transaction.": "Whether the transaction is a test transaction.",
"The ID of the theme.": "The ID of the theme.",
"The ID of the product variant.": "The ID of the product variant.",
"The ID of the transaction": "The ID of the transaction",
"1 makes it the main image.": "1 makes it the main image.",
"Authorization headers are injected automatically from your connection.": "Authorization headers are injected automatically from your connection.",
"Active": "Active",
"Draft": "Draft",
"Archived": "Archived",
"GET": "GET",
"POST": "POST",
"PATCH": "PATCH",
"PUT": "PUT",
"DELETE": "DELETE",
"HEAD": "HEAD",
"New Abandoned Checkout": "New Abandoned Checkout",
"New Cancelled Order": "New Cancelled Order",
"New Customer": "New Customer",
"New Order": "New Order",
"Updated Product": "Updated Product",
"New Paid Order": "New Paid Order",
"Triggers when a checkout is abandoned.": "Triggers when a checkout is abandoned.",
"Triggered when order is cancelled": "Triggered when order is cancelled",
"Triggered when a new customer is created": "Triggered when a new customer is created",
"Triggered when a new order is created": "Triggered when a new order is created",
"Triggered when a product is updated.": "Triggered when a product is updated.",
"Triggered when a paid order is created": "Triggered when a paid order is created"
}

View File

@@ -0,0 +1,155 @@
{
"Ecommerce platform for online stores": "E-Commerce-Plattform für Online-Shops",
"Shop Name": "Shopname",
"Admin Token": "Admin-Token",
"\n**Shop Name**:\n\nYou can find your shop name in the url For example, if the URL is `https://example.myshopify.com/admin`, then your shop name is **example**.\n\n**Admin Token**:\n\n1. Login to your Shopify account\n2. Go to Settings -> Apps\n3. Click on Develop apps\n4. Create an App\n5. Fill the app name\n6. Click on Configure Admin API Scopes (Select the following scopes 'read_orders', 'write_orders', 'write_customers', 'read_customers', 'write_products', 'read_products', 'write_draft_orders', 'read_draft_orders')": "\n**Shop-Name**:\n\nSie finden Ihren Shop-Namen in der Url zum Beispiel, wenn die URL `https://example ist. yshopify.com/admin`, dann ist Ihr Shopname **beispiel**.\n\n**Admin-Token**:\n\n1. Melden Sie sich bei Ihrem Shopify Konto\n2. Gehen Sie zu Einstellungen -> Apps\n3. Klicken Sie auf Apps\n4. Erstellen Sie eine App\n5. Geben Sie den App-Namen\nein. Klicken Sie auf Admin API Scopes einrichten (Select the following scopes 'read_orders', 'write_orders', 'write_customers', 'read_customers', 'write_products', 'read_products', 'write_draft_orders', 'read_draft_orders')\n7. Klicken Sie auf App installieren\n8. Den Admin Access Token\n kopieren",
"Adjust Inventory Level": "Inventarlevel anpassen",
"Cancel Order": "Bestellung stornieren",
"Close Order": "Bestellung schließen",
"Create Collect": "Sammlung erstellen",
"Create Customer": "Kunde erstellen",
"Create Draft Order": "Entwurf der Bestellung erstellen",
"Create Fulfillment Event": "Erstelle Fulfillment Event",
"Create Order": "Bestellung erstellen",
"Create Product": "Produkt erstellen",
"Create Transaction": "Transaktion erstellen",
"Get Asset": "Asset holen",
"Get Customer": "Kunde erhalten",
"Get Customers": "Kunden holen",
"Get Customer Orders": "Kundenbestellungen abrufen",
"Get Fulfillment": "Erhalten Sie Erfüllung",
"Get Fulfillments": "Aufträge abrufen",
"Get Locations": "Standorte abrufen",
"Get Product": "Produkt erhalten",
"Get Product Variant": "Produkt-Variante erhalten",
"Get Products": "Produkte erhalten",
"Get Transaction": "Transaktion abrufen",
"Get Order Transactions": "Bestellvorgänge abrufen",
"Update Customer": "Kunde aktualisieren",
"Update Order": "Bestellung aktualisieren",
"Update Product": "Produkt aktualisieren",
"Upload Product Image": "Produktbild hochladen",
"Custom API Call": "Eigener API-Aufruf",
"Adjust inventory level of an item at a location.": "Inventarlevel eines Gegenstands an einem Ort anpassen.",
"Cancel an order.": "Bestellung stornieren.",
"Close an order.": "Bestellung schließen.",
"Add a product to a collection.": "Fügen Sie ein Produkt zu einer Sammlung hinzu.",
"Create a new customer.": "Neuen Kunden anlegen.",
"Create a new draft order.": "Erstellen Sie einen neuen Auftragsentwurf.",
"Create a new fulfillment event.": "Erstelle ein neues Fulfillment-Ereignis.",
"Create a new order.": "Neue Bestellung anlegen.",
"Create a new product.": "Ein neues Produkt anlegen.",
"Create a new transaction.": "Neue Transaktion anlegen.",
"Get a theme's asset.": "Erhalte ein Theme-Asset.",
"Get an existing customer's information.": "Erhalten Sie die Informationen eines bestehenden Kunden.",
"Get an existing customers.": "Erhalten Sie bereits existierende Kunden.",
"Get an existing customer's orders.": "Erhalten Sie eine bestehende Kundenbestellung.",
"Get a fulfillment.": "Erhalte eine Erfüllung.",
"Get an order's fulfillments.": "Erhalten Sie die Erfüllung einer Bestellung.",
"Get locations.": "Standorte abrufen.",
"Get existing product.": "Vorhandenes Produkt holen.",
"Get a product variant.": "Erhalten Sie eine Produktvariante.",
"Get existing products by title.": "Erhalten Sie vorhandene Artikel nach Titel.",
"Get an existing transaction's information.": "Erhalten Sie die Informationen einer existierenden Transaktion.",
"Get an order's transactions.": "Bestellvorgänge abrufen.",
"Update an existing customer.": "Aktualisiere einen bestehenden Kunden.",
"Update an existing order.": "Bestehende Bestellung aktualisieren.",
"Update an existing product.": "Aktualisiere ein existierendes Produkt.",
"Upload a new product image.": "Ein neues Produktbild hochladen.",
"Make a custom API call to a specific endpoint": "Einen benutzerdefinierten API-Aufruf an einen bestimmten Endpunkt machen",
"Inventory Item": "Inventarartikel",
"Location": "Standort",
"Adjustment": "Anpassung",
"Order": "Sortierung",
"Product": "Produkt",
"Collection": "Sammlung",
"Email": "E-Mail",
"Verified Email": "Bestätigte E-Mail",
"Send Email Invite": "E-Mail Einladung senden",
"First Name": "Vorname",
"Last Name": "Nachname",
"Phone Number": "Telefonnummer",
"Tags": "Tags",
"Accepts Marketing ?": "Akzeptiert Marketing ?",
"Product Variant": "Produktvariante",
"Title": "Titel",
"Quantity": "Menge",
"Price": "Preis",
"Customer": "Kunde",
"Fulfillment": "Erfüllung",
"Status": "Status",
"Message": "Nachricht",
"Send Receipt": "Quittung senden",
"Send Fulfillment Receipt": "Auftragsbestätigung senden",
"Description": "Beschreibung",
"Product Type": "Produkttyp",
"Product Image": "Produktbild",
"Vendor": "Lieferant",
"Type": "Typ",
"Currency": "Währung",
"Amount": "Betrag",
"Authorization Key": "Autorisierungsschlüssel",
"Parent ID": "Eltern-ID",
"Source": "Quelle",
"Test": "Testen",
"Asset Key": "Asset Key",
"Theme": "Thema",
"Customer ID": "Kunden-ID",
"Transaction": "Transaktion",
"Note": "Notiz",
"Image": "Bild",
"Position": "Position",
"Method": "Methode",
"Headers": "Kopfzeilen",
"Query Parameters": "Abfrageparameter",
"Body": "Körper",
"Response is Binary ?": "Antwort ist binär?",
"No Error on Failure": "Kein Fehler bei Fehler",
"Timeout (in seconds)": "Timeout (in Sekunden)",
"The ID of the inventory item.": "Die ID des Inventars.",
"The ID of the location.": "Die ID des Ortes.",
"Positive values increase inventory, negative values decrease it.": "Positive Werte erhöhen das Inventar, negative Werte verringern es.",
"The ID of the order.": "Die ID der Bestellung.",
"The ID of the product.": "Die ID des Produktes.",
"The ID of the collection.": "Die ID der Sammlung.",
"Whether the customer has verified their email.": "Ob der Kunde seine E-Mail verifiziert hat.",
"A string of comma-separated tags for filtering and search": "Eine Zeichenkette kommaseparierter Tags zum Filtern und Suchen",
"The ID of the product to create the order with.": "Die ID des Produkts, mit dem die Bestellung erstellt werden soll.",
"The ID of the variant to create the order with.": "Die ID der Variante, mit der die Bestellung erstellt werden soll.",
"The ID of the customer to use.": "Die ID des zu verwendenden Kunden.",
"The ID of the fulfillment.": "Die ID der Erfüllung.",
"Product description (supports HTML)": "Produktbeschreibung (unterstützt HTML)",
"A categorization for the product used for filtering and searching products": "Eine Kategorisierung für das Produkt zum Filtern und Suchen von Produkten",
"The public URL or the base64 image to use": "Die öffentliche URL oder das Base64-Bild",
"The ID of the order to create a transaction for.": "Die ID der Bestellung, für die eine Transaktion erstellt werden soll.",
"The ID of an associated transaction.": "Die ID einer zugehörigen Transaktion.",
"An optional origin of the transaction. Set to external to import a cash transaction for the associated order.": "Eine optionale Herkunft der Transaktion. Extern einstellen, um eine Bartransaktion für die zugehörige Bestellung zu importieren.",
"Whether the transaction is a test transaction.": "Ob die Transaktion eine Testtransaktion ist.",
"The ID of the theme.": "Die ID des Themes.",
"The ID of the product variant.": "Die ID der Produktvariante.",
"The ID of the transaction": "Die ID der Transaktion",
"1 makes it the main image.": "1 macht es das Hauptbild.",
"Authorization headers are injected automatically from your connection.": "Autorisierungs-Header werden automatisch von Ihrer Verbindung injiziert.",
"Enable for files like PDFs, images, etc..": "Aktivieren für Dateien wie PDFs, Bilder, etc..",
"Active": "Aktiv",
"Draft": "Entwurf",
"Archived": "Archiviert",
"GET": "ERHALTEN",
"POST": "POST",
"PATCH": "PATCH",
"PUT": "PUT",
"DELETE": "LÖSCHEN",
"HEAD": "HEAD",
"New Abandoned Checkout": "Neuer Verlassener Checkout",
"New Cancelled Order": "Neue Bestellung storniert",
"New Customer": "Neuer Kunde",
"New Order": "Neue Bestellung",
"Updated Product": "Aktualisiertes Produkt",
"New Paid Order": "Neue bezahlte Bestellung",
"Triggers when a checkout is abandoned.": "Wird ausgelöst, wenn eine Kasse aufgegeben wird.",
"Triggered when order is cancelled": "Ausgelöst, wenn Bestellung storniert wird",
"Triggered when a new customer is created": "Wird ausgelöst, wenn ein neuer Kunde erstellt wird",
"Triggered when a new order is created": "Wird ausgelöst, wenn eine neue Bestellung erstellt wird",
"Triggered when a product is updated.": "Wird ausgelöst, wenn ein Produkt aktualisiert wird.",
"Triggered when a paid order is created": "Wird ausgelöst, wenn eine bezahlte Bestellung erstellt wird"
}

View File

@@ -0,0 +1,155 @@
{
"Ecommerce platform for online stores": "Plataforma de comercio electrónico para tiendas en línea",
"Shop Name": "Nombre de tienda",
"Admin Token": "Token de Admin",
"\n**Shop Name**:\n\nYou can find your shop name in the url For example, if the URL is `https://example.myshopify.com/admin`, then your shop name is **example**.\n\n**Admin Token**:\n\n1. Login to your Shopify account\n2. Go to Settings -> Apps\n3. Click on Develop apps\n4. Create an App\n5. Fill the app name\n6. Click on Configure Admin API Scopes (Select the following scopes 'read_orders', 'write_orders', 'write_customers', 'read_customers', 'write_products', 'read_products', 'write_draft_orders', 'read_draft_orders')": "\n**Shop Name**:\n\nYou can find your shop name in the url For example, if the URL is `https://example.myshopify.com/admin`, then your shop name is **example**.\n\n**Admin Token**:\n\n1. Login to your Shopify account\n2. Go to Settings -> Apps\n3. Click on Develop apps\n4. Create an App\n5. Fill the app name\n6. Click on Configure Admin API Scopes (Select the following scopes 'read_orders', 'write_orders', 'write_customers', 'read_customers', 'write_products', 'read_products', 'write_draft_orders', 'read_draft_orders')\n7. Click on Install app\n8. Copy the Admin Access Token\n",
"Adjust Inventory Level": "Ajustar nivel de inventario",
"Cancel Order": "Cancelar orden",
"Close Order": "Cerrar pedido",
"Create Collect": "Crear colección",
"Create Customer": "Crear cliente",
"Create Draft Order": "Crear orden borrador",
"Create Fulfillment Event": "Crear evento de llenado",
"Create Order": "Crear pedido",
"Create Product": "Crear Producto",
"Create Transaction": "Crear transacción",
"Get Asset": "Obtener Activo",
"Get Customer": "Obtener cliente",
"Get Customers": "Obtener clientes",
"Get Customer Orders": "Obtener pedidos de cliente",
"Get Fulfillment": "Obtener cumplimiento",
"Get Fulfillments": "Obtener Cumplimientos",
"Get Locations": "Obtener ubicaciones",
"Get Product": "Obtener Producto",
"Get Product Variant": "Obtener variante de producto",
"Get Products": "Obtener productos",
"Get Transaction": "Obtener transacción",
"Get Order Transactions": "Obtener transacciones de pedido",
"Update Customer": "Actualizar cliente",
"Update Order": "Actualizar pedido",
"Update Product": "Actualizar Producto",
"Upload Product Image": "Subir imagen de producto",
"Custom API Call": "Llamada API personalizada",
"Adjust inventory level of an item at a location.": "Ajusta el nivel de inventario de un elemento en una ubicación.",
"Cancel an order.": "Cancelar una orden.",
"Close an order.": "Cerrar un pedido.",
"Add a product to a collection.": "Añadir un producto a una colección.",
"Create a new customer.": "Crear un nuevo cliente.",
"Create a new draft order.": "Crear un nuevo borrador de pedido.",
"Create a new fulfillment event.": "Crear un nuevo evento de cumplimiento.",
"Create a new order.": "Crear un nuevo pedido.",
"Create a new product.": "Crear un nuevo producto.",
"Create a new transaction.": "Crear una nueva transacción.",
"Get a theme's asset.": "Obtener el activo de un tema.",
"Get an existing customer's information.": "Obtener la información de un cliente existente.",
"Get an existing customers.": "Obtener clientes existentes.",
"Get an existing customer's orders.": "Obtener pedidos de un cliente existente.",
"Get a fulfillment.": "Obtén un cumplimiento.",
"Get an order's fulfillments.": "Obtén el cumplimiento de un pedido.",
"Get locations.": "Obtener ubicaciones.",
"Get existing product.": "Obtener producto existente.",
"Get a product variant.": "Obtener una variante de producto.",
"Get existing products by title.": "Obtener productos existentes por título.",
"Get an existing transaction's information.": "Obtener información de una transacción existente.",
"Get an order's transactions.": "Obtener las transacciones de un pedido.",
"Update an existing customer.": "Actualizar un cliente existente.",
"Update an existing order.": "Actualizar un pedido existente.",
"Update an existing product.": "Actualizar un producto existente.",
"Upload a new product image.": "Subir una imagen de nuevo producto.",
"Make a custom API call to a specific endpoint": "Hacer una llamada API personalizada a un extremo específico",
"Inventory Item": "Artículo de inventario",
"Location": "Ubicación",
"Adjustment": "Ajuste",
"Order": "Pedido",
"Product": "Producto",
"Collection": "Colección",
"Email": "E-mail",
"Verified Email": "Correo verificado",
"Send Email Invite": "Enviar invitación por email",
"First Name": "Nombre",
"Last Name": "Apellido",
"Phone Number": "Número de teléfono",
"Tags": "Etiquetas",
"Accepts Marketing ?": "¿Acepta Marketing ?",
"Product Variant": "Variante de producto",
"Title": "Título",
"Quantity": "Cantidad",
"Price": "Precio",
"Customer": "Cliente",
"Fulfillment": "Cumplimiento",
"Status": "Estado",
"Message": "Mensaje",
"Send Receipt": "Enviar recibo",
"Send Fulfillment Receipt": "Enviar recibo de cumplimiento",
"Description": "Descripción",
"Product Type": "Tipo de producto",
"Product Image": "Imagen del producto",
"Vendor": "Vendedor",
"Type": "Tipo",
"Currency": "Moneda",
"Amount": "Cantidad",
"Authorization Key": "Clave de autorización",
"Parent ID": "ID padre",
"Source": "Fuente",
"Test": "Prueba",
"Asset Key": "Asset Key",
"Theme": "Tema",
"Customer ID": "ID del cliente",
"Transaction": "Transacción",
"Note": "Nota",
"Image": "Imagen",
"Position": "Posición",
"Method": "Método",
"Headers": "Encabezados",
"Query Parameters": "Parámetros de consulta",
"Body": "Cuerpo",
"Response is Binary ?": "¿Respuesta es binaria?",
"No Error on Failure": "No hay ningún error en fallo",
"Timeout (in seconds)": "Tiempo de espera (en segundos)",
"The ID of the inventory item.": "La ID del elemento del inventario.",
"The ID of the location.": "El ID de la ubicación.",
"Positive values increase inventory, negative values decrease it.": "Los valores positivos aumentan el inventario, los valores negativos lo reducen.",
"The ID of the order.": "El ID del pedido.",
"The ID of the product.": "El ID del producto.",
"The ID of the collection.": "El ID de la colección.",
"Whether the customer has verified their email.": "Si el cliente ha verificado su correo electrónico.",
"A string of comma-separated tags for filtering and search": "Una cadena de etiquetas separadas por comas para filtrar y buscar",
"The ID of the product to create the order with.": "El ID del producto con el que crear el pedido.",
"The ID of the variant to create the order with.": "El ID de la variante con la que crear el pedido.",
"The ID of the customer to use.": "El ID del cliente a utilizar.",
"The ID of the fulfillment.": "El ID del cumplimiento.",
"Product description (supports HTML)": "Descripción del producto (soporta HTML)",
"A categorization for the product used for filtering and searching products": "Una categorización para el producto utilizado para filtrar y buscar productos",
"The public URL or the base64 image to use": "La URL pública o la imagen base64 a usar",
"The ID of the order to create a transaction for.": "El ID del pedido para crear una transacción.",
"The ID of an associated transaction.": "El ID de una transacción asociada.",
"An optional origin of the transaction. Set to external to import a cash transaction for the associated order.": "Un origen opcional de la transacción. Establecer en externo para importar una transacción en efectivo para el pedido asociado.",
"Whether the transaction is a test transaction.": "Si la transacción es una transacción de prueba.",
"The ID of the theme.": "El ID del tema.",
"The ID of the product variant.": "El ID de la variante del producto.",
"The ID of the transaction": "El ID de la transacción",
"1 makes it the main image.": "1 lo convierte en la imagen principal.",
"Authorization headers are injected automatically from your connection.": "Las cabeceras de autorización se inyectan automáticamente desde tu conexión.",
"Enable for files like PDFs, images, etc..": "Activar para archivos como PDFs, imágenes, etc.",
"Active": "Activo",
"Draft": "Borrador",
"Archived": "Archivado",
"GET": "RECOGER",
"POST": "POST",
"PATCH": "PATCH",
"PUT": "PUT",
"DELETE": "BORRAR",
"HEAD": "LIMPIO",
"New Abandoned Checkout": "Nuevo pago abandonado",
"New Cancelled Order": "Nuevo pedido cancelado",
"New Customer": "Nuevo cliente",
"New Order": "Nuevo pedido",
"Updated Product": "Artículo actualizado",
"New Paid Order": "Nuevo pedido pagado",
"Triggers when a checkout is abandoned.": "Dispara cuando un pago es abandonado.",
"Triggered when order is cancelled": "Activado cuando se cancela el pedido",
"Triggered when a new customer is created": "Se activa cuando se crea un nuevo cliente",
"Triggered when a new order is created": "Activado cuando se crea un nuevo pedido",
"Triggered when a product is updated.": "Se activa cuando se actualiza un producto.",
"Triggered when a paid order is created": "Activado cuando se crea un pedido de pago"
}

View File

@@ -0,0 +1,155 @@
{
"Ecommerce platform for online stores": "Plateforme de commerce électronique pour les magasins en ligne",
"Shop Name": "Nom de la boutique",
"Admin Token": "Jeton d'administration",
"\n**Shop Name**:\n\nYou can find your shop name in the url For example, if the URL is `https://example.myshopify.com/admin`, then your shop name is **example**.\n\n**Admin Token**:\n\n1. Login to your Shopify account\n2. Go to Settings -> Apps\n3. Click on Develop apps\n4. Create an App\n5. Fill the app name\n6. Click on Configure Admin API Scopes (Select the following scopes 'read_orders', 'write_orders', 'write_customers', 'read_customers', 'write_products', 'read_products', 'write_draft_orders', 'read_draft_orders')": "\n**Nom de la boutique** :\n\nVous pouvez trouver le nom de votre boutique dans l'url Par exemple, si l'URL est `https://example. yshopify.com/admin`, alors le nom de votre boutique est **exemple**.\n\n**Jeton d'admin** :\n\n1. Connectez-vous à votre compte Shopify\n2. Allez dans Paramètres -> Applications\n3. Cliquez sur Développer les applications\n4. Créer une application\n5. Remplissez le nom de l'application\n6. Cliquez sur Configurer les portées de l'API Admin (Sélectionnez les portées suivantes 'read_orders', 'write_orders', 'write_customers', 'read_customers', 'write_products', 'read_products', 'write_draft_orders', 'read_draft_orders')\n7. Cliquez sur Installer l'application\n8. Copiez le jeton d'accès Admin\n",
"Adjust Inventory Level": "Ajuster le niveau d'inventaire",
"Cancel Order": "Annuler la commande",
"Close Order": "Clôturer l'ordre",
"Create Collect": "Créer une Collecte",
"Create Customer": "Créer un client",
"Create Draft Order": "Créer un brouillon de commande",
"Create Fulfillment Event": "Créer un événement d'Accomplissement",
"Create Order": "Créer une commande",
"Create Product": "Créer un produit",
"Create Transaction": "Créer une transaction",
"Get Asset": "Obtenir un bien",
"Get Customer": "Obtenir le client",
"Get Customers": "Obtenir des clients",
"Get Customer Orders": "Obtenir les commandes du client",
"Get Fulfillment": "Obtenir l'Accomplissement",
"Get Fulfillments": "Obtenir des Accomplissements",
"Get Locations": "Obtenir des emplacements",
"Get Product": "Obtenir le produit",
"Get Product Variant": "Obtenir une variante de produit",
"Get Products": "Obtenir des produits",
"Get Transaction": "Obtenir la transaction",
"Get Order Transactions": "Obtenir les transactions de commande",
"Update Customer": "Mettre à jour le client",
"Update Order": "Mettre à jour la commande",
"Update Product": "Mettre à jour le produit",
"Upload Product Image": "Charger une image de produit",
"Custom API Call": "Appel d'API personnalisé",
"Adjust inventory level of an item at a location.": "Ajuster le niveau d'inventaire d'un objet à un endroit.",
"Cancel an order.": "Annuler une commande.",
"Close an order.": "Fermer une commande.",
"Add a product to a collection.": "Ajouter un produit à une collection.",
"Create a new customer.": "Créer un nouveau client.",
"Create a new draft order.": "Créer un nouveau brouillon de commande.",
"Create a new fulfillment event.": "Créer un nouvel événement d'accomplissement.",
"Create a new order.": "Créer une nouvelle commande.",
"Create a new product.": "Créer un nouveau produit.",
"Create a new transaction.": "Créer une nouvelle transaction.",
"Get a theme's asset.": "Obtenir l'actif d'un thème.",
"Get an existing customer's information.": "Obtenir les informations d'un client existant.",
"Get an existing customers.": "Obtenir un client existant.",
"Get an existing customer's orders.": "Récupère les commandes d'un client existant.",
"Get a fulfillment.": "Obtenir un accomplissement.",
"Get an order's fulfillments.": "Obtenir les accomplissements d'une commande.",
"Get locations.": "Obtenir des emplacements.",
"Get existing product.": "Récupérer le produit existant.",
"Get a product variant.": "Obtenir une variante de produit.",
"Get existing products by title.": "Obtenir les produits existants par titre.",
"Get an existing transaction's information.": "Obtenir les informations d'une transaction existante.",
"Get an order's transactions.": "Obtenir les transactions d'une commande.",
"Update an existing customer.": "Mettre à jour un client existant.",
"Update an existing order.": "Mettre à jour une commande existante.",
"Update an existing product.": "Mettre à jour un produit existant.",
"Upload a new product image.": "Télécharger une nouvelle image de produit.",
"Make a custom API call to a specific endpoint": "Passer un appel API personnalisé à un endpoint spécifique",
"Inventory Item": "Article d'inventaire",
"Location": "Localisation",
"Adjustment": "Ajustement",
"Order": "Commandes",
"Product": "Produit",
"Collection": "Collecte",
"Email": "Courriel",
"Verified Email": "Email vérifié",
"Send Email Invite": "Envoyer une invitation par e-mail",
"First Name": "First Name",
"Last Name": "Last Name",
"Phone Number": "Numéro de téléphone",
"Tags": "Tags",
"Accepts Marketing ?": "Accepte le marketing ?",
"Product Variant": "Variante de produit",
"Title": "Titre de la page",
"Quantity": "Quantité",
"Price": "Prix",
"Customer": "Client",
"Fulfillment": "Accomplissement",
"Status": "Statut",
"Message": "Message",
"Send Receipt": "Envoyer un reçu",
"Send Fulfillment Receipt": "Envoyer un reçu d'Accomplissement",
"Description": "Libellé",
"Product Type": "Type de produit",
"Product Image": "Image du produit",
"Vendor": "Fournisseur",
"Type": "Type de texte",
"Currency": "Devise",
"Amount": "Montant",
"Authorization Key": "Clé d'autorisation",
"Parent ID": "ID parent",
"Source": "Source",
"Test": "Tester",
"Asset Key": "Asset Key",
"Theme": "Thème",
"Customer ID": "ID du client",
"Transaction": "Opération",
"Note": "Note",
"Image": "Image",
"Position": "Position",
"Method": "Méthode",
"Headers": "En-têtes",
"Query Parameters": "Paramètres de requête",
"Body": "Corps",
"Response is Binary ?": "La réponse est Binaire ?",
"No Error on Failure": "Aucune erreur en cas d'échec",
"Timeout (in seconds)": "Délai d'expiration (en secondes)",
"The ID of the inventory item.": "L'ID de l'élément d'inventaire.",
"The ID of the location.": "L'ID de l'emplacement.",
"Positive values increase inventory, negative values decrease it.": "Les valeurs positives augmentent l'inventaire, les valeurs négatives le diminuent.",
"The ID of the order.": "L'ID de la prescription",
"The ID of the product.": "L'ID du produit.",
"The ID of the collection.": "L'ID de la collection.",
"Whether the customer has verified their email.": "Si le client a vérifié son email.",
"A string of comma-separated tags for filtering and search": "Une chaîne de tags séparés par des virgules pour le filtrage et la recherche",
"The ID of the product to create the order with.": "L'ID du produit avec lequel créer la commande.",
"The ID of the variant to create the order with.": "L'ID de la variante avec laquelle créer la commande.",
"The ID of the customer to use.": "L'ID du client à utiliser.",
"The ID of the fulfillment.": "L'ID de l'accomplissement.",
"Product description (supports HTML)": "Description du produit (supporte HTML)",
"A categorization for the product used for filtering and searching products": "Une catégorisation pour le produit utilisé pour le filtrage et la recherche de produits",
"The public URL or the base64 image to use": "L'URL publique ou l'image base64 à utiliser",
"The ID of the order to create a transaction for.": "L'ID de la commande pour laquelle créer une transaction.",
"The ID of an associated transaction.": "L'ID d'une opération associée.",
"An optional origin of the transaction. Set to external to import a cash transaction for the associated order.": "Une origine optionnelle de la transaction. Configurez sur externe pour importer une transaction en espèces pour la commande associée.",
"Whether the transaction is a test transaction.": "Si la transaction est une transaction de test.",
"The ID of the theme.": "L'ID du thème.",
"The ID of the product variant.": "L'ID de la variante du produit.",
"The ID of the transaction": "L'ID de la transaction",
"1 makes it the main image.": "1 en fait l'image principale.",
"Authorization headers are injected automatically from your connection.": "Les en-têtes d'autorisation sont injectés automatiquement à partir de votre connexion.",
"Enable for files like PDFs, images, etc..": "Activer pour les fichiers comme les PDFs, les images, etc.",
"Active": "Actif",
"Draft": "Brouillon",
"Archived": "Archivé",
"GET": "GET",
"POST": "POST",
"PATCH": "PATCH",
"PUT": "PUT",
"DELETE": "DELETE",
"HEAD": "HEAD",
"New Abandoned Checkout": "Nouveau paiement abandonné",
"New Cancelled Order": "Nouvelle commande annulée",
"New Customer": "Nouveau client",
"New Order": "Nouvelle commande",
"Updated Product": "Produit mis à jour",
"New Paid Order": "Nouvelle commande payante",
"Triggers when a checkout is abandoned.": "Déclenche lorsqu'un paiement est abandonné.",
"Triggered when order is cancelled": "Déclenché lorsque la commande est annulée",
"Triggered when a new customer is created": "Déclenché lorsqu'un nouveau client est créé",
"Triggered when a new order is created": "Déclenché lorsqu'une nouvelle commande est créée",
"Triggered when a product is updated.": "Déclenché quand un produit est mis à jour.",
"Triggered when a paid order is created": "Déclenché lorsqu'une commande payante est créée"
}

View File

@@ -0,0 +1,153 @@
{
"Shopify": "Shopify",
"Ecommerce platform for online stores": "Ecommerce platform for online stores",
"Shop Name": "Shop Name",
"Admin Token": "Admin Token",
"\n**Shop Name**:\n\nYou can find your shop name in the url For example, if the URL is `https://example.myshopify.com/admin`, then your shop name is **example**.\n\n**Admin Token**:\n\n1. Login to your Shopify account\n2. Go to Settings -> Apps\n3. Click on Develop apps\n4. Create an App\n5. Fill the app name\n6. Click on Configure Admin API Scopes (Select the following scopes 'read_orders', 'write_orders', 'write_customers', 'read_customers', 'write_products', 'read_products', 'write_draft_orders', 'read_draft_orders')": "\n**Shop Name**:\n\nYou can find your shop name in the url For example, if the URL is `https://example.myshopify.com/admin`, then your shop name is **example**.\n\n**Admin Token**:\n\n1. Login to your Shopify account\n2. Go to Settings -> Apps\n3. Click on Develop apps\n4. Create an App\n5. Fill the app name\n6. Click on Configure Admin API Scopes (Select the following scopes 'read_orders', 'write_orders', 'write_customers', 'read_customers', 'write_products', 'read_products', 'write_draft_orders', 'read_draft_orders')\n7. Click on Install app\n8. Copy the Admin Access Token\n",
"Adjust Inventory Level": "Adjust Inventory Level",
"Cancel Order": "Cancel Order",
"Close Order": "Close Order",
"Create Collect": "Create Collect",
"Create Customer": "Create Customer",
"Create Draft Order": "Create Draft Order",
"Create Fulfillment Event": "Create Fulfillment Event",
"Create Order": "Create Order",
"Create Product": "Create Product",
"Create Transaction": "Create Transaction",
"Get Asset": "Get Asset",
"Get Customer": "Get Customer",
"Get Customers": "Get Customers",
"Get Customer Orders": "Get Customer Orders",
"Get Fulfillment": "Get Fulfillment",
"Get Fulfillments": "Get Fulfillments",
"Get Locations": "Get Locations",
"Get Product": "Get Product",
"Get Product Variant": "Get Product Variant",
"Get Products": "Get Products",
"Get Transaction": "Get Transaction",
"Get Order Transactions": "Get Order Transactions",
"Update Customer": "Update Customer",
"Update Order": "Update Order",
"Update Product": "Update Product",
"Upload Product Image": "Upload Product Image",
"Custom API Call": "Custom API Call",
"Adjust inventory level of an item at a location.": "Adjust inventory level of an item at a location.",
"Cancel an order.": "Cancel an order.",
"Close an order.": "Close an order.",
"Add a product to a collection.": "Add a product to a collection.",
"Create a new customer.": "Create a new customer.",
"Create a new draft order.": "Create a new draft order.",
"Create a new fulfillment event.": "Create a new fulfillment event.",
"Create a new order.": "Create a new order.",
"Create a new product.": "Create a new product.",
"Create a new transaction.": "Create a new transaction.",
"Get a theme's asset.": "Get a theme's asset.",
"Get an existing customer's information.": "Get an existing customer's information.",
"Get an existing customers.": "Get an existing customers.",
"Get an existing customer's orders.": "Get an existing customer's orders.",
"Get a fulfillment.": "Get a fulfillment.",
"Get an order's fulfillments.": "Get an order's fulfillments.",
"Get locations.": "Get locations.",
"Get existing product.": "Get existing product.",
"Get a product variant.": "Get a product variant.",
"Get existing products by title.": "Get existing products by title.",
"Get an existing transaction's information.": "Get an existing transaction's information.",
"Get an order's transactions.": "Get an order's transactions.",
"Update an existing customer.": "Update an existing customer.",
"Update an existing order.": "Update an existing order.",
"Update an existing product.": "Update an existing product.",
"Upload a new product image.": "Upload a new product image.",
"Make a custom API call to a specific endpoint": "Make a custom API call to a specific endpoint",
"Inventory Item": "Inventory Item",
"Location": "Location",
"Adjustment": "Adjustment",
"Order": "Order",
"Product": "Product",
"Collection": "Collection",
"Email": "Email",
"Verified Email": "Verified Email",
"Send Email Invite": "Send Email Invite",
"First Name": "First Name",
"Last Name": "Last Name",
"Phone Number": "Phone Number",
"Tags": "Tags",
"Product Variant": "Product Variant",
"Title": "Title",
"Quantity": "Quantity",
"Price": "Price",
"Customer": "Customer",
"Fulfillment": "Fulfillment",
"Status": "Status",
"Message": "Message",
"Send Receipt": "Send Receipt",
"Send Fulfillment Receipt": "Send Fulfillment Receipt",
"Description": "Description",
"Product Type": "Product Type",
"Product Image": "Product Image",
"Vendor": "Vendor",
"Type": "Type",
"Currency": "Currency",
"Amount": "Amount",
"Authorization Key": "Authorization Key",
"Parent ID": "Parent ID",
"Source": "Source",
"Test": "Test",
"Asset Key": "Asset Key",
"Theme": "Theme",
"Customer ID": "Customer ID",
"Transaction": "Transaction",
"Note": "Note",
"Image": "Image",
"Position": "Position",
"Method": "Method",
"Headers": "Headers",
"Query Parameters": "Query Parameters",
"Body": "Body",
"No Error on Failure": "No Error on Failure",
"Timeout (in seconds)": "Timeout (in seconds)",
"The ID of the inventory item.": "The ID of the inventory item.",
"The ID of the location.": "The ID of the location.",
"Positive values increase inventory, negative values decrease it.": "Positive values increase inventory, negative values decrease it.",
"The ID of the order.": "The ID of the order.",
"The ID of the product.": "The ID of the product.",
"The ID of the collection.": "The ID of the collection.",
"Whether the customer has verified their email.": "Whether the customer has verified their email.",
"A string of comma-separated tags for filtering and search": "A string of comma-separated tags for filtering and search",
"The ID of the product to create the order with.": "The ID of the product to create the order with.",
"The ID of the variant to create the order with.": "The ID of the variant to create the order with.",
"The ID of the customer to use.": "The ID of the customer to use.",
"The ID of the fulfillment.": "The ID of the fulfillment.",
"Product description (supports HTML)": "Product description (supports HTML)",
"A categorization for the product used for filtering and searching products": "A categorization for the product used for filtering and searching products",
"The public URL or the base64 image to use": "The public URL or the base64 image to use",
"The ID of the order to create a transaction for.": "The ID of the order to create a transaction for.",
"The ID of an associated transaction.": "The ID of an associated transaction.",
"An optional origin of the transaction. Set to external to import a cash transaction for the associated order.": "An optional origin of the transaction. Set to external to import a cash transaction for the associated order.",
"Whether the transaction is a test transaction.": "Whether the transaction is a test transaction.",
"The ID of the theme.": "The ID of the theme.",
"The ID of the product variant.": "The ID of the product variant.",
"The ID of the transaction": "The ID of the transaction",
"1 makes it the main image.": "1 makes it the main image.",
"Authorization headers are injected automatically from your connection.": "Authorization headers are injected automatically from your connection.",
"Active": "Active",
"Draft": "Draft",
"Archived": "Archived",
"GET": "GET",
"POST": "POST",
"PATCH": "PATCH",
"PUT": "PUT",
"DELETE": "DELETE",
"HEAD": "HEAD",
"New Abandoned Checkout": "New Abandoned Checkout",
"New Cancelled Order": "New Cancelled Order",
"New Customer": "New Customer",
"New Order": "New Order",
"Updated Product": "Updated Product",
"New Paid Order": "New Paid Order",
"Triggers when a checkout is abandoned.": "Triggers when a checkout is abandoned.",
"Triggered when order is cancelled": "Triggered when order is cancelled",
"Triggered when a new customer is created": "Triggered when a new customer is created",
"Triggered when a new order is created": "Triggered when a new order is created",
"Triggered when a product is updated.": "Triggered when a product is updated.",
"Triggered when a paid order is created": "Triggered when a paid order is created"
}

View File

@@ -0,0 +1,153 @@
{
"Shopify": "Shopify",
"Ecommerce platform for online stores": "Ecommerce platform for online stores",
"Shop Name": "Shop Name",
"Admin Token": "Admin Token",
"\n**Shop Name**:\n\nYou can find your shop name in the url For example, if the URL is `https://example.myshopify.com/admin`, then your shop name is **example**.\n\n**Admin Token**:\n\n1. Login to your Shopify account\n2. Go to Settings -> Apps\n3. Click on Develop apps\n4. Create an App\n5. Fill the app name\n6. Click on Configure Admin API Scopes (Select the following scopes 'read_orders', 'write_orders', 'write_customers', 'read_customers', 'write_products', 'read_products', 'write_draft_orders', 'read_draft_orders')": "\n**Shop Name**:\n\nYou can find your shop name in the url For example, if the URL is `https://example.myshopify.com/admin`, then your shop name is **example**.\n\n**Admin Token**:\n\n1. Login to your Shopify account\n2. Go to Settings -> Apps\n3. Click on Develop apps\n4. Create an App\n5. Fill the app name\n6. Click on Configure Admin API Scopes (Select the following scopes 'read_orders', 'write_orders', 'write_customers', 'read_customers', 'write_products', 'read_products', 'write_draft_orders', 'read_draft_orders')\n7. Click on Install app\n8. Copy the Admin Access Token\n",
"Adjust Inventory Level": "Adjust Inventory Level",
"Cancel Order": "Cancel Order",
"Close Order": "Close Order",
"Create Collect": "Create Collect",
"Create Customer": "Create Customer",
"Create Draft Order": "Create Draft Order",
"Create Fulfillment Event": "Create Fulfillment Event",
"Create Order": "Create Order",
"Create Product": "Create Product",
"Create Transaction": "Create Transaction",
"Get Asset": "Get Asset",
"Get Customer": "Get Customer",
"Get Customers": "Get Customers",
"Get Customer Orders": "Get Customer Orders",
"Get Fulfillment": "Get Fulfillment",
"Get Fulfillments": "Get Fulfillments",
"Get Locations": "Get Locations",
"Get Product": "Get Product",
"Get Product Variant": "Get Product Variant",
"Get Products": "Get Products",
"Get Transaction": "Get Transaction",
"Get Order Transactions": "Get Order Transactions",
"Update Customer": "Update Customer",
"Update Order": "Update Order",
"Update Product": "Update Product",
"Upload Product Image": "Upload Product Image",
"Custom API Call": "Custom API Call",
"Adjust inventory level of an item at a location.": "Adjust inventory level of an item at a location.",
"Cancel an order.": "Cancel an order.",
"Close an order.": "Close an order.",
"Add a product to a collection.": "Add a product to a collection.",
"Create a new customer.": "Create a new customer.",
"Create a new draft order.": "Create a new draft order.",
"Create a new fulfillment event.": "Create a new fulfillment event.",
"Create a new order.": "Create a new order.",
"Create a new product.": "Create a new product.",
"Create a new transaction.": "Create a new transaction.",
"Get a theme's asset.": "Get a theme's asset.",
"Get an existing customer's information.": "Get an existing customer's information.",
"Get an existing customers.": "Get an existing customers.",
"Get an existing customer's orders.": "Get an existing customer's orders.",
"Get a fulfillment.": "Get a fulfillment.",
"Get an order's fulfillments.": "Get an order's fulfillments.",
"Get locations.": "Get locations.",
"Get existing product.": "Get existing product.",
"Get a product variant.": "Get a product variant.",
"Get existing products by title.": "Get existing products by title.",
"Get an existing transaction's information.": "Get an existing transaction's information.",
"Get an order's transactions.": "Get an order's transactions.",
"Update an existing customer.": "Update an existing customer.",
"Update an existing order.": "Update an existing order.",
"Update an existing product.": "Update an existing product.",
"Upload a new product image.": "Upload a new product image.",
"Make a custom API call to a specific endpoint": "Make a custom API call to a specific endpoint",
"Inventory Item": "Inventory Item",
"Location": "Location",
"Adjustment": "Adjustment",
"Order": "Order",
"Product": "Product",
"Collection": "Collection",
"Email": "Email",
"Verified Email": "Email Terverifikasi",
"Send Email Invite": "Send Email Invite",
"First Name": "First Name",
"Last Name": "Last Name",
"Phone Number": "Phone Number",
"Tags": "Tags",
"Product Variant": "Product Variant",
"Title": "Title",
"Quantity": "Quantity",
"Price": "Price",
"Customer": "Customer",
"Fulfillment": "Fulfillment",
"Status": "Status",
"Message": "Message",
"Send Receipt": "Send Receipt",
"Send Fulfillment Receipt": "Send Fulfillment Receipt",
"Description": "Description",
"Product Type": "Product Type",
"Product Image": "Product Image",
"Vendor": "Vendor",
"Type": "Type",
"Currency": "Currency",
"Amount": "Amount",
"Authorization Key": "Authorization Key",
"Parent ID": "Parent ID",
"Source": "Source",
"Test": "Test",
"Asset Key": "Asset Key",
"Theme": "Theme",
"Customer ID": "Customer ID",
"Transaction": "Transaction",
"Note": "Note",
"Image": "Image",
"Position": "Position",
"Method": "Method",
"Headers": "Headers",
"Query Parameters": "Query Parameters",
"Body": "Body",
"No Error on Failure": "No Error on Failure",
"Timeout (in seconds)": "Timeout (in seconds)",
"The ID of the inventory item.": "The ID of the inventory item.",
"The ID of the location.": "The ID of the location.",
"Positive values increase inventory, negative values decrease it.": "Positive values increase inventory, negative values decrease it.",
"The ID of the order.": "The ID of the order.",
"The ID of the product.": "The ID of the product.",
"The ID of the collection.": "The ID of the collection.",
"Whether the customer has verified their email.": "Whether the customer has verified their email.",
"A string of comma-separated tags for filtering and search": "A string of comma-separated tags for filtering and search",
"The ID of the product to create the order with.": "The ID of the product to create the order with.",
"The ID of the variant to create the order with.": "The ID of the variant to create the order with.",
"The ID of the customer to use.": "The ID of the customer to use.",
"The ID of the fulfillment.": "The ID of the fulfillment.",
"Product description (supports HTML)": "Product description (supports HTML)",
"A categorization for the product used for filtering and searching products": "A categorization for the product used for filtering and searching products",
"The public URL or the base64 image to use": "The public URL or the base64 image to use",
"The ID of the order to create a transaction for.": "The ID of the order to create a transaction for.",
"The ID of an associated transaction.": "The ID of an associated transaction.",
"An optional origin of the transaction. Set to external to import a cash transaction for the associated order.": "An optional origin of the transaction. Set to external to import a cash transaction for the associated order.",
"Whether the transaction is a test transaction.": "Whether the transaction is a test transaction.",
"The ID of the theme.": "The ID of the theme.",
"The ID of the product variant.": "The ID of the product variant.",
"The ID of the transaction": "The ID of the transaction",
"1 makes it the main image.": "1 makes it the main image.",
"Authorization headers are injected automatically from your connection.": "Authorization headers are injected automatically from your connection.",
"Active": "Aktif",
"Draft": "Draf",
"Archived": "Archived",
"GET": "GET",
"POST": "POST",
"PATCH": "PATCH",
"PUT": "PUT",
"DELETE": "DELETE",
"HEAD": "HEAD",
"New Abandoned Checkout": "New Abandoned Checkout",
"New Cancelled Order": "New Cancelled Order",
"New Customer": "New Customer",
"New Order": "New Order",
"Updated Product": "Updated Product",
"New Paid Order": "New Paid Order",
"Triggers when a checkout is abandoned.": "Triggers when a checkout is abandoned.",
"Triggered when order is cancelled": "Triggered when order is cancelled",
"Triggered when a new customer is created": "Triggered when a new customer is created",
"Triggered when a new order is created": "Triggered when a new order is created",
"Triggered when a product is updated.": "Triggered when a product is updated.",
"Triggered when a paid order is created": "Triggered when a paid order is created"
}

View File

@@ -0,0 +1,155 @@
{
"Ecommerce platform for online stores": "オンラインストア用のEコマースプラットフォーム",
"Shop Name": "ショップ名",
"Admin Token": "管理トークン",
"\n**Shop Name**:\n\nYou can find your shop name in the url For example, if the URL is `https://example.myshopify.com/admin`, then your shop name is **example**.\n\n**Admin Token**:\n\n1. Login to your Shopify account\n2. Go to Settings -> Apps\n3. Click on Develop apps\n4. Create an App\n5. Fill the app name\n6. Click on Configure Admin API Scopes (Select the following scopes 'read_orders', 'write_orders', 'write_customers', 'read_customers', 'write_products', 'read_products', 'write_draft_orders', 'read_draft_orders')": "\n**Shop Name**:\n\nYou can find your shop name in the url For example, if the URL is `https://example.myshopify.com/admin`, then your shop name is **example**.\n\n**Admin Token**:\n\n1. Login to your Shopify account\n2. Go to Settings -> Apps\n3. Click on Develop apps\n4. Create an App\n5. Fill the app name\n6. Click on Configure Admin API Scopes (Select the following scopes 'read_orders', 'write_orders', 'write_customers', 'read_customers', 'write_products', 'read_products', 'write_draft_orders', 'read_draft_orders')\n7. Click on Install app\n8. Copy the Admin Access Token\n",
"Adjust Inventory Level": "在庫レベルを調整",
"Cancel Order": "注文をキャンセル",
"Close Order": "注文を閉じる",
"Create Collect": "コレクションを作成",
"Create Customer": "顧客を作成",
"Create Draft Order": "ドラフト注文を作成",
"Create Fulfillment Event": "フルフィルメントイベントを作成",
"Create Order": "注文を作成",
"Create Product": "商品を作成",
"Create Transaction": "取引を作成",
"Get Asset": "資産を取得する",
"Get Customer": "顧客を取得",
"Get Customers": "顧客を獲得する",
"Get Customer Orders": "顧客注文の取得",
"Get Fulfillment": "フルフィルメントを入手",
"Get Fulfillments": "フルフィルメントを入手",
"Get Locations": "位置情報を取得する",
"Get Product": "商品を入手",
"Get Product Variant": "製品バリアントを取得",
"Get Products": "商品を入手",
"Get Transaction": "トランザクションを取得",
"Get Order Transactions": "注文トランザクションを取得する",
"Update Customer": "顧客情報の更新",
"Update Order": "注文を更新",
"Update Product": "商品を更新",
"Upload Product Image": "商品画像をアップロード",
"Custom API Call": "カスタムAPI通話",
"Adjust inventory level of an item at a location.": "場所のアイテムの在庫レベルを調整します。",
"Cancel an order.": "注文をキャンセル",
"Close an order.": "注文を閉じる",
"Add a product to a collection.": "商品をコレクションに追加",
"Create a new customer.": "新しい顧客を作成します。",
"Create a new draft order.": "新しい下書き注文を作成します。",
"Create a new fulfillment event.": "新しいフルフィルメントイベントを作成します。",
"Create a new order.": "新規注文を作成",
"Create a new product.": "新しい製品を作成します。",
"Create a new transaction.": "新しいトランザクションを作成します。",
"Get a theme's asset.": "テーマのアセットを取得します。",
"Get an existing customer's information.": "既存の顧客情報を取得する",
"Get an existing customers.": "既存の顧客を取得する",
"Get an existing customer's orders.": "既存の顧客の注文を取得する",
"Get a fulfillment.": "達成を得なさい。",
"Get an order's fulfillments.": "注文の履行を取得します。",
"Get locations.": "位置情報を取得します。",
"Get existing product.": "既存の製品を取得します。",
"Get a product variant.": "製品バリエーションを取得する",
"Get existing products by title.": "既存の製品をタイトルで取得します。",
"Get an existing transaction's information.": "既存の取引情報を取得します。",
"Get an order's transactions.": "注文の取引を取得します。",
"Update an existing customer.": "既存の顧客を更新する",
"Update an existing order.": "既存の注文を更新します",
"Update an existing product.": "既存の製品を更新",
"Upload a new product image.": "新しい商品画像をアップロードします。",
"Make a custom API call to a specific endpoint": "特定のエンドポイントへのカスタム API コールを実行します。",
"Inventory Item": "在庫アイテム",
"Location": "場所",
"Adjustment": "調整",
"Order": "ご注文",
"Product": "商品",
"Collection": "コレクション",
"Email": "Eメールアドレス",
"Verified Email": "確認済みのメール",
"Send Email Invite": "招待メールを送信",
"First Name": "名",
"Last Name": "Last Name",
"Phone Number": "電話番号",
"Tags": "タグ",
"Accepts Marketing ?": "マーケティングを承認しますか?",
"Product Variant": "製品のバリエーション",
"Title": "タイトル",
"Quantity": "数量",
"Price": "価格",
"Customer": "顧客",
"Fulfillment": "フルフィルメント",
"Status": "Status",
"Message": "メッセージ",
"Send Receipt": "領収書を送信",
"Send Fulfillment Receipt": "フルフィルメント領収書を送信",
"Description": "Description",
"Product Type": "製品タイプ",
"Product Image": "商品画像",
"Vendor": "仕入先",
"Type": "タイプ",
"Currency": "通貨",
"Amount": "金額",
"Authorization Key": "認証キー",
"Parent ID": "親ID",
"Source": "ソース",
"Test": "テスト",
"Asset Key": "Asset Key",
"Theme": "テーマ",
"Customer ID": "顧客 ID",
"Transaction": "取引",
"Note": "メモ",
"Image": "画像",
"Position": "位置",
"Method": "方法",
"Headers": "ヘッダー",
"Query Parameters": "クエリパラメータ",
"Body": "本文",
"Response is Binary ?": "応答はバイナリですか?",
"No Error on Failure": "失敗時にエラーはありません",
"Timeout (in seconds)": "タイムアウト(秒)",
"The ID of the inventory item.": "在庫アイテムのID。",
"The ID of the location.": "場所のID。",
"Positive values increase inventory, negative values decrease it.": "正の値は在庫を増やし、負の値はそれを減少させます。",
"The ID of the order.": "注文のID",
"The ID of the product.": "製品の ID",
"The ID of the collection.": "コレクションのID。",
"Whether the customer has verified their email.": "顧客がメールアドレスを確認したかどうか。",
"A string of comma-separated tags for filtering and search": "フィルタリングと検索のためのカンマ区切りのタグの文字列",
"The ID of the product to create the order with.": "注文を作成する製品の ID",
"The ID of the variant to create the order with.": "注文を作成するバリアントのID。",
"The ID of the customer to use.": "使用する顧客ID。",
"The ID of the fulfillment.": "フルフィルメントのID。",
"Product description (supports HTML)": "製品説明 (HTML をサポート)",
"A categorization for the product used for filtering and searching products": "フィルタリングと検索に使用される製品の分類",
"The public URL or the base64 image to use": "使用するパブリック URL または base64 イメージです",
"The ID of the order to create a transaction for.": "トランザクションを作成する注文のID。",
"The ID of an associated transaction.": "関連するトランザクションのID。",
"An optional origin of the transaction. Set to external to import a cash transaction for the associated order.": "トランザクションの原産地を指定します。外部に設定すると、関連する注文の現金取引をインポートします。",
"Whether the transaction is a test transaction.": "トランザクションがテストトランザクションかどうか。",
"The ID of the theme.": "テーマのID。",
"The ID of the product variant.": "製品バリエーションのID。",
"The ID of the transaction": "取引のID",
"1 makes it the main image.": "1はそれをメインイメージにします。",
"Authorization headers are injected automatically from your connection.": "認証ヘッダは接続から自動的に注入されます。",
"Enable for files like PDFs, images, etc..": "PDF、画像などのファイルを有効にします。",
"Active": "有効",
"Draft": "下書き",
"Archived": "アーカイブ済み",
"GET": "取得",
"POST": "POST",
"PATCH": "PATCH",
"PUT": "PUT",
"DELETE": "削除",
"HEAD": "頭",
"New Abandoned Checkout": "新規放棄されたチェックアウト",
"New Cancelled Order": "新しいキャンセルされた注文",
"New Customer": "新規顧客",
"New Order": "新規注文",
"Updated Product": "更新された商品",
"New Paid Order": "新しい有料注文",
"Triggers when a checkout is abandoned.": "チェックアウトが放棄されたときにトリガーします。",
"Triggered when order is cancelled": "注文がキャンセルされたときにトリガーされます",
"Triggered when a new customer is created": "新規顧客が作成されたときにトリガーされます",
"Triggered when a new order is created": "新しい注文が作成されたときにトリガーされます",
"Triggered when a product is updated.": "商品が更新されたときにトリガーされます。",
"Triggered when a paid order is created": "支払済み注文が作成されたときに発生します。"
}

View File

@@ -0,0 +1,155 @@
{
"Ecommerce platform for online stores": "Webwinkelplatform voor online winkels",
"Shop Name": "Winkel naam",
"Admin Token": "Admin Token",
"\n**Shop Name**:\n\nYou can find your shop name in the url For example, if the URL is `https://example.myshopify.com/admin`, then your shop name is **example**.\n\n**Admin Token**:\n\n1. Login to your Shopify account\n2. Go to Settings -> Apps\n3. Click on Develop apps\n4. Create an App\n5. Fill the app name\n6. Click on Configure Admin API Scopes (Select the following scopes 'read_orders', 'write_orders', 'write_customers', 'read_customers', 'write_products', 'read_products', 'write_draft_orders', 'read_draft_orders')": "\n**Shop Naam**:\n\nU kunt uw winkelnaam vinden in de url bijvoorbeeld, als de URL `https://voorbeeld is. yshopify.com/admin`, dan is uw winkelnaam **voorbeeld**.\n\n**Admin Token**:\n\n1. Inloggen op uw Shopify account\n2. Ga naar Instellingen -> Apps\n3. Klik op Develop apps\n4. Maak een app\n5. Vul de app naam in\n6. Klik op Configureren Admin API Scopes (Selecteer de volgende toepassings'read_orders', 'write_orders', 'write_customers', 'read_customers', 'write_products', 'read_read_products', 'write_draft_orders', 'read_draft_orders')\n7. Klik op Installatie-app\n8. Kopieer de Admin Toegangstoken\n",
"Adjust Inventory Level": "Pas voorraad niveau aan",
"Cancel Order": "Annuleer bestelling",
"Close Order": "Sluit bestelling",
"Create Collect": "Maak verzameling",
"Create Customer": "Klant aanmaken",
"Create Draft Order": "Conceptvolgorde aanmaken",
"Create Fulfillment Event": "Maak Fulfillment Evenement",
"Create Order": "Bestelling aanmaken",
"Create Product": "Product aanmaken",
"Create Transaction": "Transactie aanmaken",
"Get Asset": "Bezitting ophalen",
"Get Customer": "Klant ophalen",
"Get Customers": "Klanten ophalen",
"Get Customer Orders": "Klantbestellingen ophalen",
"Get Fulfillment": "Verkrijg Vervulling",
"Get Fulfillments": "Fulfillments verkrijgen",
"Get Locations": "Verkrijg Locaties",
"Get Product": "Product ophalen",
"Get Product Variant": "Product Variant verkrijgen",
"Get Products": "Producten ophalen",
"Get Transaction": "Transactie ophalen",
"Get Order Transactions": "Ophalen ordertransacties",
"Update Customer": "Klant bijwerken",
"Update Order": "Bestelling bijwerken",
"Update Product": "Product bijwerken",
"Upload Product Image": "Upload productafbeelding",
"Custom API Call": "Custom API Call",
"Adjust inventory level of an item at a location.": "Pas het voorraadniveau van een item aan op een locatie.",
"Cancel an order.": "Een bestelling annuleren.",
"Close an order.": "Sluit een bestelling.",
"Add a product to a collection.": "Voeg een product toe aan een collectie.",
"Create a new customer.": "Maak een nieuwe klant aan.",
"Create a new draft order.": "Maak een nieuwe kladorder aan.",
"Create a new fulfillment event.": "Maak een nieuw afgehandelde gebeurtenis aan.",
"Create a new order.": "Maak een nieuwe bestelling aan.",
"Create a new product.": "Maak een nieuw product aan.",
"Create a new transaction.": "Maak een nieuwe transactie.",
"Get a theme's asset.": "Krijg het materiaal van een thema.",
"Get an existing customer's information.": "Krijg bestaande klant informatie.",
"Get an existing customers.": "Krijg een bestaande klanten.",
"Get an existing customer's orders.": "Verkrijg de bestaande bestellingen van de klant.",
"Get a fulfillment.": "Krijg een voltooiing.",
"Get an order's fulfillments.": "Verkrijg de resultaten van een bestelling.",
"Get locations.": "Krijg locaties.",
"Get existing product.": "Bestaand product ophalen.",
"Get a product variant.": "Verkrijg een product variant.",
"Get existing products by title.": "Bestaande producten verkrijgen op titel.",
"Get an existing transaction's information.": "Krijg een bestaande transactieinformatie.",
"Get an order's transactions.": "Ontvang transacties van een bestelling.",
"Update an existing customer.": "Een bestaande klant bijwerken.",
"Update an existing order.": "Een bestaande bestelling bijwerken.",
"Update an existing product.": "Een bestaand product bijwerken.",
"Upload a new product image.": "Upload een nieuwe productafbeelding.",
"Make a custom API call to a specific endpoint": "Maak een aangepaste API call naar een specifiek eindpunt",
"Inventory Item": "Voorraad item",
"Location": "Locatie",
"Adjustment": "Aanpassing",
"Order": "Bestelling",
"Product": "product",
"Collection": "Collectie",
"Email": "E-mail",
"Verified Email": "Geverifieerde e-mail",
"Send Email Invite": "Stuur e-mail uitnodiging",
"First Name": "Voornaam",
"Last Name": "Achternaam",
"Phone Number": "Telefoon nummer",
"Tags": "Labels",
"Accepts Marketing ?": "De marketing accepteren?",
"Product Variant": "Product variant",
"Title": "Aanspreektitel",
"Quantity": "Aantal",
"Price": "Prijs",
"Customer": "Klant",
"Fulfillment": "Vervulling",
"Status": "status",
"Message": "bericht",
"Send Receipt": "Stuur ontvangstbewijs",
"Send Fulfillment Receipt": "Stuur volledig betalingsbewijs",
"Description": "Beschrijving",
"Product Type": "Type product",
"Product Image": "Product afbeelding",
"Vendor": "Leverancier",
"Type": "Type",
"Currency": "valuta",
"Amount": "Hoeveelheid",
"Authorization Key": "Autorisatie sleutel",
"Parent ID": "Bovenliggende ID",
"Source": "Bron",
"Test": "Test",
"Asset Key": "Asset Key",
"Theme": "Thema",
"Customer ID": "Klant ID",
"Transaction": "Transactie",
"Note": "Notitie",
"Image": "Afbeelding",
"Position": "Positie",
"Method": "Methode",
"Headers": "Kopteksten",
"Query Parameters": "Query parameters",
"Body": "Lichaam",
"Response is Binary ?": "Antwoord is binair?",
"No Error on Failure": "Geen fout bij fout",
"Timeout (in seconds)": "Time-out (in seconden)",
"The ID of the inventory item.": "De ID van het voorraadselitem.",
"The ID of the location.": "Het ID van de locatie.",
"Positive values increase inventory, negative values decrease it.": "Positieve waarden verhogen inventarisatie, negatieve waarden verlagen deze.",
"The ID of the order.": "Het ID van de bestelling.",
"The ID of the product.": "De ID van het product.",
"The ID of the collection.": "Het ID van de collectie.",
"Whether the customer has verified their email.": "Of de klant zijn e-mail heeft geverifieerd.",
"A string of comma-separated tags for filtering and search": "Een string van komma-gescheiden tags voor filteren en zoeken",
"The ID of the product to create the order with.": "Het ID van het product waarmee u de bestelling wilt aanmaken.",
"The ID of the variant to create the order with.": "Het ID van de variant waarmee de bestelling wordt aangemaakt.",
"The ID of the customer to use.": "Het ID van de klant om te gebruiken.",
"The ID of the fulfillment.": "De ID van de afhandeling.",
"Product description (supports HTML)": "Productbeschrijving (ondersteunt HTML)",
"A categorization for the product used for filtering and searching products": "Een categorisatie voor het product dat gebruikt wordt voor het filteren en zoeken van producten",
"The public URL or the base64 image to use": "De openbare URL of de base64 afbeelding die gebruikt moet worden",
"The ID of the order to create a transaction for.": "Het ID van de bestelling voor het maken van een transactie.",
"The ID of an associated transaction.": "Het ID van een gekoppelde transactie.",
"An optional origin of the transaction. Set to external to import a cash transaction for the associated order.": "Een optionele oorsprong van de transactie. Stel in op extern om een transactie met contant geld te importeren voor de bijbehorende bestelling.",
"Whether the transaction is a test transaction.": "Of de transactie een test transactie is.",
"The ID of the theme.": "De ID van het thema.",
"The ID of the product variant.": "Het ID van de product variant.",
"The ID of the transaction": "Het ID van de transactie",
"1 makes it the main image.": "1 maakt het tot de belangrijkste afbeelding.",
"Authorization headers are injected automatically from your connection.": "Autorisatie headers worden automatisch geïnjecteerd vanuit uw verbinding.",
"Enable for files like PDFs, images, etc..": "Inschakelen voor bestanden zoals PDF's, afbeeldingen etc..",
"Active": "Actief",
"Draft": "Concept",
"Archived": "Gearchiveerd",
"GET": "KRIJG",
"POST": "POSTE",
"PATCH": "BEKIJK",
"PUT": "PUT",
"DELETE": "VERWIJDEREN",
"HEAD": "HOOFD",
"New Abandoned Checkout": "Nieuwe verlaten kassa",
"New Cancelled Order": "Nieuwe geannuleerde bestelling",
"New Customer": "Nieuwe klant",
"New Order": "Nieuwe bestelling",
"Updated Product": "Product bijgewerkt",
"New Paid Order": "Nieuwe betaalde bestelling",
"Triggers when a checkout is abandoned.": "Triggert wanneer een afrekening wordt verlaten.",
"Triggered when order is cancelled": "Uitgelokt wanneer bestelling is geannuleerd",
"Triggered when a new customer is created": "Uitgelokt wanneer een nieuwe klant wordt aangemaakt",
"Triggered when a new order is created": "Uitgelokt wanneer een nieuwe order wordt aangemaakt",
"Triggered when a product is updated.": "Uitgelokt wanneer een product wordt bijgewerkt.",
"Triggered when a paid order is created": "Uitgelokt wanneer een betaalde bestelling is aangemaakt"
}

View File

@@ -0,0 +1,155 @@
{
"Ecommerce platform for online stores": "Plataforma de comércio eletrônico para lojas on-line",
"Shop Name": "Nome da loja",
"Admin Token": "Token Admin",
"\n**Shop Name**:\n\nYou can find your shop name in the url For example, if the URL is `https://example.myshopify.com/admin`, then your shop name is **example**.\n\n**Admin Token**:\n\n1. Login to your Shopify account\n2. Go to Settings -> Apps\n3. Click on Develop apps\n4. Create an App\n5. Fill the app name\n6. Click on Configure Admin API Scopes (Select the following scopes 'read_orders', 'write_orders', 'write_customers', 'read_customers', 'write_products', 'read_products', 'write_draft_orders', 'read_draft_orders')": "\n**Nome da Loja**:\n\nVocê pode encontrar o nome da sua loja na url, por exemplo, se o URL for `https://example yshopify.com/admin`, então o nome da sua loja é **exemplo**.\n\n**Token de Admin**:\n\n1. Entre na sua conta de Shopify\n2. Vá para Configurações -> Apps\n3. Clique em desenvolver aplicativos\n4. Crie um aplicativo\n5. Preencha o nome do aplicativo\n6. Clique em Configurar Escopos API de Administrador (selecione os seguintes escopos 'read_orders', 'write_orders', 'write_customers', 'read_customers', 'write_products', 'read_products', 'write_draft_orders', 'read_draft_orders')\n7. Clique em instalar app\n8. Copie o Token de Acesso Admin\n",
"Adjust Inventory Level": "Ajustar nível do inventário",
"Cancel Order": "Cancelar ordem",
"Close Order": "Fechar pedido",
"Create Collect": "Criar Coletar",
"Create Customer": "Criar Cliente",
"Create Draft Order": "Criar pedido",
"Create Fulfillment Event": "Criar Evento de Cumprimento",
"Create Order": "Criar pedido",
"Create Product": "Criar Produto",
"Create Transaction": "Criar transação",
"Get Asset": "Obter Bem",
"Get Customer": "Obter Cliente",
"Get Customers": "Obter Clientes",
"Get Customer Orders": "Obter Pedidos de Clientes",
"Get Fulfillment": "Obter satisfação",
"Get Fulfillments": "Obter Cumprimentos",
"Get Locations": "Obter Localizações",
"Get Product": "Obter Produto",
"Get Product Variant": "Obter variante do produto",
"Get Products": "Obter produtos",
"Get Transaction": "Obter transação",
"Get Order Transactions": "Obter transações de pedidos",
"Update Customer": "Atualizar Cliente",
"Update Order": "Atualizar Ordem",
"Update Product": "Atualização de Produto",
"Upload Product Image": "Carregar imagem do produto",
"Custom API Call": "Chamada de API personalizada",
"Adjust inventory level of an item at a location.": "Ajuste o nível de inventário de um item em um local.",
"Cancel an order.": "Cancele um pedido.",
"Close an order.": "Fechar um pedido.",
"Add a product to a collection.": "Adicionar um produto à coleção.",
"Create a new customer.": "Criar um novo cliente.",
"Create a new draft order.": "Criar um novo rascunho de pedido.",
"Create a new fulfillment event.": "Criar um novo evento de cumprimento.",
"Create a new order.": "Criar um novo pedido.",
"Create a new product.": "Criar um novo produto.",
"Create a new transaction.": "Cria uma nova transação.",
"Get a theme's asset.": "Obtenha o ativo de um tema.",
"Get an existing customer's information.": "Obter informações de um cliente existente.",
"Get an existing customers.": "Consiga um cliente existente.",
"Get an existing customer's orders.": "Obter ordens de um cliente existente.",
"Get a fulfillment.": "Seja um cumprimento.",
"Get an order's fulfillments.": "Obtenha os cumprimentos de um pedido.",
"Get locations.": "Obter localizações.",
"Get existing product.": "Obter produto existente.",
"Get a product variant.": "Obter uma variante de produto.",
"Get existing products by title.": "Obter produtos existentes por título.",
"Get an existing transaction's information.": "Obtém a informação de uma transação existente.",
"Get an order's transactions.": "Obtenha transações de um pedido.",
"Update an existing customer.": "Atualizar um cliente existente.",
"Update an existing order.": "Atualizar um pedido existente.",
"Update an existing product.": "Atualizar um produto existente.",
"Upload a new product image.": "Envie uma nova imagem do produto.",
"Make a custom API call to a specific endpoint": "Faça uma chamada de API personalizada para um ponto de extremidade específico",
"Inventory Item": "itens de estoque",
"Location": "Local:",
"Adjustment": "Ajuste",
"Order": "Encomenda",
"Product": "Produto:",
"Collection": "Coleção",
"Email": "e-mail",
"Verified Email": "E-mail verificado",
"Send Email Invite": "Enviar convite por e-mail",
"First Name": "Nome",
"Last Name": "Sobrenome",
"Phone Number": "Número de telefone",
"Tags": "Etiquetas",
"Accepts Marketing ?": "Aceita Marketing ?",
"Product Variant": "Variante do Produto",
"Title": "Título",
"Quantity": "Quantidade",
"Price": "Quantidade",
"Customer": "Cliente",
"Fulfillment": "Cumprimento",
"Status": "Estado",
"Message": "mensagem",
"Send Receipt": "Enviar recibo",
"Send Fulfillment Receipt": "Enviar recibo de satisfação",
"Description": "Descrição",
"Product Type": "Tipo de Produto",
"Product Image": "Imagem Produto",
"Vendor": "Fornecedor",
"Type": "tipo",
"Currency": "moeda",
"Amount": "Quantidade",
"Authorization Key": "Chave de autorização",
"Parent ID": "ID Pai",
"Source": "fonte",
"Test": "teste",
"Asset Key": "Asset Key",
"Theme": "Tema",
"Customer ID": "ID do cliente",
"Transaction": "Transação",
"Note": "Observação",
"Image": "Imagem:",
"Position": "Posição",
"Method": "Método",
"Headers": "Cabeçalhos",
"Query Parameters": "Parâmetros da consulta",
"Body": "Conteúdo",
"Response is Binary ?": "A resposta é binária ?",
"No Error on Failure": "Nenhum erro no Failure",
"Timeout (in seconds)": "Tempo limite (em segundos)",
"The ID of the inventory item.": "A ID do item de inventário.",
"The ID of the location.": "O ID do local.",
"Positive values increase inventory, negative values decrease it.": "Valores positivos aumentam o inventário, valores negativos diminuem.",
"The ID of the order.": "O ID do pedido.",
"The ID of the product.": "O ID do produto.",
"The ID of the collection.": "O ID da coleção.",
"Whether the customer has verified their email.": "Se o cliente verificou o seu e-mail.",
"A string of comma-separated tags for filtering and search": "Uma sequência de tags separadas por vírgulas para filtragem e busca",
"The ID of the product to create the order with.": "O ID do produto com o qual será criado o pedido.",
"The ID of the variant to create the order with.": "O ID da variante para criar o pedido.",
"The ID of the customer to use.": "O ID do cliente a ser usado.",
"The ID of the fulfillment.": "A identificação do cumprimento.",
"Product description (supports HTML)": "Descrição do produto (suporta HTML)",
"A categorization for the product used for filtering and searching products": "Uma categorização para o produto usado para filtrar e pesquisar produtos",
"The public URL or the base64 image to use": "A URL pública ou a imagem base64 a ser usada",
"The ID of the order to create a transaction for.": "A ID do pedido para criar uma transação para.",
"The ID of an associated transaction.": "O ID de uma transação associada.",
"An optional origin of the transaction. Set to external to import a cash transaction for the associated order.": "Uma origem opcional da transação. Defina como externa para importar uma transação de caixa para o pedido associado.",
"Whether the transaction is a test transaction.": "Se a transação é uma transação de teste.",
"The ID of the theme.": "O ID do tema.",
"The ID of the product variant.": "O ID da variante do produto.",
"The ID of the transaction": "A ID da transação",
"1 makes it the main image.": "1 faz dela a principal imagem.",
"Authorization headers are injected automatically from your connection.": "Os cabeçalhos de autorização são inseridos automaticamente a partir da sua conexão.",
"Enable for files like PDFs, images, etc..": "Habilitar para arquivos como PDFs, imagens, etc..",
"Active": "Ativo",
"Draft": "Rascunho",
"Archived": "Arquivado",
"GET": "OBTER",
"POST": "POSTAR",
"PATCH": "COMPRAR",
"PUT": "COLOCAR",
"DELETE": "EXCLUIR",
"HEAD": "CABEÇA",
"New Abandoned Checkout": "Novo Checkout Abandonado",
"New Cancelled Order": "Novo pedido cancelado",
"New Customer": "Novo Cliente",
"New Order": "Novo Pedido",
"Updated Product": "Produto atualizado",
"New Paid Order": "Novo Pedido Pago",
"Triggers when a checkout is abandoned.": "Dispara quando um check-out é abandonado.",
"Triggered when order is cancelled": "Acionada quando a ordem é cancelada",
"Triggered when a new customer is created": "Acionada quando um novo cliente é criado",
"Triggered when a new order is created": "Acionada quando uma nova ordem é criada",
"Triggered when a product is updated.": "Acionada quando um produto é atualizado.",
"Triggered when a paid order is created": "Acionada quando uma ordem paga é criada"
}

View File

@@ -0,0 +1,153 @@
{
"Shopify": "Магазин",
"Ecommerce platform for online stores": "Электронная платформа для интернет-магазинов",
"Shop Name": "Название магазина",
"Admin Token": "Маркер администратора",
"\n**Shop Name**:\n\nYou can find your shop name in the url For example, if the URL is `https://example.myshopify.com/admin`, then your shop name is **example**.\n\n**Admin Token**:\n\n1. Login to your Shopify account\n2. Go to Settings -> Apps\n3. Click on Develop apps\n4. Create an App\n5. Fill the app name\n6. Click on Configure Admin API Scopes (Select the following scopes 'read_orders', 'write_orders', 'write_customers', 'read_customers', 'write_products', 'read_products', 'write_draft_orders', 'read_draft_orders')": "\n**Название магазина**:\n\nНазвание магазина можно найти в url Например, если URL-адрес `https://example. yshopify.com/admin`, то название вашего магазина **example**.\n\n**Admin Token**:\n\n1. Войдите в свой аккаунт Shopify\n2. Перейдите в Настройки -> Приложения\n3. Нажмите на Разработку приложений\n4. Создайте приложение\n5. Заполните имя приложения\n6. Нажмите на Настроить API администратора (выберите следующие области 'read_orders', 'write_orders', 'write_customers', 'read_customers', 'write_products', 'read_products', 'write_draft_orders', 'read_draft_orders')\n7. Нажмите на кнопку Install app\n8. Скопируйте маркер доступа администратора\n",
"Adjust Inventory Level": "Настроить уровень инвентаря",
"Cancel Order": "Отменить заказ",
"Close Order": "Закрыть заказ",
"Create Collect": "Создать сбор",
"Create Customer": "Создать клиента",
"Create Draft Order": "Создать порядок черновиков",
"Create Fulfillment Event": "Создать Заполнение",
"Create Order": "Создать заказ",
"Create Product": "Создать продукт",
"Create Transaction": "Создать транзакцию",
"Get Asset": "Получить актив",
"Get Customer": "Получить клиента",
"Get Customers": "Получить клиентов",
"Get Customer Orders": "Получение заказов клиента",
"Get Fulfillment": "Получить автозаполнение",
"Get Fulfillments": "Получать заказы",
"Get Locations": "Получить местоположение",
"Get Product": "Получить продукт",
"Get Product Variant": "Получить вариант продукта",
"Get Products": "Получить товары",
"Get Transaction": "Получить транзакцию",
"Get Order Transactions": "Получить операции с заказами",
"Update Customer": "Обновить клиента",
"Update Order": "Изменить порядок",
"Update Product": "Обновить продукт",
"Upload Product Image": "Загрузить изображение товара",
"Custom API Call": "Пользовательский вызов API",
"Adjust inventory level of an item at a location.": "Регулировка уровня инвентаря предмета.",
"Cancel an order.": "Отменить заказ.",
"Close an order.": "Закрыть заказ.",
"Add a product to a collection.": "Добавить продукт в коллекцию.",
"Create a new customer.": "Создать нового клиента.",
"Create a new draft order.": "Создать новый заказ черновика.",
"Create a new fulfillment event.": "Создать новое событие выполнения заказа.",
"Create a new order.": "Создать новый заказ.",
"Create a new product.": "Создать новый товар.",
"Create a new transaction.": "Создать новую транзакцию.",
"Get a theme's asset.": "Получить медиафайл темы.",
"Get an existing customer's information.": "Получить информацию о покупателе.",
"Get an existing customers.": "Получить существующих клиентов.",
"Get an existing customer's orders.": "Получить существующие заказы клиента.",
"Get a fulfillment.": "Получить платеж.",
"Get an order's fulfillments.": "Получить выполнение заказа.",
"Get locations.": "Получить местоположение.",
"Get existing product.": "Получить существующий товар.",
"Get a product variant.": "Получить вариант товара.",
"Get existing products by title.": "Получать существующие товары по названию.",
"Get an existing transaction's information.": "Получить информацию о существующей транзакции.",
"Get an order's transactions.": "Получить транзакции по заказу.",
"Update an existing customer.": "Обновить существующего клиента.",
"Update an existing order.": "Обновить существующий заказ.",
"Update an existing product.": "Обновить существующий товар.",
"Upload a new product image.": "Загрузить новое изображение товара.",
"Make a custom API call to a specific endpoint": "Сделать пользовательский API вызов к определенной конечной точке",
"Inventory Item": "Предмет инвентаря",
"Location": "Местоположение",
"Adjustment": "Корректировка",
"Order": "Заказ",
"Product": "Товар",
"Collection": "Коллекция",
"Email": "Почта",
"Verified Email": "Подтверждённый Email",
"Send Email Invite": "Отправить приглашение по электронной почте",
"First Name": "First Name",
"Last Name": "Last Name",
"Phone Number": "Номер телефона",
"Tags": "Теги",
"Product Variant": "Вариант продукта",
"Title": "Заголовок",
"Quantity": "Количество",
"Price": "Цена",
"Customer": "Покупатель",
"Fulfillment": "Закупка",
"Status": "Status",
"Message": "Сообщение",
"Send Receipt": "Отправить квитанцию",
"Send Fulfillment Receipt": "Отправить квитанцию о покупке",
"Description": "Description",
"Product Type": "Тип товара",
"Product Image": "Изображение товара",
"Vendor": "Поставщик",
"Type": "Тип",
"Currency": "Валюта",
"Amount": "Сумма",
"Authorization Key": "Ключ авторизации",
"Parent ID": "Родительский ID",
"Source": "Источник",
"Test": "Тест",
"Asset Key": "Asset Key",
"Theme": "Тема",
"Customer ID": "ID клиента",
"Transaction": "Транзакция",
"Note": "Примечание",
"Image": "Изображение",
"Position": "Позиция",
"Method": "Метод",
"Headers": "Заголовки",
"Query Parameters": "Параметры запроса",
"Body": "Тело",
"No Error on Failure": "Нет ошибок при ошибке",
"Timeout (in seconds)": "Таймаут (в секундах)",
"The ID of the inventory item.": "Идентификатор товара в инвентаре.",
"The ID of the location.": "ID местоположения.",
"Positive values increase inventory, negative values decrease it.": "Положительные значения повышают запасы, отрицательные значения уменьшают его.",
"The ID of the order.": "ID заказа.",
"The ID of the product.": "ID товара.",
"The ID of the collection.": "Идентификатор коллекции.",
"Whether the customer has verified their email.": "Проверяет ли клиент свой адрес электронной почты.",
"A string of comma-separated tags for filtering and search": "Строка тегов, разделенных запятыми для фильтрации и поиска",
"The ID of the product to create the order with.": "ID товара для создания заказа.",
"The ID of the variant to create the order with.": "Идентификатор варианта для создания заказа.",
"The ID of the customer to use.": "ID используемого клиента.",
"The ID of the fulfillment.": "Идентификатор исполнения.",
"Product description (supports HTML)": "Описание товара (поддерживает HTML)",
"A categorization for the product used for filtering and searching products": "Категория для продукта, используемого для фильтрации и поиска продуктов",
"The public URL or the base64 image to use": "Публичный URL или изображение base64 для использования",
"The ID of the order to create a transaction for.": "ID ордера для создания транзакции.",
"The ID of an associated transaction.": "ID связанной транзакции.",
"An optional origin of the transaction. Set to external to import a cash transaction for the associated order.": "Необязательный источник транзакции. Установите внешний для импорта операции с наличными для соответствующего заказа.",
"Whether the transaction is a test transaction.": "Является ли транзакция тестовой транзакцией.",
"The ID of the theme.": "Идентификатор темы.",
"The ID of the product variant.": "Идентификатор варианта продукта.",
"The ID of the transaction": "ID транзакции",
"1 makes it the main image.": "1 делает его главным изображением.",
"Authorization headers are injected automatically from your connection.": "Заголовки авторизации включаются автоматически из вашего соединения.",
"Active": "Активен",
"Draft": "Черновик",
"Archived": "Архивировано",
"GET": "ПОЛУЧИТЬ",
"POST": "ПОСТ",
"PATCH": "ПАТЧ",
"PUT": "ПОКУПИТЬ",
"DELETE": "УДАЛИТЬ",
"HEAD": "HEAD",
"New Abandoned Checkout": "Новый брошенный заказ",
"New Cancelled Order": "Новый отмененный заказ",
"New Customer": "Новый клиент",
"New Order": "Новый заказ",
"Updated Product": "Обновленный товар",
"New Paid Order": "Новый платный заказ",
"Triggers when a checkout is abandoned.": "Триггеры при отмене заказа.",
"Triggered when order is cancelled": "Срабатывает при отмене заказа",
"Triggered when a new customer is created": "Срабатывает при создании нового клиента",
"Triggered when a new order is created": "Срабатывает при создании нового заказа",
"Triggered when a product is updated.": "Срабатывает при обновлении продукта.",
"Triggered when a paid order is created": "Срабатывает при создании оплаченного заказа"
}

View File

@@ -0,0 +1,155 @@
{
"Ecommerce platform for online stores": "Ecommerce platform for online stores",
"Shop Name": "Shop Name",
"Admin Token": "Admin Token",
"\n**Shop Name**:\n\nYou can find your shop name in the url For example, if the URL is `https://example.myshopify.com/admin`, then your shop name is **example**.\n\n**Admin Token**:\n\n1. Login to your Shopify account\n2. Go to Settings -> Apps\n3. Click on Develop apps\n4. Create an App\n5. Fill the app name\n6. Click on Configure Admin API Scopes (Select the following scopes 'read_orders', 'write_orders', 'write_customers', 'read_customers', 'write_products', 'read_products', 'write_draft_orders', 'read_draft_orders')": "\n**Shop Name**:\n\nYou can find your shop name in the url For example, if the URL is `https://example.myshopify.com/admin`, then your shop name is **example**.\n\n**Admin Token**:\n\n1. Login to your Shopify account\n2. Go to Settings -> Apps\n3. Click on Develop apps\n4. Create an App\n5. Fill the app name\n6. Click on Configure Admin API Scopes (Select the following scopes 'read_orders', 'write_orders', 'write_customers', 'read_customers', 'write_products', 'read_products', 'write_draft_orders', 'read_draft_orders')\n7. Click on Install app\n8. Copy the Admin Access Token\n",
"Adjust Inventory Level": "Adjust Inventory Level",
"Cancel Order": "Cancel Order",
"Close Order": "Close Order",
"Create Collect": "Create Collect",
"Create Customer": "Create Customer",
"Create Draft Order": "Create Draft Order",
"Create Fulfillment Event": "Create Fulfillment Event",
"Create Order": "Create Order",
"Create Product": "Create Product",
"Create Transaction": "Create Transaction",
"Get Asset": "Get Asset",
"Get Customer": "Get Customer",
"Get Customers": "Get Customers",
"Get Customer Orders": "Get Customer Orders",
"Get Fulfillment": "Get Fulfillment",
"Get Fulfillments": "Get Fulfillments",
"Get Locations": "Get Locations",
"Get Product": "Get Product",
"Get Product Variant": "Get Product Variant",
"Get Products": "Get Products",
"Get Transaction": "Get Transaction",
"Get Order Transactions": "Get Order Transactions",
"Update Customer": "Update Customer",
"Update Order": "Update Order",
"Update Product": "Update Product",
"Upload Product Image": "Upload Product Image",
"Custom API Call": "Custom API Call",
"Adjust inventory level of an item at a location.": "Adjust inventory level of an item at a location.",
"Cancel an order.": "Cancel an order.",
"Close an order.": "Close an order.",
"Add a product to a collection.": "Add a product to a collection.",
"Create a new customer.": "Create a new customer.",
"Create a new draft order.": "Create a new draft order.",
"Create a new fulfillment event.": "Create a new fulfillment event.",
"Create a new order.": "Create a new order.",
"Create a new product.": "Create a new product.",
"Create a new transaction.": "Create a new transaction.",
"Get a theme's asset.": "Get a theme's asset.",
"Get an existing customer's information.": "Get an existing customer's information.",
"Get an existing customers.": "Get an existing customers.",
"Get an existing customer's orders.": "Get an existing customer's orders.",
"Get a fulfillment.": "Get a fulfillment.",
"Get an order's fulfillments.": "Get an order's fulfillments.",
"Get locations.": "Get locations.",
"Get existing product.": "Get existing product.",
"Get a product variant.": "Get a product variant.",
"Get existing products by title.": "Get existing products by title.",
"Get an existing transaction's information.": "Get an existing transaction's information.",
"Get an order's transactions.": "Get an order's transactions.",
"Update an existing customer.": "Update an existing customer.",
"Update an existing order.": "Update an existing order.",
"Update an existing product.": "Update an existing product.",
"Upload a new product image.": "Upload a new product image.",
"Make a custom API call to a specific endpoint": "Make a custom API call to a specific endpoint",
"Inventory Item": "Inventory Item",
"Location": "Location",
"Adjustment": "Adjustment",
"Order": "Order",
"Product": "Product",
"Collection": "Collection",
"Email": "Email",
"Verified Email": "Verified Email",
"Send Email Invite": "Send Email Invite",
"First Name": "First Name",
"Last Name": "Last Name",
"Phone Number": "Phone Number",
"Tags": "Tags",
"Accepts Marketing ?": "Accepts Marketing ?",
"Product Variant": "Product Variant",
"Title": "Title",
"Quantity": "Quantity",
"Price": "Price",
"Customer": "Customer",
"Fulfillment": "Fulfillment",
"Status": "Status",
"Message": "Message",
"Send Receipt": "Send Receipt",
"Send Fulfillment Receipt": "Send Fulfillment Receipt",
"Description": "Description",
"Product Type": "Product Type",
"Product Image": "Product Image",
"Vendor": "Vendor",
"Type": "Type",
"Currency": "Currency",
"Amount": "Amount",
"Authorization Key": "Authorization Key",
"Parent ID": "Parent ID",
"Source": "Source",
"Test": "Test",
"Asset Key": "Asset Key",
"Theme": "Theme",
"Customer ID": "Customer ID",
"Transaction": "Transaction",
"Note": "Note",
"Image": "Image",
"Position": "Position",
"Method": "Method",
"Headers": "Headers",
"Query Parameters": "Query Parameters",
"Body": "Body",
"Response is Binary ?": "Response is Binary ?",
"No Error on Failure": "No Error on Failure",
"Timeout (in seconds)": "Timeout (in seconds)",
"The ID of the inventory item.": "The ID of the inventory item.",
"The ID of the location.": "The ID of the location.",
"Positive values increase inventory, negative values decrease it.": "Positive values increase inventory, negative values decrease it.",
"The ID of the order.": "The ID of the order.",
"The ID of the product.": "The ID of the product.",
"The ID of the collection.": "The ID of the collection.",
"Whether the customer has verified their email.": "Whether the customer has verified their email.",
"A string of comma-separated tags for filtering and search": "A string of comma-separated tags for filtering and search",
"The ID of the product to create the order with.": "The ID of the product to create the order with.",
"The ID of the variant to create the order with.": "The ID of the variant to create the order with.",
"The ID of the customer to use.": "The ID of the customer to use.",
"The ID of the fulfillment.": "The ID of the fulfillment.",
"Product description (supports HTML)": "Product description (supports HTML)",
"A categorization for the product used for filtering and searching products": "A categorization for the product used for filtering and searching products",
"The public URL or the base64 image to use": "The public URL or the base64 image to use",
"The ID of the order to create a transaction for.": "The ID of the order to create a transaction for.",
"The ID of an associated transaction.": "The ID of an associated transaction.",
"An optional origin of the transaction. Set to external to import a cash transaction for the associated order.": "An optional origin of the transaction. Set to external to import a cash transaction for the associated order.",
"Whether the transaction is a test transaction.": "Whether the transaction is a test transaction.",
"The ID of the theme.": "The ID of the theme.",
"The ID of the product variant.": "The ID of the product variant.",
"The ID of the transaction": "The ID of the transaction",
"1 makes it the main image.": "1 makes it the main image.",
"Authorization headers are injected automatically from your connection.": "Authorization headers are injected automatically from your connection.",
"Enable for files like PDFs, images, etc..": "Enable for files like PDFs, images, etc..",
"Active": "Active",
"Draft": "Draft",
"Archived": "Archived",
"GET": "GET",
"POST": "POST",
"PATCH": "PATCH",
"PUT": "PUT",
"DELETE": "DELETE",
"HEAD": "HEAD",
"New Abandoned Checkout": "New Abandoned Checkout",
"New Cancelled Order": "New Cancelled Order",
"New Customer": "New Customer",
"New Order": "New Order",
"Updated Product": "Updated Product",
"New Paid Order": "New Paid Order",
"Triggers when a checkout is abandoned.": "Triggers when a checkout is abandoned.",
"Triggered when order is cancelled": "Triggered when order is cancelled",
"Triggered when a new customer is created": "Triggered when a new customer is created",
"Triggered when a new order is created": "Triggered when a new order is created",
"Triggered when a product is updated.": "Triggered when a product is updated.",
"Triggered when a paid order is created": "Triggered when a paid order is created"
}

View File

@@ -0,0 +1,153 @@
{
"Shopify": "Shopify",
"Ecommerce platform for online stores": "Ecommerce platform for online stores",
"Shop Name": "Shop Name",
"Admin Token": "Admin Token",
"\n**Shop Name**:\n\nYou can find your shop name in the url For example, if the URL is `https://example.myshopify.com/admin`, then your shop name is **example**.\n\n**Admin Token**:\n\n1. Login to your Shopify account\n2. Go to Settings -> Apps\n3. Click on Develop apps\n4. Create an App\n5. Fill the app name\n6. Click on Configure Admin API Scopes (Select the following scopes 'read_orders', 'write_orders', 'write_customers', 'read_customers', 'write_products', 'read_products', 'write_draft_orders', 'read_draft_orders')": "\n**Shop Name**:\n\nYou can find your shop name in the url For example, if the URL is `https://example.myshopify.com/admin`, then your shop name is **example**.\n\n**Admin Token**:\n\n1. Login to your Shopify account\n2. Go to Settings -> Apps\n3. Click on Develop apps\n4. Create an App\n5. Fill the app name\n6. Click on Configure Admin API Scopes (Select the following scopes 'read_orders', 'write_orders', 'write_customers', 'read_customers', 'write_products', 'read_products', 'write_draft_orders', 'read_draft_orders')\n7. Click on Install app\n8. Copy the Admin Access Token\n",
"Adjust Inventory Level": "Adjust Inventory Level",
"Cancel Order": "Cancel Order",
"Close Order": "Close Order",
"Create Collect": "Create Collect",
"Create Customer": "Create Customer",
"Create Draft Order": "Create Draft Order",
"Create Fulfillment Event": "Create Fulfillment Event",
"Create Order": "Create Order",
"Create Product": "Create Product",
"Create Transaction": "Create Transaction",
"Get Asset": "Get Asset",
"Get Customer": "Get Customer",
"Get Customers": "Get Customers",
"Get Customer Orders": "Get Customer Orders",
"Get Fulfillment": "Get Fulfillment",
"Get Fulfillments": "Get Fulfillments",
"Get Locations": "Get Locations",
"Get Product": "Get Product",
"Get Product Variant": "Get Product Variant",
"Get Products": "Get Products",
"Get Transaction": "Get Transaction",
"Get Order Transactions": "Get Order Transactions",
"Update Customer": "Update Customer",
"Update Order": "Update Order",
"Update Product": "Update Product",
"Upload Product Image": "Upload Product Image",
"Custom API Call": "Custom API Call",
"Adjust inventory level of an item at a location.": "Adjust inventory level of an item at a location.",
"Cancel an order.": "Cancel an order.",
"Close an order.": "Close an order.",
"Add a product to a collection.": "Add a product to a collection.",
"Create a new customer.": "Create a new customer.",
"Create a new draft order.": "Create a new draft order.",
"Create a new fulfillment event.": "Create a new fulfillment event.",
"Create a new order.": "Create a new order.",
"Create a new product.": "Create a new product.",
"Create a new transaction.": "Create a new transaction.",
"Get a theme's asset.": "Get a theme's asset.",
"Get an existing customer's information.": "Get an existing customer's information.",
"Get an existing customers.": "Get an existing customers.",
"Get an existing customer's orders.": "Get an existing customer's orders.",
"Get a fulfillment.": "Get a fulfillment.",
"Get an order's fulfillments.": "Get an order's fulfillments.",
"Get locations.": "Get locations.",
"Get existing product.": "Get existing product.",
"Get a product variant.": "Get a product variant.",
"Get existing products by title.": "Get existing products by title.",
"Get an existing transaction's information.": "Get an existing transaction's information.",
"Get an order's transactions.": "Get an order's transactions.",
"Update an existing customer.": "Update an existing customer.",
"Update an existing order.": "Update an existing order.",
"Update an existing product.": "Update an existing product.",
"Upload a new product image.": "Upload a new product image.",
"Make a custom API call to a specific endpoint": "Make a custom API call to a specific endpoint",
"Inventory Item": "Inventory Item",
"Location": "Location",
"Adjustment": "Adjustment",
"Order": "Order",
"Product": "Product",
"Collection": "Collection",
"Email": "Email",
"Verified Email": "Email đã được xác minh",
"Send Email Invite": "Send Email Invite",
"First Name": "First Name",
"Last Name": "Last Name",
"Phone Number": "Phone Number",
"Tags": "Tags",
"Product Variant": "Product Variant",
"Title": "Title",
"Quantity": "Quantity",
"Price": "Price",
"Customer": "Customer",
"Fulfillment": "Fulfillment",
"Status": "Status",
"Message": "Message",
"Send Receipt": "Send Receipt",
"Send Fulfillment Receipt": "Send Fulfillment Receipt",
"Description": "Description",
"Product Type": "Product Type",
"Product Image": "Product Image",
"Vendor": "Vendor",
"Type": "Type",
"Currency": "Currency",
"Amount": "Amount",
"Authorization Key": "Authorization Key",
"Parent ID": "Parent ID",
"Source": "Source",
"Test": "Test",
"Asset Key": "Asset Key",
"Theme": "Theme",
"Customer ID": "Customer ID",
"Transaction": "Transaction",
"Note": "Note",
"Image": "Image",
"Position": "Position",
"Method": "Method",
"Headers": "Headers",
"Query Parameters": "Query Parameters",
"Body": "Body",
"No Error on Failure": "No Error on Failure",
"Timeout (in seconds)": "Timeout (in seconds)",
"The ID of the inventory item.": "The ID of the inventory item.",
"The ID of the location.": "The ID of the location.",
"Positive values increase inventory, negative values decrease it.": "Positive values increase inventory, negative values decrease it.",
"The ID of the order.": "The ID of the order.",
"The ID of the product.": "The ID of the product.",
"The ID of the collection.": "The ID of the collection.",
"Whether the customer has verified their email.": "Whether the customer has verified their email.",
"A string of comma-separated tags for filtering and search": "A string of comma-separated tags for filtering and search",
"The ID of the product to create the order with.": "The ID of the product to create the order with.",
"The ID of the variant to create the order with.": "The ID of the variant to create the order with.",
"The ID of the customer to use.": "The ID of the customer to use.",
"The ID of the fulfillment.": "The ID of the fulfillment.",
"Product description (supports HTML)": "Product description (supports HTML)",
"A categorization for the product used for filtering and searching products": "A categorization for the product used for filtering and searching products",
"The public URL or the base64 image to use": "The public URL or the base64 image to use",
"The ID of the order to create a transaction for.": "The ID of the order to create a transaction for.",
"The ID of an associated transaction.": "The ID of an associated transaction.",
"An optional origin of the transaction. Set to external to import a cash transaction for the associated order.": "An optional origin of the transaction. Set to external to import a cash transaction for the associated order.",
"Whether the transaction is a test transaction.": "Whether the transaction is a test transaction.",
"The ID of the theme.": "The ID of the theme.",
"The ID of the product variant.": "The ID of the product variant.",
"The ID of the transaction": "The ID of the transaction",
"1 makes it the main image.": "1 makes it the main image.",
"Authorization headers are injected automatically from your connection.": "Authorization headers are injected automatically from your connection.",
"Active": "Tích cực",
"Draft": "Bản nháp",
"Archived": "Archived",
"GET": "GET",
"POST": "POST",
"PATCH": "PATCH",
"PUT": "PUT",
"DELETE": "DELETE",
"HEAD": "HEAD",
"New Abandoned Checkout": "New Abandoned Checkout",
"New Cancelled Order": "New Cancelled Order",
"New Customer": "New Customer",
"New Order": "New Order",
"Updated Product": "Updated Product",
"New Paid Order": "New Paid Order",
"Triggers when a checkout is abandoned.": "Triggers when a checkout is abandoned.",
"Triggered when order is cancelled": "Triggered when order is cancelled",
"Triggered when a new customer is created": "Triggered when a new customer is created",
"Triggered when a new order is created": "Triggered when a new order is created",
"Triggered when a product is updated.": "Triggered when a product is updated.",
"Triggered when a paid order is created": "Triggered when a paid order is created"
}

View File

@@ -0,0 +1,155 @@
{
"Ecommerce platform for online stores": "Ecommerce platform for online stores",
"Shop Name": "Shop Name",
"Admin Token": "Admin Token",
"\n**Shop Name**:\n\nYou can find your shop name in the url For example, if the URL is `https://example.myshopify.com/admin`, then your shop name is **example**.\n\n**Admin Token**:\n\n1. Login to your Shopify account\n2. Go to Settings -> Apps\n3. Click on Develop apps\n4. Create an App\n5. Fill the app name\n6. Click on Configure Admin API Scopes (Select the following scopes 'read_orders', 'write_orders', 'write_customers', 'read_customers', 'write_products', 'read_products', 'write_draft_orders', 'read_draft_orders')": "\n**Shop Name**:\n\nYou can find your shop name in the url For example, if the URL is `https://example.myshopify.com/admin`, then your shop name is **example**.\n\n**Admin Token**:\n\n1. Login to your Shopify account\n2. Go to Settings -> Apps\n3. Click on Develop apps\n4. Create an App\n5. Fill the app name\n6. Click on Configure Admin API Scopes (Select the following scopes 'read_orders', 'write_orders', 'write_customers', 'read_customers', 'write_products', 'read_products', 'write_draft_orders', 'read_draft_orders')\n7. Click on Install app\n8. Copy the Admin Access Token\n",
"Adjust Inventory Level": "Adjust Inventory Level",
"Cancel Order": "Cancel Order",
"Close Order": "Close Order",
"Create Collect": "Create Collect",
"Create Customer": "Create Customer",
"Create Draft Order": "Create Draft Order",
"Create Fulfillment Event": "Create Fulfillment Event",
"Create Order": "Create Order",
"Create Product": "Create Product",
"Create Transaction": "Create Transaction",
"Get Asset": "Get Asset",
"Get Customer": "Get Customer",
"Get Customers": "Get Customers",
"Get Customer Orders": "Get Customer Orders",
"Get Fulfillment": "Get Fulfillment",
"Get Fulfillments": "Get Fulfillments",
"Get Locations": "Get Locations",
"Get Product": "Get Product",
"Get Product Variant": "Get Product Variant",
"Get Products": "Get Products",
"Get Transaction": "Get Transaction",
"Get Order Transactions": "Get Order Transactions",
"Update Customer": "Update Customer",
"Update Order": "Update Order",
"Update Product": "Update Product",
"Upload Product Image": "Upload Product Image",
"Custom API Call": "自定义 API 呼叫",
"Adjust inventory level of an item at a location.": "Adjust inventory level of an item at a location.",
"Cancel an order.": "Cancel an order.",
"Close an order.": "Close an order.",
"Add a product to a collection.": "Add a product to a collection.",
"Create a new customer.": "Create a new customer.",
"Create a new draft order.": "Create a new draft order.",
"Create a new fulfillment event.": "Create a new fulfillment event.",
"Create a new order.": "Create a new order.",
"Create a new product.": "Create a new product.",
"Create a new transaction.": "Create a new transaction.",
"Get a theme's asset.": "Get a theme's asset.",
"Get an existing customer's information.": "Get an existing customer's information.",
"Get an existing customers.": "Get an existing customers.",
"Get an existing customer's orders.": "Get an existing customer's orders.",
"Get a fulfillment.": "Get a fulfillment.",
"Get an order's fulfillments.": "Get an order's fulfillments.",
"Get locations.": "Get locations.",
"Get existing product.": "Get existing product.",
"Get a product variant.": "Get a product variant.",
"Get existing products by title.": "Get existing products by title.",
"Get an existing transaction's information.": "Get an existing transaction's information.",
"Get an order's transactions.": "Get an order's transactions.",
"Update an existing customer.": "Update an existing customer.",
"Update an existing order.": "Update an existing order.",
"Update an existing product.": "Update an existing product.",
"Upload a new product image.": "Upload a new product image.",
"Make a custom API call to a specific endpoint": "将一个自定义 API 调用到一个特定的终点",
"Inventory Item": "Inventory Item",
"Location": "Location",
"Adjustment": "Adjustment",
"Order": "Order",
"Product": "Product",
"Collection": "Collection",
"Email": "电子邮件地址",
"Verified Email": "邮箱已验证",
"Send Email Invite": "Send Email Invite",
"First Name": "First Name",
"Last Name": "名字",
"Phone Number": "Phone Number",
"Tags": "标签",
"Accepts Marketing ?": "Accepts Marketing ?",
"Product Variant": "Product Variant",
"Title": "标题",
"Quantity": "Quantity",
"Price": "Price",
"Customer": "Customer",
"Fulfillment": "Fulfillment",
"Status": "状态",
"Message": "Message",
"Send Receipt": "Send Receipt",
"Send Fulfillment Receipt": "Send Fulfillment Receipt",
"Description": "描述",
"Product Type": "Product Type",
"Product Image": "Product Image",
"Vendor": "Vendor",
"Type": "类型",
"Currency": "Currency",
"Amount": "Amount",
"Authorization Key": "Authorization Key",
"Parent ID": "Parent ID",
"Source": "来源",
"Test": "Test",
"Asset Key": "Asset Key",
"Theme": "Theme",
"Customer ID": "Customer ID",
"Transaction": "Transaction",
"Note": "说明",
"Image": "Image",
"Position": "Position",
"Method": "方法",
"Headers": "信头",
"Query Parameters": "查询参数",
"Body": "正文内容",
"Response is Binary ?": "Response is Binary ?",
"No Error on Failure": "失败时没有错误",
"Timeout (in seconds)": "超时(秒)",
"The ID of the inventory item.": "The ID of the inventory item.",
"The ID of the location.": "The ID of the location.",
"Positive values increase inventory, negative values decrease it.": "Positive values increase inventory, negative values decrease it.",
"The ID of the order.": "The ID of the order.",
"The ID of the product.": "The ID of the product.",
"The ID of the collection.": "The ID of the collection.",
"Whether the customer has verified their email.": "Whether the customer has verified their email.",
"A string of comma-separated tags for filtering and search": "A string of comma-separated tags for filtering and search",
"The ID of the product to create the order with.": "The ID of the product to create the order with.",
"The ID of the variant to create the order with.": "The ID of the variant to create the order with.",
"The ID of the customer to use.": "The ID of the customer to use.",
"The ID of the fulfillment.": "The ID of the fulfillment.",
"Product description (supports HTML)": "Product description (supports HTML)",
"A categorization for the product used for filtering and searching products": "A categorization for the product used for filtering and searching products",
"The public URL or the base64 image to use": "The public URL or the base64 image to use",
"The ID of the order to create a transaction for.": "The ID of the order to create a transaction for.",
"The ID of an associated transaction.": "The ID of an associated transaction.",
"An optional origin of the transaction. Set to external to import a cash transaction for the associated order.": "An optional origin of the transaction. Set to external to import a cash transaction for the associated order.",
"Whether the transaction is a test transaction.": "Whether the transaction is a test transaction.",
"The ID of the theme.": "The ID of the theme.",
"The ID of the product variant.": "The ID of the product variant.",
"The ID of the transaction": "The ID of the transaction",
"1 makes it the main image.": "1 makes it the main image.",
"Authorization headers are injected automatically from your connection.": "授权头自动从您的连接中注入。",
"Enable for files like PDFs, images, etc..": "Enable for files like PDFs, images, etc..",
"Active": "使用中",
"Draft": "草稿",
"Archived": "Archived",
"GET": "获取",
"POST": "帖子",
"PATCH": "PATCH",
"PUT": "弹出",
"DELETE": "删除",
"HEAD": "黑色",
"New Abandoned Checkout": "New Abandoned Checkout",
"New Cancelled Order": "New Cancelled Order",
"New Customer": "New Customer",
"New Order": "New Order",
"Updated Product": "Updated Product",
"New Paid Order": "New Paid Order",
"Triggers when a checkout is abandoned.": "Triggers when a checkout is abandoned.",
"Triggered when order is cancelled": "Triggered when order is cancelled",
"Triggered when a new customer is created": "Triggered when a new customer is created",
"Triggered when a new order is created": "Triggered when a new order is created",
"Triggered when a product is updated.": "Triggered when a product is updated.",
"Triggered when a paid order is created": "Triggered when a paid order is created"
}

View File

@@ -0,0 +1,153 @@
import {
HttpMethod,
createCustomApiCallAction,
} from '@activepieces/pieces-common';
import {
PieceAuth,
Property,
createPiece,
} from '@activepieces/pieces-framework';
import { AppConnectionType, PieceCategory } from '@activepieces/shared';
import { adjustInventoryLevelAction } from './lib/actions/adjust-inventory-level';
import { cancelOrderAction } from './lib/actions/cancel-order';
import { closeOrderAction } from './lib/actions/close-order';
import { createCollectAction } from './lib/actions/create-collect';
import { createCustomerAction } from './lib/actions/create-customer';
import { createDraftOrderAction } from './lib/actions/create-draft-order';
import { createFulfillmentEventAction } from './lib/actions/create-fulfillment-event';
import { createOrderAction } from './lib/actions/create-order';
import { createProductAction } from './lib/actions/create-product';
import { createTransactionAction } from './lib/actions/create-transaction';
import { getAssetAction } from './lib/actions/get-asset';
import { getCustomerAction } from './lib/actions/get-customer';
import { getCustomersAction } from './lib/actions/get-customers';
import { getCustomerOrdersAction } from './lib/actions/get-customer-orders';
import { getFulfillmentAction } from './lib/actions/get-fulfillment';
import { getFulfillmentsAction } from './lib/actions/get-fulfillments';
import { getLocationsAction } from './lib/actions/get-locations';
import { getProductAction } from './lib/actions/get-product';
import { getProductVariantAction } from './lib/actions/get-product-variant';
import { getProductsAction } from './lib/actions/get-products';
import { getTransactionAction } from './lib/actions/get-transaction';
import { getTransactionsAction } from './lib/actions/get-transactions';
import { updateCustomerAction } from './lib/actions/update-customer';
import { updateOrderAction } from './lib/actions/update-order';
import { updateProductAction } from './lib/actions/update-product';
import { uploadProductImageAction } from './lib/actions/upload-product-image';
import { getBaseUrl, sendShopifyRequest } from './lib/common';
import { newAbandonedCheckout } from './lib/triggers/new-abandoned-checkout';
import { newCancelledOrder } from './lib/triggers/new-cancelled-order';
import { newCustomer } from './lib/triggers/new-customer';
import { newOrder } from './lib/triggers/new-order';
import { newPaidOrder } from './lib/triggers/new-paid-order';
import { updatedProduct } from './lib/triggers/updated-product';
const markdown = `
**Shop Name**:
You can find your shop name in the url For example, if the URL is \`https://example.myshopify.com/admin\`, then your shop name is **example**.
**Admin Token**:
1. Login to your Shopify account
2. Go to Settings -> Apps
3. Click on Develop apps
4. Create an App
5. Fill the app name
6. Click on Configure Admin API Scopes (Select the following scopes 'read_orders', 'write_orders', 'write_customers', 'read_customers', 'write_products', 'read_products', 'write_draft_orders', 'read_draft_orders')
7. Click on Install app
8. Copy the Admin Access Token
`;
export const shopifyAuth = PieceAuth.CustomAuth({
description: markdown,
required: true,
props: {
shopName: Property.ShortText({
displayName: 'Shop Name',
required: true,
}),
adminToken: PieceAuth.SecretText({
displayName: 'Admin Token',
required: true,
}),
},
validate: async ({ auth }) => {
try {
await sendShopifyRequest({
auth: {
type: AppConnectionType.CUSTOM_AUTH,
props: auth,
},
method: HttpMethod.GET,
url: '/shop.json',
});
return {
valid: true,
};
} catch (e) {
return {
valid: false,
error: 'Invalid Shop Name or Admin Token',
};
}
},
});
export const shopify = createPiece({
displayName: 'Shopify',
description: 'Ecommerce platform for online stores',
logoUrl: 'https://cdn.activepieces.com/pieces/shopify.png',
authors: ["kishanprmr","MoShizzle","AbdulTheActivePiecer","khaledmashaly","abuaboud","ikus060"],
categories: [PieceCategory.COMMERCE],
minimumSupportedRelease: '0.30.0',
auth: shopifyAuth,
actions: [
adjustInventoryLevelAction,
cancelOrderAction,
closeOrderAction,
createCollectAction,
createCustomerAction,
createDraftOrderAction,
createFulfillmentEventAction,
createOrderAction,
createProductAction,
createTransactionAction,
getAssetAction,
getCustomerAction,
getCustomersAction,
getCustomerOrdersAction,
getFulfillmentAction,
getFulfillmentsAction,
getLocationsAction,
getProductAction,
getProductVariantAction,
getProductsAction,
getTransactionAction,
getTransactionsAction,
updateCustomerAction,
updateOrderAction,
updateProductAction,
uploadProductImageAction,
createCustomApiCallAction({
baseUrl: (auth) => {
return auth ? getBaseUrl(auth.props.shopName) : '';
},
auth: shopifyAuth,
authMapping: async (auth) => {
const typedAuth = auth.props.adminToken;
return {
'X-Shopify-Access-Token': typedAuth,
};
},
}),
],
triggers: [
newAbandonedCheckout,
newCancelledOrder,
newCustomer,
newOrder,
updatedProduct,
newPaidOrder,
],
});

View File

@@ -0,0 +1,33 @@
import { Property, createAction } from '@activepieces/pieces-framework';
import { shopifyAuth } from '../..';
import { adjustInventoryLevel } from '../common';
export const adjustInventoryLevelAction = createAction({
auth: shopifyAuth,
name: 'adjust_inventory_level',
displayName: 'Adjust Inventory Level',
description: `Adjust inventory level of an item at a location.`,
props: {
id: Property.Number({
displayName: 'Inventory Item',
description: 'The ID of the inventory item.',
required: true,
}),
locationId: Property.Number({
displayName: 'Location',
description: 'The ID of the location.',
required: true,
}),
adjustment: Property.Number({
displayName: 'Adjustment',
description:
'Positive values increase inventory, negative values decrease it.',
required: true,
}),
},
async run({ auth, propsValue }) {
const { id, locationId, adjustment } = propsValue;
return await adjustInventoryLevel(id, locationId, adjustment, auth);
},
});

View File

@@ -0,0 +1,22 @@
import { Property, createAction } from '@activepieces/pieces-framework';
import { shopifyAuth } from '../..';
import { cancelOrder } from '../common';
export const cancelOrderAction = createAction({
auth: shopifyAuth,
name: 'cancel_order',
displayName: 'Cancel Order',
description: `Cancel an order.`,
props: {
orderId: Property.Number({
displayName: 'Order',
description: 'The ID of the order.',
required: true,
}),
},
async run({ auth, propsValue }) {
const { orderId } = propsValue;
return await cancelOrder(orderId, auth);
},
});

View File

@@ -0,0 +1,22 @@
import { Property, createAction } from '@activepieces/pieces-framework';
import { shopifyAuth } from '../..';
import { closeOrder } from '../common';
export const closeOrderAction = createAction({
auth: shopifyAuth,
name: 'close_order',
displayName: 'Close Order',
description: `Close an order.`,
props: {
orderId: Property.Number({
displayName: 'Order',
description: 'The ID of the order.',
required: true,
}),
},
async run({ auth, propsValue }) {
const { orderId } = propsValue;
return await closeOrder(orderId, auth);
},
});

View File

@@ -0,0 +1,33 @@
import { Property, createAction } from '@activepieces/pieces-framework';
import { shopifyAuth } from '../..';
import { createCollect } from '../common';
export const createCollectAction = createAction({
auth: shopifyAuth,
name: 'create_collect',
displayName: 'Create Collect',
description: `Add a product to a collection.`,
props: {
id: Property.Number({
displayName: 'Product',
description: 'The ID of the product.',
required: true,
}),
collectionId: Property.Number({
displayName: 'Collection',
description: 'The ID of the collection.',
required: true,
}),
},
async run({ auth, propsValue }) {
const { id, collectionId } = propsValue;
return await createCollect(
{
product_id: id,
collection_id: collectionId,
},
auth
);
},
});

View File

@@ -0,0 +1,80 @@
import {
Property,
createAction,
} from '@activepieces/pieces-framework';
import { shopifyAuth } from '../..';
import { createCustomer } from '../common';
export const createCustomerAction = createAction({
auth: shopifyAuth,
name: 'create_customer',
displayName: 'Create Customer',
description: 'Create a new customer.',
props: {
email: Property.ShortText({
displayName: 'Email',
required: false,
}),
verifiedEmail: Property.Checkbox({
displayName: 'Verified Email',
description: 'Whether the customer has verified their email.',
required: false,
defaultValue: true,
}),
sendEmailInvite: Property.Checkbox({
displayName: 'Send Email Invite',
required: false,
defaultValue: false,
}),
firstName: Property.ShortText({
displayName: 'First Name',
required: false,
}),
lastName: Property.ShortText({
displayName: 'Last Name',
required: false,
}),
phoneNumber: Property.ShortText({
displayName: 'Phone Number',
required: false,
}),
tags: Property.ShortText({
displayName: 'Tags',
description: 'A string of comma-separated tags for filtering and search',
required: false,
}),
acceptsMarketing:Property.Checkbox({
displayName:'Accepts Marketing ?',
required:false
})
},
async run({ auth, propsValue }) {
const {
email,
verifiedEmail,
sendEmailInvite,
firstName,
lastName,
phoneNumber,
tags,
acceptsMarketing
} = propsValue;
return await createCustomer(
{
email,
verified_email: verifiedEmail,
send_email_invite: sendEmailInvite,
first_name: firstName,
last_name: lastName,
phone: phoneNumber,
tags,
email_marketing_consent:{
state:acceptsMarketing?'subscribed':'not_subscribed',
opt_in_level:"unknown"
}
},
auth
);
},
});

View File

@@ -0,0 +1,60 @@
import { Property, createAction } from '@activepieces/pieces-framework';
import { shopifyAuth } from '../..';
import { createDraftOrder } from '../common';
import { ShopifyDraftOrder } from '../common/types';
export const createDraftOrderAction = createAction({
auth: shopifyAuth,
name: 'create_draft_order',
displayName: 'Create Draft Order',
description: 'Create a new draft order.',
props: {
productId: Property.Number({
displayName: 'Product',
description: 'The ID of the product to create the order with.',
required: false,
}),
variantId: Property.Number({
displayName: 'Product Variant',
description: 'The ID of the variant to create the order with.',
required: false,
}),
title: Property.ShortText({
displayName: 'Title',
required: false,
}),
quantity: Property.Number({
displayName: 'Quantity',
required: false,
defaultValue: 1,
}),
price: Property.ShortText({
displayName: 'Price',
required: false,
}),
customerId: Property.ShortText({
displayName: 'Customer',
description: 'The ID of the customer to use.',
required: false,
}),
},
async run({ auth, propsValue }) {
const { productId, variantId, title, quantity, price, customerId } =
propsValue;
const draftOrder: Partial<ShopifyDraftOrder> = {
line_items: [
{
product_id: productId,
variant_id: variantId,
title,
quantity,
price,
},
],
};
if (customerId) draftOrder.customer = { id: +customerId };
return await createDraftOrder(draftOrder, auth);
},
});

View File

@@ -0,0 +1,60 @@
import { Property, createAction } from '@activepieces/pieces-framework';
import { shopifyAuth } from '../..';
import { createFulfillmentEvent } from '../common';
import { ShopifyFulfillmentEventStatuses } from '../common/types';
export const createFulfillmentEventAction = createAction({
auth: shopifyAuth,
name: 'create_fulfillment_event',
displayName: 'Create Fulfillment Event',
description: 'Create a new fulfillment event.',
props: {
orderId: Property.Number({
displayName: 'Order',
description: 'The ID of the order.',
required: true,
}),
fulfillmentId: Property.Number({
displayName: 'Fulfillment',
description: 'The ID of the fulfillment.',
required: true,
}),
status: Property.Dropdown({
auth: shopifyAuth,
displayName: 'Status',
required: true,
refreshers: [],
options: async () => {
return {
options: Object.values(ShopifyFulfillmentEventStatuses).map(
(status) => {
return {
label:
status.charAt(0).toUpperCase() +
status.slice(1).replaceAll('_', ' '),
value: status,
};
}
),
};
},
}),
message: Property.ShortText({
displayName: 'Message',
required: false,
}),
},
async run({ auth, propsValue }) {
const { orderId, fulfillmentId, status, message } = propsValue;
return await createFulfillmentEvent(
fulfillmentId,
orderId,
{
status,
message,
},
auth
);
},
});

View File

@@ -0,0 +1,95 @@
import { Property, createAction } from '@activepieces/pieces-framework';
import { shopifyAuth } from '../..';
import { createOrder } from '../common';
import { ShopifyOrder } from '../common/types';
export const createOrderAction = createAction({
auth: shopifyAuth,
name: 'create_order',
displayName: 'Create Order',
description: 'Create a new order.',
props: {
productId: Property.Number({
displayName: 'Product',
description: 'The ID of the product to create the order with.',
required: false,
}),
variantId: Property.Number({
displayName: 'Product Variant',
description: 'The ID of the variant to create the order with.',
required: false,
}),
title: Property.ShortText({
displayName: 'Title',
required: false,
}),
quantity: Property.Number({
displayName: 'Quantity',
required: false,
defaultValue: 1,
}),
price: Property.ShortText({
displayName: 'Price',
required: false,
}),
customerId: Property.ShortText({
displayName: 'Customer',
description: 'The ID of the customer to use.',
required: false,
}),
email: Property.ShortText({
displayName: 'Email',
required: false,
}),
sendReceipt: Property.Checkbox({
displayName: 'Send Receipt',
required: false,
defaultValue: false,
}),
sendFulfillmentReceipt: Property.Checkbox({
displayName: 'Send Fulfillment Receipt',
required: false,
defaultValue: false,
}),
tags: Property.ShortText({
displayName: 'Tags',
description: 'A string of comma-separated tags for filtering and search',
required: false,
}),
},
async run({ auth, propsValue }) {
const {
productId,
variantId,
title,
quantity,
price,
customerId,
email,
sendReceipt,
sendFulfillmentReceipt,
tags,
} = propsValue;
const order: Partial<ShopifyOrder> = {
line_items: [
{
product_id: productId,
variant_id: variantId,
title,
quantity,
price,
},
],
};
if (customerId) order.customer = { id: +customerId };
if (email) {
order.email = email;
order.send_receipt = sendReceipt;
order.send_fulfillment_receipt = sendFulfillmentReceipt;
}
if (tags) order.tags = tags;
return await createOrder(order, auth);
},
});

View File

@@ -0,0 +1,86 @@
import { Property, createAction } from '@activepieces/pieces-framework';
import { shopifyAuth } from '../..';
import { createProduct } from '../common';
import { ShopifyImage, ShopifyProductStatuses } from '../common/types';
export const createProductAction = createAction({
auth: shopifyAuth,
name: 'create_product',
displayName: 'Create Product',
description: 'Create a new product.',
props: {
title: Property.ShortText({
displayName: 'Title',
required: true,
}),
bodyHtml: Property.LongText({
displayName: 'Description',
description: 'Product description (supports HTML)',
required: false,
}),
productType: Property.ShortText({
displayName: 'Product Type',
description:
'A categorization for the product used for filtering and searching products',
required: false,
}),
productImage: Property.File({
displayName: 'Product Image',
description: 'The public URL or the base64 image to use',
required: false,
}),
status: Property.StaticDropdown({
displayName: 'Status',
required: true,
defaultValue: ShopifyProductStatuses.DRAFT,
options: {
options: [
{
label: 'Active',
value: ShopifyProductStatuses.ACTIVE,
},
{
label: 'Draft',
value: ShopifyProductStatuses.DRAFT,
},
{
label: 'Archived',
value: ShopifyProductStatuses.ARCHIVED,
},
],
},
}),
vendor: Property.ShortText({
displayName: 'Vendor',
required: false,
}),
tags: Property.ShortText({
displayName: 'Tags',
description: 'A string of comma-separated tags for filtering and search',
required: false,
}),
},
async run({ auth, propsValue }) {
const { title, bodyHtml, vendor, productType, tags, productImage } =
propsValue;
const images: Partial<ShopifyImage>[] = [];
if (productImage) {
images.push({
attachment: productImage.base64,
});
}
return await createProduct(
{
title,
body_html: bodyHtml,
vendor,
product_type: productType,
tags,
images,
},
auth
);
},
});

View File

@@ -0,0 +1,80 @@
import { Property, createAction } from '@activepieces/pieces-framework';
import { shopifyAuth } from '../..';
import { createTransaction } from '../common';
import { ShopifyTransactionKinds } from '../common/types';
export const createTransactionAction = createAction({
auth: shopifyAuth,
name: 'create_transaction',
displayName: 'Create Transaction',
description: 'Create a new transaction.',
props: {
orderId: Property.Number({
displayName: 'Order',
description: 'The ID of the order to create a transaction for.',
required: true,
}),
kind: Property.Dropdown({
auth: shopifyAuth,
displayName: 'Type',
required: true,
refreshers: [],
options: async () => {
return {
options: Object.values(ShopifyTransactionKinds).map((kind) => {
return {
label: kind.charAt(0).toUpperCase() + kind.slice(1),
value: kind,
};
}),
};
},
}),
currency: Property.ShortText({
displayName: 'Currency',
required: false,
}),
amount: Property.ShortText({
displayName: 'Amount',
required: false,
}),
authorization: Property.ShortText({
displayName: 'Authorization Key',
required: false,
}),
parentId: Property.Number({
displayName: 'Parent ID',
description: 'The ID of an associated transaction.',
required: false,
}),
source: Property.ShortText({
displayName: 'Source',
description:
'An optional origin of the transaction. Set to external to import a cash transaction for the associated order.',
required: false,
}),
test: Property.Checkbox({
displayName: 'Test',
description: 'Whether the transaction is a test transaction.',
required: false,
defaultValue: false,
}),
},
async run({ auth, propsValue }) {
const { orderId, kind, currency, amount, parentId, source, test } =
propsValue;
return await createTransaction(
orderId,
{
amount,
currency,
kind,
parent_id: parentId,
source,
test,
},
auth
);
},
});

View File

@@ -0,0 +1,26 @@
import { Property, createAction } from '@activepieces/pieces-framework';
import { shopifyAuth } from '../..';
import { getAsset } from '../common';
export const getAssetAction = createAction({
auth: shopifyAuth,
name: 'get_asset',
displayName: 'Get Asset',
description: `Get a theme's asset.`,
props: {
key: Property.ShortText({
displayName: 'Asset Key',
required: true,
}),
themeId: Property.ShortText({
displayName: 'Theme',
description: 'The ID of the theme.',
required: true,
}),
},
async run({ auth, propsValue }) {
const { key, themeId } = propsValue;
return await getAsset(key, +themeId, auth);
},
});

View File

@@ -0,0 +1,21 @@
import { Property, createAction } from '@activepieces/pieces-framework';
import { shopifyAuth } from '../..';
import { getCustomerOrders } from '../common';
export const getCustomerOrdersAction = createAction({
auth: shopifyAuth,
name: 'get_customer_orders',
displayName: 'Get Customer Orders',
description: `Get an existing customer's orders.`,
props: {
customerId: Property.ShortText({
displayName: 'Customer ID',
required: true,
}),
},
async run({ auth, propsValue }) {
const { customerId } = propsValue;
return await getCustomerOrders(customerId, auth);
},
});

View File

@@ -0,0 +1,21 @@
import { Property, createAction } from '@activepieces/pieces-framework';
import { shopifyAuth } from '../..';
import { getCustomer } from '../common';
export const getCustomerAction = createAction({
auth: shopifyAuth,
name: 'get_customer',
displayName: 'Get Customer',
description: `Get an existing customer's information.`,
props: {
customerId: Property.ShortText({
displayName: 'Customer ID',
required: true,
}),
},
async run({ auth, propsValue }) {
const { customerId } = propsValue;
return await getCustomer(customerId, auth);
},
});

View File

@@ -0,0 +1,15 @@
import { Property, createAction } from '@activepieces/pieces-framework';
import { shopifyAuth } from '../..';
import { getCustomers } from '../common';
export const getCustomersAction = createAction({
auth: shopifyAuth,
name: 'get_customers',
displayName: 'Get Customers',
description: `Get an existing customers.`,
props: {
},
async run({ auth }) {
return await getCustomers(auth);
},
});

View File

@@ -0,0 +1,27 @@
import { Property, createAction } from '@activepieces/pieces-framework';
import { shopifyAuth } from '../..';
import { getFulfillment } from '../common';
export const getFulfillmentAction = createAction({
auth: shopifyAuth,
name: 'get_fulfillment',
displayName: 'Get Fulfillment',
description: `Get a fulfillment.`,
props: {
orderId: Property.Number({
displayName: 'Order',
description: 'The ID of the order.',
required: true,
}),
fulfillmentId: Property.Number({
displayName: 'Fulfillment',
description: 'The ID of the fulfillment.',
required: true,
}),
},
async run({ auth, propsValue }) {
const { orderId, fulfillmentId } = propsValue;
return await getFulfillment(fulfillmentId, orderId, auth);
},
});

View File

@@ -0,0 +1,22 @@
import { Property, createAction } from '@activepieces/pieces-framework';
import { shopifyAuth } from '../..';
import { getFulfillments } from '../common';
export const getFulfillmentsAction = createAction({
auth: shopifyAuth,
name: 'get_fulfillments',
displayName: 'Get Fulfillments',
description: `Get an order's fulfillments.`,
props: {
orderId: Property.Number({
displayName: 'Order',
description: 'The ID of the order.',
required: true,
}),
},
async run({ auth, propsValue }) {
const { orderId } = propsValue;
return await getFulfillments(orderId, auth);
},
});

View File

@@ -0,0 +1,14 @@
import { createAction } from '@activepieces/pieces-framework';
import { shopifyAuth } from '../..';
import { getLocations } from '../common';
export const getLocationsAction = createAction({
auth: shopifyAuth,
name: 'get_locations',
displayName: 'Get Locations',
description: `Get locations.`,
props: {},
async run({ auth }) {
return await getLocations(auth);
},
});

View File

@@ -0,0 +1,22 @@
import { Property, createAction } from '@activepieces/pieces-framework';
import { shopifyAuth } from '../..';
import { getProductVariant } from '../common';
export const getProductVariantAction = createAction({
auth: shopifyAuth,
name: 'get_product_variant',
displayName: 'Get Product Variant',
description: `Get a product variant.`,
props: {
id: Property.ShortText({
displayName: 'Product Variant',
description: 'The ID of the product variant.',
required: true,
}),
},
async run({ auth, propsValue }) {
const { id } = propsValue;
return await getProductVariant(+id, auth);
},
});

View File

@@ -0,0 +1,22 @@
import { Property, createAction } from '@activepieces/pieces-framework';
import { shopifyAuth } from '../..';
import { getProduct } from '../common';
export const getProductAction = createAction({
auth: shopifyAuth,
name: 'get_product',
displayName: 'Get Product',
description: `Get existing product.`,
props: {
id: Property.ShortText({
displayName: 'Product',
description: 'The ID of the product.',
required: true,
}),
},
async run({ auth, propsValue }) {
const { id } = propsValue;
return await getProduct(+id, auth);
},
});

View File

@@ -0,0 +1,23 @@
import { Property, createAction } from '@activepieces/pieces-framework';
import { shopifyAuth } from '../..';
import { getProducts } from '../common';
export const getProductsAction = createAction({
auth: shopifyAuth,
name: 'get_products',
displayName: 'Get Products',
description: `Get existing products by title.`,
props: {
title: Property.ShortText({
displayName: 'Title',
required: false,
}),
},
async run({ auth, propsValue }) {
const { title } = propsValue;
return await getProducts(auth, {
title,
});
},
});

View File

@@ -0,0 +1,27 @@
import { Property, createAction } from '@activepieces/pieces-framework';
import { shopifyAuth } from '../..';
import { getTransaction } from '../common';
export const getTransactionAction = createAction({
auth: shopifyAuth,
name: 'get_transaction',
displayName: 'Get Transaction',
description: `Get an existing transaction's information.`,
props: {
orderId: Property.Number({
displayName: 'Order',
description: 'The ID of the order.',
required: true,
}),
transactionId: Property.Number({
displayName: 'Transaction',
description: 'The ID of the transaction',
required: true,
}),
},
async run({ auth, propsValue }) {
const { orderId, transactionId } = propsValue;
return await getTransaction(transactionId, orderId, auth);
},
});

View File

@@ -0,0 +1,22 @@
import { Property, createAction } from '@activepieces/pieces-framework';
import { shopifyAuth } from '../..';
import { getTransactions } from '../common';
export const getTransactionsAction = createAction({
auth: shopifyAuth,
name: 'get_transactions',
displayName: 'Get Order Transactions',
description: `Get an order's transactions.`,
props: {
orderId: Property.Number({
displayName: 'Order',
description: 'The ID of the order.',
required: true,
}),
},
async run({ auth, propsValue }) {
const { orderId } = propsValue;
return await getTransactions(orderId, auth);
},
});

View File

@@ -0,0 +1,89 @@
import { Property, createAction } from '@activepieces/pieces-framework';
import { shopifyAuth } from '../..';
import { updateCustomer } from '../common';
import { z } from 'zod';
import { propsValidation } from '@activepieces/pieces-common';
export const updateCustomerAction = createAction({
auth: shopifyAuth,
name: 'update_customer',
displayName: 'Update Customer',
description: 'Update an existing customer.',
props: {
customerId: Property.ShortText({
displayName: 'Customer ID',
required: true,
}),
email: Property.ShortText({
displayName: 'Email',
required: false,
}),
verifiedEmail: Property.Checkbox({
displayName: 'Verified Email',
description: 'Whether the customer has verified their email.',
required: false,
defaultValue: true,
}),
sendEmailInvite: Property.Checkbox({
displayName: 'Send Email Invite',
required: false,
defaultValue: false,
}),
firstName: Property.ShortText({
displayName: 'First Name',
required: false,
}),
lastName: Property.ShortText({
displayName: 'Last Name',
required: false,
}),
phoneNumber: Property.ShortText({
displayName: 'Phone Number',
required: false,
}),
tags: Property.ShortText({
displayName: 'Tags',
description: 'A string of comma-separated tags for filtering and search',
required: false,
}),
acceptsMarketing: Property.Checkbox({
displayName: 'Accepts Marketing ?',
required: false,
}),
},
async run({ auth, propsValue }) {
const {
customerId,
email,
verifiedEmail,
sendEmailInvite,
firstName,
lastName,
phoneNumber,
tags,
acceptsMarketing
} = propsValue;
await propsValidation.validateZod(propsValue, {
email: z.string().email().optional(),
});
return await updateCustomer(
customerId,
{
email,
verified_email: verifiedEmail,
send_email_invite: sendEmailInvite,
first_name: firstName,
last_name: lastName,
phone: phoneNumber,
tags,
email_marketing_consent:{
state:acceptsMarketing?'subscribed':'unsubscribed',
opt_in_level:"unknown"
}
},
auth
);
},
});

View File

@@ -0,0 +1,57 @@
import {
Property,
createAction,
} from '@activepieces/pieces-framework';
import { shopifyAuth } from '../..';
import { updateOrder } from '../common';
import { z } from 'zod';
import { propsValidation } from '@activepieces/pieces-common';
export const updateOrderAction = createAction({
auth: shopifyAuth,
name: 'update_order',
displayName: 'Update Order',
description: 'Update an existing order.',
props: {
id: Property.ShortText({
displayName: 'Order',
description: 'The ID of the order.',
required: true,
}),
email: Property.ShortText({
displayName: 'Email',
required: false,
}),
phoneNumber: Property.ShortText({
displayName: 'Phone Number',
required: false,
}),
tags: Property.ShortText({
displayName: 'Tags',
description: 'A string of comma-separated tags for filtering and search',
required: false,
}),
note: Property.ShortText({
displayName: 'Note',
required: false,
}),
},
async run({ auth, propsValue }) {
await propsValidation.validateZod(propsValue, {
email: z.string().email().optional(),
});
const { id, email, phoneNumber, tags, note } = propsValue;
return await updateOrder(
+id,
{
email,
phone: phoneNumber,
tags,
note,
},
auth
);
},
});

View File

@@ -0,0 +1,92 @@
import { Property, createAction } from '@activepieces/pieces-framework';
import { shopifyAuth } from '../..';
import { updateProduct } from '../common';
import { ShopifyImage, ShopifyProductStatuses } from '../common/types';
export const updateProductAction = createAction({
auth: shopifyAuth,
name: 'update_product',
displayName: 'Update Product',
description: 'Update an existing product.',
props: {
id: Property.ShortText({
displayName: 'Product',
description: 'The ID of the product.',
required: true,
}),
title: Property.ShortText({
displayName: 'Title',
required: false,
}),
bodyHtml: Property.LongText({
displayName: 'Description',
description: 'Product description (supports HTML)',
required: false,
}),
productType: Property.ShortText({
displayName: 'Product Type',
description:
'A categorization for the product used for filtering and searching products',
required: false,
}),
productImage: Property.File({
displayName: 'Product Image',
description: 'The public URL or the base64 image to use',
required: false,
}),
status: Property.StaticDropdown({
displayName: 'Status',
required: true,
defaultValue: ShopifyProductStatuses.DRAFT,
options: {
options: [
{
label: 'Active',
value: ShopifyProductStatuses.ACTIVE,
},
{
label: 'Draft',
value: ShopifyProductStatuses.DRAFT,
},
{
label: 'Archived',
value: ShopifyProductStatuses.ARCHIVED,
},
],
},
}),
vendor: Property.ShortText({
displayName: 'Vendor',
required: false,
}),
tags: Property.ShortText({
displayName: 'Tags',
description: 'A string of comma-separated tags for filtering and search',
required: false,
}),
},
async run({ auth, propsValue }) {
const { id, title, bodyHtml, vendor, productType, tags, productImage } =
propsValue;
const images: Partial<ShopifyImage>[] = [];
if (productImage) {
images.push({
attachment: productImage.base64,
});
}
return await updateProduct(
+id,
{
title,
body_html: bodyHtml,
vendor,
product_type: productType,
tags,
images,
},
auth
);
},
});

View File

@@ -0,0 +1,36 @@
import { Property, createAction } from '@activepieces/pieces-framework';
import { shopifyAuth } from '../..';
import { createProductImage } from '../common';
export const uploadProductImageAction = createAction({
auth: shopifyAuth,
name: 'upload_product_image',
displayName: 'Upload Product Image',
description: 'Upload a new product image.',
props: {
id: Property.ShortText({
displayName: 'Product',
description: 'The ID of the product.',
required: true,
}),
image: Property.File({
displayName: 'Image',
description: 'The public URL or the base64 image to use',
required: true,
}),
position: Property.Number({
displayName: 'Position',
description: '1 makes it the main image.',
required: false,
}),
},
async run({ auth, propsValue }) {
const { id, image, position } = propsValue;
return await createProductImage(
+id,
{ attachment: image.base64, position },
auth
);
},
});

View File

@@ -0,0 +1,526 @@
import {
HttpMessageBody,
HttpMethod,
HttpResponse,
QueryParams,
httpClient,
} from '@activepieces/pieces-common';
import {
ShopifyAuth,
ShopifyCheckout,
ShopifyCollect,
ShopifyCustomer,
ShopifyDraftOrder,
ShopifyFulfillment,
ShopifyFulfillmentEvent,
ShopifyImage,
ShopifyOrder,
ShopifyProduct,
ShopifyProductVariant,
ShopifyTransaction,
} from './types';
export function getBaseUrl(shopName: string) {
return `https://${shopName}.myshopify.com/admin/api/2023-10`;
}
export function sendShopifyRequest(data: {
url: string;
method: HttpMethod;
body?: HttpMessageBody;
queryParams?: QueryParams;
auth: ShopifyAuth;
}): Promise<HttpResponse<HttpMessageBody>> {
return httpClient.sendRequest({
url: `${getBaseUrl(data.auth.props.shopName)}${data.url}`,
method: data.method,
body: data.body,
queryParams: data.queryParams,
headers: {
'X-Shopify-Access-Token': data.auth.props.adminToken,
},
});
}
export async function createCustomer(
customer: Partial<ShopifyCustomer>,
auth: ShopifyAuth
): Promise<ShopifyCustomer> {
const response = await sendShopifyRequest({
auth: auth,
url: '/customers.json',
method: HttpMethod.POST,
body: {
customer,
},
});
return (response.body as { customer: ShopifyCustomer }).customer;
}
export async function getCustomer(
id: string,
auth: ShopifyAuth
): Promise<ShopifyCustomer> {
const response = await sendShopifyRequest({
auth: auth,
url: `/customers/${id}.json`,
method: HttpMethod.GET,
});
return (response.body as { customer: ShopifyCustomer }).customer;
}
export async function getCustomers(
auth: ShopifyAuth,
): Promise<ShopifyCustomer[]> {
const queryParams: QueryParams = {};
let customers:ShopifyCustomer[] = [];
let hasNextPage = true;
while (hasNextPage) {
const response = await sendShopifyRequest({
auth: auth,
url: `/customers.json`,
method: HttpMethod.GET,
queryParams,
});
customers = customers.concat((response.body as { customers: ShopifyCustomer[] }).customers);
const linkHeader = response.headers?.['link'];
if (linkHeader && typeof linkHeader === 'string' && linkHeader.includes('rel="next"')) {
// Extract the URL for the next page from the Link header
const nextLink = linkHeader
.split(',')
.find((s) => s.includes('rel="next"'))
?.match(/<(.*?)>/)?.[1];
if (nextLink) {
queryParams.page_info = new URL(nextLink).searchParams.get('page_info') || '';
} else {
hasNextPage = false;
}
} else {
hasNextPage = false;
}
}
return customers;
}
export async function updateCustomer(
id: string,
customer: Partial<ShopifyCustomer>,
auth: ShopifyAuth
): Promise<ShopifyCustomer> {
const response = await sendShopifyRequest({
auth: auth,
url: `/customers/${id}.json`,
method: HttpMethod.PUT,
body: {
customer,
},
});
return (response.body as { customer: ShopifyCustomer }).customer;
}
export async function getCustomerOrders(
id: string,
auth: ShopifyAuth
): Promise<ShopifyOrder[]> {
const response = await sendShopifyRequest({
auth: auth,
url: `/customers/${id}/orders.json`,
method: HttpMethod.GET,
});
return (response.body as { orders: ShopifyOrder[] }).orders;
}
export async function getProducts(
auth: ShopifyAuth,
search: {
title?: string;
createdAtMin?: string;
updatedAtMin?: string;
}
): Promise<ShopifyProduct[]> {
const queryParams: QueryParams = {};
const { title, createdAtMin, updatedAtMin } = search;
if (title) {
queryParams.title = title;
}
if (createdAtMin) {
queryParams.created_at_min = createdAtMin;
}
if (updatedAtMin) {
queryParams.updated_at_min = updatedAtMin;
}
let products:ShopifyProduct[] = [];
let hasNextPage = true;
while (hasNextPage) {
const response = await sendShopifyRequest({
auth: auth,
url: `/products.json`,
method: HttpMethod.GET,
queryParams,
});
products = products.concat((response.body as { products: ShopifyProduct[] }).products);
const linkHeader = response.headers?.['link'];
if (linkHeader && typeof linkHeader === 'string' && linkHeader.includes('rel="next"')) {
// Extract the URL for the next page from the Link header
const nextLink = linkHeader
.split(',')
.find((s) => s.includes('rel="next"'))
?.match(/<(.*?)>/)?.[1];
if (nextLink) {
queryParams.page_info = new URL(nextLink).searchParams.get('page_info') || '';
} else {
hasNextPage = false;
}
} else {
hasNextPage = false;
}
}
return products;
}
export async function createProduct(
product: Partial<ShopifyProduct>,
auth: ShopifyAuth
): Promise<ShopifyProduct> {
const response = await sendShopifyRequest({
auth: auth,
url: `/products.json`,
method: HttpMethod.POST,
body: {
product,
},
});
return (response.body as { product: ShopifyProduct }).product;
}
export async function updateProduct(
id: number,
product: Partial<ShopifyProduct>,
auth: ShopifyAuth
): Promise<ShopifyProduct> {
const response = await sendShopifyRequest({
auth: auth,
url: `/products/${id}.json`,
method: HttpMethod.PUT,
body: {
product,
},
});
return (response.body as { product: ShopifyProduct }).product;
}
export async function createDraftOrder(
draftOrder: Partial<ShopifyDraftOrder>,
auth: ShopifyAuth
): Promise<ShopifyDraftOrder> {
const response = await sendShopifyRequest({
auth: auth,
url: `/draft_orders.json`,
method: HttpMethod.POST,
body: {
draft_order: draftOrder,
},
});
return (response.body as { draft_order: ShopifyDraftOrder }).draft_order;
}
export async function createOrder(
order: Partial<ShopifyOrder>,
auth: ShopifyAuth
): Promise<ShopifyOrder> {
const response = await sendShopifyRequest({
auth: auth,
url: `/orders.json`,
method: HttpMethod.POST,
body: {
order,
},
});
return (response.body as { order: ShopifyOrder }).order;
}
export async function updateOrder(
id: number,
order: Partial<ShopifyOrder>,
auth: ShopifyAuth
): Promise<ShopifyOrder> {
const response = await sendShopifyRequest({
auth: auth,
url: `/orders/${id}.json`,
method: HttpMethod.PUT,
body: {
order,
},
});
return (response.body as { order: ShopifyOrder }).order;
}
export async function createTransaction(
orderId: number,
transaction: Partial<ShopifyTransaction>,
auth: ShopifyAuth
): Promise<ShopifyTransaction> {
const response = await sendShopifyRequest({
auth: auth,
url: `/orders/${orderId}/transactions.json`,
method: HttpMethod.POST,
body: {
transaction,
},
});
return (response.body as { transaction: ShopifyTransaction }).transaction;
}
export async function getTransaction(
id: number,
orderId: number,
auth: ShopifyAuth
): Promise<ShopifyTransaction> {
const response = await sendShopifyRequest({
auth: auth,
url: `/orders/${orderId}/transactions/${id}.json`,
method: HttpMethod.GET,
});
return (response.body as { transaction: ShopifyTransaction }).transaction;
}
export async function getTransactions(
orderId: number,
auth: ShopifyAuth
): Promise<ShopifyTransaction[]> {
const response = await sendShopifyRequest({
auth: auth,
url: `/orders/${orderId}/transactions.json`,
method: HttpMethod.GET,
});
return (response.body as { transactions: ShopifyTransaction[] }).transactions;
}
export async function getFulfillments(
orderId: number,
auth: ShopifyAuth
): Promise<ShopifyFulfillment[]> {
const response = await sendShopifyRequest({
auth: auth,
url: `/orders/${orderId}/fulfillments.json`,
method: HttpMethod.GET,
});
return (response.body as { fulfillments: ShopifyFulfillment[] }).fulfillments;
}
export async function getFulfillment(
id: number,
orderId: number,
auth: ShopifyAuth
): Promise<ShopifyFulfillment> {
const response = await sendShopifyRequest({
auth: auth,
url: `/orders/${orderId}/fulfillments/${id}.json`,
method: HttpMethod.GET,
});
return (response.body as { fulfillment: ShopifyFulfillment }).fulfillment;
}
export async function getLocations(auth: ShopifyAuth): Promise<unknown[]> {
const response = await sendShopifyRequest({
auth: auth,
url: `/locations.json`,
method: HttpMethod.GET,
});
return (response.body as { locations: unknown[] }).locations;
}
export async function createFulfillmentEvent(
id: number,
orderId: number,
event: Partial<ShopifyFulfillmentEvent>,
auth: ShopifyAuth
): Promise<ShopifyFulfillmentEvent> {
const response = await sendShopifyRequest({
auth: auth,
url: `/orders/${orderId}/fulfillments/${id}/events.json`,
method: HttpMethod.POST,
body: {
event,
},
});
return (response.body as { fulfillment_event: ShopifyFulfillmentEvent })
.fulfillment_event;
}
export async function closeOrder(
id: number,
auth: ShopifyAuth
): Promise<ShopifyOrder> {
const response = await sendShopifyRequest({
auth: auth,
url: `/orders/${id}/close.json`,
method: HttpMethod.POST,
body: {},
});
return (response.body as { order: ShopifyOrder }).order;
}
export async function cancelOrder(
id: number,
auth: ShopifyAuth
): Promise<ShopifyOrder> {
const response = await sendShopifyRequest({
auth: auth,
url: `/orders/${id}/cancel.json`,
method: HttpMethod.POST,
body: {},
});
return (response.body as { order: ShopifyOrder }).order;
}
export async function adjustInventoryLevel(
id: number,
locationId: number,
adjustment: number,
auth: ShopifyAuth
): Promise<unknown> {
const response = await sendShopifyRequest({
auth: auth,
url: `/inventory_levels/adjust.json`,
method: HttpMethod.POST,
body: {
inventory_item_id: id,
location_id: locationId,
available_adjustment: adjustment,
},
});
return (response.body as { order: unknown }).order;
}
export async function createCollect(
collect: Partial<ShopifyCollect>,
auth: ShopifyAuth
): Promise<ShopifyCollect> {
const response = await sendShopifyRequest({
auth: auth,
url: `/collects.json`,
method: HttpMethod.POST,
body: {
collect,
},
});
return (response.body as { collect: ShopifyCollect }).collect;
}
export async function getAsset(
key: string,
themeId: number,
auth: ShopifyAuth
): Promise<unknown> {
const response = await sendShopifyRequest({
auth: auth,
url: `/themes/${themeId}/assets.json`,
queryParams: {
key,
},
method: HttpMethod.GET,
});
return (response.body as { asset: unknown }).asset;
}
export async function getProductVariant(
id: number,
auth: ShopifyAuth
): Promise<ShopifyProductVariant> {
const response = await sendShopifyRequest({
auth: auth,
url: `/variants/${id}.json`,
method: HttpMethod.GET,
});
return (response.body as { variant: ShopifyProductVariant }).variant;
}
export async function getProduct(
id: number,
auth: ShopifyAuth
): Promise<ShopifyProduct> {
const response = await sendShopifyRequest({
auth: auth,
url: `/products/${id}.json`,
method: HttpMethod.GET,
});
return (response.body as { product: ShopifyProduct }).product;
}
export async function createProductImage(
id: number,
image: Partial<ShopifyImage>,
auth: ShopifyAuth
): Promise<ShopifyImage> {
const response = await sendShopifyRequest({
auth: auth,
url: `/products/${id}/images.json`,
method: HttpMethod.POST,
body: {
image,
},
});
return (response.body as { image: ShopifyImage }).image;
}
export async function getAbandonedCheckouts(
auth: ShopifyAuth,
search: {
sinceId: string;
}
): Promise<ShopifyCheckout[]> {
const queryParams: QueryParams = {};
const { sinceId } = search;
if (sinceId) {
queryParams.since_id = sinceId;
}
const response = await sendShopifyRequest({
auth: auth,
url: `/checkouts.json`,
method: HttpMethod.GET,
queryParams,
});
return (response.body as { checkouts: ShopifyCheckout[] }).checkouts;
}

View File

@@ -0,0 +1,73 @@
import { httpClient, HttpMethod } from '@activepieces/pieces-common';
import {
createTrigger,
Trigger,
TriggerStrategy,
} from '@activepieces/pieces-framework';
import { shopifyAuth } from '../..';
export const createShopifyWebhookTrigger = ({
name,
description,
displayName,
sampleData,
topic,
}: {
name: string;
description: string;
displayName: string;
topic: string;
sampleData: Record<string, unknown>;
}) =>
createTrigger({
auth: shopifyAuth,
name,
description,
displayName,
props: {},
sampleData: sampleData,
type: TriggerStrategy.WEBHOOK,
async onEnable(context) {
const shopName = context.auth.props.shopName;
const response = await httpClient.sendRequest<{
webhook: {
id: string;
};
}>({
method: HttpMethod.POST,
url: `https://${shopName}.myshopify.com/admin/api/2023-01/webhooks.json`,
headers: {
'X-Shopify-Access-Token': context.auth.props.adminToken,
},
body: {
webhook: {
topic: topic,
address: context.webhookUrl,
format: 'json',
},
},
});
await context.store?.put(`shopify_webhook_id`, response.body.webhook.id);
console.log('webhook created', response.body.webhook.id);
},
async onDisable(context) {
const webhookId = await context.store.get<string>(`shopify_webhook_id`);
const shopName = context.auth.props.shopName;
await httpClient.sendRequest<{
webhook: {
id: string;
};
}>({
method: HttpMethod.DELETE,
url: `https://${shopName}.myshopify.com/admin/api/2023-01/webhooks/${webhookId}.json`,
headers: {
'X-Shopify-Access-Token': context.auth.props.adminToken,
},
});
await context.store?.put(`shopify_webhook_id`, null);
},
async run(context) {
console.debug('trigger running', context);
return [context.payload.body];
},
});

View File

@@ -0,0 +1,185 @@
import { AppConnectionValueForAuthProperty } from "@activepieces/pieces-framework";
import { shopifyAuth } from "../..";
export type ShopifyAuth = AppConnectionValueForAuthProperty<typeof shopifyAuth>;
export type ShopifyCustomer = {
id: number;
email: string;
accepts_marketing: boolean;
created_at: string;
updated_at: string;
first_name: string;
last_name: string;
orders_count: number;
state: string;
total_spent: number;
last_order_id: number;
note: unknown;
verified_email: boolean;
tax_exempt: boolean;
tags: string;
last_order_name: unknown;
currency: string;
phone: string;
addresses: unknown[];
accepts_marketing_updated_at: string;
marketing_opt_in_level: unknown;
tax_exemptions: unknown[];
email_marketing_consent: unknown;
sms_marketing_consent: unknown;
send_email_invite: boolean;
};
export type ShopifyOrder = {
line_items: Partial<ShopifyLineItem>[];
customer: Partial<ShopifyCustomer>;
financial_status: ShopifyOrderFinancialStatuses;
email: string;
send_receipt: boolean;
send_fulfillment_receipt: boolean;
fulfillment_status: string;
tags: string;
phone: string;
note: string;
};
export type ShopifyAddress = {
first_name: string;
address1: string;
phone: string;
city: string;
zip: string;
province: string;
country: string;
last_name: string;
address2: string;
company: unknown;
latitude: number;
longitude: number;
name: string;
country_code: string;
province_code: string;
};
export type ShopifyProduct = {
id: number;
title: string;
body_html: string;
vendor: string;
product_type: string;
status: ShopifyProductStatuses;
tags: string;
images: Partial<ShopifyImage>[];
created_at: string;
updated_at: string;
};
export type ShopifyImage = {
src: string;
attachment: string;
position: number;
};
export type ShopifyProductVariant = {
id: number;
product_id: number;
title: string;
price: string;
sku: string;
inventory_item_id: number;
inventory_quantity: number;
created_at: string;
updated_at: string;
[key: string]: string | number | unknown;
};
export type ShopifyLineItem = {
variant_id: number;
product_id: number;
quantity: number;
price: string;
title: string;
};
export type ShopifyDraftOrder = ShopifyOrder;
export type ShopifyTransaction = {
order_id: number;
currency: string;
amount: string;
source: string;
kind: ShopifyTransactionKinds;
parent_id: number;
test: boolean;
};
export type ShopifyFulfillment = {
order_id: number;
status: ShopifyFulfillmentStatuses;
line_items: Partial<ShopifyLineItem>[];
};
export type ShopifyFulfillmentEvent = {
id: number;
order_id: number;
status: ShopifyFulfillmentEventStatuses;
message: string;
};
export type ShopifyCollect = {
product_id: number;
collection_id: number;
};
export type ShopifyCheckout = {
id: number;
abandoned_checkout_url: string;
completed_at: string;
created_at: string;
currency: string;
customer: Partial<ShopifyCustomer>;
};
export enum ShopifyProductStatuses {
ACTIVE = 'active',
ARCHIVED = 'archived',
DRAFT = 'draft',
}
export enum ShopifyOrderFinancialStatuses {
PENDING = 'pending',
PARTIALLY_PAID = 'partially_pad',
}
export enum ShopifyTransactionKinds {
AUTHORIZATION = 'authorization',
SALE = 'sale',
CAPTURE = 'capture',
VOID = 'void',
REFUND = 'refund',
}
export enum ShopifyFulfillmentStatuses {
PENDING = 'pending',
OPEN = 'open',
SUCCESS = 'success',
CANCELLED = 'cancelled',
ERROR = 'error',
FAILURE = 'failure',
}
export enum ShopifyFulfillmentEventStatuses {
ATTEMPTED_DELIVERY = 'attempted_delivery',
CARRIER_PICKED_UP = 'carrier_picked_up',
CONFIRMED = 'confirmed',
DELAYED = 'delayed',
DELIVERED = 'delivered',
FAILURE = 'failure',
IN_TRANSIT = 'in_transit',
LABEL_PRINTED = 'label_printed',
LABEL_PURCHASED = 'label_purchased',
OUT_FOR_DELIVERY = 'out_for_delivery',
PICKED_UP = 'picked_up',
READY_FOR_PICKUP = 'ready_for_pickup',
}

View File

@@ -0,0 +1,44 @@
import {
Polling,
DedupeStrategy,
pollingHelper,
} from '@activepieces/pieces-common';
import { TriggerStrategy, createTrigger } from '@activepieces/pieces-framework';
import { getAbandonedCheckouts } from '../common';
import { shopifyAuth } from '../..';
import { ShopifyAuth } from '../common/types';
export const newAbandonedCheckout = createTrigger({
name: 'new_abandoned_checkout',
auth: shopifyAuth,
displayName: 'New Abandoned Checkout',
description: 'Triggers when a checkout is abandoned.',
props: {},
sampleData: {},
type: TriggerStrategy.POLLING,
async onEnable({ auth, propsValue, store }) {
await pollingHelper.onEnable(polling, { auth, propsValue, store });
},
async onDisable({ auth, propsValue, store }) {
await pollingHelper.onEnable(polling, { auth, propsValue, store });
},
async run({ auth, propsValue, store, files }) {
return await pollingHelper.poll(polling, { auth, propsValue, store, files });
},
async test({ auth, propsValue, store, files }) {
return await pollingHelper.test(polling, { auth, propsValue, store, files });
},
});
const polling: Polling<ShopifyAuth, unknown> = {
strategy: DedupeStrategy.LAST_ITEM,
items: async ({ auth, lastItemId }) => {
const checkouts = await getAbandonedCheckouts(auth, {
sinceId: lastItemId as string,
});
return checkouts.map((checkout) => ({
id: checkout.id,
data: checkout,
}));
},
};

View File

@@ -0,0 +1,753 @@
import { createShopifyWebhookTrigger } from '../common/register-webhook';
export const newCancelledOrder = createShopifyWebhookTrigger({
name: 'new_cancelled_order',
description: 'Triggered when order is cancelled',
topic: 'orders/cancelled',
displayName: 'New Cancelled Order',
sampleData: {
id: 5324790137142,
admin_graphql_api_id: 'gid://shopify/Order/5324790137142',
app_id: 16818700281,
browser_ip: '244.100.5.121',
buyer_accepts_marketing: false,
cancel_reason: 'other',
cancelled_at: '2023-03-24T18:08:18-04:00',
cart_token: null,
checkout_id: 36646023004470,
checkout_token: '751db9e69c75eb563f4d9b052e8cc0f7',
client_details: {
accept_language: null,
browser_height: null,
browser_ip: '244.100.5.121',
browser_width: null,
session_hash: null,
user_agent: 'Sunflower/production Cusco/1.12.1 Ruby/3.1.2',
},
closed_at: '2023-03-24T18:08:18-04:00',
company: null,
confirmed: true,
contact_email: 'russel.winfield@example.com',
created_at: '2023-03-24T11:28:18-04:00',
currency: 'USD',
current_subtotal_price: '0.00',
current_subtotal_price_set: {
shop_money: {
amount: '0.00',
currency_code: 'USD',
},
presentment_money: {
amount: '0.00',
currency_code: 'USD',
},
},
current_total_discounts: '0.00',
current_total_discounts_set: {
shop_money: {
amount: '0.00',
currency_code: 'USD',
},
presentment_money: {
amount: '0.00',
currency_code: 'USD',
},
},
current_total_duties_set: null,
current_total_price: '0.00',
current_total_price_set: {
shop_money: {
amount: '0.00',
currency_code: 'USD',
},
presentment_money: {
amount: '0.00',
currency_code: 'USD',
},
},
current_total_tax: '0.00',
current_total_tax_set: {
shop_money: {
amount: '0.00',
currency_code: 'USD',
},
presentment_money: {
amount: '0.00',
currency_code: 'USD',
},
},
customer_locale: 'en',
device_id: null,
discount_codes: [
{
code: '',
amount: '313.47',
type: 'percentage',
},
],
email: 'russel.winfield@example.com',
estimated_taxes: false,
financial_status: 'refunded',
fulfillment_status: null,
gateway: 'manual',
landing_site: null,
landing_site_ref: null,
location_id: null,
merchant_of_record_app_id: null,
name: '#1009',
note: null,
note_attributes: [],
number: 9,
order_number: 1009,
order_status_url:
'https://activepieces-test.myshopify.com/74392404278/orders/85adf5f235cb50d1dfc203d1b8da9885/authenticate?key=f91a3b1892736757ffb6ba26d3e7ff70',
original_total_duties_set: null,
payment_gateway_names: ['manual'],
phone: null,
presentment_currency: 'USD',
processed_at: '2023-03-24T11:28:17-04:00',
processing_method: 'manual',
reference: '7b40196bcf0a1cad3f0954c4e058c229',
referring_site: null,
source_identifier: '7b40196bcf0a1cad3f0954c4e058c229',
source_name: '16818700289',
source_url: null,
subtotal_price: '1776.38',
subtotal_price_set: {
shop_money: {
amount: '1776.38',
currency_code: 'USD',
},
presentment_money: {
amount: '1776.38',
currency_code: 'USD',
},
},
tags: 'Line Item Discount, Order Discount',
tax_lines: [],
taxes_included: false,
test: false,
token: '85adf5f235cb50d1dfc203d1b8da9885',
total_discounts: '323.47',
total_discounts_set: {
shop_money: {
amount: '323.47',
currency_code: 'USD',
},
presentment_money: {
amount: '323.47',
currency_code: 'USD',
},
},
total_line_items_price: '2099.85',
total_line_items_price_set: {
shop_money: {
amount: '2099.85',
currency_code: 'USD',
},
presentment_money: {
amount: '2099.85',
currency_code: 'USD',
},
},
total_outstanding: '0.00',
total_price: '1806.38',
total_price_set: {
shop_money: {
amount: '1806.38',
currency_code: 'USD',
},
presentment_money: {
amount: '1806.38',
currency_code: 'USD',
},
},
total_shipping_price_set: {
shop_money: {
amount: '30.00',
currency_code: 'USD',
},
presentment_money: {
amount: '30.00',
currency_code: 'USD',
},
},
total_tax: '0.00',
total_tax_set: {
shop_money: {
amount: '0.00',
currency_code: 'USD',
},
presentment_money: {
amount: '0.00',
currency_code: 'USD',
},
},
total_tip_received: '0.00',
total_weight: 13605,
updated_at: '2023-03-24T18:08:18-04:00',
user_id: null,
billing_address: {
first_name: 'Russell',
address1: '105 Victoria St',
phone: null,
city: 'Toronto',
zip: 'M5C1N7',
province: null,
country: 'Canada',
last_name: 'Winfield',
address2: null,
company: 'Company Name',
latitude: 43.6522608,
longitude: -79.3776862,
name: 'Russell Winfield',
country_code: 'CA',
province_code: null,
},
customer: {
id: 6972527083830,
email: 'russel.winfield@example.com',
accepts_marketing: false,
created_at: '2023-03-24T11:28:11-04:00',
updated_at: '2023-03-24T11:28:19-04:00',
first_name: 'Russell',
last_name: 'Winfield',
state: 'disabled',
note: 'This customer is created with most available fields',
verified_email: true,
multipass_identifier: null,
tax_exempt: false,
phone: '+16135550135',
email_marketing_consent: {
state: 'not_subscribed',
opt_in_level: 'single_opt_in',
consent_updated_at: null,
},
sms_marketing_consent: {
state: 'not_subscribed',
opt_in_level: 'unknown',
consent_updated_at: null,
consent_collected_from: 'OTHER',
},
tags: 'VIP',
currency: 'USD',
accepts_marketing_updated_at: '2023-03-24T11:28:11-04:00',
marketing_opt_in_level: null,
tax_exemptions: [],
admin_graphql_api_id: 'gid://shopify/Customer/6972527083830',
default_address: {
id: 9218460975414,
customer_id: 6972527083830,
first_name: 'Russell',
last_name: 'Winfield',
company: 'Company Name',
address1: '105 Victoria St',
address2: null,
city: 'Toronto',
province: null,
country: 'Canada',
zip: 'M5C1N7',
phone: null,
name: 'Russell Winfield',
province_code: null,
country_code: 'CA',
country_name: 'Canada',
default: true,
},
},
discount_applications: [
{
target_type: 'line_item',
type: 'manual',
value: '10.0',
value_type: 'fixed_amount',
allocation_method: 'each',
target_selection: 'explicit',
title: '',
description: null,
},
{
target_type: 'line_item',
type: 'manual',
value: '15.0',
value_type: 'percentage',
allocation_method: 'across',
target_selection: 'all',
title: '',
description: null,
},
],
fulfillments: [],
line_items: [
{
id: 13924936679734,
admin_graphql_api_id: 'gid://shopify/LineItem/13924936679734',
fulfillable_quantity: 0,
fulfillment_service: 'manual',
fulfillment_status: null,
gift_card: false,
grams: 4536,
name: 'The Complete Snowboard - Powder',
price: '699.95',
price_set: {
shop_money: {
amount: '699.95',
currency_code: 'USD',
},
presentment_money: {
amount: '699.95',
currency_code: 'USD',
},
},
product_exists: true,
product_id: 8222223302966,
properties: [],
quantity: 1,
requires_shipping: true,
sku: '',
taxable: true,
title: 'The Complete Snowboard',
total_discount: '10.00',
total_discount_set: {
shop_money: {
amount: '10.00',
currency_code: 'USD',
},
presentment_money: {
amount: '10.00',
currency_code: 'USD',
},
},
variant_id: 44872881537334,
variant_inventory_management: 'shopify',
variant_title: 'Powder',
vendor: 'Snowboard Vendor',
tax_lines: [],
duties: [],
discount_allocations: [
{
amount: '10.00',
amount_set: {
shop_money: {
amount: '10.00',
currency_code: 'USD',
},
presentment_money: {
amount: '10.00',
currency_code: 'USD',
},
},
discount_application_index: 0,
},
{
amount: '103.50',
amount_set: {
shop_money: {
amount: '103.50',
currency_code: 'USD',
},
presentment_money: {
amount: '103.50',
currency_code: 'USD',
},
},
discount_application_index: 1,
},
],
},
{
id: 13924936712502,
admin_graphql_api_id: 'gid://shopify/LineItem/13924936712502',
fulfillable_quantity: 0,
fulfillment_service: 'manual',
fulfillment_status: null,
gift_card: false,
grams: 4536,
name: 'The Complete Snowboard - Electric',
price: '699.95',
price_set: {
shop_money: {
amount: '699.95',
currency_code: 'USD',
},
presentment_money: {
amount: '699.95',
currency_code: 'USD',
},
},
product_exists: true,
product_id: 8222223302966,
properties: [],
quantity: 2,
requires_shipping: true,
sku: '',
taxable: true,
title: 'The Complete Snowboard',
total_discount: '0.00',
total_discount_set: {
shop_money: {
amount: '0.00',
currency_code: 'USD',
},
presentment_money: {
amount: '0.00',
currency_code: 'USD',
},
},
variant_id: 44872881570102,
variant_inventory_management: 'shopify',
variant_title: 'Electric',
vendor: 'Snowboard Vendor',
tax_lines: [],
duties: [],
discount_allocations: [
{
amount: '209.97',
amount_set: {
shop_money: {
amount: '209.97',
currency_code: 'USD',
},
presentment_money: {
amount: '209.97',
currency_code: 'USD',
},
},
discount_application_index: 1,
},
],
},
],
payment_terms: null,
refunds: [
{
id: 945108681014,
admin_graphql_api_id: 'gid://shopify/Refund/945108681014',
created_at: '2023-03-24T18:08:18-04:00',
note: null,
order_id: 5324790137142,
processed_at: '2023-03-24T18:08:18-04:00',
restock: false,
total_duties_set: {
shop_money: {
amount: '0.00',
currency_code: 'USD',
},
presentment_money: {
amount: '0.00',
currency_code: 'USD',
},
},
user_id: 94873289014,
order_adjustments: [
{
id: 278632759606,
amount: '-30.00',
amount_set: {
shop_money: {
amount: '-30.00',
currency_code: 'USD',
},
presentment_money: {
amount: '-30.00',
currency_code: 'USD',
},
},
kind: 'shipping_refund',
order_id: 5324790137142,
reason: 'Shipping refund',
refund_id: 945108681014,
tax_amount: '0.00',
tax_amount_set: {
shop_money: {
amount: '0.00',
currency_code: 'USD',
},
presentment_money: {
amount: '0.00',
currency_code: 'USD',
},
},
},
],
transactions: [
{
id: 6492880732470,
admin_graphql_api_id:
'gid://shopify/OrderTransaction/6492880732470',
amount: '1806.38',
authorization: null,
created_at: '2023-03-24T18:08:18-04:00',
currency: 'USD',
device_id: null,
error_code: null,
gateway: 'manual',
kind: 'refund',
location_id: null,
message: 'Refunded 1806.38 from manual gateway',
order_id: 5324790137142,
parent_id: 6492602990902,
payment_id: '#1009.2',
processed_at: '2023-03-24T18:08:18-04:00',
receipt: {},
source_name: '1830279',
status: 'success',
test: false,
user_id: null,
},
],
refund_line_items: [
{
id: 554287071542,
line_item_id: 13924936679734,
location_id: null,
quantity: 1,
restock_type: 'no_restock',
subtotal: 586.45,
subtotal_set: {
shop_money: {
amount: '586.45',
currency_code: 'USD',
},
presentment_money: {
amount: '586.45',
currency_code: 'USD',
},
},
total_tax: 0,
total_tax_set: {
shop_money: {
amount: '0.00',
currency_code: 'USD',
},
presentment_money: {
amount: '0.00',
currency_code: 'USD',
},
},
line_item: {
id: 13924936679734,
admin_graphql_api_id: 'gid://shopify/LineItem/13924936679734',
fulfillable_quantity: 0,
fulfillment_service: 'manual',
fulfillment_status: null,
gift_card: false,
grams: 4536,
name: 'The Complete Snowboard - Powder',
price: '699.95',
price_set: {
shop_money: {
amount: '699.95',
currency_code: 'USD',
},
presentment_money: {
amount: '699.95',
currency_code: 'USD',
},
},
product_exists: true,
product_id: 8222223302966,
properties: [],
quantity: 1,
requires_shipping: true,
sku: '',
taxable: true,
title: 'The Complete Snowboard',
total_discount: '10.00',
total_discount_set: {
shop_money: {
amount: '10.00',
currency_code: 'USD',
},
presentment_money: {
amount: '10.00',
currency_code: 'USD',
},
},
variant_id: 44872881537334,
variant_inventory_management: 'shopify',
variant_title: 'Powder',
vendor: 'Snowboard Vendor',
tax_lines: [],
duties: [],
discount_allocations: [
{
amount: '10.00',
amount_set: {
shop_money: {
amount: '10.00',
currency_code: 'USD',
},
presentment_money: {
amount: '10.00',
currency_code: 'USD',
},
},
discount_application_index: 0,
},
{
amount: '103.50',
amount_set: {
shop_money: {
amount: '103.50',
currency_code: 'USD',
},
presentment_money: {
amount: '103.50',
currency_code: 'USD',
},
},
discount_application_index: 1,
},
],
},
},
{
id: 554287104310,
line_item_id: 13924936712502,
location_id: null,
quantity: 2,
restock_type: 'no_restock',
subtotal: 1189.93,
subtotal_set: {
shop_money: {
amount: '1189.93',
currency_code: 'USD',
},
presentment_money: {
amount: '1189.93',
currency_code: 'USD',
},
},
total_tax: 0,
total_tax_set: {
shop_money: {
amount: '0.00',
currency_code: 'USD',
},
presentment_money: {
amount: '0.00',
currency_code: 'USD',
},
},
line_item: {
id: 13924936712502,
admin_graphql_api_id: 'gid://shopify/LineItem/13924936712502',
fulfillable_quantity: 0,
fulfillment_service: 'manual',
fulfillment_status: null,
gift_card: false,
grams: 4536,
name: 'The Complete Snowboard - Electric',
price: '699.95',
price_set: {
shop_money: {
amount: '699.95',
currency_code: 'USD',
},
presentment_money: {
amount: '699.95',
currency_code: 'USD',
},
},
product_exists: true,
product_id: 8222223302966,
properties: [],
quantity: 2,
requires_shipping: true,
sku: '',
taxable: true,
title: 'The Complete Snowboard',
total_discount: '0.00',
total_discount_set: {
shop_money: {
amount: '0.00',
currency_code: 'USD',
},
presentment_money: {
amount: '0.00',
currency_code: 'USD',
},
},
variant_id: 44872881570102,
variant_inventory_management: 'shopify',
variant_title: 'Electric',
vendor: 'Snowboard Vendor',
tax_lines: [],
duties: [],
discount_allocations: [
{
amount: '209.97',
amount_set: {
shop_money: {
amount: '209.97',
currency_code: 'USD',
},
presentment_money: {
amount: '209.97',
currency_code: 'USD',
},
},
discount_application_index: 1,
},
],
},
},
],
duties: [],
},
],
shipping_address: {
first_name: 'Russell',
address1: '105 Victoria St',
phone: null,
city: 'Toronto',
zip: 'M5C1N7',
province: null,
country: 'Canada',
last_name: 'Winfield',
address2: null,
company: 'Company Name',
latitude: 43.6522608,
longitude: -79.3776862,
name: 'Russell Winfield',
country_code: 'CA',
province_code: null,
},
shipping_lines: [
{
id: 4362548838710,
carrier_identifier: '071e9d6cd4a1d56acf60bc21aea1e689',
code: 'International Shipping',
delivery_category: null,
discounted_price: '30.00',
discounted_price_set: {
shop_money: {
amount: '30.00',
currency_code: 'USD',
},
presentment_money: {
amount: '30.00',
currency_code: 'USD',
},
},
phone: null,
price: '30.00',
price_set: {
shop_money: {
amount: '30.00',
currency_code: 'USD',
},
presentment_money: {
amount: '30.00',
currency_code: 'USD',
},
},
requested_fulfillment_service_id: null,
source: 'shopify',
title: 'International Shipping',
tax_lines: [],
discount_allocations: [],
},
],
},
});

View File

@@ -0,0 +1,81 @@
import { createShopifyWebhookTrigger } from '../common/register-webhook';
export const newCustomer = createShopifyWebhookTrigger({
name: 'new_customer',
description: 'Triggered when a new customer is created',
topic: 'customers/create',
displayName: 'New Customer',
sampleData: {
id: 6972943892790,
email: 'john@activepieces.com',
accepts_marketing: false,
created_at: '2023-03-24T18:13:56-04:00',
updated_at: '2023-03-24T18:13:56-04:00',
first_name: 'John',
last_name: 'Doe',
orders_count: 0,
state: 'disabled',
total_spent: '0.00',
last_order_id: null,
note: 'Some notes',
verified_email: true,
multipass_identifier: null,
tax_exempt: false,
tags: 'tag, VIP',
last_order_name: null,
currency: 'USD',
addresses: [
{
id: 9218699002161,
customer_id: 6972943892790,
first_name: 'John',
last_name: 'Doe',
company: 'Company Name',
address1: 'Delaware',
address2: '11, test',
city: 'Calforina',
province: 'Delaware',
country: 'United States',
zip: '19931',
name: 'Mohammad AbuAboud',
province_code: 'DE',
country_code: 'US',
country_name: 'United States',
default: true,
},
],
accepts_marketing_updated_at: '2023-03-24T18:13:56-04:00',
marketing_opt_in_level: null,
tax_exemptions: [],
email_marketing_consent: {
state: 'not_subscribed',
opt_in_level: 'single_opt_in',
consent_updated_at: null,
},
sms_marketing_consent: {
state: 'not_subscribed',
opt_in_level: 'single_opt_in',
consent_updated_at: null,
consent_collected_from: 'SHOPIFY',
},
admin_graphql_api_id: 'gid://shopify/Customer/6972943892790',
default_address: {
id: 9218699002166,
customer_id: 6972943892790,
first_name: 'Mohammad',
last_name: 'AbuAboud',
company: 'Company Name',
address1: 'Delaware',
address2: '11, test',
city: 'Calforina',
province: 'Delaware',
country: 'United States',
zip: '19931',
name: 'Mohammad AbuAboud',
province_code: 'DE',
country_code: 'US',
country_name: 'United States',
default: true,
},
},
});

View File

@@ -0,0 +1,238 @@
import { createShopifyWebhookTrigger } from '../common/register-webhook';
export const newOrder = createShopifyWebhookTrigger({
name: 'new_order',
description: 'Triggered when a new order is created',
topic: 'orders/create',
displayName: 'New Order',
sampleData: {
id: 5324830114101,
admin_graphql_api_id: 'gid://shopify/Order/5324830114102',
app_id: 1354745,
browser_ip: '95.90.193.175',
buyer_accepts_marketing: false,
cancel_reason: null,
cancelled_at: null,
cart_token: null,
checkout_id: 36646099517750,
checkout_token: '2b9ba639fb81a1fb61a02be4c95459b5',
client_details: {
accept_language: null,
browser_height: null,
browser_ip: '95.90.193.175',
browser_width: null,
session_hash: null,
user_agent:
'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36',
},
closed_at: null,
company: null,
confirmed: true,
contact_email: null,
created_at: '2023-03-24T12:37:26-04:00',
currency: 'USD',
current_subtotal_price: '2629.95',
current_subtotal_price_set: {
shop_money: {
amount: '2629.95',
currency_code: 'USD',
},
presentment_money: {
amount: '2629.95',
currency_code: 'USD',
},
},
current_total_discounts: '0.00',
current_total_discounts_set: {
shop_money: {
amount: '0.00',
currency_code: 'USD',
},
presentment_money: {
amount: '0.00',
currency_code: 'USD',
},
},
current_total_duties_set: null,
current_total_price: '2629.95',
current_total_price_set: {
shop_money: {
amount: '2629.95',
currency_code: 'USD',
},
presentment_money: {
amount: '2629.95',
currency_code: 'USD',
},
},
current_total_tax: '0.00',
current_total_tax_set: {
shop_money: {
amount: '0.00',
currency_code: 'USD',
},
presentment_money: {
amount: '0.00',
currency_code: 'USD',
},
},
customer_locale: 'en',
device_id: null,
discount_codes: [],
email: '',
estimated_taxes: false,
financial_status: 'paid',
fulfillment_status: null,
gateway: 'manual',
landing_site: null,
landing_site_ref: null,
location_id: 80901996854,
merchant_of_record_app_id: null,
name: '#1010',
note: null,
note_attributes: [],
number: 10,
order_number: 1010,
order_status_url:
'https://activepieces-test.myshopify.com/74392404278/orders/2979b599ca9a25049397820ac12aaf87/authenticate?key=42a8db0d2e048823fea486a316d0d231',
original_total_duties_set: null,
payment_gateway_names: ['manual'],
presentment_currency: 'USD',
processed_at: '2023-03-24T12:37:26-04:00',
processing_method: 'manual',
reference: 'f86c8158ece5ee11dfafc9b21f390184',
referring_site: null,
source_identifier: 'f86c8158ece5ee11dfafc9b21f390184',
source_name: 'shopify_draft_order',
source_url: null,
subtotal_price: '2629.95',
subtotal_price_set: {
shop_money: {
amount: '2629.95',
currency_code: 'USD',
},
presentment_money: {
amount: '2629.95',
currency_code: 'USD',
},
},
tags: '',
tax_lines: [],
taxes_included: false,
test: false,
token: '2979b599ca9a25049397820ac12aaf87',
total_discounts: '0.00',
total_discounts_set: {
shop_money: {
amount: '0.00',
currency_code: 'USD',
},
presentment_money: {
amount: '0.00',
currency_code: 'USD',
},
},
total_line_items_price: '2629.95',
total_line_items_price_set: {
shop_money: {
amount: '2629.95',
currency_code: 'USD',
},
presentment_money: {
amount: '2629.95',
currency_code: 'USD',
},
},
total_outstanding: '0.00',
total_price: '2629.95',
total_price_set: {
shop_money: {
amount: '2629.95',
currency_code: 'USD',
},
presentment_money: {
amount: '2629.95',
currency_code: 'USD',
},
},
total_shipping_price_set: {
shop_money: {
amount: '0.00',
currency_code: 'USD',
},
presentment_money: {
amount: '0.00',
currency_code: 'USD',
},
},
total_tax: '0.00',
total_tax_set: {
shop_money: {
amount: '0.00',
currency_code: 'USD',
},
presentment_money: {
amount: '0.00',
currency_code: 'USD',
},
},
total_tip_received: '0.00',
total_weight: 0,
updated_at: '2023-03-24T12:37:27-04:00',
user_id: 94873289014,
discount_applications: [],
fulfillments: [],
line_items: [
{
id: 13925006311734,
admin_graphql_api_id: 'gid://shopify/LineItem/13925006311734',
fulfillable_quantity: 1,
fulfillment_service: 'snow-city-warehouse',
fulfillment_status: null,
gift_card: false,
grams: 0,
name: 'The 3p Fulfilled Snowboard',
price: '2629.95',
price_set: {
shop_money: {
amount: '2629.95',
currency_code: 'USD',
},
presentment_money: {
amount: '2629.95',
currency_code: 'USD',
},
},
product_exists: true,
product_id: 8222223204662,
properties: [],
quantity: 1,
requires_shipping: true,
sku: 'sku-hosted-1',
taxable: true,
title: 'The 3p Fulfilled Snowboard',
total_discount: '0.00',
total_discount_set: {
shop_money: {
amount: '0.00',
currency_code: 'USD',
},
presentment_money: {
amount: '0.00',
currency_code: 'USD',
},
},
variant_id: 44872881439030,
variant_inventory_management: 'shopify',
variant_title: null,
vendor: 'activepieces-test',
tax_lines: [],
duties: [],
discount_allocations: [],
},
],
payment_terms: null,
refunds: [],
shipping_lines: [],
},
});

View File

@@ -0,0 +1,238 @@
import { createShopifyWebhookTrigger } from '../common/register-webhook';
export const newPaidOrder = createShopifyWebhookTrigger({
name: 'new_paid_order',
description: 'Triggered when a paid order is created',
topic: 'orders/paid',
displayName: 'New Paid Order',
sampleData: {
id: 5324830114101,
admin_graphql_api_id: 'gid://shopify/Order/5324830114102',
app_id: 1354745,
browser_ip: '95.90.193.175',
buyer_accepts_marketing: false,
cancel_reason: null,
cancelled_at: null,
cart_token: null,
checkout_id: 36646099517750,
checkout_token: '2b9ba639fb81a1fb61a02be4c95459b5',
client_details: {
accept_language: null,
browser_height: null,
browser_ip: '95.90.193.175',
browser_width: null,
session_hash: null,
user_agent:
'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36',
},
closed_at: null,
company: null,
confirmed: true,
contact_email: null,
created_at: '2023-03-24T12:37:26-04:00',
currency: 'USD',
current_subtotal_price: '2629.95',
current_subtotal_price_set: {
shop_money: {
amount: '2629.95',
currency_code: 'USD',
},
presentment_money: {
amount: '2629.95',
currency_code: 'USD',
},
},
current_total_discounts: '0.00',
current_total_discounts_set: {
shop_money: {
amount: '0.00',
currency_code: 'USD',
},
presentment_money: {
amount: '0.00',
currency_code: 'USD',
},
},
current_total_duties_set: null,
current_total_price: '2629.95',
current_total_price_set: {
shop_money: {
amount: '2629.95',
currency_code: 'USD',
},
presentment_money: {
amount: '2629.95',
currency_code: 'USD',
},
},
current_total_tax: '0.00',
current_total_tax_set: {
shop_money: {
amount: '0.00',
currency_code: 'USD',
},
presentment_money: {
amount: '0.00',
currency_code: 'USD',
},
},
customer_locale: 'en',
device_id: null,
discount_codes: [],
email: '',
estimated_taxes: false,
financial_status: 'paid',
fulfillment_status: null,
gateway: 'manual',
landing_site: null,
landing_site_ref: null,
location_id: 80901996854,
merchant_of_record_app_id: null,
name: '#1010',
note: null,
note_attributes: [],
number: 10,
order_number: 1010,
order_status_url:
'https://activepieces-test.myshopify.com/74392404278/orders/2979b599ca9a25049397820ac12aaf87/authenticate?key=42a8db0d2e048823fea486a316d0d231',
original_total_duties_set: null,
payment_gateway_names: ['manual'],
presentment_currency: 'USD',
processed_at: '2023-03-24T12:37:26-04:00',
processing_method: 'manual',
reference: 'f86c8158ece5ee11dfafc9b21f390184',
referring_site: null,
source_identifier: 'f86c8158ece5ee11dfafc9b21f390184',
source_name: 'shopify_draft_order',
source_url: null,
subtotal_price: '2629.95',
subtotal_price_set: {
shop_money: {
amount: '2629.95',
currency_code: 'USD',
},
presentment_money: {
amount: '2629.95',
currency_code: 'USD',
},
},
tags: '',
tax_lines: [],
taxes_included: false,
test: false,
token: '2979b599ca9a25049397820ac12aaf87',
total_discounts: '0.00',
total_discounts_set: {
shop_money: {
amount: '0.00',
currency_code: 'USD',
},
presentment_money: {
amount: '0.00',
currency_code: 'USD',
},
},
total_line_items_price: '2629.95',
total_line_items_price_set: {
shop_money: {
amount: '2629.95',
currency_code: 'USD',
},
presentment_money: {
amount: '2629.95',
currency_code: 'USD',
},
},
total_outstanding: '0.00',
total_price: '2629.95',
total_price_set: {
shop_money: {
amount: '2629.95',
currency_code: 'USD',
},
presentment_money: {
amount: '2629.95',
currency_code: 'USD',
},
},
total_shipping_price_set: {
shop_money: {
amount: '0.00',
currency_code: 'USD',
},
presentment_money: {
amount: '0.00',
currency_code: 'USD',
},
},
total_tax: '0.00',
total_tax_set: {
shop_money: {
amount: '0.00',
currency_code: 'USD',
},
presentment_money: {
amount: '0.00',
currency_code: 'USD',
},
},
total_tip_received: '0.00',
total_weight: 0,
updated_at: '2023-03-24T12:37:27-04:00',
user_id: 94873289014,
discount_applications: [],
fulfillments: [],
line_items: [
{
id: 13925006311734,
admin_graphql_api_id: 'gid://shopify/LineItem/13925006311734',
fulfillable_quantity: 1,
fulfillment_service: 'snow-city-warehouse',
fulfillment_status: null,
gift_card: false,
grams: 0,
name: 'The 3p Fulfilled Snowboard',
price: '2629.95',
price_set: {
shop_money: {
amount: '2629.95',
currency_code: 'USD',
},
presentment_money: {
amount: '2629.95',
currency_code: 'USD',
},
},
product_exists: true,
product_id: 8222223204662,
properties: [],
quantity: 1,
requires_shipping: true,
sku: 'sku-hosted-1',
taxable: true,
title: 'The 3p Fulfilled Snowboard',
total_discount: '0.00',
total_discount_set: {
shop_money: {
amount: '0.00',
currency_code: 'USD',
},
presentment_money: {
amount: '0.00',
currency_code: 'USD',
},
},
variant_id: 44872881439030,
variant_inventory_management: 'shopify',
variant_title: null,
vendor: 'activepieces-test',
tax_lines: [],
duties: [],
discount_allocations: [],
},
],
payment_terms: null,
refunds: [],
shipping_lines: [],
},
});

View File

@@ -0,0 +1,87 @@
import { createShopifyWebhookTrigger } from '../common/register-webhook';
export const updatedProduct = createShopifyWebhookTrigger({
name: 'updated_product',
description: 'Triggered when a product is updated.',
topic: 'products/update',
displayName: 'Updated Product',
sampleData: {
id: 8282295566587,
title: 'My AP Product',
body_html: 'Well <strong>this is nice</strong>',
vendor: 'Kofahi',
product_type: 'Test',
created_at: '2024-01-02T20:36:40+03:00',
handle: 'my-ap-product-1',
updated_at: '2024-01-02T20:36:40+03:00',
published_at: '2024-01-02T20:36:40+03:00',
template_suffix: null,
published_scope: 'global',
tags: '',
status: 'active',
variants: [
{
id: 45134980382971,
product_id: 8282295566587,
title: 'Default Title',
price: '0.000',
sku: '',
position: 1,
inventory_policy: 'deny',
compare_at_price: null,
fulfillment_service: 'manual',
inventory_management: null,
option1: 'Default Title',
option2: null,
option3: null,
created_at: '2024-01-02T20:36:40+03:00',
updated_at: '2024-01-02T20:36:40+03:00',
taxable: true,
barcode: null,
grams: 0,
image_id: null,
weight: 0,
weight_unit: 'kg',
inventory_item_id: 47200507134203,
inventory_quantity: 0,
old_inventory_quantity: 0,
requires_shipping: true,
},
],
options: [
{
id: 10640607805691,
product_id: 8282295566587,
name: 'Title',
position: 1,
values: ['Default Title'],
},
],
images: [
{
id: 41679215657211,
product_id: 8282295566587,
position: 1,
created_at: '2024-01-02T20:36:40+03:00',
updated_at: '2024-01-02T20:36:40+03:00',
alt: null,
width: 500,
height: 500,
src: 'https://cdn.shopify.com/s/files/1/0676/6598/5787/products/416a37a613b156f9d23e4fa1fd5358d7.png?v=1704217000',
variant_ids: [],
},
],
image: {
id: 41679215657211,
product_id: 8282295566587,
position: 1,
created_at: '2024-01-02T20:36:40+03:00',
updated_at: '2024-01-02T20:36:40+03:00',
alt: null,
width: 500,
height: 500,
src: 'https://cdn.shopify.com/s/files/1/0676/6598/5787/products/416a37a613b156f9d23e4fa1fd5358d7.png?v=1704217000',
variant_ids: [],
},
},
});