elsa-workflows / elsa-workflows/elsa-extensions
Add Shopify Integration
- Dominant language
- C#
- Stars
- 49
- Forks
- 48
- Avg merge
- 21h 35m
- Merged PRs (30d)
- 20
Description
This issue tracks the implementation of an integration for **Shopify** in Elsa Workflows. The module should allow workflows to interact with Shopify, supporting product management, orders, customers, fulfillment, inventory, and event monitoring.
## **Tasks**
- [ ] Create a new module: `Elsa.Integrations.Shopify`
- [ ] Implement **Workflow Activities**:
- [ ] **AcceptCancellationRequest** - Accepts a cancellation request for a fulfillment order.
- [ ] **AcceptFulfillmentRequest** - Accepts a fulfillment request and updates the assigned fulfillment order.
- [ ] **AdjustInventoryLevel** - Adjusts the inventory level of an inventory item at a location.
- [ ] **CancelFulfillmentOrder** - Cancels an assigned fulfillment order.
- [ ] **CancelOrder** - Cancels an order.
- [ ] **CloseFulfillmentOrder** - Closes an assigned fulfillment order.
- [ ] **CloseOrder** - Closes an order.
- [ ] **ConnectInventoryItem** - Connects an inventory item to a location.
- [ ] **CountOrders** - Retrieves an order count.
- [ ] **CreateCollect** - Adds a product to a custom collection.
- [ ] **CreateCustomCollection** - Creates a new custom collection.
- [ ] **CreateCustomer** - Creates a new customer.
- [ ] **CreateDiscountCode** - Creates a new discount code.
- [ ] **CreateDraftOrder** - Creates a new draft order.
- [ ] **CreateFulfillmentEvent** - Creates a fulfillment event (e.g., change status).
- [ ] **CreateFulfillmentService** - Creates a new fulfillment service.
- [ ] **CreateFulfillmentForOrders** - Creates a fulfillment for orders with the same order and location.
- [ ] **CreateMetafield** - Creates a metafield.
- [ ] **CreatePage** - Creates a new page.
- [ ] **CreatePriceRule** - Creates a new price rule.
- [ ] **CreateProduct** - Creates a new product.
- [ ] **CreateProductVariant** - Creates a new product variant.
- [ ] **CreateTransaction** - Creates a new transaction.
- [ ] **CreateArticle** - Creates a new article.
- [ ] **CreateOrder** - Creates a new order.
- [ ] **CreateOrUpdateAsset** - Creates or updates an asset by theme ID.
- [ ] **DeleteCollect** - Deletes a collect.
- [ ] **DeleteCustomCollection** - Deletes a custom collection.
- [ ] **DeleteCustomer** - Deletes a customer.
- [ ] **DeleteDiscountCode** - Deletes a discount code.
- [ ] **DeleteFulfillmentService** - Deletes a fulfillment service.
- [ ] **DeleteMetafield** - Deletes a metafield.
- [ ] **DeletePage** - Deletes a page.
- [ ] **DeleteProduct** - Deletes a product.
- [ ] **DeleteProductImage** - Deletes a product image.
- [ ] **DeleteProductVariant** - Deletes a product variant.
- [ ] **DeleteArticle** - Deletes an article.
- [ ] **DeleteAsset** - Deletes an asset by key and theme ID.
- [ ] **DeleteInventoryLevel** - Deletes an inventory level of an item at a location.
- [ ] **DeleteOrder** - Deletes an order.
- [ ] **GetCollect** - Retrieves details about a collect.
- [ ] **GetCustomCollection** - Retrieves details about a custom collection.
- [ ] **GetCustomer** - Retrieves details about a customer.
- [ ] **GetFulfillment** - Retrieves details about a fulfillment.
- [ ] **GetFulfillmentOrder** - Retrieves details about a specific fulfillment order.
- [ ] **GetMetafield** - Retrieves details about a metafield.
- [ ] **GetPage** - Retrieves details about a page.
- [ ] **GetProduct** - Retrieves details about a product.
- [ ] **GetProductVariant** - Retrieves details about a product variant.
- [ ] **GetRefund** - Retrieves details about a refund.
- [ ] **GetArticle** - Retrieves details about an article.
- [ ] **GetAsset** - Retrieves an asset’s content by key and theme ID.
- [ ] **GetOrder** - Retrieves details about an order.
- [ ] **HoldFulfillmentOrder** - Places a fulfillment hold on an open fulfillment order.
- [ ] **ImportB2BOrder** - Imports a non-Shopify B2B order (Shopify Plus required).
- [ ] **ListAssets** - Retrieves a list of assets by theme ID.
- [ ] **ListCustomerAddresses** - Retrieves all customer addresses.
- [ ] **ListFulfillmentOrders** - Retrieves a list of fulfillment orders for a specific order.
- [ ] **ListFulfillmentsForOrder** - Retrieves fulfillments associated with a fulfillment order.
- [ ] **ListProductImages** - Retrieves all product images.
- [ ] **ListProductVariants** - Retrieves all product variants.
- [ ] **MakeGraphQLAPICall** - Performs an arbitrary authorized GraphQL API call.
- [ ] **MakeAPICall** - Performs an arbitrary authorized API call.
- [ ] **NewEvent** - Triggers when a new order, product, etc., is created, updated, or deleted.
- [ ] **RejectCancellationRequest** - Rejects a cancellation request for a fulfillment order.
- [ ] **RejectFulfillmentRequest** - Rejects a fulfillment request.
- [ ] **ReleaseFulfillmentOrderHold** - Releases a fulfillment hold.
- [ ] **RelocateFulfillmentOrder** - Moves a fulfillment order to another location.
- [ ] **ReopenOrder** - Reopens a closed order.
- [ ] **SearchAssignedFulfillmentOrders** - Retrieves fulfillment orders assigned to an app.
- [ ] **SearchAbandonedCheckouts** - Searches for abandoned checkouts.
- [ ] **SearchArticles** - Searches for articles.
- [ ] **SearchCollects** - Searches for collects.
- [ ] **SearchCustomCollections** - Searches for custom collections.
- [ ] **SearchCustomers** - Searches for customers.
- [ ] **SearchDiscountCodes** - Searches for discount codes.
- [ ] **SearchDisputes** - Searches for disputes.
- [ ] **SearchFulfillments** - Retrieves fulfillments for an order.
- [ ] **SearchInventoryItems** - Retrieves inventory item details.
- [ ] **SearchInventoryLevels** - Searches for inventory levels.
- [ ] **SearchMetafields** - Searches for metafields.
- [ ] **SearchOrders** - Searches for orders.
- [ ] **SearchPages** - Searches for pages.
- [ ] **SearchPayouts** - Searches for payouts.
- [ ] **SearchProducts** - Searches for products.
- [ ] **SearchRefunds** - Searches for refunds.
- [ ] **SearchRisks** - Searches for order risks.
- [ ] **SearchTransactions** - Searches for transactions.
- [ ] **SendCancellationRequest** - Sends a cancellation request for a fulfillment order.
- [ ] **SendFulfillmentRequest** - Sends a fulfillment request for a fulfillment order.
- [ ] **SendInvitation** - Sends a customer invitation.
- [ ] **UpdateCustomCollection** - Updates a custom collection.
- [ ] **UpdateCustomer** - Updates a customer.
- [ ] **UpdateDiscountCode** - Updates a discount code.
- [ ] **UpdateFulfillmentService** - Updates a fulfillment service.
- [ ] **UpdateFulfillmentTracking** - Updates fulfillment tracking information.
- [ ] **UpdateMetafield** - Updates a metafield.
- [ ] **UpdatePage** - Updates a page.
- [ ] **UpdateProduct** - Updates a product.
- [ ] **UpdateProductVariant** - Updates a product variant.
- [ ] **UpdateArticle** - Updates an article.
- [ ] **UpdateInventoryItem** - Updates an inventory item.
- [ ] **UpdateInventoryLevel** - Sets the inventory level for an item at a location.
- [ ] **UpdateOrder** - Updates an order.
- [ ] **UploadProductImage** - Uploads a product image.
- [ ] **WatchAbandonedCheckouts** - Triggers when a new abandoned checkout is added.
- [ ] **WatchArticles** - Triggers when a new article is added.
- [ ] **WatchCustomers** - Triggers when a new customer is added.
- [ ] **WatchOrders** - Triggers when a new order is added.
- [ ] **WatchPages** - Triggers when a new page is added.
- [ ] **WatchProducts** - Triggers when a new product is added.
- [ ] Add Unit Tests
- [ ] Add Documentation (`README.md`)
## **References**
- 📖 [Shopify API Docs](https://shopify.dev/docs/api)
- 🛠️ [Shopify .NET SDK](https://www.nuget.org/packages/ShopifySharp/)
## **Notes**
- This integration supports OAuth authentication.
- Includes REST and GraphQL API calls for flexible data retrieval.
## **Contributor Guidelines**
1. Comment below to claim it.
2. Follow [CONTRIBUTING.md](https://github.com/elsa-workflows/elsa-integrations/blob/main/CONTRIBUTING.md).
3. Submit a PR referencing this issue.
Contributor guide
Assessment
This issue has not been assessed yet.