{
  "schema": "kallipolis.resource-quality.v1",
  "id": "resource.connector.shopify-admin-graphql-api",
  "version": "1.0.0",
  "title": "Shopify Admin GraphQL API connector boundary",
  "summary": "Official-source merchant authorization, read/write access-scope, GraphQL field/mutation, protected-data, and revocation boundaries for Shopify connectors.",
  "content": {
    "kind": "connector-boundary",
    "facts": [
      {
        "id": "fact.shopify.access-scopes.read",
        "statement": "Shopify apps request resource-specific read scopes, and GraphQL fields document the access needed for store, customer, order, product, or other data.",
        "normativeLevel": "informative",
        "sourceIds": [
          "source.shopify.access-scopes"
        ]
      },
      {
        "id": "fact.shopify.access-scopes.write",
        "statement": "Write scopes authorize both write and read for a resource, so an app should request write only when mutations are required.",
        "normativeLevel": "informative",
        "sourceIds": [
          "source.shopify.access-scopes"
        ]
      },
      {
        "id": "fact.shopify.access-scopes.auth",
        "statement": "Merchants approve declared scopes during installation, and some protected resources require additional Partner Dashboard permission before the scope can be requested.",
        "normativeLevel": "informative",
        "sourceIds": [
          "source.shopify.access-scopes"
        ]
      },
      {
        "id": "fact.shopify.access-scopes.boundary",
        "statement": "Granted scope state can change through uninstall or revocation, and authorization does not establish mutation success, payment, order acceptance, or merchant intent.",
        "normativeLevel": "informative",
        "sourceIds": [
          "source.shopify.access-scopes"
        ]
      }
    ]
  },
  "language": "en",
  "category": "enterprise-application-connector",
  "state": "prepared",
  "canonicalUrl": "https://platoskallipolis.com/resources/enterprise-application-connectors/shopify-admin-graphql-api.json",
  "contentHash": "sha256:ad9e743440f942787340559ec32c9e2bf91542c6265cfead4b10cc056365629b",
  "owner": {
    "id": "platos-kallipolis",
    "name": "Plato's Kallipolis",
    "type": "organization",
    "accountabilityUrl": "https://platoskallipolis.com/about"
  },
  "access": {
    "mode": "public",
    "url": "https://platoskallipolis.com/resources/enterprise-application-connectors/shopify-admin-graphql-api.json",
    "authentication": "none",
    "robotsAllowed": true
  },
  "provenance": {
    "method": "primary-source",
    "sources": [
      {
        "id": "source.shopify.access-scopes",
        "url": "https://shopify.dev/docs/api/usage/access-scopes",
        "title": "Shopify API access scopes",
        "publisher": "Shopify",
        "observedAt": "2026-08-27T01:30:00Z"
      }
    ]
  },
  "observedAt": "2026-08-27T01:30:00Z",
  "freshness": {
    "policy": "max-age",
    "state": "current",
    "nextReviewAt": "2026-09-03T01:30:00Z",
    "maxAgeSeconds": 604800
  },
  "license": {
    "id": "source-terms-apply",
    "url": "https://www.shopify.com/legal/api-terms",
    "redistributionAllowed": false
  },
  "evidence": [
    {
      "id": "evidence.shopify.access-scopes",
      "type": "source-claim",
      "url": "https://shopify.dev/docs/api/usage/access-scopes",
      "observedAt": "2026-08-27T01:30:00Z"
    }
  ]
}
