Unauthenticated admin
Allows interacting with the Admin API on requests that didn't come from Shopify.
This should only be used for Requests that do not originate from Shopify. You must do your own authentication before using this method. This function doesn't perform any validation and shouldn't rely on unvalidated user input.
This should only be used for Requests that do not originate from Shopify. You must do your own authentication before using this method. This function doesn't perform any validation and shouldn't rely on unvalidated user input.
Creates an unauthenticated Admin context.
- Anchor to shopshopshopstringstringrequiredrequired
UnauthenticatedAdminContext
- admin
Methods for interacting with the GraphQL / REST Admin APIs for the given store.
AdminApiContext<Resources> - session
The session for the given shop. This comes from the session storage which `shopifyApp` uses to store sessions in your database of choice. This will always be an offline session. You can use to get shop-specific data.
Session
AdminApiContext
Provides utilities that apps can use to make requests to the Admin API.
- graphql
Methods for interacting with the Shopify Admin GraphQL API
GraphQLClient - rest
Methods for interacting with the Shopify Admin REST API There are methods for interacting with individual REST resources. You can also make `GET`, `POST`, `PUT` and `DELETE` requests should the REST resources not meet your needs.
RestClientWithResources<Resources>
GraphQLClient
- query
string - options
GraphQLQueryOptions
Promise<Response>GraphQLQueryOptions
- apiVersion
ApiVersion - headers
{ [key: string]: any; } - tries
number - variables
QueryVariables
QueryVariables
- [key: string]
any
RestClientWithResources
RemixRestClient & {resources: Resources}RemixRestClient
- session
Session - get
Performs a GET request on the given path.
(params: GetRequestParams) => Promise<Response> - post
Performs a POST request on the given path.
(params: PostRequestParams) => Promise<Response> - put
Performs a PUT request on the given path.
(params: PostRequestParams) => Promise<Response> - delete
Performs a DELETE request on the given path.
(params: GetRequestParams) => Promise<Response>
/app/routes/**\/*.ts
Examples
Description
Get your app's shop-specific data using the returned offline `session` object.
/app/routes/**\/*.ts
import { LoaderArgs, json } from "@remix-run/node"; import { unauthenticated } from "../shopify.server"; import { getMyAppData } from "~/db/model.server"; export const loader = async ({ request }: LoaderArgs) => { const shop = getShopFromExternalRequest(request); const { session } = await unauthenticated.admin(shop); return json(await getMyAppData({shop: session.shop)); };Description
Use `admin.graphql` to make query / mutation requests.
Example
import { ActionArgs } from "@remix-run/node"; import { authenticate } from "../shopify.server"; export async function action({ request }: ActionArgs) { const { admin } = await authenticate.admin(request); const response = await admin.graphql( `#graphql mutation populateProduct($input: ProductInput!) { productCreate(input: $input) { product { id } } }`, { variables: { input: { title: "Product Name" } } } ); const productData = await response.json(); return json({ data: productData.data }); }Using REST resources
Description
Getting the number of orders in a store using REST resources.
/app/shopify.server.ts
import { shopifyApp } from "@shopify/shopify-app-remix/server"; import { restResources } from "@shopify/shopify-api/rest/admin/2023-07"; const shopify = shopifyApp({ restResources, // ...etc }); export default shopify; export const authenticate = shopify.authenticate;/app/routes/**\/*.ts
import { LoaderArgs, json } from "@remix-run/node"; import { authenticate } from "../shopify.server"; export const loader = async ({ request }: LoaderArgs) => { const { admin, session } = await authenticate.admin(request); return json(admin.rest.resources.Order.count({ session })); };Performing a GET request to the REST API
Description
Use `admin.rest.<method>` to make custom requests to the API.
/app/shopify.server.ts
import { shopifyApp } from "@shopify/shopify-app-remix/server"; import { restResources } from "@shopify/shopify-api/rest/admin/2023-04"; const shopify = shopifyApp({ restResources, // ...etc }); export default shopify; export const authenticate = shopify.authenticate;/app/routes/**\/*.ts
import { LoaderArgs, json } from "@remix-run/node"; import { authenticate } from "../shopify.server"; export const loader = async ({ request }: LoaderArgs) => { const { admin, session } = await authenticate.admin(request); const response = await admin.rest.get({ path: "/customers/count.json" }); const customers = await response.json(); return json({ customers }); };