Does the Shopify API have a way to get a list of all installed apps? - shopify

Does the Shopify API have a way to get a list of all installed apps?
I want to keep a history of all apps installed on my stores. The only relevant thing I can find in the API docs is about a Webhook to get notified of an 'app/uninstalled' event.
EDIT
An 'app/installed' event would be ideal, if it existed. It would enhance the security of my stores if I could fetch the list of apps that are installed, or be notified when an app is installed or uninstalled.
To address security concerns, I believe that access to this data should be restricted in the same ways that other API endpoints and webhooks are restricted. The store owner would grant permission to an app to allow it access. This would make it as secure as, for example, customer names.
I'm looking for something roughly equivalent to WordPress's get_plugins function, but for Shopify.

Hey you can use this endpoint to fetch all the installed apps https://shopify.dev/api/admin-graphql/2022-01/objects/queryroot#connections
##example request##
appInstallations (first: 5) {
edges {
node {
id,
launchUrl,
app{
title
},
}
}
}

No. You cannot use the API to query a shop about what Apps it has installed. Imagine that. You get to know all those little shop details and do what with them? Would be like giving you permission to uninstall Apps too. You see why that is a problem? Bad enough Apps can perform cross-talk with metafields... Apps would be another level of wrong.

Related

Shopify - Embedded App - User session and webhooks

I'm fairly new to Shopify development and I'm trying to understand the best way to address our requirement. Apologies if some of these are basic questions.
The intent is to build an embedded public application that is intended to:
Have a floating component that's present on all pages on the online
store.
React to the user journey e.g. do stuff when the user adds
items to cart, completes a checkout, etc.
Send events to our server through the journey to allow our server to provide relevant
info, regardless of the store theme.
Have the ability to do this at an individual session level i.e. not all users will have the same experience.
I had a few questions around this:
Will it be possible to add the script to the main theme page and
have it load on all pages?
Is there a better alternative, particularly if the integration is supposed to be light-touch for admins?
What is the best way to get access to the individual user session from the app (assuming we can request the appropriate permissions as a part of the app installation)?
Is app bridge and session token required for this?
Is it possible to build this app using Angular? I understand Shopify framework is API-based and in theory any UI framework should work, but will a deeper linking with the user session be possible with Angular?
If we get enable web hooks for the various events, would it be a reliable way to detect events happening in the user journey? If so, what will be the correlation id between the events from the app and the web hooks?
Is it possible to detect the page the user is in, regardless of the theme? For example: Is there a way to identify that the user has added an item to the cart regardless of the theme used or is a webhook our best bet for those events?
Thanks in advance!
There is one thing you can do that would support most of your needs. Create an App, and set that App up with a Proxy. Shopify will then support the customer centric store theme to use a secure Ajax callback to your App using the proxy. So you can always call a proxy like /tool/customer_check with or without a customer ID from anywhere in the store.
You can imagine how powerful that is. You can return Liquid or more commonly, JSON. Boom! You're in business.
Of course, there are alternatives, all with the caveat your mileage may vary. None of this is predicated on any particular tech stack, meaning you can use what you like and know.

BigCommerce Requirements to "Join the Technology Partner Program"

I want to write an app for BigCommerce.
On the BigCommerce developer website, it says
"Before you begin, you’ll need a sandbox store. BigCommerce offers app developers free sandbox stores through its Technology Partner Program. To get your sandbox store, apply to become a BigCommerce Technology Partner. To be approved as a partner, you will need:
A website.
The ability to support users of your app."
I have written code to modify themes using trial stores in the past without being a partner. (That is not what I am trying to do here, I did that in the past. I am trying to write an app, ANY app. I made the statement about modifying themes with a trial store to emphasize the fact that I know that I can do that and I am assuming that the sandbox store has other capabilities like the ability to access the control panel code.) As far as I can see, an app will need to integrate with the control panel code that I cannot see from just having a store. So, I am assuming that the sandbox store issued when approved as a partner will have this capability.
I sent an email to BigCommerce asking about the approval requirements and their reply was this.
“you must prove that you are an application developer. This consists of a website where you showcase the functionality and current companies that are possibly using your app.
If you have issue with the requirement to be approved as a partner you will need to speak with the team that does the approvals. Partnersupport#bigcommerce.com”
This reply came from appstore#bigcommerce.com. Why wasn't my email forwarded to Partnersupport#bigcommerce.com to begin with so I could get a more comprehensive answer? I did forward it to them and I am still waiting for an answer.
I am confused about this requirement.
I want to write a BigCommerce app. Are they saying that I cannot write a BigCommerce app unless I have written a BigCommerce app before? Are they saying that I have to have written other apps in general? If I write a great app, why would it matter if it is my first?
After I write the app, I can set up a webpage for it and submit it for approval.
How can I "showcase the functionality and current companies that are possibly using your(my) app" when it is an app specifically written for BigCommerce?
I cannot write the app unless I understand how to integrate it with BigCommerce.
As far as I can see, I cannot understand how to integrate it with BigCommerce unless I am a partner.
Am I missing something here?
Is there some other way to approach this?
Sr Marketplace Mgr for BigCommerce here. I think there are a few items of clarification I can offer:
You do not have to have an existing BigCommerce app to be approved for a partnership. You do however need some evidence of your existing work. If you don't have a portfolio, website, or other examples of your development work, it's difficult for our Partners team to determine if you're a qualified developer.
Partner apps will not have access to modify the BC control panel or core code. Apps must use our public APIs to work with a BC user's data or settings. Any settings that are in the CP but not in our APIs can't be modified directly via an app.
Any storefront changes - such as an edit to a BC theme to display weight in two different units - would have to be done using HTML/CSS/JS in the theme itself. We don't have an API for programmatically changing a storefront theme at this time.
If any of your questions for BigCommerce involve your app or app development, you'll need to direct them to my team at appstore#bigcommerce.com. Directing questions regarding your app to partnersupport#bigcommerce.com will be forwarded to my team. That channel is primarily for questions around the Partners program in general, and won't be able to provide detailed support on the app developer program.
Hopefully this clears up some of your confusion, please reach out to me at appstore#bigcommerce.com and I'll be happy to respond myself if you need more info.
Cheers - John

Instagram crawler without using Instagram API?

Is this possible?
The reason for asking is that the 2016 update with the Instagram API creates a sandbox and live environment. The sandbox is of limited value since you only get to use data of those users within the sandbox. If you get denied for the live upgrade, your existing application was wasted in effort.
I would like to identify a second possibility (such as HTTP?). Anything exists?
Looks like a valid use case for brands/businesses, complete the app make it look professional and get reviewed for public_content permission, submit a video of app.
No other way to get around, just follow the guidelines and get app approved.
Yes, this is possible with Selenium and Proxies

Tracking query strings in Shopify, using webhooks and admin options

I was redirected here by Shopify support. I have three main questions for a project I'll be working on and wanted to see how possible some of the things would be.
We are looking to develop a plugin for use with Shopify to track purchases through the use of a link shortener (to see which link referred what purchases, etc.). I have a few questions that I'm not 100% sure on even after reading through the documentation.
The first problem that I seem to have is tracking the query string that the link shortener appends to the URL once it redirects. For this service, they use "?visit_id={hash}" and I need to be able to access this--at the very least on the "Thank You" page after an order. I saw in the docs that there is "landing_page_ref" (http://wiki.shopify.com/Order#landing_site_ref) but considering our query string is "visit_id" instead of one of the acceptable parameters, how would I be able to use that query string?
Lastly, I just have a question about how webhooks work with plugins that are on the app store. I know I can just call webhooks to wherever I want, like my personal server, but if this app gets onto the app store, I obviously don't want to hook everything to my own server. Is there a way to make it run on the store itself, and which URL should I use?
Lastly, what is the preferred method for handling configuration options for the plugin? Is there a way to hook into the admin backend or would all configuration have to be in a file within the plugin?
Thanks,
Andrew
I'll do my best to answer these for you. It sounds like you're used to building plugins for something like Wordpress - Shopify apps are a bit different.
You can't access anything on the thank you page for the order.
The thank you page/checkout process goes through a secured Shopify page that you don't have access to - so if you want information about what your URL shortener attached to the store pages, you'll need to retrieve it while they're on the page (using something like a ScriptTag + Javascript to track the query string), or hope that it's inside the Order when you retrieve it later (using the API or a webhook).
Webhooks need to talk to a server you run.
They send the information to you, and then you process it and deal with it. If you want to use webhooks, you will need to run a server with your app on it for the webhooks to talk to.
You manage your own config.
Because you're running your own server to handle those webhooks, you handle configuration for your plugin there. The apps I've worked on typically have their own database for managing configuration options, as well as an admin panel to manage them (it's what the user accesses when they click 'Log Into [Your App]' on the "Manage Apps" screen).
You'll need to run your own server to host your Shopify app.

Shopify API calls from a java external application

My clients have decided to open a store on Shopify, and they want a list of the items for sale there to be displayed in our website; which is built in jsp (liferay). I'm completely new to Shopify, so I've been checking around, but I'm getting confused.
There appears to be a "Shopify4J" library which should make calls to the API real simple, which is basically what I need (retrieve a list of all items from the store). However, I see all these examples with urls, and I've read that Shopify API can only be used from Shopify apps.
My question is, can I actually call the API from my website to retrieve the item list? Or do I have to create a Shopify app that would connect to my site via something like webservice?
You could use the api and pull in the products, but I think a better solution would be to install the widget app and just embed the widget into your site. Much simple and does exactly what you want as far as I can tell.
Shopify Widget App: http://apps.shopify.com/shopify-widgets
In order to make an Shopify API call, You'll have to first create a token. This can be done by going to Apps > Manage private apps and then click Generate API Credentials. You'll be provided with API Key and password to use in your call.
Here is the documentation of private apps.
And here is Shopify's api documentation.