From 7b1229325e15e72322d75e6eb04fa1c7d5ad56f1 Mon Sep 17 00:00:00 2001 From: Ariel Caplan Date: Thu, 16 Apr 2026 18:33:39 +0300 Subject: [PATCH 1/2] Add `store create dev` command for creating development stores Implements `shopify store create dev` with --name (required), --organization, and --json flags. Calls the Business Platform Organizations API to create app development stores with polling for completion status. Includes structured JSON error output for agentic/automation use cases. Co-Authored-By: Claude Opus 4.6 (1M context) --- bin/get-graphql-schemas.js | 5 +- graphql.config.ts | 1 + package.json | 18 + .../generated/types.d.ts | 2 - packages/cli/README.md | 23 + packages/cli/oclif.manifest.json | 63 + packages/store/package.json | 4 +- packages/store/project.json | 33 + .../generated/create_app_development_store.ts | 93 + .../generated/poll_store_creation.ts | 64 + .../generated/types.d.ts | 90 + .../create_app_development_store.graphql | 15 + .../organizations_schema.graphql | 18307 ++++++++++++++++ .../queries/poll_store_creation.graphql | 8 + .../src/cli/commands/store/create/dev.test.ts | 88 + .../src/cli/commands/store/create/dev.ts | 57 + .../src/cli/services/store/create/dev.test.ts | 238 + .../src/cli/services/store/create/dev.ts | 148 + packages/store/src/index.ts | 2 + packages/store/tsconfig.json | 3 +- pnpm-lock.yaml | 6 + 21 files changed, 19263 insertions(+), 5 deletions(-) create mode 100644 packages/store/src/cli/api/graphql/business-platform-organizations/generated/create_app_development_store.ts create mode 100644 packages/store/src/cli/api/graphql/business-platform-organizations/generated/poll_store_creation.ts create mode 100644 packages/store/src/cli/api/graphql/business-platform-organizations/generated/types.d.ts create mode 100644 packages/store/src/cli/api/graphql/business-platform-organizations/mutations/create_app_development_store.graphql create mode 100644 packages/store/src/cli/api/graphql/business-platform-organizations/organizations_schema.graphql create mode 100644 packages/store/src/cli/api/graphql/business-platform-organizations/queries/poll_store_creation.graphql create mode 100644 packages/store/src/cli/commands/store/create/dev.test.ts create mode 100644 packages/store/src/cli/commands/store/create/dev.ts create mode 100644 packages/store/src/cli/services/store/create/dev.test.ts create mode 100644 packages/store/src/cli/services/store/create/dev.ts diff --git a/bin/get-graphql-schemas.js b/bin/get-graphql-schemas.js index b5a076dbd94..0ed958f3101 100755 --- a/bin/get-graphql-schemas.js +++ b/bin/get-graphql-schemas.js @@ -57,7 +57,10 @@ const schemas = [ owner: 'shop', repo: 'world', pathToFile: 'areas/platforms/organizations/db/graphql/organizations_schema.graphql', - localPaths: ['./packages/app/src/cli/api/graphql/business-platform-organizations/organizations_schema.graphql'], + localPaths: [ + './packages/app/src/cli/api/graphql/business-platform-organizations/organizations_schema.graphql', + './packages/store/src/cli/api/graphql/business-platform-organizations/organizations_schema.graphql', + ], }, { owner: 'shop', diff --git a/graphql.config.ts b/graphql.config.ts index bc1e9bf2229..d507fba25f9 100644 --- a/graphql.config.ts +++ b/graphql.config.ts @@ -86,5 +86,6 @@ export default { functions: projectFactory('functions', 'functions_cli_schema.graphql', 'app'), adminAsApp: projectFactory('admin', 'admin_schema.graphql'), organizationsDestinations: projectFactory('business-platform-destinations', 'destinations_schema.graphql', 'organizations'), + storeOrganizations: projectFactory('business-platform-organizations', 'organizations_schema.graphql', 'store'), }, } diff --git a/package.json b/package.json index 381e12038c2..2fcbef0c46f 100644 --- a/package.json +++ b/package.json @@ -220,6 +220,24 @@ ] } }, + "packages/store": { + "entry": [ + "**/{commands,hooks}/**/*.ts!", + "**/index.ts!" + ], + "project": "**/*.ts!", + "ignore": [ + "**/graphql/**/generated/*.ts" + ], + "ignoreDependencies": [ + "@graphql-typed-document-node/core" + ], + "vite": { + "config": [ + "vite.config.ts" + ] + } + }, "packages/cli": { "entry": [ "**/{commands,hooks}/**/*.ts!", diff --git a/packages/app/src/cli/api/graphql/business-platform-organizations/generated/types.d.ts b/packages/app/src/cli/api/graphql/business-platform-organizations/generated/types.d.ts index 52e20a2dd47..e6d67fd75a1 100644 --- a/packages/app/src/cli/api/graphql/business-platform-organizations/generated/types.d.ts +++ b/packages/app/src/cli/api/graphql/business-platform-organizations/generated/types.d.ts @@ -111,8 +111,6 @@ export type ShopFilterField = | 'COLLABORATOR_RELATIONSHIP_STATUS' /** The GID of the counterpart organization. Requires `store_type=client_transfer` or `store_type=collaborator`. */ | 'COUNTERPART_ORGANIZATION_ID' - /** The GID of the owning organization of the shop. */ - | 'OWNER_ORGANIZATION_ID' /** * The plan of the shop. Values: `basic`, `grow`, `plus`, `frozen`, `advanced`, * `inactive`, `cancelled`, `client_transfer`, `plus_client_transfer`, diff --git a/packages/cli/README.md b/packages/cli/README.md index 54f76ab3515..fefd837d5cc 100644 --- a/packages/cli/README.md +++ b/packages/cli/README.md @@ -77,6 +77,7 @@ * [`shopify plugins update`](#shopify-plugins-update) * [`shopify search [query]`](#shopify-search-query) * [`shopify store auth`](#shopify-store-auth) +* [`shopify store create dev`](#shopify-store-create-dev) * [`shopify store execute`](#shopify-store-execute) * [`shopify theme check`](#shopify-theme-check) * [`shopify theme console`](#shopify-theme-console) @@ -2139,6 +2140,28 @@ EXAMPLES $ shopify store auth --store shop.myshopify.com --scopes read_products,write_products --json ``` +## `shopify store create dev` + +Create a new development store. + +``` +USAGE + $ shopify store create dev --name [-j] [--no-color] [--organization ] [--verbose] + +FLAGS + -j, --json [env: SHOPIFY_FLAG_JSON] Output the result as JSON. Automatically disables color output. + --name= (required) [env: SHOPIFY_FLAG_STORE_NAME] Name for the new development store. + --no-color [env: SHOPIFY_FLAG_NO_COLOR] Disable color output. + --organization= [env: SHOPIFY_FLAG_ORGANIZATION] The organization to create the store in (numeric ID). + Auto-selects if you belong to a single org. + --verbose [env: SHOPIFY_FLAG_VERBOSE] Increase the verbosity of the output. + +DESCRIPTION + Create a new development store. + + Creates a new app development store in your organization. +``` + ## `shopify store execute` Execute GraphQL queries and mutations on a store. diff --git a/packages/cli/oclif.manifest.json b/packages/cli/oclif.manifest.json index fb2180a152a..9cb8d9691d0 100644 --- a/packages/cli/oclif.manifest.json +++ b/packages/cli/oclif.manifest.json @@ -5862,6 +5862,69 @@ "strict": true, "summary": "Authenticate an app against a store for store commands." }, + "store:create:dev": { + "aliases": [ + ], + "args": { + }, + "customPluginName": "@shopify/store", + "description": "Creates a new app development store in your organization.", + "descriptionWithMarkdown": "Creates a new app development store in your organization.", + "enableJsonFlag": false, + "flags": { + "json": { + "allowNo": false, + "char": "j", + "description": "Output the result as JSON. Automatically disables color output.", + "env": "SHOPIFY_FLAG_JSON", + "hidden": false, + "name": "json", + "type": "boolean" + }, + "name": { + "description": "Name for the new development store.", + "env": "SHOPIFY_FLAG_STORE_NAME", + "hasDynamicHelp": false, + "multiple": false, + "name": "name", + "required": true, + "type": "option" + }, + "no-color": { + "allowNo": false, + "description": "Disable color output.", + "env": "SHOPIFY_FLAG_NO_COLOR", + "hidden": false, + "name": "no-color", + "type": "boolean" + }, + "organization": { + "description": "The organization to create the store in (numeric ID). Auto-selects if you belong to a single org.", + "env": "SHOPIFY_FLAG_ORGANIZATION", + "hasDynamicHelp": false, + "multiple": false, + "name": "organization", + "type": "option" + }, + "verbose": { + "allowNo": false, + "description": "Increase the verbosity of the output.", + "env": "SHOPIFY_FLAG_VERBOSE", + "hidden": false, + "name": "verbose", + "type": "boolean" + } + }, + "hasDynamicHelp": false, + "hiddenAliases": [ + ], + "id": "store:create:dev", + "pluginAlias": "@shopify/cli", + "pluginName": "@shopify/cli", + "pluginType": "core", + "strict": true, + "summary": "Create a new development store." + }, "store:execute": { "aliases": [ ], diff --git a/packages/store/package.json b/packages/store/package.json index aef78b975b2..d5982988920 100644 --- a/packages/store/package.json +++ b/packages/store/package.json @@ -40,8 +40,10 @@ ] }, "dependencies": { + "@graphql-typed-document-node/core": "3.2.0", "@oclif/core": "4.5.3", - "@shopify/cli-kit": "3.93.0" + "@shopify/cli-kit": "3.93.0", + "@shopify/organizations": "3.93.0" }, "devDependencies": { "@vitest/coverage-istanbul": "^3.1.4" diff --git a/packages/store/project.json b/packages/store/project.json index ade6270f79e..9bccaee594d 100644 --- a/packages/store/project.json +++ b/packages/store/project.json @@ -41,6 +41,39 @@ "command": "pnpm tsc --noEmit", "cwd": "packages/store" } + }, + "graphql-codegen": { + "executor": "nx:noop", + "dependsOn": ["graphql-codegen:formatting"] + }, + "graphql-codegen:formatting": { + "executor": "nx:run-commands", + "dependsOn": ["graphql-codegen:postfix"], + "outputs": ["{projectRoot}/src/cli/api/graphql/business-platform-organizations/generated/**/*.ts"], + "options": { + "commands": ["pnpm eslint 'src/cli/api/graphql/business-platform-organizations/generated/**/*.{ts,tsx}' --fix"], + "cwd": "packages/store" + } + }, + "graphql-codegen:postfix": { + "executor": "nx:run-commands", + "dependsOn": ["graphql-codegen:generate:store-organizations"], + "outputs": ["{projectRoot}/src/cli/api/graphql/business-platform-organizations/generated/**/*.ts"], + "options": { + "commands": [ + "find ./packages/store/src/cli/api/graphql/business-platform-organizations/generated/ -type f -name '*.ts' -exec sh -c 'sed -i \"\" \"s|import \\* as Types from '\\''./types'\\'';|import \\* as Types from '\\''./types.js'\\'';|g; s|export const \\([A-Za-z0-9_]*\\)Document =|export const \\1 =|g\" \"$0\"' {} \\;" + ], + "cwd": "{workspaceRoot}" + } + }, + "graphql-codegen:generate:store-organizations": { + "executor": "nx:run-commands", + "inputs": ["{workspaceRoot}/graphql.config.ts", "{projectRoot}/src/cli/api/graphql/business-platform-organizations/**/*.graphql"], + "outputs": ["{projectRoot}/src/cli/api/graphql/business-platform-organizations/generated/**/*.ts"], + "options": { + "commands": ["pnpm exec graphql-codegen --project=storeOrganizations"], + "cwd": "{workspaceRoot}" + } } } } diff --git a/packages/store/src/cli/api/graphql/business-platform-organizations/generated/create_app_development_store.ts b/packages/store/src/cli/api/graphql/business-platform-organizations/generated/create_app_development_store.ts new file mode 100644 index 00000000000..cc226285301 --- /dev/null +++ b/packages/store/src/cli/api/graphql/business-platform-organizations/generated/create_app_development_store.ts @@ -0,0 +1,93 @@ +/* eslint-disable @typescript-eslint/consistent-type-definitions */ +import * as Types from './types.js' + +import {TypedDocumentNode as DocumentNode} from '@graphql-typed-document-node/core' + +export type CreateAppDevelopmentStoreMutationVariables = Types.Exact<{ + shopName: Types.Scalars['String']['input'] + priceLookupKey: Types.Scalars['String']['input'] + prepopulateTestData?: Types.InputMaybe +}> + +export type CreateAppDevelopmentStoreMutation = { + createAppDevelopmentStore: { + shopAdminUrl?: string | null + shopDomain?: string | null + userErrors?: {code?: string | null; field: string[]; message: string}[] | null + } +} + +export const CreateAppDevelopmentStore = { + kind: 'Document', + definitions: [ + { + kind: 'OperationDefinition', + operation: 'mutation', + name: {kind: 'Name', value: 'CreateAppDevelopmentStore'}, + variableDefinitions: [ + { + kind: 'VariableDefinition', + variable: {kind: 'Variable', name: {kind: 'Name', value: 'shopName'}}, + type: {kind: 'NonNullType', type: {kind: 'NamedType', name: {kind: 'Name', value: 'String'}}}, + }, + { + kind: 'VariableDefinition', + variable: {kind: 'Variable', name: {kind: 'Name', value: 'priceLookupKey'}}, + type: {kind: 'NonNullType', type: {kind: 'NamedType', name: {kind: 'Name', value: 'String'}}}, + }, + { + kind: 'VariableDefinition', + variable: {kind: 'Variable', name: {kind: 'Name', value: 'prepopulateTestData'}}, + type: {kind: 'NamedType', name: {kind: 'Name', value: 'Boolean'}}, + }, + ], + selectionSet: { + kind: 'SelectionSet', + selections: [ + { + kind: 'Field', + name: {kind: 'Name', value: 'createAppDevelopmentStore'}, + arguments: [ + { + kind: 'Argument', + name: {kind: 'Name', value: 'shopName'}, + value: {kind: 'Variable', name: {kind: 'Name', value: 'shopName'}}, + }, + { + kind: 'Argument', + name: {kind: 'Name', value: 'priceLookupKey'}, + value: {kind: 'Variable', name: {kind: 'Name', value: 'priceLookupKey'}}, + }, + { + kind: 'Argument', + name: {kind: 'Name', value: 'prepopulateTestData'}, + value: {kind: 'Variable', name: {kind: 'Name', value: 'prepopulateTestData'}}, + }, + ], + selectionSet: { + kind: 'SelectionSet', + selections: [ + {kind: 'Field', name: {kind: 'Name', value: 'shopAdminUrl'}}, + {kind: 'Field', name: {kind: 'Name', value: 'shopDomain'}}, + { + kind: 'Field', + name: {kind: 'Name', value: 'userErrors'}, + selectionSet: { + kind: 'SelectionSet', + selections: [ + {kind: 'Field', name: {kind: 'Name', value: 'code'}}, + {kind: 'Field', name: {kind: 'Name', value: 'field'}}, + {kind: 'Field', name: {kind: 'Name', value: 'message'}}, + {kind: 'Field', name: {kind: 'Name', value: '__typename'}}, + ], + }, + }, + {kind: 'Field', name: {kind: 'Name', value: '__typename'}}, + ], + }, + }, + ], + }, + }, + ], +} as unknown as DocumentNode diff --git a/packages/store/src/cli/api/graphql/business-platform-organizations/generated/poll_store_creation.ts b/packages/store/src/cli/api/graphql/business-platform-organizations/generated/poll_store_creation.ts new file mode 100644 index 00000000000..7134e5f1982 --- /dev/null +++ b/packages/store/src/cli/api/graphql/business-platform-organizations/generated/poll_store_creation.ts @@ -0,0 +1,64 @@ +/* eslint-disable @typescript-eslint/consistent-type-definitions */ +import * as Types from './types.js' + +import {TypedDocumentNode as DocumentNode} from '@graphql-typed-document-node/core' + +export type PollStoreCreationQueryVariables = Types.Exact<{ + shopDomain: Types.Scalars['String']['input'] +}> + +export type PollStoreCreationQuery = { + organization?: {id: string; storeCreation?: {status: Types.StoreCreationStatus} | null} | null +} + +export const PollStoreCreation = { + kind: 'Document', + definitions: [ + { + kind: 'OperationDefinition', + operation: 'query', + name: {kind: 'Name', value: 'PollStoreCreation'}, + variableDefinitions: [ + { + kind: 'VariableDefinition', + variable: {kind: 'Variable', name: {kind: 'Name', value: 'shopDomain'}}, + type: {kind: 'NonNullType', type: {kind: 'NamedType', name: {kind: 'Name', value: 'String'}}}, + }, + ], + selectionSet: { + kind: 'SelectionSet', + selections: [ + { + kind: 'Field', + name: {kind: 'Name', value: 'organization'}, + selectionSet: { + kind: 'SelectionSet', + selections: [ + {kind: 'Field', name: {kind: 'Name', value: 'id'}}, + { + kind: 'Field', + name: {kind: 'Name', value: 'storeCreation'}, + arguments: [ + { + kind: 'Argument', + name: {kind: 'Name', value: 'shopDomain'}, + value: {kind: 'Variable', name: {kind: 'Name', value: 'shopDomain'}}, + }, + ], + selectionSet: { + kind: 'SelectionSet', + selections: [ + {kind: 'Field', name: {kind: 'Name', value: 'status'}}, + {kind: 'Field', name: {kind: 'Name', value: '__typename'}}, + ], + }, + }, + {kind: 'Field', name: {kind: 'Name', value: '__typename'}}, + ], + }, + }, + ], + }, + }, + ], +} as unknown as DocumentNode diff --git a/packages/store/src/cli/api/graphql/business-platform-organizations/generated/types.d.ts b/packages/store/src/cli/api/graphql/business-platform-organizations/generated/types.d.ts new file mode 100644 index 00000000000..201939c8ef7 --- /dev/null +++ b/packages/store/src/cli/api/graphql/business-platform-organizations/generated/types.d.ts @@ -0,0 +1,90 @@ +/* eslint-disable @typescript-eslint/consistent-type-definitions, @typescript-eslint/naming-convention, @typescript-eslint/no-explicit-any, tsdoc/syntax, @typescript-eslint/no-duplicate-type-constituents, @typescript-eslint/no-redundant-type-constituents, @nx/enforce-module-boundaries */ +import {JsonMapType} from '@shopify/cli-kit/node/toml' +export type Maybe = T | null; +export type InputMaybe = Maybe; +export type Exact = { [K in keyof T]: T[K] }; +export type MakeOptional = Omit & { [SubKey in K]?: Maybe }; +export type MakeMaybe = Omit & { [SubKey in K]: Maybe }; +export type MakeEmpty = { [_ in K]?: never }; +export type Incremental = T | { [P in keyof T]?: P extends ' $fragmentName' | '__typename' ? T[P] : never }; +/** All built-in and custom scalars, mapped to their actual values */ +export type Scalars = { + ID: { input: string; output: string; } + String: { input: string; output: string; } + Boolean: { input: boolean; output: boolean; } + Int: { input: number; output: number; } + Float: { input: number; output: number; } + AccessRoleAssignee: { input: any; output: any; } + /** The ID for a AccessRole. */ + AccessRoleID: { input: any; output: any; } + AccessRoleRecordId: { input: any; output: any; } + /** The ID for a ActionAudit. */ + ActionAuditID: { input: any; output: any; } + /** The ID for a Address. */ + AddressID: { input: any; output: any; } + /** The ID for a BulkDataOperation. */ + BulkDataOperationID: { input: any; output: any; } + /** The ID for a BusinessUser. */ + BusinessUserID: { input: any; output: any; } + /** The ID for a BusinessUsersImport. */ + BusinessUsersImportID: { input: any; output: any; } + /** A signed decimal number, which supports arbitrary precision and is serialized as a string. */ + Decimal: { input: any; output: any; } + /** The ID for a DocumentAttachment. */ + DocumentAttachmentID: { input: any; output: any; } + /** The ID for a EntitySupportingDocument. */ + EntitySupportingDocumentID: { input: any; output: any; } + GlobalID: { input: string; output: string; } + /** The ID for a GovernmentIdentifier. */ + GovernmentIdentifierID: { input: any; output: any; } + /** The ID for a Group. */ + GroupID: { input: any; output: any; } + /** An ISO 8601-encoded date */ + ISO8601Date: { input: any; output: any; } + /** An ISO 8601-encoded datetime */ + ISO8601DateTime: { input: any; output: any; } + /** Represents untyped JSON */ + JSON: { input: JsonMapType | string; output: JsonMapType; } + /** The ID for a LegalEntity. */ + LegalEntityID: { input: any; output: any; } + /** The ID for a OrganizationDomain. */ + OrganizationDomainID: { input: any; output: any; } + /** The ID for a Organization. */ + OrganizationID: { input: any; output: any; } + /** The ID for a OrganizationUser. */ + OrganizationUserID: { input: any; output: any; } + /** The ID for a PersonAlias. */ + PersonAliasID: { input: any; output: any; } + /** The ID for a Person. */ + PersonID: { input: any; output: any; } + /** The ID for a Principal. */ + PrincipalID: { input: any; output: any; } + /** The ID for a Property. */ + PropertyID: { input: any; output: any; } + PropertyId: { input: string; output: string; } + PropertyPublicID: { input: string; output: string; } + /** The ID for a PropertyTransferRequest. */ + PropertyTransferRequestID: { input: any; output: any; } + /** The ID for a Role. */ + RoleID: { input: any; output: any; } + /** The ID for a Shop. */ + ShopID: { input: any; output: any; } + /** The ID for a ShopifyShop. */ + ShopifyShopID: { input: any; output: any; } + /** The ID for a StoreAdditionRequest. */ + StoreAdditionRequestID: { input: any; output: any; } + SupportedEntityId: { input: any; output: any; } + /** The ID for a SupportingDocument. */ + SupportingDocumentID: { input: any; output: any; } + /** An RFC 3986 and RFC 3987 compliant URI string. */ + URL: { input: string; output: string; } +}; + +export type StoreCreationStatus = + | 'AWAITING_CORE_STORE_READY' + | 'CALLING_CORE' + | 'COMPLETE' + | 'FAILED' + | 'FINALIZING' + | 'TIMED_OUT' + | 'USER_ERROR'; diff --git a/packages/store/src/cli/api/graphql/business-platform-organizations/mutations/create_app_development_store.graphql b/packages/store/src/cli/api/graphql/business-platform-organizations/mutations/create_app_development_store.graphql new file mode 100644 index 00000000000..58d998e875f --- /dev/null +++ b/packages/store/src/cli/api/graphql/business-platform-organizations/mutations/create_app_development_store.graphql @@ -0,0 +1,15 @@ +mutation CreateAppDevelopmentStore($shopName: String!, $priceLookupKey: String!, $prepopulateTestData: Boolean) { + createAppDevelopmentStore( + shopName: $shopName + priceLookupKey: $priceLookupKey + prepopulateTestData: $prepopulateTestData + ) { + shopAdminUrl + shopDomain + userErrors { + code + field + message + } + } +} diff --git a/packages/store/src/cli/api/graphql/business-platform-organizations/organizations_schema.graphql b/packages/store/src/cli/api/graphql/business-platform-organizations/organizations_schema.graphql new file mode 100644 index 00000000000..e41e152ebdb --- /dev/null +++ b/packages/store/src/cli/api/graphql/business-platform-organizations/organizations_schema.graphql @@ -0,0 +1,18307 @@ +""" +Requires that exactly one field must be supplied and that field must not be `null`. +""" +directive @oneOf on INPUT_OBJECT + +type AccessActionAudit implements Node { + action: String! + actorName: String! + + """ + The date of the audit event. + """ + date: ISO8601DateTime! + + """ + Action audit details for the organization. + """ + details( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): ActionAuditDetailConnection! + event: String! + + """ + The ID for an object. + """ + id: GlobalID! + queryComplexity: Int! + queryDepth: Int! + subjectType: String! +} + +""" +The connection type for AccessActionAudit. +""" +type AccessActionAuditConnection { + """ + A list of edges. + """ + edges: [AccessActionAuditEdge!]! + + """ + A list of nodes. + """ + nodes: [AccessActionAudit!]! + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! +} + +""" +An edge in a connection. +""" +type AccessActionAuditEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: AccessActionAudit! +} + +type AccessAggregatedRoleAssignment { + role: AccessRole! + shopsCount: Int + targetType: AccessRoleAssignmentTarget! + userGroup: Group +} + +""" +The connection type for AccessAggregatedRoleAssignment. +""" +type AccessAggregatedRoleAssignmentConnection { + """ + A list of edges. + """ + edges: [AccessAggregatedRoleAssignmentEdge!]! + + """ + A list of nodes. + """ + nodes: [AccessAggregatedRoleAssignment!]! + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! +} + +""" +An edge in a connection. +""" +type AccessAggregatedRoleAssignmentEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: AccessAggregatedRoleAssignment! +} + +enum AccessLevel { + ALLOW + APPROVAL_REQUIRED + DENY +} + +input AccessOrganizationOwnerChangeInput { + """ + The email of new organization owner. + """ + email: String! +} + +type AccessOrganizationOwnerChangeResult { + """ + New organization owner. + """ + newOrganizationOwner: OrganizationUser + + """ + Indicates whether the mutation was successful. + """ + success: Boolean + + """ + The collection of errors. + """ + userErrors: [UserError!] +} + +""" +The result of enabling RBAC for a Partner organization. +""" +type AccessPartnersMigrationEnableRbacResult { + success: Boolean + userErrors: [UserError!] +} + +""" +The result of migrating Partners users to Business Platform RBAC. +""" +type AccessPartnersMigrationMigrateUsersResult { + success: Boolean + userErrors: [UserError!] +} + +type AccessPointOfSaleAccess { + """ + Indicates whether the role grants access to Point of Sale. + """ + hasPosAccess: Boolean! + + """ + Indicates whether the role grants access to initialize new Point of Sale devices. + """ + initializePos: Boolean! +} + +input AccessPointOfSaleAccessInput { + """ + Indicates whether the role grants access to Point of Sale. + """ + hasPosAccess: Boolean + + """ + Indicates whether the role grants access to initialize new Point of Sale device. + """ + initializePos: Boolean +} + +enum AccessRecordPermissionAccessLevel { + ALLOW + DENY +} + +type AccessRole implements Node { + accessConditions: [String!] + + """ + Returns a list of assignable shops for the role. + """ + assignableShops( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + assignee: AccessRoleAssignee! + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + search: String + ): AssignableShopConnection! + category: AccessRoleCategory! + description: String + + """ + The ID for an object. + """ + id: GlobalID! + name: String! + permissions: [AccessRolePermission!]! + pointOfSaleAccess: AccessPointOfSaleAccess + queryComplexity: Int! + queryDepth: Int! + + """ + Returns a list of record permissions in the role. + """ + recordPermissions( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): AccessRoleRecordPermissionConnection! + roleType: AccessRoleType! + systemRoleHandle: String + usersCount: Int +} + +scalar AccessRoleAssignee + +enum AccessRoleAssignmentAssignee { + """ + An organization user. + """ + ORGANIZATION_USER + + """ + A group. + """ + USER_GROUP +} + +enum AccessRoleAssignmentRole { + """ + A point of sale role. + """ + POINT_OF_SALE + + """ + A store role. + """ + STORE +} + +enum AccessRoleAssignmentTarget { + ALL_COLLABORATOR_STORES + ALL_OWNED_STORES + ALL_STORES + INDIVIDUAL_COLLABORATOR_STORE + INDIVIDUAL_STORES + ORGANIZATION +} + +enum AccessRoleCategory { + ORGANIZATION + PARTNER + POINT_OF_SALE + STORE +} + +""" +The connection type for AccessRole. +""" +type AccessRoleConnection { + """ + A list of edges. + """ + edges: [AccessRoleEdge!]! + + """ + A list of nodes. + """ + nodes: [AccessRole!]! + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! +} + +input AccessRoleCreateInput { + """ + The conditions of the access condition. + """ + accessConditions: [String!] + + """ + The category of the role. + """ + category: AccessRoleCategory! + + """ + The description of the role. + """ + description: String + + """ + The name of the role. + """ + name: String! + + """ + Granular permissions in a role. + """ + permissions: [AccessRolePermissionInput!]! + + """ + Point of Sale Access. + """ + pointOfSaleAccess: AccessPointOfSaleAccessInput + + """ + Record permissions in a role. + """ + recordPermissions: [AccessRoleRecordId!] +} + +type AccessRoleCreateResult { + """ + The created role. + """ + role: AccessRole + + """ + Indicates whether the creation was successful. + """ + success: Boolean + + """ + The collection of errors. + """ + userErrors: [UserError!] +} + +input AccessRoleDeleteInput { + """ + The ID of the Role to delete. + """ + id: AccessRoleID! +} + +type AccessRoleDeleteResult { + """ + The deleted role id. + """ + deletedId: AccessRoleID + + """ + Indicates whether the deletion was successful. + """ + success: Boolean + + """ + List of user errors of role delete operation. + """ + userErrors: [UserError!] +} + +input AccessRoleDuplicateInput { + """ + The custom name for the duplicated Role. + """ + customRoleName: String + + """ + The ID of the Role to duplicated. + """ + roleId: AccessRoleID! +} + +type AccessRoleDuplicateResult { + """ + The newly created duplicate role. + """ + role: AccessRole + + """ + Indicates whether the mutation was successful. + """ + success: Boolean + + """ + The collection of errors. + """ + userErrors: [UserError!] +} + +""" +An edge in a connection. +""" +type AccessRoleEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: AccessRole! +} + +""" +Field options for filtering roles queries. +""" +enum AccessRoleFilterField { + """ + The category of a role. + """ + CATEGORY + + """ + The ID of a role. + """ + ID +} + +""" +Operators for filtering roles queries. +""" +enum AccessRoleFilterOperator { + """ + Equals operator. + """ + EQUALS + + """ + In operator. + """ + IN + + """ + Not equals operator. + """ + NOT_EQUALS +} + +""" +The ID for a AccessRole. +""" +scalar AccessRoleID + +type AccessRolePermission implements Node { + """ + Access level granted for the handle. + """ + accessLevel: AccessLevel! + + """ + The handle of the permission. + """ + handle: String! + + """ + The ID for an object. + """ + id: GlobalID! + queryComplexity: Int! + queryDepth: Int! +} + +input AccessRolePermissionInput { + """ + Access level granted for the handle. + """ + accessLevel: AccessLevel! + + """ + The handle of the permission. + """ + handle: String! +} + +union AccessRoleRecord = ShopApp + +scalar AccessRoleRecordId + +type AccessRoleRecordPermission { + """ + The record itself. + """ + record: AccessRoleRecord! + + """ + Identifier for the record + """ + recordId: ID! +} + +""" +The connection type for AccessRoleRecordPermission. +""" +type AccessRoleRecordPermissionConnection { + """ + A list of edges. + """ + edges: [AccessRoleRecordPermissionEdge!]! + + """ + A list of nodes. + """ + nodes: [AccessRoleRecordPermission!]! + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! +} + +""" +An edge in a connection. +""" +type AccessRoleRecordPermissionEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: AccessRoleRecordPermission! +} + +input AccessRoleRecordPermissionInput { + """ + Represents whether a record access is allowed or denied. + """ + accessLevel: AccessRecordPermissionAccessLevel! + + """ + Global Id of the record associated with the permission. + """ + recordId: AccessRoleRecordId! +} + +enum AccessRoleType { + CUSTOM + SYSTEM +} + +input AccessRoleUpdateInput { + """ + The conditions of the access condition. + """ + accessConditions: [String!] + + """ + The description of the Role. + """ + description: String + + """ + The ID of the Role to update. + """ + id: AccessRoleID! + + """ + The name of the Role. + """ + name: String + + """ + Granular permissions modified for the role. + """ + permissionsToUpdate: [AccessRolePermissionInput!] + + """ + Access to Point of Sale. + """ + pointOfSaleAccess: AccessPointOfSaleAccessInput + + """ + Record permissions the were updated for the role. + """ + recordPermissionsToUpdate: [AccessRoleRecordPermissionInput!] +} + +type AccessRoleUpdateResult { + """ + The updated role. + """ + role: AccessRole + + """ + Indicates whether the update was successful. + """ + success: Boolean + + """ + The collection of errors. + """ + userErrors: [UserError!] +} + +input AccessRolesDeleteInput { + """ + The IDs of the Roles to delete. + """ + ids: [AccessRoleID!]! +} + +input AccessStoreOwnerChangeInput { + """ + The email of new store owner. + """ + email: String! + + """ + The ID of the store. + """ + shopifyShopId: ShopifyShopID! +} + +type AccessStoreOwnerChangeResult { + """ + Indicates whether the mutation was successful. + """ + success: Boolean + + """ + The collection of errors. + """ + userErrors: [UserError!] +} + +type AccessSummary { + """ + A summary of the permissions for a user or group. + """ + permissionsSummary(shopifyShopId: PropertyPublicID): PermissionsSummary + + """ + A summary of current store access for the user (legacy or RBAC). + """ + storeAccessSummary: StoreAccessSummary +} + +enum AccountTypeOfUser { + IDENTITY + LEGACY + PIN + SAML + SCIM +} + +type ActionAuditDetail implements Node { + event: String! + + """ + The ID for an object. + """ + id: GlobalID! + queryComplexity: Int! + queryDepth: Int! + subjectType: String! +} + +""" +The connection type for ActionAuditDetail. +""" +type ActionAuditDetailConnection { + """ + A list of edges. + """ + edges: [ActionAuditDetailEdge!]! + + """ + A list of nodes. + """ + nodes: [ActionAuditDetail!]! + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! +} + +""" +An edge in a connection. +""" +type ActionAuditDetailEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: ActionAuditDetail! +} + +""" +Field options for filtering action audit queries. +""" +enum ActionAuditFilterField { + """ + The created at timestamp of the action audit. + """ + CREATED_AT + + """ + The subject of the action audit. + """ + SUBJECT +} + +""" +Represents a single filter option for action audit queries. +""" +input ActionAuditFilterInput { + field: ActionAuditFilterField! + operator: ActionAuditFilterOperator! + value: String! +} + +""" +Operators for filtering action audit queries. +""" +enum ActionAuditFilterOperator { + """ + Equals operator. + """ + EQUALS + + """ + Greater than operator. + """ + GREATER_THAN + + """ + Less than operator. + """ + LESS_THAN +} + +""" +The ID for a ActionAudit. +""" +scalar ActionAuditID + +input AddRoleInput { + """ + List of administrative permissions. + """ + administrativePermissions: [String!] + + """ + The name of the role. + """ + name: String! + + """ + List of shop accesses. + """ + shopAccess: [ShopAccessInput!] +} + +type AddRoleResult { + """ + The added role. + """ + role: Role + + """ + The collection of errors. + """ + userErrors: [UserError!] +} + +type Address implements Node { + addressLine1: String + addressLine2: String + addressVariants: [AddressVariant!] + city: String + countryCode: CountryCode! + + """ + The ID for an object. + """ + id: GlobalID! + postalCode: String + queryComplexity: Int! + queryDepth: Int! + region: String + stateOrProvince: String + town: String +} + +""" +The connection type for Address. +""" +type AddressConnection { + """ + A list of edges. + """ + edges: [AddressEdge!]! + + """ + A list of nodes. + """ + nodes: [Address!]! + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! +} + +""" +An edge in a connection. +""" +type AddressEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: Address! +} + +""" +The ID for a Address. +""" +scalar AddressID + +input AddressInput { + """ + The first line of the address. Typically the street address or PO Box number. + """ + addressLine1: String + + """ + The second line of the address. Typically the number of the apartment, suite, or unit. + """ + addressLine2: String + + """ + The address variants. + """ + addressVariants: [AddressVariantInput!] + + """ + The name of the city, district, village, or town. + """ + city: String + + """ + The two-letter code for the country of the address. + """ + countryCode: CountryCode! + + """ + The zip or postal code of the address. + """ + postalCode: String + + """ + The code for the region of the address. + """ + stateOrProvince: String +} + +type AddressVariant { + """ + The first line of the address variant + """ + addressLine1: String + + """ + The second line of the address variant + """ + addressLine2: String + + """ + The city of the address variant + """ + city: String + + """ + The country code of the address variant + """ + countryCode: String + + """ + The postal code of the address variant + """ + postalCode: String + + """ + The region of the address variant + """ + region: String + + """ + The state or province of the address variant + """ + stateOrProvince: String + + """ + The town of the address variant + """ + town: String + + """ + The type of address variant (e.g., 'kanji', 'kana', 'formal') + """ + variantType: String! +} + +input AddressVariantInput { + """ + The first line of the address variant + """ + addressLine1: String + + """ + The second line of the address variant + """ + addressLine2: String + + """ + The city of the address variant + """ + city: String + + """ + The country code of the address variant + """ + countryCode: String + + """ + The postal code of the address variant + """ + postalCode: String + + """ + The region of the address variant + """ + region: String + + """ + The state or province of the address variant + """ + stateOrProvince: String + + """ + The type of address variant + """ + variantType: AlphabetType! +} + +type AdminBrowserSession { + """ + The date of the admin browser session. + """ + date: ISO8601Date + + """ + The IP address of the browser session. + """ + ipAddress: String + + """ + The location the browser session originated from. + """ + ipLocation: String + + """ + The name of the ISP the session originated from. + """ + ispName: String + + """ + The user agent of the browser. + """ + userAgent: String +} + +enum AlphabetType { + KANA + KANJI +} + +""" +The type of entity that metadata applies to +""" +enum ApplicableEntityType { + """ + Applies to legal entities/businesses + """ + LEGAL_ENTITY + + """ + Applies to individual persons/principals + """ + PERSON +} + +input AssignOrCreateAddressInput { + """ + The first line of the address. Typically the street address or PO Box number. + """ + addressLine1: String + + """ + The second line of the address. Typically the number of the apartment, suite, or unit. + """ + addressLine2: String + + """ + The address variants. + """ + addressVariants: [AddressVariantInput!] + + """ + The name of the city, district, village, or town. + """ + city: String + + """ + The two-letter code for the country of the address. + """ + countryCode: CountryCode! + + """ + The id of the address to assign or create. + """ + id: AddressID + + """ + The zip or postal code of the address. + """ + postalCode: String + + """ + The code for the region of the address. + """ + stateOrProvince: String +} + +input AssignPartnerOrganizationOwnerInput { + """ + Whether the OrganizationUser should be assigned as organization owner (admin). + """ + admin: Boolean! + + """ + The organization user to assign as owner. + """ + organizationUserId: OrganizationUserID! + + """ + The organization user making the request. + """ + requesterOrganizationUserId: OrganizationUserID +} + +type AssignPartnerOrganizationOwnerResult { + """ + The ID of the organization user assigned as owner. + """ + organizationUserId: OrganizationUserID + + """ + The collection of errors. + """ + userErrors: [UserError!] +} + +type AssignablePointOfSalePermissions { + """ + All assignable point of sale permissions. + """ + allPermissions: [String!]! + + """ + All assignable ternary point of sale permissions. Will be a subset of all_permissions + """ + ternaryPermissions: [String!]! +} + +type AssignableShop { + assigned: Boolean! + shop: Shop! +} + +""" +The connection type for AssignableShop. +""" +type AssignableShopConnection { + """ + A list of edges. + """ + edges: [AssignableShopEdge!]! + + """ + A list of nodes. + """ + nodes: [AssignableShop!]! + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! +} + +""" +An edge in a connection. +""" +type AssignableShopEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: AssignableShop! +} + +enum Attachment { + BACK + FRONT + PAGE +} + +type AuthorizedApplication { + """ + The number of active authorizations for the user using the app. + """ + accessCount: Int! + + """ + The GID of the app. + """ + appId: ID! + + """ + The date of the user's last access using the app. + """ + lastAccess: ISO8601DateTime! + + """ + The name of the app. + """ + title: String! +} + +input BackfillPartnerOrganizationsShopPropertiesInput { + """ + The type of the backfill event. + """ + backfillType: PartnerOrganizationsShopPropertiesBackfill! + + """ + The id of the partner organization that owns/owned the shop. + """ + organizationId: OrganizationID! + + """ + The id of the shop has/had a relationship with the partner organization. + """ + shopifyShopId: ShopifyShopID! +} + +type BackfillPartnerOrganizationsShopPropertiesResult { + """ + The ID of the re-assigned property. + """ + propertyId: PropertyID + + """ + The ID of the new property transfer request. + """ + transferRequestId: PropertyTransferRequestID + + """ + The collection of errors. + """ + userErrors: [UserError!] +} + +input BackfillPartnerUserInput { + """ + If the user should be deleted (for use in backfilling) + """ + isDeleted: Boolean + + """ + The ID of the Partner organization. + """ + organizationId: OrganizationID! + + """ + Identity UUID of the user. + """ + userIdentityUuid: String! +} + +type BackfillPartnerUserResult { + """ + The ID of the updated organization user. + """ + organizationUserId: OrganizationUserID + + """ + The collection of errors. + """ + userErrors: [UserError!] +} + +type BillingAccount implements PropertyInterface { + """ + Property public identifier. + """ + externalId: PropertyPublicID + + """ + Property global identifier. + """ + id: PropertyId! + + """ + The offering for this property. + """ + offering: Offering + + """ + The organization this property belongs to. + """ + organization: Organization + queryComplexity: Int! + queryDepth: Int! +} + +input BulkAssignRoleInput { + """ + The IDs of the Organization Users who are assigned a Role. + """ + organizationUserIds: [OrganizationUserID!]! + + """ + The ID of the Role to assign. + """ + roleId: RoleID! +} + +type BulkAssignRoleResult { + """ + The organization user ids with the updated role. + """ + organizationUserIds: [OrganizationUserID!] + + """ + The collection of errors. + """ + userErrors: [UserError!] +} + +type BulkData implements Node { + """ + The ID for an object. + """ + id: GlobalID! + operation(id: BulkDataOperationID!): BulkDataOperation + queryComplexity: Int! + queryDepth: Int! +} + +type BulkDataOperation implements Node { + """ + The ID for an object. + """ + id: GlobalID! + operationType: BulkDataOperationType! + queryComplexity: Int! + queryDepth: Int! + sourceStore: Shop + status: BulkDataOperationStatus! + storeOperations: [BulkDataStoreOperation!]! + targetStore: Shop +} + +""" +The ID for a BulkDataOperation. +""" +scalar BulkDataOperationID + +enum BulkDataOperationStatus { + COMPLETED + CREATED + FAILED + RUNNING +} + +enum BulkDataOperationType { + STORE_COPY + STORE_EXPORT + STORE_IMPORT +} + +input BulkDataResourceConfigsCustomIdInput { + key: String! + namespace: String! +} + +input BulkDataResourceConfigsInput { + products: BulkDataResourceConfigsProductsConfigInput +} + +input BulkDataResourceConfigsProductsConfigInput { + identifier: BulkDataResourceConfigsProductsIdentifierInput! +} + +enum BulkDataResourceConfigsProductsField { + HANDLE + ID +} + +input BulkDataResourceConfigsProductsIdentifierInput @oneOf { + customId: BulkDataResourceConfigsCustomIdInput + field: BulkDataResourceConfigsProductsField +} + +input BulkDataStoreCopyStartInput { + resourceConfigs: BulkDataResourceConfigsInput + sourceStoreIdentifier: StoreIdentifierInput! + targetStoreIdentifier: StoreIdentifierInput! +} + +type BulkDataStoreCopyStartResult { + """ + The operation to track progress of the store copy. + """ + operation: BulkDataOperation + + """ + Indicates whether the creation was successful. + """ + success: Boolean! + + """ + The collection of errors. + """ + userErrors: [UserError!] +} + +input BulkDataStoreExportStartInput { + sourceStoreIdentifier: StoreIdentifierInput! +} + +type BulkDataStoreExportStartResult { + """ + The operation to track progress of the store export. + """ + operation: BulkDataOperation + + """ + Indicates whether the creation was successful. + """ + success: Boolean! + + """ + The collection of errors. + """ + userErrors: [UserError!] +} + +input BulkDataStoreImportStartInput { + importUrl: String! + resourceConfigs: BulkDataResourceConfigsInput + targetStoreIdentifier: StoreIdentifierInput! +} + +type BulkDataStoreImportStartResult { + """ + The operation to track progress of the store import. + """ + operation: BulkDataOperation + + """ + Indicates whether the creation was successful. + """ + success: Boolean! + + """ + The collection of errors. + """ + userErrors: [UserError!] +} + +type BulkDataStoreOperation implements Node { + completedObjectCount: Int! + + """ + The ID for an object. + """ + id: GlobalID! + queryComplexity: Int! + queryDepth: Int! + remoteOperationStatus: String! + remoteOperationType: String! + store: Shop! + totalObjectCount: Int! + url: String +} + +input BusinessPrincipalInput { + """ + The equity ownership percentage associated with the principal. + """ + equityOwnership: Float + + """ + The job title associated with the principal. + """ + jobTitle: String + + """ + The roles associated with the principal. + """ + roles: [PrincipalRoleTypeEnum!] +} + +""" +The ID for a BusinessUser. +""" +scalar BusinessUserID + +""" +The ID for a BusinessUsersImport. +""" +scalar BusinessUsersImportID + +""" +A business users import run. +""" +type BusinessUsersImportRun implements Node { + """ + When the import record was created. + """ + createdAt: ISO8601DateTime! + + """ + Whether the CSV passed validation. + """ + csvValid: Boolean + + """ + Number of rows that failed to import. + """ + failed: Int + + """ + When processing finished. + """ + finishedAt: ISO8601DateTime + + """ + The ID for an object. + """ + id: GlobalID! + + """ + Number of successfully imported rows. + """ + imported: Int + + """ + The original filename of the uploaded CSV. + """ + originalFilename: String + queryComplexity: Int! + queryDepth: Int! + + """ + Structured per-row results with status and error details. Available once the import has finished. + """ + rowResults: [ImportRowResult!] + + """ + Total number of rows in the CSV. + """ + rows: Int + + """ + Number of rows that were skipped. + """ + skipped: Int + + """ + When processing started. + """ + startedAt: ISO8601DateTime + + """ + The current status of the import. + """ + status: BusinessUsersImportStatus! + + """ + When the import was submitted. + """ + submittedAt: ISO8601DateTime +} + +""" +The connection type for BusinessUsersImportRun. +""" +type BusinessUsersImportRunConnection { + """ + A list of edges. + """ + edges: [BusinessUsersImportRunEdge!]! + + """ + A list of nodes. + """ + nodes: [BusinessUsersImportRun!]! + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! +} + +""" +An edge in a connection. +""" +type BusinessUsersImportRunEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: BusinessUsersImportRun! +} + +""" +The status of a business users import. +""" +enum BusinessUsersImportStatus { + """ + Import finished successfully + """ + COMPLETED + + """ + Import finished with some row failures + """ + COMPLETED_WITH_FAILURES + + """ + Import failed due to invalid CSV or unexpected error + """ + FAILED + + """ + Import record created, not yet submitted + """ + PENDING + + """ + Import is actively running + """ + PROCESSING + + """ + CSV uploaded, waiting for processing + """ + SUBMITTED +} + +input CancelShopTransferInput { + """ + The ID of the shop to cancel a pending transfer on. + """ + shopifyShopId: PropertyPublicID! +} + +type CancelShopTransferResult { + """ + The shop property which had a pending tranfer request. + """ + property: PropertyInterface + + """ + The collection of errors. + """ + userErrors: [UserError!] +} + +enum Category { + BUSINESS + INDIVIDUAL + UNSPECIFIED +} + +input ChangeDomainEnforcementStateInput { + """ + The IDs of the domains to change enforcement state. + """ + domainIds: [OrganizationDomainID!]! + + """ + The enforcement state the domains are changing to. + """ + enforcementState: OrganizationDomainStatus! +} + +type ChangeDomainEnforcementStateResult { + """ + The organization with the changed domains enforcement states. + """ + organization: Organization + + """ + The collection of errors. + """ + userErrors: [UserError!] +} + +""" +A client transfer request for a shop. +""" +type ClientTransferRequest implements Node { + """ + When the transfer request was created. + """ + createdAt: ISO8601DateTime! + + """ + The ID for an object. + """ + id: GlobalID! + queryComplexity: Int! + queryDepth: Int! + + """ + The current status of the transfer request. + """ + status: ClientTransferRequestStatus! + + """ + The organization the shop is being transferred to. + """ + targetOrganization: OrganizationReference +} + +""" +The status of a client transfer request. +""" +enum ClientTransferRequestStatus { + CANCELLED + COMPLETED + EXPIRED + PENDING + REJECTED +} + +input CollaboratorAcceptInput { + """ + The role to be created and assigned to the collaborator. + """ + newRole: AccessRoleCreateInput + + """ + The ID of the user to assign the role to. + """ + organizationUserId: OrganizationUserID + + """ + The IDs of the existing roles to assign to the collaborator. + """ + roleIds: [AccessRoleID!]! +} + +type CollaboratorAcceptResult { + organizationUser: OrganizationUserInterface + + """ + Indicates whether the mutation was successful. + """ + success: Boolean + + """ + The collection of errors. + """ + userErrors: [UserError!] +} + +type CollaboratorAccessRequirements { + """ + The collaborator access code for the shop. + """ + accessCode: String + + """ + Whether collaborator access code is enabled. + """ + accessCodeEnabled: Boolean! + + """ + Whether partner apps are installed on the shop. + """ + hasPartnerApps: Boolean! + + """ + Whether collaborator access code is required. + """ + requiresAccessCode: Boolean! +} + +enum CollaboratorAccessStatus { + """ + The users access is pending. + """ + ACCESS_PENDING + + """ + The user is active. + """ + ACTIVE + + """ + The users access has expired. + """ + EXPIRED + + """ + The users access is inactive. + """ + INACTIVE +} + +type CollaboratorPermissionResult { + """ + Whether the user has the requested collaborator permission. True if + authorized, false if denied, null if the result is inconclusive. + """ + hasPermission: Boolean +} + +type CollaboratorRelationship implements Node { + """ + The date and time when this collaborator relationship was approved. + """ + approvedAt: ISO8601DateTime + + """ + The date and time when this collaborator relationship was created. + """ + createdAt: ISO8601DateTime! + + """ + The ID for an object. + """ + id: GlobalID! + + """ + The date and time when this collaborator relationship was last re-requested. + """ + lastRerequestAt: ISO8601DateTime + + """ + The organization user ID associated with this collaborator relationship. + """ + organizationUserId: OrganizationUserID + queryComplexity: Int! + queryDepth: Int! + + """ + The shop this collaborator relationship is associated with. + """ + shop: Shop + + """ + The Shopify collaborator user ID (GID) for this collaborator relationship. + """ + shopifyCollaboratorUserId: String + + """ + The status of this collaborator relationship. + """ + status: CollaboratorAccessStatus! +} + +""" +A summary of collaborator relationship access for the user. +""" +type CollaboratorRelationshipAccessSummary { + """ + Shop ids of shops the user has collaborator relationship access to. + """ + shopifyShopIds: [ShopifyShopID!] +} + +input ConvertUsersFromSamlInput { + """ + The IDs of the Organization users to convert from SAML. + """ + organizationUserIds: [OrganizationUserID!]! +} + +type ConvertUsersFromSamlResult { + """ + The organization that was updated. + """ + organization: Organization! + + """ + List of user errors from removing SAML access. + """ + userErrors: [UserError!] +} + +input ConvertUsersToSamlInput { + """ + IDs of the users to convert to SAML. + """ + organizationUserIds: [OrganizationUserID!]! +} + +type ConvertUsersToSamlResult { + """ + The organization object. + """ + organization: Organization + + """ + List of user errors for convert users to saml operation. + """ + userErrors: [UserError!] +} + +enum CountryCode { + AC + AD + AE + AF + AG + AI + AL + AM + AO + AR + AT + AU + AW + AX + AZ + BA + BB + BD + BE + BF + BG + BH + BI + BJ + BL + BM + BN + BO + BQ + BR + BS + BT + BV + BW + BY + BZ + CA + CC + CD + CF + CG + CH + CI + CK + CL + CM + CN + CO + CR + CU + CV + CW + CX + CY + CZ + DE + DJ + DK + DM + DO + DZ + EC + EE + EG + EH + ER + ES + ET + FI + FJ + FK + FO + FR + GA + GB + GD + GE + GF + GG + GH + GI + GL + GM + GN + GP + GQ + GR + GS + GT + GW + GY + HK + HM + HN + HR + HT + HU + ID + IE + IL + IM + IN + IO + IQ + IR + IS + IT + JE + JM + JO + JP + KE + KG + KH + KI + KM + KN + KP + KR + KW + KY + KZ + LA + LB + LC + LI + LK + LR + LS + LT + LU + LV + LY + MA + MC + MD + ME + MF + MG + MK + ML + MM + MN + MO + MQ + MR + MS + MT + MU + MV + MW + MX + MY + MZ + NA + NC + NE + NF + NG + NI + NL + NO + NP + NR + NU + NZ + OM + PA + PE + PF + PG + PH + PK + PL + PM + PN + PS + PT + PY + QA + RE + RO + RS + RU + RW + SA + SB + SC + SD + SE + SG + SH + SI + SJ + SK + SL + SM + SN + SO + SR + SS + ST + SV + SX + SY + SZ + TA + TC + TD + TF + TG + TH + TJ + TK + TL + TM + TN + TO + TR + TT + TV + TW + TZ + UA + UG + UM + US + UY + UZ + VA + VC + VE + VG + VN + VU + WF + WS + XK + YE + YT + ZA + ZM + ZW +} + +enum CountryCodeWithDefault { + AC + AD + AE + AF + AG + AI + AL + AM + AO + AR + AT + AU + AW + AX + AZ + BA + BB + BD + BE + BF + BG + BH + BI + BJ + BL + BM + BN + BO + BQ + BR + BS + BT + BV + BW + BY + BZ + CA + CC + CD + CF + CG + CH + CI + CK + CL + CM + CN + CO + CR + CU + CV + CW + CX + CY + CZ + DE + + """ + The default fallback country code. + """ + DEFAULT + DJ + DK + DM + DO + DZ + EC + EE + EG + EH + ER + ES + ET + FI + FJ + FK + FO + FR + GA + GB + GD + GE + GF + GG + GH + GI + GL + GM + GN + GP + GQ + GR + GS + GT + GW + GY + HK + HM + HN + HR + HT + HU + ID + IE + IL + IM + IN + IO + IQ + IR + IS + IT + JE + JM + JO + JP + KE + KG + KH + KI + KM + KN + KP + KR + KW + KY + KZ + LA + LB + LC + LI + LK + LR + LS + LT + LU + LV + LY + MA + MC + MD + ME + MF + MG + MK + ML + MM + MN + MO + MQ + MR + MS + MT + MU + MV + MW + MX + MY + MZ + NA + NC + NE + NF + NG + NI + NL + NO + NP + NR + NU + NZ + OM + PA + PE + PF + PG + PH + PK + PL + PM + PN + PS + PT + PY + QA + RE + RO + RS + RU + RW + SA + SB + SC + SD + SE + SG + SH + SI + SJ + SK + SL + SM + SN + SO + SR + SS + ST + SV + SX + SY + SZ + TA + TC + TD + TF + TG + TH + TJ + TK + TL + TM + TN + TO + TR + TT + TV + TW + TZ + UA + UG + UM + US + UY + UZ + VA + VC + VE + VG + VN + VU + WF + WS + XK + YE + YT + ZA + ZM + ZW +} + +type CreateAppDevelopmentStoreResult { + shopAdminUrl: String + shopDomain: String + + """ + The collection of errors. + """ + userErrors: [UserError!] +} + +input CreateCliTokenOrganizationUserInput { + """ + Organization-wide access conditions to apply to the user. + """ + accessConditions: [String!] + + """ + The ID of the organization. + """ + organizationId: OrganizationID! + + """ + Handle of the system role to assign (e.g. 'apps_developer'). + """ + roleHandle: String! + + """ + Email address of the service account. + """ + userEmail: String! + + """ + Identity UUID of the service account. + """ + userIdentityUuid: String! +} + +type CreateCliTokenOrganizationUserResult { + """ + The ID of the created organization user. + """ + organizationUserId: OrganizationUserID + + """ + The collection of errors. + """ + userErrors: [UserError!] +} + +type CreateClientDevelopmentShopResult { + shopAdminUrl: String + shopDomain: String + shopId: ID + + """ + The collection of errors. + """ + userErrors: [UserError!] +} + +input CreateCollaboratorRelationshipInput { + """ + Whether the collaborator relationship request required an access code. + """ + accessCodeRequired: Boolean + + """ + The UTC datetime the collaborator relationship was approved. + """ + approvedAt: ISO8601DateTime + + """ + The UTC datetime the collaborator relationship ended. + """ + endedAt: ISO8601DateTime + + """ + The ID of the organization the collaborator relationship belongs to. + """ + organizationId: OrganizationID! + + """ + The UTC datetime the collaborator relationship was rejected. + """ + rejectedAt: ISO8601DateTime + + """ + The ID of the shop associated with the collaborator relationship. + """ + shopifyShopId: PropertyPublicID! + + """ + The ID of the shop user associated with the collaborator relationship. + """ + shopifyUserId: ID! + + """ + The UTC datetime the collaborator relationship started. + """ + startedAt: ISO8601DateTime +} + +type CreateCollaboratorRelationshipResult { + """ + The collaborator relationship that was created. + """ + collaboratorRelationship: CollaboratorRelationship + + """ + Errors that occurred while creating the collaborator relationship. + """ + userErrors: [UserError!] +} + +input CreateGovernmentIdentifierForLegalEntityInput { + """ + The country code of the GovernmentIdentifier. + """ + countryCode: CountryCode! + + """ + The type of the GovernmentIdentifier. + """ + identifierType: GovernmentIdentifierTypeInput! + + """ + The legal entity to create the government identifier for. + """ + legalEntityId: LegalEntityID! + + """ + The value of the GovernmentIdentifier. + """ + value: String! +} + +input CreateGovernmentIdentifierInput { + """ + The country code of the GovernmentIdentifier. + """ + countryCode: CountryCode! + + """ + The entity to create the government identifier for. + """ + entityId: SupportedEntityId! + + """ + The type of the GovernmentIdentifier. + """ + identifierType: GovernmentIdentifierTypeInput! + + """ + The value of the GovernmentIdentifier. + """ + value: String! +} + +input CreateLegalEntityInput { + """ + The address of the entity. + """ + address: AddressInput + + """ + The category of the entity. + """ + category: ValidLegalEntityCategoryInput! + + """ + The country where the entity is registered. + """ + countryCode: CountryCode! + + """ + The individual when the entity is not registered. + """ + individual: IndividualInput + + """ + Whether the entity is registered. + """ + isRegistered: Boolean + + """ + The specific type of legal entity. + """ + legalEntityType: LegalEntityTypeInput + + """ + The legal name of the entity. + """ + legalName: String + + """ + The nickname of the entity. + """ + nickname: String + + """ + The phone number associated with the entity. + """ + phoneNumber: String + + """ + The trade name of the entity. + """ + tradeName: String @deprecated(reason: "Trade name is deprecated from Legal Entity scope and will be replaced with a shop scope field.") +} + +input CreateLegalEntityOnSignupInput { + """ + The address of the entity. + """ + address: AddressInput + + """ + The country where the entity is registered. + """ + countryCode: CountryCode! + + """ + The nickname of the entity. + """ + nickname: String +} + +""" +The result of creating a legal entity tax filing preference. +""" +type CreateLegalEntityTaxFilingPreferenceResult { + """ + The legal entity tax filing preference that was created. + """ + legalEntityTaxFilingPreference: LegalEntityTaxFilingPreference + + """ + Indicates whether the mutation was successful. + """ + success: Boolean + + """ + The collection of errors. + """ + userErrors: [UserError!] +} + +input CreateOrganizationDomainInput { + """ + The given domain. + """ + domainName: String +} + +type CreateOrganizationDomainResult { + """ + The organization object. + """ + organization: Organization + + """ + The collection of errors. + """ + userErrors: [UserError!] + + """ + The generated domain verification code. + """ + verificationCode: String +} + +input CreateOrganizationUsersInput { + """ + List of administrative permissions to be granted to the created OrganizationUser(s). + """ + administrativePermissions: [String!] + + """ + The emails of the users to be invited / created. + """ + emails: [String!]! + + """ + The ID of the Role to grant to the user. + """ + roleId: RoleID + + """ + List of shop access to be granted to the created OrganizationUser(s). + """ + shopAccesses: [ShopAccessInput!] + + """ + Whether or not TFA is enforced for the created OrganizationUser(s). + """ + tfaEnforced: Boolean +} + +type CreateOrganizationUsersResult { + """ + The emails of the invited users. + """ + emails: [String!] + + """ + The collection of errors. + """ + userErrors: [UserError!] +} + +input CreatePartnerOrganizationUserInput { + """ + The ID of the Partner organization. + """ + organizationId: OrganizationID! + + """ + The ID of the organization user requesting the new user to join. + """ + requesterOrganizationUserId: OrganizationUserID + + """ + Identity UUID of the user. + """ + userIdentityUuid: String! +} + +type CreatePartnerOrganizationUserResult { + """ + The ID of the created organization user. + """ + organizationUserId: OrganizationUserID + + """ + The collection of errors. + """ + userErrors: [UserError!] +} + +input CreatePartnerShopTransferInput { + """ + Email of the user the shop is being transferred to. + """ + externalRecipientEmail: String + + """ + The id of the organization that owns the shop to be transferred. + """ + organizationId: OrganizationID! + + """ + UUID of the user who requested transferring the shop. + """ + requesterUuid: String! + + """ + The id of the shop to be transferred. + """ + shopifyShopId: ShopifyShopID! +} + +type CreatePartnerShopTransferResult { + """ + The ID of the new owning organization. + """ + targetOrganizationId: OrganizationID + + """ + The token of the PropertyTransferRequest. + """ + token: String + + """ + The collection of errors. + """ + userErrors: [UserError!] +} + +input CreatePersonAliasInput { + """ + The alias variants of the person alias. + """ + aliasVariants: [NameVariantInput!] + + """ + The first name of the person alias. + """ + firstName: String + + """ + The last name of the person alias. + """ + lastName: String + + """ + The middle name of the person alias. + """ + middleName: String + + """ + The ID of the person this alias belongs to. + """ + personId: PersonID! + + """ + The prefix of the person alias. + """ + prefix: String + + """ + The suffix of the person alias. + """ + suffix: String +} + +input CreatePersonInput { + """ + The address of the person. + """ + address: AddressInput + + """ + The date of birth of the person. + """ + dateOfBirth: ISO8601Date + + """ + The email associated with the person. + """ + email: String + + """ + The first name of the person. + """ + firstName: String + + """ + The last name of the person. + """ + lastName: String + + """ + The middle name of the person. + """ + middleName: String + + """ + The name variants of the person. + """ + nameVariants: [NameVariantInput!] + + """ + The nationalities of the person. + """ + nationalities: [CountryCode!] + + """ + The phone number associated with the person. + """ + phoneNumber: String + + """ + The prefix of the person. + """ + prefix: String + + """ + The suffix of the person. + """ + suffix: String +} + +input CreatePrincipalInput { + """ + The address of the person. + """ + applicableAddress: AssignOrCreateAddressInput + + """ + The business attributes associated with the principal. + """ + businessAttributes: BusinessPrincipalInput + + """ + The contact information associated with the principal. + """ + contactInformation: PrincipalContactInformationInput + + """ + The legal entity identifier to create the person relationship with. + """ + legalEntityId: LegalEntityID! + + """ + Additional person details. + """ + person: UpdatePersonInput + + """ + The person identifier to create the legal entity relationship with. + """ + personId: PersonID! +} + +""" +The result of creating a principal. +""" +type CreatePrincipalResult { + """ + The created principal. + """ + principal: Principal + + """ + The collection of errors. + """ + userErrors: [UserError!] +} + +input CreatePropertyTransferRequestInput { + """ + The external id of the property to be transferred. + """ + externalId: PropertyPublicID! + + """ + Email of the user the property is being transferred to. + """ + externalRecipientEmail: String + + """ + Transfer type (internal/external). + """ + transferType: PropertyTransfer! +} + +type CreatePropertyTransferRequestResult { + """ + The token of the PropertyTransferRequest. + """ + token: String + + """ + The collection of errors. + """ + userErrors: [UserError!] +} + +input CreateStoreAdditionRequestInput { + """ + The internal store code. + """ + customInternalStoreCode: String + + """ + The internal store name. + """ + customInternalStoreName: String + + """ + The legal entity id for the store. + """ + legalEntityId: LegalEntityID + + """ + The reason for the store addition request. + """ + reason: String + + """ + The store copy request details. + """ + storeCopyRequestDetails: StoreCopyCreationInput + + """ + The public store name. + """ + storeName: String! + + """ + The store type. + """ + storeType: Store! + + """ + The subdomain of the store. + """ + subdomain: String! + + """ + Whether the store is within the brand. + """ + withinBrand: Boolean! +} + +type CreateStoreAdditionRequestResult { + """ + The newly created store addition request. + """ + storeAdditionRequest: StoreAdditionRequest + + """ + The collection of errors. + """ + userErrors: [UserError!] +} + +type CreateStoreResult { + shopAdminUrl: String + shopDomain: String + + """ + The collection of errors. + """ + userErrors: [UserError!] +} + +input CreateVibeTransferRequestInput { + """ + Email of the user the shop is being transferred to. + """ + externalRecipientEmail: String! + + """ + Optional URL to redirect to after the transfer is accepted. + """ + returnUrl: String + + """ + The ID of the shop to be transferred. + """ + shopId: PropertyPublicID! +} + +type CreateVibeTransferRequestResult { + """ + The claim URL for the store transfer. + """ + claimStoreUrl: String + + """ + The collection of errors. + """ + userErrors: [UserError!] +} + +""" +Content types supported for CSV user import file uploads +""" +enum CsvFileContent { + """ + CSV file. + """ + TEXT_CSV +} + +""" +ISO currency code. +""" +enum CurrencyCode { + """ + United Arab Emirates Dirham + """ + AED + + """ + Afghan Afghani + """ + AFN + + """ + Albanian Lek + """ + ALL + + """ + Armenian Dram + """ + AMD + + """ + Netherlands Antillean Gulden + """ + ANG + + """ + Angolan Kwanza + """ + AOA + + """ + Argentine Peso + """ + ARS + + """ + Australian Dollar + """ + AUD + + """ + Aruban Florin + """ + AWG + + """ + Azerbaijani Manat + """ + AZN + + """ + Bosnia and Herzegovina Convertible Mark + """ + BAM + + """ + Barbadian Dollar + """ + BBD + + """ + Bangladeshi Taka + """ + BDT + + """ + Bulgarian Lev + """ + BGN + + """ + Bahraini Dinar + """ + BHD + + """ + Burundian Franc + """ + BIF + + """ + Bermudian Dollar + """ + BMD + + """ + Brunei Dollar + """ + BND + + """ + Bolivian Boliviano + """ + BOB + + """ + Brazilian Real + """ + BRL + + """ + Bahamian Dollar + """ + BSD + + """ + Bhutanese Ngultrum + """ + BTN + + """ + Botswana Pula + """ + BWP + + """ + Belarusian Ruble + """ + BYN + + """ + Belarusian Ruble + """ + BYR + + """ + Belize Dollar + """ + BZD + + """ + Canadian Dollar + """ + CAD + + """ + Congolese Franc + """ + CDF + + """ + Swiss Franc + """ + CHF + + """ + Unidad de Fomento + """ + CLF + + """ + Chilean Peso + """ + CLP + + """ + Chinese Renminbi Yuan + """ + CNY + + """ + Colombian Peso + """ + COP + + """ + Costa Rican Colón + """ + CRC + + """ + Cuban Convertible Peso + """ + CUC + + """ + Cuban Peso + """ + CUP + + """ + Cape Verdean Escudo + """ + CVE + + """ + Cypriot pound + """ + CYP + + """ + Czech Koruna + """ + CZK + + """ + Djiboutian Franc + """ + DJF + + """ + Danish Krone + """ + DKK + + """ + Dominican Peso + """ + DOP + + """ + Algerian Dinar + """ + DZD + + """ + Estonian Kroon + """ + EEK + + """ + Egyptian Pound + """ + EGP + + """ + Eritrean Nakfa + """ + ERN + + """ + Ethiopian Birr + """ + ETB + + """ + Euro + """ + EUR + + """ + Fijian Dollar + """ + FJD + + """ + Falkland Pound + """ + FKP + + """ + British Pound + """ + GBP + + """ + British Penny + """ + GBX + + """ + Georgian Lari + """ + GEL + + """ + Guernsey Pound + """ + GGP + + """ + Ghanaian Cedi + """ + GHC + + """ + Ghanaian Cedi + """ + GHS + + """ + Gibraltar Pound + """ + GIP + + """ + Gambian Dalasi + """ + GMD + + """ + Guinean Franc + """ + GNF + + """ + Guatemalan Quetzal + """ + GTQ + + """ + Guyanese Dollar + """ + GYD + + """ + Hong Kong Dollar + """ + HKD + + """ + Honduran Lempira + """ + HNL + + """ + Croatian Kuna + """ + HRK + + """ + Haitian Gourde + """ + HTG + + """ + Hungarian Forint + """ + HUF + + """ + Indonesian Rupiah + """ + IDR + + """ + Israeli New Shekel + """ + ILS + + """ + Isle of Man Pound + """ + IMP + + """ + Indian Rupee + """ + INR + + """ + Iraqi Dinar + """ + IQD + + """ + Iranian Rial + """ + IRR + + """ + Icelandic Króna + """ + ISK + + """ + Jersey Pound + """ + JEP + + """ + Jamaican Dollar + """ + JMD + + """ + Jordanian Dinar + """ + JOD + + """ + Japanese Yen + """ + JPY + + """ + Kenyan Shilling + """ + KES + + """ + Kyrgyzstani Som + """ + KGS + + """ + Cambodian Riel + """ + KHR + + """ + Kiribati Dollar + """ + KID + + """ + Comorian Franc + """ + KMF + + """ + North Korean Won + """ + KPW + + """ + South Korean Won + """ + KRW + + """ + Kuwaiti Dinar + """ + KWD + + """ + Cayman Islands Dollar + """ + KYD + + """ + Kazakhstani Tenge + """ + KZT + + """ + Lao Kip + """ + LAK + + """ + Lebanese Pound + """ + LBP + + """ + Sri Lankan Rupee + """ + LKR + + """ + Liberian Dollar + """ + LRD + + """ + Lesotho Loti + """ + LSL + + """ + Lithuanian Litas + """ + LTL + + """ + Latvian Lats + """ + LVL + + """ + Libyan Dinar + """ + LYD + + """ + Moroccan Dirham + """ + MAD + + """ + Moldovan Leu + """ + MDL + + """ + Malagasy Ariary + """ + MGA + + """ + Macedonian Denar + """ + MKD + + """ + Myanmar Kyat + """ + MMK + + """ + Mongolian Tögrög + """ + MNT + + """ + Macanese Pataca + """ + MOP + + """ + Mauritanian Ouguiya + """ + MRO + + """ + Mauritanian New Ouguiya + """ + MRU + + """ + Maltese Lira + """ + MTL + + """ + Mauritian Rupee + """ + MUR + + """ + Maldivian Rufiyaa + """ + MVR + + """ + Malawian Kwacha + """ + MWK + + """ + Mexican Peso + """ + MXN + + """ + Malaysian Ringgit + """ + MYR + + """ + Mozambican Metical + """ + MZN + + """ + Namibian Dollar + """ + NAD + + """ + Nigerian Naira + """ + NGN + + """ + Nicaraguan Córdoba + """ + NIO + + """ + Norwegian Krone + """ + NOK + + """ + Nepalese Rupee + """ + NPR + + """ + New Zealand Dollar + """ + NZD + + """ + Omani Rial + """ + OMR + + """ + Panamanian Balboa + """ + PAB + + """ + Peruvian Sol + """ + PEN + + """ + Papua New Guinean Kina + """ + PGK + + """ + Philippine Peso + """ + PHP + + """ + Pakistani Rupee + """ + PKR + + """ + Polish Złoty + """ + PLN + + """ + Paraguayan Guaraní + """ + PYG + + """ + Qatari Riyal + """ + QAR + + """ + Romanian Leu + """ + RON + + """ + Serbian Dinar + """ + RSD + + """ + Russian Ruble + """ + RUB + + """ + Rwandan Franc + """ + RWF + + """ + Saudi Riyal + """ + SAR + + """ + Solomon Islands Dollar + """ + SBD + + """ + Seychellois Rupee + """ + SCR + + """ + Sudanese Pound + """ + SDG + + """ + Swedish Krona + """ + SEK + + """ + Singapore Dollar + """ + SGD + + """ + Saint Helenian Pound + """ + SHP + + """ + Slovak Koruna + """ + SKK + + """ + New Leone + """ + SLE + + """ + Sierra Leonean Leone + """ + SLL + + """ + Somali Shilling + """ + SOS + + """ + Surinamese Dollar + """ + SRD + + """ + South Sudanese Pound + """ + SSP + + """ + São Tomé and Príncipe Dobra + """ + STD + + """ + São Tomé and Príncipe Dobra + """ + STN + + """ + Salvadoran Colón + """ + SVC + + """ + Syrian Pound + """ + SYP + + """ + Swazi Lilangeni + """ + SZL + + """ + Thai Baht + """ + THB + + """ + Tajikistani Somoni + """ + TJS + + """ + Turkmenistani Manat + """ + TMM + + """ + Turkmenistani Manat + """ + TMT + + """ + Tunisian Dinar + """ + TND + + """ + Tongan Paʻanga + """ + TOP + + """ + Turkish Lira + """ + TRY + + """ + Trinidad and Tobago Dollar + """ + TTD + + """ + New Taiwan Dollar + """ + TWD + + """ + Tanzanian Shilling + """ + TZS + + """ + Ukrainian Hryvnia + """ + UAH + + """ + Ugandan Shilling + """ + UGX + + """ + United States Dollar + """ + USD + + """ + Uruguayan Peso + """ + UYU + + """ + Uzbekistan Som + """ + UZS + + """ + Venezuelan Bolívar + """ + VEB + + """ + Venezuelan Bolívar soberano + """ + VED + + """ + Venezuelan Bolívar fuerte + """ + VEF + + """ + Venezuelan Bolívar Soberano + """ + VES + + """ + Vietnamese Đồng + """ + VND + + """ + Vanuatu Vatu + """ + VUV + + """ + Samoan Tala + """ + WST + + """ + Central African Cfa Franc + """ + XAF + + """ + Silver (Troy Ounce) + """ + XAG + + """ + Gold (Troy Ounce) + """ + XAU + + """ + European Composite Unit + """ + XBA + + """ + European Monetary Unit + """ + XBB + + """ + European Unit of Account 9 + """ + XBC + + """ + European Unit of Account 17 + """ + XBD + + """ + East Caribbean Dollar + """ + XCD + + """ + Special Drawing Rights + """ + XDR + + """ + UIC Franc + """ + XFU + + """ + West African Cfa Franc + """ + XOF + + """ + Palladium + """ + XPD + + """ + Cfp Franc + """ + XPF + + """ + Platinum + """ + XPT + + """ + Codes specifically reserved for testing purposes + """ + XTS + + """ + Yemeni Rial + """ + YER + + """ + South African Rand + """ + ZAR + + """ + Zambian Kwacha + """ + ZMK + + """ + Zambian Kwacha + """ + ZMW + + """ + Zimbabwean Dollar + """ + ZWD + + """ + Zimbabwean Dollar + """ + ZWL + + """ + Zimbabwean Dollar + """ + ZWN + + """ + Zimbabwean Dollar + """ + ZWR +} + +""" +A signed decimal number, which supports arbitrary precision and is serialized as a string. +""" +scalar Decimal + +input DeleteCliTokenOrganizationUserInput { + """ + The identity UUID of the CLI token service account to delete. + """ + organizationUserIdentityUuid: String! +} + +type DeleteCliTokenOrganizationUserResult { + """ + The ID of the deleted organization user. + """ + deletedOrganizationUserId: OrganizationUserID + + """ + The collection of errors. + """ + userErrors: [UserError!] +} + +""" +Inputs for deleting government identifiers. +""" +input DeleteGovernmentIdentifiersInput { + """ + The IDs of the GovernmentIdentifiers to delete. + """ + ids: [GovernmentIdentifierID!]! +} + +""" +The result of deleting government identifiers. +""" +type DeleteGovernmentIdentifiersResult { + """ + The IDs of the deleted_government_identifiers. + """ + deletedIds: [GovernmentIdentifierID!] + + """ + Indicates whether the mutation was successful. + """ + success: Boolean + + """ + The collection of errors. + """ + userErrors: [UserError!] +} + +input DeleteOrganizationDomainInput { + """ + The given domain. + """ + domainName: String! +} + +type DeleteOrganizationDomainResult { + """ + The organization object. + """ + organization: Organization + + """ + The collection of errors. + """ + userErrors: [UserError!] +} + +type DeleteOrganizationUsersResult { + """ + Organization User IDs that were deleted. + """ + organizationUserIds: [OrganizationUserID!] + + """ + The collection of errors. + """ + userErrors: [UserError!] +} + +input DeletePartnerOrganizationUserInput { + """ + The ID of the Partner organization user to be deleted. + """ + organizationUserId: OrganizationUserID! + + """ + The ID of the organization user requesting the user to be deleted. + """ + requesterOrganizationUserId: OrganizationUserID +} + +type DeletePartnerOrganizationUserResult { + """ + Organization User ID that was deleted. + """ + deletedOrganizationUserId: OrganizationUserID + + """ + The collection of errors. + """ + userErrors: [UserError!] +} + +""" +The result of deleting people. +""" +type DeletePeopleResult { + """ + The IDs of the deleted people. + """ + deletedIds: [PersonID!] + + """ + Indicates whether the mutation was successful. + """ + success: Boolean + + """ + The collection of errors. + """ + userErrors: [UserError!] +} + +input DeletePersonAliasInput { + """ + The ID of the person alias to delete. + """ + id: PersonAliasID! +} + +""" +The result of deleting principals. +""" +type DeletePrincipalsResult { + """ + The IDs of the deleted principals. + """ + deletedIds: [PrincipalID!] + + """ + Indicates whether the mutation was successful. + """ + success: Boolean + + """ + The collection of errors. + """ + userErrors: [UserError!] +} + +input DeleteRoleInput { + """ + The ID of the Role to delete. + """ + id: RoleID! +} + +type DeleteRoleResult { + """ + The deleted role id. + """ + deletedId: RoleID + + """ + List of user errors of role delete operation. + """ + userErrors: [UserError!] +} + +type DeleteSamlIntegrationResult { + """ + The organization object. + """ + organization: Organization + + """ + List of user errors of SAML integration delete operation. + """ + userErrors: [UserError!] +} + +type DeleteScimTokenResult { + """ + The organization object. + """ + organization: Organization + + """ + List of user errors of remove scim token operation. + """ + userErrors: [UserError!] +} + +""" +The result of deleting supporting documents. +""" +type DeleteSupportingDocumentsResult { + """ + The IDs of the deleted supporting documents. + """ + deletedIds: [EntitySupportingDocumentID!] + + """ + Indicates whether the mutation was successful. + """ + success: Boolean + + """ + The collection of errors. + """ + userErrors: [UserError!] +} + +type DirectUploadParams { + """ + Attachment linked to the blob. + """ + attachment: DocumentAttachment! + + """ + Token used to refer to file with these parameters. + """ + directUploadToken: String! + + """ + Headers of a signed file upload request. + """ + headers: [UploadHeader!]! + + """ + Endpoint to upload file directly to storage service. + """ + url: String! +} + +enum Document { + """ + Bank Statement + """ + AE_BANK_STATEMENT + + """ + Digital Visa + """ + AE_DIGITAL_VISA + + """ + Drivers License + """ + AE_DRIVERS_LICENSE + + """ + Freelancer Permit + """ + AE_FREELANCER_PERMIT + + """ + Digital/Physical Emirates ID card + """ + AE_IDENTITY_CARD + + """ + Memorandum of Association + """ + AE_MEMORANDUM_OF_ASSOCIATION + + """ + Passport + """ + AE_PASSPORT + + """ + Digital/Physical Emirates ID card - issued after April 11, 2022 + """ + AE_PHYSICAL_VISA + + """ + Power of Attorney + """ + AE_POWER_OF_ATTORNEY + + """ + Proof of Bank Account + """ + AE_PROOF_OF_BANK_ACCOUNT + + """ + Residence Visa + """ + AE_RESIDENCE_VISA + + """ + Trade License + """ + AE_TRADE_LICENSE + + """ + Alien Passport + """ + AT_ALIEN_PASSPORT + + """ + Asylum Seeker Passport + """ + AT_ASYLUM_SEEKER_PASSPORT + + """ + Bank Statement + """ + AT_BANK_STATEMENT + + """ + Beneficial Owner Report + """ + AT_BENEFICIAL_OWNER_REPORT + + """ + Certificate of Residence + """ + AT_CERTIFICATE_OF_RESIDENCE + + """ + Commercial Register Extract + """ + AT_COMMERCIAL_REGISTER_EXTRACT + + """ + Director Attestation + """ + AT_DIRECTOR_ATTESTATION + + """ + Donation Deduction Certificate + """ + AT_DONATION_DEDUCTION_CERTIFICATE + + """ + Drivers License + """ + AT_DRIVERS_LICENSE + + """ + Financial Statement + """ + AT_FINANCIAL_STATEMENT + + """ + Foreigner Identity Card + """ + AT_FOREIGNER_IDENTITY_CARD + + """ + Government Issued Letter + """ + AT_GOVERNMENT_ISSUED_LETTER + + """ + Identity Card + """ + AT_IDENTITY_CARD + + """ + Other Supporting Document + """ + AT_OTHER + + """ + Passport + """ + AT_PASSPORT + + """ + Phone Bill + """ + AT_PHONE_BILL + + """ + Photo Card + """ + AT_PHOTO_CARD + + """ + Proof Of Address + """ + AT_PROOF_OF_ADDRESS + + """ + Resident Permit ID + """ + AT_RESIDENT_PERMIT_ID + + """ + Signed Annual Report + """ + AT_SIGNED_ANNUAL_REPORT + + """ + Tax Registration Certificate + """ + AT_TAX_REGISTRATION_CERTIFICATE + + """ + Temporary Resident Permit + """ + AT_TEMPORARY_RESIDENT_PERMIT + + """ + UBO Attestation + """ + AT_UBO_ATTESTATION + + """ + Utility Bill + """ + AT_UTILITY_BILL + + """ + Articles Of Association + """ + AU_ARTICLES_OF_ASSOCIATION + + """ + Bank Statement + """ + AU_BANK_STATEMENT + + """ + Certificate Of Incorporation + """ + AU_CERTIFICATE_OF_INCORPORATION + + """ + Certificate of Registration + """ + AU_CERTIFICATE_OF_REGISTRATION + + """ + Commercial Register Extract + """ + AU_COMMERCIAL_REGISTER_EXTRACT + + """ + Drivers License + """ + AU_DRIVERS_LICENSE + + """ + Government Issued Letter + """ + AU_GOVERNMENT_ISSUED_LETTER + + """ + Identity Card + """ + AU_IDENTITY_CARD + + """ + National Health ID + """ + AU_NATIONAL_HEALTH_ID + + """ + Other Supporting Document + """ + AU_OTHER + + """ + Passport + """ + AU_PASSPORT + + """ + Phone Bill + """ + AU_PHONE_BILL + + """ + Photo Card + """ + AU_PHOTO_CARD + + """ + Proof Of Address + """ + AU_PROOF_OF_ADDRESS + + """ + Proof Of Business Registration + """ + AU_PROOF_OF_BUSINESS_REGISTRATION + + """ + Tax Registration Certificate + """ + AU_TAX_REGISTRATION_CERTIFICATE + + """ + Utility Bill + """ + AU_UTILITY_BILL + + """ + Articles of Incorporation + """ + BE_ARTICLES_OF_INCORPORATION + + """ + Bank Statement + """ + BE_BANK_STATEMENT + + """ + Certificate of Residence + """ + BE_CERTIFICATE_OF_RESIDENCE + + """ + Commercial Register Extract + """ + BE_COMMERCIAL_REGISTER_EXTRACT + + """ + Corporate Status Certificate + """ + BE_CORPORATE_STATUS_CERTIFICATE + + """ + Director Attestation + """ + BE_DIRECTOR_ATTESTATION + + """ + Driver's License + """ + BE_DRIVERS_LICENSE + + """ + Financial Statement + """ + BE_FINANCIAL_STATEMENT + + """ + Foreigner Identity Card + """ + BE_FOREIGNER_IDENTITY_CARD + + """ + Government Issued Letter + """ + BE_GOVERNMENT_ISSUED_LETTER + + """ + Identity Card + """ + BE_IDENTITY_CARD + + """ + Mortgage Statement + """ + BE_MORTGAGE_STATEMENT + + """ + Official Belgian Register Appendices + """ + BE_OFFICIAL_BELGIAN_REGISTER_APPENDICES + + """ + Passport + """ + BE_PASSPORT + + """ + Pension Book + """ + BE_PENSION_BOOK + + """ + Recent Annual Return + """ + BE_RECENT_ANNUAL_RETURN + + """ + Resident Permit + """ + BE_RESIDENT_PERMIT + + """ + Signed Annual Report + """ + BE_SIGNED_ANNUAL_REPORT + + """ + UBO Attestation + """ + BE_UBO_ATTESTATION + + """ + Utility Bill + """ + BE_UTILITY_BILL + + """ + VAT Registration + """ + BE_VAT_REGISTRATION + + """ + Articles of Incorporation + """ + BG_ARTICLES_OF_INCORPORATION + + """ + Bank Statement + """ + BG_BANK_STATEMENT + + """ + Beneficial Owner Report + """ + BG_BENEFICIAL_OWNER_REPORT + + """ + Commercial Register Extract + """ + BG_COMMERCIAL_REGISTER_EXTRACT + + """ + Corporate Status Certificate + """ + BG_CORPORATE_STATUS_CERTIFICATE + + """ + Director Attestation + """ + BG_DIRECTOR_ATTESTATION + + """ + Drivers License + """ + BG_DRIVERS_LICENSE + + """ + Identity Card + """ + BG_IDENTITY_CARD + + """ + Mortgage Statement + """ + BG_MORTGAGE_STATEMENT + + """ + Partnership Agreement + """ + BG_PARTNERSHIP_AGREEMENT + + """ + Passport + """ + BG_PASSPORT + + """ + Registration Document + """ + BG_REGISTRATION_DOCUMENT + + """ + Resident Permit + """ + BG_RESIDENT_PERMIT + + """ + Signed Annual Report + """ + BG_SIGNED_ANNUAL_REPORT + + """ + UBO Attestation + """ + BG_UBO_ATTESTATION + + """ + Utility Bill + """ + BG_UTILITY_BILL + + """ + VAT Registration + """ + BG_VAT_REGISTRATION + + """ + Bank Statement + """ + CA_BANK_STATEMENT + + """ + Birth Certificate + """ + CA_BIRTH_CERTIFICATE + + """ + Board Meeting Minutes or Resolutions + """ + CA_BOARD_MEETING_MINUTES_OR_RESOLUTIONS + + """ + Board Resolutions Account Opening + """ + CA_BOARD_RESOLUTIONS_ACCOUNT_OPENING + + """ + British Columbia Company Summary + """ + CA_BRITISH_COLUMBIA_COMPANY_SUMMARY + + """ + Charity Information Return + """ + CA_CHARITY_INFORMATION_RETURN + + """ + Corporate Profile Report + """ + CA_CORPORATE_PROFILE_REPORT + + """ + Corporate Status Certificate + """ + CA_CORPORATE_STATUS_CERTIFICATE + + """ + CRA Registration Status + """ + CA_CRA_REGISTRATION_STATUS + + """ + Drivers License + """ + CA_DRIVERS_LICENSE + + """ + Federally issued Corporate Profile Report + """ + CA_FEDERALLY_ISSUED_CORPORATE_PROFILE_REPORT + + """ + Financial Statement + """ + CA_FINANCIAL_STATEMENT + + """ + Government Issued Letter + """ + CA_GOVERNMENT_ISSUED_LETTER + + """ + Identity Card + """ + CA_IDENTITY_CARD + + """ + Insurance Policy Document + """ + CA_INSURANCE_POLICY_DOCUMENT + + """ + Marriage Certificate + """ + CA_MARRIAGE_CERTIFICATE + + """ + Notice of Charity Registration + """ + CA_NOTICE_OF_CHARITY_REGISTRATION + + """ + Official Donation Receipts + """ + CA_OFFICIAL_DONATION_RECEIPTS + + """ + Ontario Corporate Profile Report + """ + CA_ONTARIO_CORPORATE_PROFILE_REPORT + + """ + Other Supporting Document + """ + CA_OTHER + + """ + Partnership registration or agreements + """ + CA_PARTNERSHIP_REGISTRATION_OR_AGREEMENTS + + """ + Passport + """ + CA_PASSPORT + + """ + Phone Bill + """ + CA_PHONE_BILL + + """ + Photo Card + """ + CA_PHOTO_CARD + + """ + Property Tax Statement + """ + CA_PROPERTY_TAX_STATEMENT + + """ + Quebec Enterprise Register Company Summary + """ + CA_QUEBEC_ENTERPRISE_REGISTER_COMPANY_SUMMARY + + """ + Registered Charity Information Report + """ + CA_REGISTERED_CHARITY_INFORMATION_REPORT + + """ + Signed Annual Report + """ + CA_SIGNED_ANNUAL_REPORT + + """ + Utility Bill + """ + CA_UTILITY_BILL + + """ + Articles of Incorporation + """ + CH_ARTICLES_OF_INCORPORATION + + """ + Bank Statement + """ + CH_BANK_STATEMENT + + """ + Certificate of Incorporation + """ + CH_CERTIFICATE_OF_INCORPORATION + + """ + Certificate of Incumbency + """ + CH_CERTIFICATE_OF_INCUMBENCY + + """ + Commercial Register Entry + """ + CH_COMMERCIAL_REGISTER_ENTRY + + """ + Commercial Register Extract + """ + CH_COMMERCIAL_REGISTER_EXTRACT + + """ + Corporate Status Certificate + """ + CH_CORPORATE_STATUS_CERTIFICATE + + """ + Drivers License + """ + CH_DRIVERS_LICENSE + + """ + Government Issued Letter + """ + CH_GOVERNMENT_ISSUED_LETTER + + """ + Identity Card + """ + CH_IDENTITY_CARD + + """ + Passport + """ + CH_PASSPORT + + """ + Recent Annual Return + """ + CH_RECENT_ANNUAL_RETURN + + """ + Registration Document + """ + CH_REGISTRATION_DOCUMENT + + """ + Residence Certificate + """ + CH_RESIDENCE_CERTIFICATE + + """ + Resident Permit + """ + CH_RESIDENT_PERMIT + + """ + Signed Annual Report + """ + CH_SIGNED_ANNUAL_REPORT + + """ + Utility Bill + """ + CH_UTILITY_BILL + + """ + VAT Registration + """ + CH_VAT_REGISTRATION + + """ + Articles of Association + """ + CY_ARTICLES_OF_ASSOCIATION + + """ + Articles of Incorporation + """ + CY_ARTICLES_OF_INCORPORATION + + """ + Bank Statement + """ + CY_BANK_STATEMENT + + """ + Beneficial Owner Report + """ + CY_BENEFICIAL_OWNER_REPORT + + """ + Certificate of Incorporation + """ + CY_CERTIFICATE_OF_INCORPORATION + + """ + Certificate of Registration + """ + CY_CERTIFICATE_OF_REGISTRATION + + """ + Commercial Register Extract + """ + CY_COMMERCIAL_REGISTER_EXTRACT + + """ + Corporate Status Certificate + """ + CY_CORPORATE_STATUS_CERTIFICATE + + """ + Director Attestation + """ + CY_DIRECTOR_ATTESTATION + + """ + Drivers License + """ + CY_DRIVERS_LICENSE + + """ + Financial Statement + """ + CY_FINANCIAL_STATEMENT + + """ + Identity Card + """ + CY_IDENTITY_CARD + + """ + Mortgage Statement + """ + CY_MORTGAGE_STATEMENT + + """ + Partnership Agreement + """ + CY_PARTNERSHIP_AGREEMENT + + """ + Passport + """ + CY_PASSPORT + + """ + Registration Document + """ + CY_REGISTRATION_DOCUMENT + + """ + Signed Annual Report + """ + CY_SIGNED_ANNUAL_REPORT + + """ + Tax Bill + """ + CY_TAX_BILL + + """ + UBO Attestation + """ + CY_UBO_ATTESTATION + + """ + Utility Bill + """ + CY_UTILITY_BILL + + """ + VAT Registration + """ + CY_VAT_REGISTRATION + + """ + Articles of Association + """ + CZ_ARTICLES_OF_ASSOCIATION + + """ + Articles of Incorporation + """ + CZ_ARTICLES_OF_INCORPORATION + + """ + Bank Statement + """ + CZ_BANK_STATEMENT + + """ + Beneficial Owner Report + """ + CZ_BENEFICIAL_OWNER_REPORT + + """ + Certificate of Registration + """ + CZ_CERTIFICATE_OF_REGISTRATION + + """ + Commercial Register Extract + """ + CZ_COMMERCIAL_REGISTER_EXTRACT + + """ + Contract for Sale of Property + """ + CZ_CONTRACT_FOR_SALE_OF_PROPERTY + + """ + Director Attestation + """ + CZ_DIRECTOR_ATTESTATION + + """ + Driver's License + """ + CZ_DRIVERS_LICENSE + + """ + Financial Statement + """ + CZ_FINANCIAL_STATEMENT + + """ + Government Issued Letter + """ + CZ_GOVERNMENT_ISSUED_LETTER + + """ + Identity Card + """ + CZ_IDENTITY_CARD + + """ + Mortgage Statement + """ + CZ_MORTGAGE_STATEMENT + + """ + Partnership Agreement + """ + CZ_PARTNERSHIP_AGREEMENT + + """ + Passport + """ + CZ_PASSPORT + + """ + Property Register Extract + """ + CZ_PROPERTY_REGISTER_EXTRACT + + """ + Registration Document + """ + CZ_REGISTRATION_DOCUMENT + + """ + Residence Permit + """ + CZ_RESIDENT_PERMIT + + """ + Signed Annual Report + """ + CZ_SIGNED_ANNUAL_REPORT + + """ + Tenancy Agreement + """ + CZ_TENANCY_AGREEMENT + + """ + Trade Registration + """ + CZ_TRADE_REGISTRATION + + """ + UBO Attestation + """ + CZ_UBO_ATTESTATION + + """ + Utility Bill + """ + CZ_UTILITY_BILL + + """ + VAT Registration + """ + CZ_VAT_REGISTRATION + + """ + Drivers License + """ + DEFAULT_DRIVERS_LICENSE + + """ + Other Supporting Document + """ + DEFAULT_OTHER + + """ + Passport + """ + DEFAULT_PASSPORT + + """ + Phone Bill + """ + DEFAULT_PHONE_BILL + + """ + Photo Card + """ + DEFAULT_PHOTO_CARD + + """ + Utility Bill + """ + DEFAULT_UTILITY_BILL + + """ + Bank Statement + """ + DE_BANK_STATEMENT + + """ + Beneficial Owner Report + """ + DE_BENEFICIAL_OWNER_REPORT + + """ + Board Meeting Minutes or Resolutions + """ + DE_BOARD_MEETING_MINUTES_OR_RESOLUTIONS + + """ + Certificate of Incumbency + """ + DE_CERTIFICATE_OF_INCUMBENCY + + """ + Certificate of Residence + """ + DE_CERTIFICATE_OF_RESIDENCE + + """ + Commercial Register Extract + """ + DE_COMMERCIAL_REGISTER_EXTRACT + + """ + Director Attestation + """ + DE_DIRECTOR_ATTESTATION + + """ + Drivers License + """ + DE_DRIVERS_LICENSE + + """ + Exemption Notice + """ + DE_EXEMPTION_NOTICE + + """ + Government Issued Letter + """ + DE_GOVERNMENT_ISSUED_LETTER + + """ + Identity Card + """ + DE_IDENTITY_CARD + + """ + Landlord Letter + """ + DE_LANDLORD_LETTER + + """ + Mortgage Statement + """ + DE_MORTGAGE_STATEMENT + + """ + Other Supporting Document + """ + DE_OTHER + + """ + Passport + """ + DE_PASSPORT + + """ + Phone Bill + """ + DE_PHONE_BILL + + """ + Photo Card + """ + DE_PHOTO_CARD + + """ + Proof Of Address + """ + DE_PROOF_OF_ADDRESS + + """ + Register of Associations Extract + """ + DE_REGISTER_OF_ASSOCIATIONS_EXTRACT + + """ + Registration Document + """ + DE_REGISTRATION_DOCUMENT + + """ + Resident Permit + """ + DE_RESIDENT_PERMIT + + """ + Shareholder Register + """ + DE_SHAREHOLDER_REGISTER + + """ + Signed Annual Report + """ + DE_SIGNED_ANNUAL_REPORT + + """ + Signed Rental Tenancy Agreement + """ + DE_SIGNED_RENTAL_TENANCY_AGREEMENT + + """ + Tax Registration Certificate + """ + DE_TAX_REGISTRATION_CERTIFICATE + + """ + Trade License + """ + DE_TRADE_LICENSE + + """ + Trade Registration + """ + DE_TRADE_REGISTRATION + + """ + UBO Attestation + """ + DE_UBO_ATTESTATION + + """ + Utility Bill + """ + DE_UTILITY_BILL + + """ + Bank Statement + """ + DK_BANK_STATEMENT + + """ + Beneficial Owner Report + """ + DK_BENEFICIAL_OWNER_REPORT + + """ + Bylaws Memorandum + """ + DK_BY_LAWS_MEMORANDUM + + """ + Certificate of Registration + """ + DK_CERTIFICATE_OF_REGISTRATION + + """ + City of Copenhagen Identity Card + """ + DK_CITY_OF_COPENHAGEN_IDENTITY_CARD + + """ + Commercial Register Extract + """ + DK_COMMERCIAL_REGISTER_EXTRACT + + """ + Corporate Status Certificate + """ + DK_CORPORATE_STATUS_CERTIFICATE + + """ + Director Attestation + """ + DK_DIRECTOR_ATTESTATION + + """ + Drivers License + """ + DK_DRIVERS_LICENSE + + """ + Financial Statements + """ + DK_FINANCIAL_STATEMENT + + """ + Insurance Policy Document + """ + DK_INSURANCE_POLICY_DOCUMENT + + """ + Landlord Letter + """ + DK_LANDLORD_LETTER + + """ + Military Identity Card + """ + DK_MILITARY_IDENTITY_CARD + + """ + Mortgage Statement + """ + DK_MORTGAGE_STATEMENT + + """ + Partnership Agreement + """ + DK_PARTNERSHIP_AGREEMENT + + """ + Passport + """ + DK_PASSPORT + + """ + Police Identity Card + """ + DK_POLICE_IDENTITY_CARD + + """ + Registration Document + """ + DK_REGISTRATION_DOCUMENT + + """ + Resident Permit + """ + DK_RESIDENT_PERMIT + + """ + Signed Annual Report + """ + DK_SIGNED_ANNUAL_REPORT + + """ + Tax Registration Certificate + """ + DK_TAX_REGISTRATION_CERTIFICATE + + """ + UBO Attestation + """ + DK_UBO_ATTESTATION + + """ + Utility Bill + """ + DK_UTILITY_BILL + + """ + Articles of Incorporation + """ + EE_ARTICLES_OF_INCORPORATION + + """ + Bank Statement + """ + EE_BANK_STATEMENT + + """ + Beneficial Owner Report + """ + EE_BENEFICIAL_OWNER_REPORT + + """ + Certificate of Residence + """ + EE_CERTIFICATE_OF_RESIDENCE + + """ + Commercial Register Extract + """ + EE_COMMERCIAL_REGISTER_EXTRACT + + """ + Corporate Status Certificate + """ + EE_CORPORATE_STATUS_CERTIFICATE + + """ + Director Attestation + """ + EE_DIRECTOR_ATTESTATION + + """ + Drivers License + """ + EE_DRIVERS_LICENSE + + """ + Identity Card + """ + EE_IDENTITY_CARD + + """ + Partnership Agreement + """ + EE_PARTNERSHIP_AGREEMENT + + """ + Passport + """ + EE_PASSPORT + + """ + Registration Document + """ + EE_REGISTRATION_DOCUMENT + + """ + Resident Permit + """ + EE_RESIDENT_PERMIT + + """ + Signed Annual Report + """ + EE_SIGNED_ANNUAL_REPORT + + """ + Tax Certificate + """ + EE_TAX_CERTIFICATE + + """ + Trash Disposal Bill + """ + EE_TRASH_BILL + + """ + UBO Attestation + """ + EE_UBO_ATTESTATION + + """ + Utility Bill + """ + EE_UTILITY_BILL + + """ + VAT Registration + """ + EE_VAT_REGISTRATION + + """ + Articles of Incorporation + """ + ES_ARTICLES_OF_INCORPORATION + + """ + Bank Statement + """ + ES_BANK_STATEMENT + + """ + Beneficial Owner Report + """ + ES_BENEFICIAL_OWNER_REPORT + + """ + Certificate of Registration + """ + ES_CERTIFICATE_OF_REGISTRATION + + """ + Certificate of Residence + """ + ES_CERTIFICATE_OF_RESIDENCE + + """ + Director Attestation + """ + ES_DIRECTOR_ATTESTATION + + """ + Drivers License + """ + ES_DRIVERS_LICENSE + + """ + Government Issued Letter + """ + ES_GOVERNMENT_ISSUED_LETTER + + """ + Identity Card + """ + ES_IDENTITY_CARD + + """ + NIF Document + """ + ES_NIF_DOCUMENT + + """ + Other Supporting Document + """ + ES_OTHER + + """ + Passport + """ + ES_PASSPORT + + """ + Phone Bill + """ + ES_PHONE_BILL + + """ + Photo Card + """ + ES_PHOTO_CARD + + """ + Proof Of Address + """ + ES_PROOF_OF_ADDRESS + + """ + Proof Of Business Registration + """ + ES_PROOF_OF_BUSINESS_REGISTRATION + + """ + Recent Annual Return + """ + ES_RECENT_ANNUAL_RETURN + + """ + Resident Permit ID + """ + ES_RESIDENT_PERMIT_ID + + """ + Shareholder Register + """ + ES_SHAREHOLDER_REGISTER + + """ + Signed Annual Report + """ + ES_SIGNED_ANNUAL_REPORT + + """ + Tax Registration Certificate + """ + ES_TAX_REGISTRATION_CERTIFICATE + + """ + Trade License + """ + ES_TRADE_LICENSE + + """ + UBO Attestation + """ + ES_UBO_ATTESTATION + + """ + Utility Bill + """ + ES_UTILITY_BILL + + """ + Articles of Association + """ + FI_ARTICLES_OF_ASSOCIATION + + """ + Articles of Incorporation + """ + FI_ARTICLES_OF_INCORPORATION + + """ + Bank Statement + """ + FI_BANK_STATEMENT + + """ + Beneficial Owner Report + """ + FI_BENEFICIAL_OWNER_REPORT + + """ + Certificate of Incumbency + """ + FI_CERTIFICATE_OF_INCUMBENCY + + """ + Commercial Register Extract + """ + FI_COMMERCIAL_REGISTER_EXTRACT + + """ + Corporate Status Certificate + """ + FI_CORPORATE_STATUS_CERTIFICATE + + """ + Director Attestation + """ + FI_DIRECTOR_ATTESTATION + + """ + Driver's License + """ + FI_DRIVERS_LICENSE + + """ + Financial Statement + """ + FI_FINANCIAL_STATEMENT + + """ + Government Issued Letter + """ + FI_GOVERNMENT_ISSUED_LETTER + + """ + Identity Card + """ + FI_IDENTITY_CARD + + """ + Mortgage Statement + """ + FI_MORTGAGE_STATEMENT + + """ + Passport + """ + FI_PASSPORT + + """ + Resident Permit + """ + FI_RESIDENT_PERMIT + + """ + Signed Annual Report + """ + FI_SIGNED_ANNUAL_REPORT + + """ + Trade Registration + """ + FI_TRADE_REGISTRATION + + """ + UBO Attestation + """ + FI_UBO_ATTESTATION + + """ + Utility Bill + """ + FI_UTILITY_BILL + + """ + VAT Registration + """ + FI_VAT_REGISTRATION + + """ + Articles of Association + """ + FR_ARTICLES_OF_ASSOCIATION + + """ + Articles of Incorporation + """ + FR_ARTICLES_OF_INCORPORATION + + """ + Assignment Agreements + """ + FR_ASSIGNMENT_AGREEMENTS + + """ + Bank Statement + """ + FR_BANK_STATEMENT + + """ + Beneficial Owner Report + """ + FR_BENEFICIAL_OWNER_REPORT + + """ + Board Meeting Minutes or Resolutions + """ + FR_BOARD_MEETING_MINUTES_OR_RESOLUTIONS + + """ + Certificate of Incorporation + """ + FR_CERTIFICATE_OF_INCORPORATION + + """ + Certificate of Incumbency + """ + FR_CERTIFICATE_OF_INCUMBENCY + + """ + Commercial Register Extract + """ + FR_COMMERCIAL_REGISTER_EXTRACT + + """ + Corporate Status Certificate + """ + FR_CORPORATE_STATUS_CERTIFICATE + + """ + Director Attestation + """ + FR_DIRECTOR_ATTESTATION + + """ + Drivers License + """ + FR_DRIVERS_LICENSE + + """ + Government Issued Letter + """ + FR_GOVERNMENT_ISSUED_LETTER + + """ + Identity Card + """ + FR_IDENTITY_CARD + + """ + Other Supporting Document + """ + FR_OTHER + + """ + Partnership Agreement + """ + FR_PARTNERSHIP_AGREEMENT + + """ + Passport + """ + FR_PASSPORT + + """ + Phone Bill + """ + FR_PHONE_BILL + + """ + Photo Card + """ + FR_PHOTO_CARD + + """ + Proof of Address + """ + FR_PROOF_OF_ADDRESS + + """ + Proof of Business Registration + """ + FR_PROOF_OF_BUSINESS_REGISTRATION + + """ + Proof of VAT ID + """ + FR_PROOF_OF_VAT_ID + + """ + Recent Annual Return + """ + FR_RECENT_ANNUAL_RETURN + + """ + Registration Document + """ + FR_REGISTRATION_DOCUMENT + + """ + Securities Register + """ + FR_SECURITIES_REGISTER + + """ + Shareholder Agreements + """ + FR_SHAREHOLDER_AGREEMENTS + + """ + Shareholder Register + """ + FR_SHAREHOLDER_REGISTER + + """ + UBO Attestation + """ + FR_UBO_ATTESTATION + + """ + Utility Bill + """ + FR_UTILITY_BILL + + """ + Bank Statement + """ + GB_BANK_STATEMENT + + """ + Beneficial Owner Report + """ + GB_BENEFICIAL_OWNER_REPORT + + """ + Benefits Agency Document + """ + GB_BENEFITS_AGENCY_DOCUMENT + + """ + Certificate of Incorporation + """ + GB_CERTIFICATE_OF_INCORPORATION + + """ + Certificate of Incumbency + """ + GB_CERTIFICATE_OF_INCUMBENCY + + """ + Charity Commission Document + """ + GB_CHARITY_COMMISSION_DOCUMENT + + """ + Companies House Document + """ + GB_COMPANIES_HOUSE_DOCUMENT + + """ + Confirmation Statement + """ + GB_CONFIRMATION_STATEMENT + + """ + Corporate Status Certificate + """ + GB_CORPORATE_STATUS_CERTIFICATE + + """ + Council Document + """ + GB_COUNCIL_DOCUMENT + + """ + Drivers License + """ + GB_DRIVERS_LICENSE + + """ + Electoral Register Entry Document + """ + GB_ELECTORAL_REGISTER_ENTRY_DOCUMENT + + """ + General Practitioner Letter of Registration + """ + GB_GENERAL_PRACTICIONER_LETTER_OF_REGISTRATION + + """ + Government Issued Letter + """ + GB_GOVERNMENT_ISSUED_LETTER + + """ + HM Revenue and Customs Account Statement + """ + GB_HM_REVENUE_AND_CUSTOMS_ACCOUNT_STATEMENT + + """ + HM Revenue and Customs VAT Certificate + """ + GB_HM_REVENUE_AND_CUSTOMS_VAT_CERTIFICATE + + """ + Housing Association Document + """ + GB_HOUSING_ASSOCIATION_DOCUMENT + + """ + Identity Card + """ + GB_IDENTITY_CARD + + """ + NHS Medical Card + """ + GB_NHS_MEDICAL_CARD + + """ + OSCR Scottish Charity Regulator Document + """ + GB_OSCR_SCOTTISH_CHARITY_REGULATOR_DOCUMENT + + """ + Other Supporting Document + """ + GB_OTHER + + """ + Passport + """ + GB_PASSPORT + + """ + Phone Bill + """ + GB_PHONE_BILL + + """ + Photo Card + """ + GB_PHOTO_CARD + + """ + Proof Of Address + """ + GB_PROOF_OF_ADDRESS + + """ + Recent Annual Return + """ + GB_RECENT_ANNUAL_RETURN + + """ + Registration Document + """ + GB_REGISTRATION_DOCUMENT + + """ + Resident Permit + """ + GB_RESIDENT_PERMIT + + """ + Shareholder Register + """ + GB_SHAREHOLDER_REGISTER + + """ + Solicitors Letter + """ + GB_SOLICITORS_LETTER + + """ + Tax Registration Certificate + """ + GB_TAX_REGISTRATION_CERTIFICATE + + """ + Utility Bill + """ + GB_UTILITY_BILL + + """ + Bank Statement + """ + GI_BANK_STATEMENT + + """ + Certificate of Incorporation + """ + GI_CERTIFICATE_OF_INCORPORATION + + """ + Companies House Document + """ + GI_COMPANIES_HOUSE_DOCUMENT + + """ + Drivers License + """ + GI_DRIVERS_LICENSE + + """ + Identity Card + """ + GI_IDENTITY_CARD + + """ + Passport + """ + GI_PASSPORT + + """ + Utility Bill + """ + GI_UTILITY_BILL + + """ + Articles of Incorporation + """ + GR_ARTICLES_OF_INCORPORATION + + """ + Bank Statement + """ + GR_BANK_STATEMENT + + """ + Beneficial Owner Report + """ + GR_BENEFICIAL_OWNER_REPORT + + """ + Certificate of Incumbency + """ + GR_CERTIFICATE_OF_INCUMBENCY + + """ + Certificate of Registration + """ + GR_CERTIFICATE_OF_REGISTRATION + + """ + Commercial Register Extract + """ + GR_COMMERCIAL_REGISTER_EXTRACT + + """ + Commercial Registration + """ + GR_COMMERCIAL_REGISTRATION + + """ + Corporate Status Certificate + """ + GR_CORPORATE_STATUS_CERTIFICATE + + """ + Director Attestation + """ + GR_DIRECTOR_ATTESTATION + + """ + Drivers License + """ + GR_DRIVERS_LICENSE + + """ + Government Issued Address Document + """ + GR_GOVERNMENT_ISSUED_LETTER + + """ + Identity Card + """ + GR_IDENTITY_CARD + + """ + Mortgage Statement + """ + GR_MORTGAGE_STATEMENT + + """ + Partnership Agreement + """ + GR_PARTNERSHIP_AGREEMENT + + """ + Passport + """ + GR_PASSPORT + + """ + Registration Document + """ + GR_REGISTRATION_DOCUMENT + + """ + Residence Certificate + """ + GR_RESIDENCE_CERTIFICATE + + """ + Resident Certificate + """ + GR_RESIDENT_CERTIFICATE + + """ + Signed Annual Report + """ + GR_SIGNED_ANNUAL_REPORT + + """ + UBO Attestation + """ + GR_UBO_ATTESTATION + + """ + Utility Bill + """ + GR_UTILITY_BILL + + """ + VAT Registration + """ + GR_VAT_REGISTRATION + + """ + Bank Statement + """ + HK_BANK_STATEMENT + + """ + Business Registration Certificate + """ + HK_BUSINESS_REGISTRATION_CERTIFICATE + + """ + Certificate of Exemption + """ + HK_CERTIFICATE_OF_EXEMPTION + + """ + Certificate of Incorporation + """ + HK_CERTIFICATE_OF_INCORPORATION + + """ + Certificate of Registered Particulars + """ + HK_CERTIFICATE_OF_REGISTERED_PARTICULARS + + """ + Commercial Register Entry + """ + HK_COMMERCIAL_REGISTER_ENTRY + + """ + Commercial Register Extract + """ + HK_COMMERCIAL_REGISTER_EXTRACT + + """ + Contract for Sale of Property + """ + HK_CONTRACT_FOR_SALE_OF_PROPERTY + + """ + Drivers License + """ + HK_DRIVERS_LICENSE + + """ + Government or Judiciary Issued Document + """ + HK_GOVERNMENT_OR_JUDICIARY_ISSUED_DOCUMENT + + """ + Identity Card + """ + HK_IDENTITY_CARD + + """ + Insurance Company Statement + """ + HK_INSURANCE_COMPANY_STATEMENT + + """ + Passport + """ + HK_PASSPORT + + """ + Phone Bill + """ + HK_PHONE_BILL + + """ + Tenancy Agreement + """ + HK_TENANCY_AGREEMENT + + """ + University Bill or Letter + """ + HK_UNIVERSITY_BILL_OR_LETTER + + """ + Utility Bill + """ + HK_UTILITY_BILL + + """ + Vietnamese Refugee Card + """ + HK_VIETNAMESE_REFUGEE_CARD + + """ + Articles of Association + """ + HR_ARTICLES_OF_ASSOCIATION + + """ + Articles of Incorporation + """ + HR_ARTICLES_OF_INCORPORATION + + """ + Bank Statement + """ + HR_BANK_STATEMENT + + """ + Beneficial Owner Report + """ + HR_BENEFICIAL_OWNER_REPORT + + """ + Certificate of Incorporation + """ + HR_CERTIFICATE_OF_INCORPORATION + + """ + Corporate Status Certificate + """ + HR_CORPORATE_STATUS_CERTIFICATE + + """ + Director Attestation + """ + HR_DIRECTOR_ATTESTATION + + """ + Drivers License + """ + HR_DRIVERS_LICENSE + + """ + Identity Card + """ + HR_IDENTITY_CARD + + """ + Partnership Agreement + """ + HR_PARTNERSHIP_AGREEMENT + + """ + Passport + """ + HR_PASSPORT + + """ + Registration Document + """ + HR_REGISTRATION_DOCUMENT + + """ + Resident Permit + """ + HR_RESIDENT_PERMIT + + """ + UBO Attestation + """ + HR_UBO_ATTESTATION + + """ + Utility Bill + """ + HR_UTILITY_BILL + + """ + VAT Registration + """ + HR_VAT_REGISTRATION + + """ + Address Card + """ + HU_ADDRESS_CARD + + """ + Articles of Incorporation + """ + HU_ARTICLES_OF_INCORPORATION + + """ + Bank Statement + """ + HU_BANK_STATEMENT + + """ + Beneficial Owner Report + """ + HU_BENEFICIAL_OWNER_REPORT + + """ + Certificate of Incorporation + """ + HU_CERTIFICATE_OF_INCORPORATION + + """ + Commercial Register Extract + """ + HU_COMMERCIAL_REGISTER_EXTRACT + + """ + Director Attestation + """ + HU_DIRECTOR_ATTESTATION + + """ + Drivers License + """ + HU_DRIVERS_LICENSE + + """ + Identity Card + """ + HU_IDENTITY_CARD + + """ + Mortgage Statement + """ + HU_MORTGAGE_STATEMENT + + """ + Partnership Agreement + """ + HU_PARTNERSHIP_AGREEMENT + + """ + Passport + """ + HU_PASSPORT + + """ + Registration Document + """ + HU_REGISTRATION_DOCUMENT + + """ + Resident Permit + """ + HU_RESIDENT_PERMIT + + """ + Signed Annual Report + """ + HU_SIGNED_ANNUAL_REPORT + + """ + UBO Attestation + """ + HU_UBO_ATTESTATION + + """ + Utility Bill + """ + HU_UTILITY_BILL + + """ + VAT Registration + """ + HU_VAT_REGISTRATION + + """ + Articles of Association + """ + IE_ARTICLES_OF_ASSOCIATION + + """ + Articles of Incorporation + """ + IE_ARTICLES_OF_INCORPORATION + + """ + Bank Statement + """ + IE_BANK_STATEMENT + + """ + Beneficial Owner Report + """ + IE_BENEFICIAL_OWNER_REPORT + + """ + Car Insurance Policy + """ + IE_CAR_INSURANCE_POLICY + + """ + Certificate of Incorporation + """ + IE_CERTIFICATE_OF_INCORPORATION + + """ + Certificate of Registration + """ + IE_CERTIFICATE_OF_REGISTRATION + + """ + Companies Registration Office Document + """ + IE_COMPANIES_REGISTRATION_OFFICE_DOCUMENT + + """ + Corporate Filings + """ + IE_CORPORATE_FILINGS + + """ + Director Attestation + """ + IE_DIRECTOR_ATTESTATION + + """ + Drivers License + """ + IE_DRIVERS_LICENSE + + """ + Financial Statement + """ + IE_FINANCIAL_STATEMENT + + """ + Government Issued Letter + """ + IE_GOVERNMENT_ISSUED_LETTER + + """ + National Age Card + """ + IE_NATIONAL_AGE_CARD + + """ + Other Supporting Document + """ + IE_OTHER + + """ + Partnership Agreement + """ + IE_PARTNERSHIP_AGREEMENT + + """ + Passport + """ + IE_PASSPORT + + """ + Phone Bill + """ + IE_PHONE_BILL + + """ + Photo Card + """ + IE_PHOTO_CARD + + """ + Proof of Home Insurance + """ + IE_PROOF_OF_HOME_INSURANCE + + """ + RBO Screenshot + """ + IE_RBO_SCREENSHOT + + """ + Recent Annual Return + """ + IE_RECENT_ANNUAL_RETURN + + """ + Registration Document + """ + IE_REGISTRATION_DOCUMENT + + """ + Social Insurance Document + """ + IE_SOCIAL_INSURANCE_DOCUMENT + + """ + Statement of Liability from Revenue + """ + IE_STATEMENT_OF_LIABILITY_FROM_REVENUE + + """ + Tax Credit Certificate + """ + IE_TAX_CREDIT_CERTIFICATE + + """ + Tax Registration Certificate + """ + IE_TAX_REGISTRATION_CERTIFICATE + + """ + UBO Attestation + """ + IE_UBO_ATTESTATION + + """ + Utility Bill + """ + IE_UTILITY_BILL + + """ + Bank Statement + """ + IT_BANK_STATEMENT + + """ + Boat License + """ + IT_BOAT_LICENSE + + """ + By-laws Memorandum + """ + IT_BY_LAWS_MEMORANDUM + + """ + Certificate of Incorporation + """ + IT_CERTIFICATE_OF_INCORPORATION + + """ + Certificate of Registration + """ + IT_CERTIFICATE_OF_REGISTRATION + + """ + Certificate of Residence + """ + IT_CERTIFICATE_OF_RESIDENCE + + """ + Corporate Status Certificate + """ + IT_CORPORATE_STATUS_CERTIFICATE + + """ + Director Attestation + """ + IT_DIRECTOR_ATTESTATION + + """ + Drivers License + """ + IT_DRIVERS_LICENSE + + """ + Financial Statement + """ + IT_FINANCIAL_STATEMENT + + """ + Government Issued Letter + """ + IT_GOVERNMENT_ISSUED_LETTER + + """ + Identity Card + """ + IT_IDENTITY_CARD + + """ + Other Supporting Document + """ + IT_OTHER + + """ + Passport + """ + IT_PASSPORT + + """ + Pension Book + """ + IT_PENSION_BOOK + + """ + Phone Bill + """ + IT_PHONE_BILL + + """ + Photo Card + """ + IT_PHOTO_CARD + + """ + Proof Of Address + """ + IT_PROOF_OF_ADDRESS + + """ + Recent Annual Return + """ + IT_RECENT_ANNUAL_RETURN + + """ + Registers and Lists of Authorized Entities + """ + IT_REGISTERS_AND_LISTS_OF_AUTHORIZED_ENTITIES + + """ + Signed Annual Report + """ + IT_SIGNED_ANNUAL_REPORT + + """ + Tax Registration Certificate + """ + IT_TAX_REGISTRATION_CERTIFICATE + + """ + UBO Attestation + """ + IT_UBO_ATTESTATION + + """ + Utility Bill + """ + IT_UTILITY_BILL + + """ + Weapons License + """ + IT_WEAPONS_LICENSE + + """ + Drivers License + """ + JP_DRIVERS_LICENSE + + """ + My Number Card, with photo + """ + JP_MY_NUMBER_CARD + + """ + Other Supporting Document + """ + JP_OTHER + + """ + Passport + """ + JP_PASSPORT + + """ + Phone Bill + """ + JP_PHONE_BILL + + """ + Photo Card + """ + JP_PHOTO_CARD + + """ + Residence Card + """ + JP_RESIDENCE_CARD + + """ + Residence Certificate + """ + JP_RESIDENCE_CERTIFICATE + + """ + Seal Registration Certificate + """ + JP_SEAL_REGISTRATION_CERTIFICATE + + """ + Touki Copy of Company Registrar + """ + JP_TOUKI_COPY_OF_COMPANY_REGISTRAR + + """ + Bank Statement + """ + LI_BANK_STATEMENT + + """ + Commercial Register Extract + """ + LI_COMMERCIAL_REGISTER_EXTRACT + + """ + Director Attestation + """ + LI_DIRECTOR_ATTESTATION + + """ + Drivers License + """ + LI_DRIVERS_LICENSE + + """ + Government Issued Letter + """ + LI_GOVERNMENT_ISSUED_LETTER + + """ + Identity Card + """ + LI_IDENTITY_CARD + + """ + Passport + """ + LI_PASSPORT + + """ + Residence Certificate + """ + LI_RESIDENCE_CERTIFICATE + + """ + UBO Attestation + """ + LI_UBO_ATTESTATION + + """ + Utility Bill + """ + LI_UTILITY_BILL + + """ + Bank Statement + """ + LT_BANK_STATEMENT + + """ + Beneficial Owner Report + """ + LT_BENEFICIAL_OWNER_REPORT + + """ + Extract from the register of entities + """ + LT_COMMERCIAL_REGISTER_EXTRACT + + """ + Corporate Status Certificate + """ + LT_CORPORATE_STATUS_CERTIFICATE + + """ + Director Attestation + """ + LT_DIRECTOR_ATTESTATION + + """ + Driver's License + """ + LT_DRIVERS_LICENSE + + """ + Government Issued Letter + """ + LT_GOVERNMENT_ISSUED_LETTER + + """ + Identity Card + """ + LT_IDENTITY_CARD + + """ + Passport + """ + LT_PASSPORT + + """ + Registration Document + """ + LT_REGISTRATION_DOCUMENT + + """ + Signed Annual Report + """ + LT_SIGNED_ANNUAL_REPORT + + """ + Tax registration certifiate + """ + LT_TAX_REGISTRATION_CERTIFICATE + + """ + UBO Attestation + """ + LT_UBO_ATTESTATION + + """ + Utility Bill + """ + LT_UTILITY_BILL + + """ + VAT Registration + """ + LT_VAT_REGISTRATION + + """ + Address ID Document + """ + LU_ADDRESS_ID_DOCUMENT + + """ + Articles of Association + """ + LU_ARTICLES_OF_ASSOCIATION + + """ + Articles of Incorporation + """ + LU_ARTICLES_OF_INCORPORATION + + """ + Bank Statement + """ + LU_BANK_STATEMENT + + """ + Beneficial Owner Report + """ + LU_BENEFICIAL_OWNER_REPORT + + """ + Corporate Status Certificate + """ + LU_CORPORATE_STATUS_CERTIFICATE + + """ + Director Attestation + """ + LU_DIRECTOR_ATTESTATION + + """ + Drivers License + """ + LU_DRIVERS_LICENSE + + """ + Government Issued Letter + """ + LU_GOVERNMENT_ISSUED_LETTER + + """ + Identity Card + """ + LU_IDENTITY_CARD + + """ + Passport + """ + LU_PASSPORT + + """ + Recent Annual Return + """ + LU_RECENT_ANNUAL_RETURN + + """ + Resident Permit + """ + LU_RESIDENT_PERMIT + + """ + Trade License + """ + LU_TRADE_LICENSE + + """ + UBO Attestation + """ + LU_UBO_ATTESTATION + + """ + Utility Bill + """ + LU_UTILITY_BILL + + """ + VAT Registration + """ + LU_VAT_REGISTRATION + + """ + Assignment Agreements + """ + LV_ASSIGNMENT_AGREEMENTS + + """ + Bank Statement + """ + LV_BANK_STATEMENT + + """ + Beneficial Owner Report + """ + LV_BENEFICIAL_OWNER_REPORT + + """ + Board Meeting Minutes or Resolutions + """ + LV_BOARD_MEETING_MINUTES_OR_RESOLUTIONS + + """ + Director Attestation + """ + LV_DIRECTOR_ATTESTATION + + """ + Drivers License + """ + LV_DRIVERS_LICENSE + + """ + Government Issued Letter + """ + LV_GOVERNMENT_ISSUED_LETTER + + """ + Identity Card + """ + LV_IDENTITY_CARD + + """ + lursoft document + """ + LV_LURSOFT_DOCUMENT + + """ + merchant registration certificate + """ + LV_MERCHANT_REGISTRATION_CERTIFICATE + + """ + Partnership Agreement + """ + LV_PARTNERSHIP_AGREEMENT + + """ + Passport + """ + LV_PASSPORT + + """ + proof of business registration + """ + LV_PROOF_OF_BUSINESS_REGISTRATION + + """ + Registration Document + """ + LV_REGISTRATION_DOCUMENT + + """ + Resident Permit + """ + LV_RESIDENT_PERMIT + + """ + tax registration certificate + """ + LV_TAX_REGISTRATION_CERTIFICATE + + """ + UBO Attestation + """ + LV_UBO_ATTESTATION + + """ + Utility Bill + """ + LV_UTILITY_BILL + + """ + vat number from register + """ + LV_VAT_NUMBER_FROM_REGISTER + + """ + Articles of Incorporation + """ + MT_ARTICLES_OF_INCORPORATION + + """ + Bank Statement + """ + MT_BANK_STATEMENT + + """ + Beneficial Owner Report + """ + MT_BENEFICIAL_OWNER_REPORT + + """ + Commercial Register Extract + """ + MT_COMMERCIAL_REGISTER_EXTRACT + + """ + Corporate Status Certificate + """ + MT_CORPORATE_STATUS_CERTIFICATE + + """ + Director Attestation + """ + MT_DIRECTOR_ATTESTATION + + """ + Drivers License + """ + MT_DRIVERS_LICENSE + + """ + Identity Card + """ + MT_IDENTITY_CARD + + """ + Mortgage Statement + """ + MT_MORTGAGE_STATEMENT + + """ + Partnership Agreement + """ + MT_PARTNERSHIP_AGREEMENT + + """ + Passport + """ + MT_PASSPORT + + """ + Registration Document + """ + MT_REGISTRATION_DOCUMENT + + """ + Resident Permit + """ + MT_RESIDENT_PERMIT + + """ + Signed Annual Report + """ + MT_SIGNED_ANNUAL_REPORT + + """ + UBO Attestation + """ + MT_UBO_ATTESTATION + + """ + Utility Bill + """ + MT_UTILITY_BILL + + """ + Bank Statement + """ + MX_BANK_STATEMENT + + """ + Birth Certificate + """ + MX_BIRTH_CERTIFICATE + + """ + By Laws Memorandum + """ + MX_BY_LAWS_MEMORANDUM + + """ + Certificate of Incorporation + """ + MX_CERTIFICATE_OF_INCORPORATION + + """ + Consular ID Card + """ + MX_CONSULAR_ID_CARD + + """ + CURP (Clave Única de Registro de Población) + """ + MX_CURP + + """ + Drivers License + """ + MX_DRIVERS_LICENSE + + """ + Government Issued Letter + """ + MX_GOVERNMENT_ISSUED_LETTER + + """ + Identity Card + """ + MX_IDENTITY_CARD + + """ + Other Supporting Document + """ + MX_OTHER + + """ + Passport + """ + MX_PASSPORT + + """ + Power of Attorney + """ + MX_POWER_OF_ATTORNEY + + """ + Tax Registration Certificate + """ + MX_TAX_REGISTRATION_CERTIFICATE + + """ + Tax Status Certificate + """ + MX_TAX_STATUS_CERTIFICATE + + """ + Utility Bill + """ + MX_UTILITY_BILL + + """ + Voter ID Card + """ + MX_VOTER_ID_CARD + + """ + Bank Statement + """ + NL_BANK_STATEMENT + + """ + By Laws Memorandum + """ + NL_BY_LAWS_MEMORANDUM + + """ + Corporate Status Certificate + """ + NL_CORPORATE_STATUS_CERTIFICATE + + """ + Director Attestation + """ + NL_DIRECTOR_ATTESTATION + + """ + Drivers License + """ + NL_DRIVERS_LICENSE + + """ + Dutch Aliens Document + """ + NL_DUTCH_ALIENS_DOCUMENT + + """ + Government Issued Letter + """ + NL_GOVERNMENT_ISSUED_LETTER + + """ + Identity Card + """ + NL_IDENTITY_CARD + + """ + KVK Document + """ + NL_KVK_DOCUMENT + + """ + Other Supporting Document + """ + NL_OTHER + + """ + Passport + """ + NL_PASSPORT + + """ + Phone Bill + """ + NL_PHONE_BILL + + """ + Photo Card + """ + NL_PHOTO_CARD + + """ + Proof Of Address + """ + NL_PROOF_OF_ADDRESS + + """ + Proof of Home Insurance + """ + NL_PROOF_OF_HOME_INSURANCE + + """ + Recent Annual Return + """ + NL_RECENT_ANNUAL_RETURN + + """ + Registration Document + """ + NL_REGISTRATION_DOCUMENT + + """ + Resident Permit ID + """ + NL_RESIDENT_PERMIT_ID + + """ + Signed Annual Report + """ + NL_SIGNED_ANNUAL_REPORT + + """ + Tax Registration Certificate + """ + NL_TAX_REGISTRATION_CERTIFICATE + + """ + UBO Attestation + """ + NL_UBO_ATTESTATION + + """ + Utility Bill + """ + NL_UTILITY_BILL + + """ + Bank Statement + """ + NO_BANK_STATEMENT + + """ + Certificate of Incorporation + """ + NO_CERTIFICATE_OF_INCORPORATION + + """ + Drivers License + """ + NO_DRIVERS_LICENSE + + """ + Financial Statement + """ + NO_FINANCIAL_STATEMENT + + """ + Government Issued Letter + """ + NO_GOVERNMENT_ISSUED_LETTER + + """ + Identity Card + """ + NO_IDENTITY_CARD + + """ + Passport + """ + NO_PASSPORT + + """ + Residence Certificate + """ + NO_RESIDENCE_CERTIFICATE + + """ + Resident Permit + """ + NO_RESIDENT_PERMIT + + """ + Utility Bill + """ + NO_UTILITY_BILL + + """ + Bank Statement + """ + NZ_BANK_STATEMENT + + """ + Boat License + """ + NZ_BOAT_LICENSE + + """ + Business Number Registration Extract + """ + NZ_BUSINESS_NUMBER_REGISTRATION_EXTRACT + + """ + Car Registration Notification Demand + """ + NZ_CAR_REGISTRATION_NOTIFICATION_DEMAND + + """ + Central Government Agency Document + """ + NZ_CENTRAL_GOVERNMENT_AGENCY_DOCUMENT + + """ + Certificate of Good Standing + """ + NZ_CERTIFICATE_OF_GOOD_STANDING + + """ + Certificate of Identity + """ + NZ_CERTIFICATE_OF_IDENTITY + + """ + Certificate of Incorporation + """ + NZ_CERTIFICATE_OF_INCORPORATION + + """ + Certificate of Residence + """ + NZ_CERTIFICATE_OF_RESIDENCE + + """ + Companies Office Company Extract + """ + NZ_COMPANIES_OFFICE_COMPANY_EXTRACT + + """ + Drivers License + """ + NZ_DRIVERS_LICENSE + + """ + Electoral Roll Papers + """ + NZ_ELECTORAL_ROLL_PAPERS + + """ + Emergency Travel Document + """ + NZ_EMERGENCY_TRAVEL_DOCUMENT + + """ + Financial Statement + """ + NZ_FINANCIAL_STATEMENT + + """ + Government Issued Letter + """ + NZ_GOVERNMENT_ISSUED_LETTER + + """ + Identity Card + """ + NZ_IDENTITY_CARD + + """ + Insurance Policy Document + """ + NZ_INSURANCE_POLICY_DOCUMENT + + """ + Local Council Government Letter + """ + NZ_LOCAL_COUNCIL_GOVERNMENT_LETTER + + """ + Memorandum of Association + """ + NZ_MEMORANDUM_OF_ASSOCIATION + + """ + Other Supporting Document + """ + NZ_OTHER + + """ + Passport + """ + NZ_PASSPORT + + """ + Pension Book + """ + NZ_PENSION_BOOK + + """ + Phone Bill + """ + NZ_PHONE_BILL + + """ + Proof Of Address + """ + NZ_PROOF_OF_ADDRESS + + """ + Refugee Travel Document + """ + NZ_REFUGEE_TRAVEL_DOCUMENT + + """ + Register of Associations Extract + """ + NZ_REGISTER_OF_ASSOCIATIONS_EXTRACT + + """ + Signed Rental Tenancy Agreement + """ + NZ_SIGNED_RENTAL_TENANCY_AGREEMENT + + """ + Tax Registration Certificate + """ + NZ_TAX_REGISTRATION_CERTIFICATE + + """ + Utility Bill + """ + NZ_UTILITY_BILL + + """ + VAT Registration + """ + NZ_VAT_REGISTRATION + + """ + Weapons License + """ + NZ_WEAPONS_LICENSE + + """ + Articles of Incorporation + """ + PL_ARTICLES_OF_INCORPORATION + + """ + Bank Statement + """ + PL_BANK_STATEMENT + + """ + Beneficial Owner Report + """ + PL_BENEFICIAL_OWNER_REPORT + + """ + Certificate of Incumbency + """ + PL_CERTIFICATE_OF_INCUMBENCY + + """ + Certificate of Residence + """ + PL_CERTIFICATE_OF_RESIDENCE + + """ + Corporate Status Certificate + """ + PL_CORPORATE_STATUS_CERTIFICATE + + """ + Director Attestation + """ + PL_DIRECTOR_ATTESTATION + + """ + Drivers License + """ + PL_DRIVERS_LICENSE + + """ + Government Issued Letter + """ + PL_GOVERNMENT_ISSUED_LETTER + + """ + Identity Card + """ + PL_IDENTITY_CARD + + """ + Insurance Policy Document + """ + PL_INSURANCE_POLICY_DOCUMENT + + """ + National Court Register + """ + PL_NATIONAL_COURT_REGISTER + + """ + Passport + """ + PL_PASSPORT + + """ + Recent Annual Return + """ + PL_RECENT_ANNUAL_RETURN + + """ + Registration Document + """ + PL_REGISTRATION_DOCUMENT + + """ + REGON Certificate + """ + PL_REGON_CERTIFICATE + + """ + Resident Permit + """ + PL_RESIDENT_PERMIT + + """ + Signed Annual Report + """ + PL_SIGNED_ANNUAL_REPORT + + """ + Social Insurance Document + """ + PL_SOCIAL_INSURANCE_DOCUMENT + + """ + Tax Return + """ + PL_TAX_RETURN + + """ + Temporary Residence Registration Certificate + """ + PL_TEMPORARY_RESIDENCE_REGISTRATION_CERTIFICATE + + """ + UBO Attestation + """ + PL_UBO_ATTESTATION + + """ + Utility Bill + """ + PL_UTILITY_BILL + + """ + Articles of Incorporation + """ + PT_ARTICLES_OF_INCORPORATION + + """ + Bank Statement + """ + PT_BANK_STATEMENT + + """ + Beneficial Owner Report + """ + PT_BENEFICIAL_OWNER_REPORT + + """ + Certificate of Good Standing + """ + PT_CERTIFICATE_OF_GOOD_STANDING + + """ + Certificate of Incorporation + """ + PT_CERTIFICATE_OF_INCORPORATION + + """ + Certificate of Incumbency + """ + PT_CERTIFICATE_OF_INCUMBENCY + + """ + Certificate of Residence + """ + PT_CERTIFICATE_OF_RESIDENCE + + """ + Citizen Card + """ + PT_CITIZEN_CARD + + """ + Corporate Status Certificate + """ + PT_CORPORATE_STATUS_CERTIFICATE + + """ + Director Attestation + """ + PT_DIRECTOR_ATTESTATION + + """ + Drivers License + """ + PT_DRIVERS_LICENSE + + """ + Government Issued Letter + """ + PT_GOVERNMENT_ISSUED_LETTER + + """ + Identity Card + """ + PT_IDENTITY_CARD + + """ + Other Supporting Document + """ + PT_OTHER + + """ + Passport + """ + PT_PASSPORT + + """ + Recent Annual Return + """ + PT_RECENT_ANNUAL_RETURN + + """ + Registration Document + """ + PT_REGISTRATION_DOCUMENT + + """ + Resident Permit + """ + PT_RESIDENT_PERMIT + + """ + Signed Annual Report + """ + PT_SIGNED_ANNUAL_REPORT + + """ + Tax Registration Certificate + """ + PT_TAX_REGISTRATION_CERTIFICATE + + """ + UBO Attestation + """ + PT_UBO_ATTESTATION + + """ + Utility Bill + """ + PT_UTILITY_BILL + + """ + Articles of Incorporation + """ + RO_ARTICLES_OF_INCORPORATION + + """ + Assessment Certificate + """ + RO_ASSESSMENT_CERTIFICATE + + """ + Bank Statement + """ + RO_BANK_STATEMENT + + """ + Beneficial Owner Report + """ + RO_BENEFICIAL_OWNER_REPORT + + """ + Board Meeting Minutes or Resolutions + """ + RO_BOARD_MEETING_MINUTES_OR_RESOLUTIONS + + """ + Corporate Status Certificate + """ + RO_CORPORATE_STATUS_CERTIFICATE + + """ + Director Attestation + """ + RO_DIRECTOR_ATTESTATION + + """ + Drivers License + """ + RO_DRIVERS_LICENSE + + """ + Government Issued Letter + """ + RO_GOVERNMENT_ISSUED_LETTER + + """ + Identity Card + """ + RO_IDENTITY_CARD + + """ + Other Supporting Document + """ + RO_OTHER + + """ + Partnership Agreement + """ + RO_PARTNERSHIP_AGREEMENT + + """ + Passport + """ + RO_PASSPORT + + """ + Phone Bill + """ + RO_PHONE_BILL + + """ + Photo Card + """ + RO_PHOTO_CARD + + """ + Proof of Address + """ + RO_PROOF_OF_ADDRESS + + """ + Registration Document + """ + RO_REGISTRATION_DOCUMENT + + """ + Signed Annual Report + """ + RO_SIGNED_ANNUAL_REPORT + + """ + Tax Registration Certificate + """ + RO_TAX_REGISTRATION_CERTIFICATE + + """ + UBO Attestation + """ + RO_UBO_ATTESTATION + + """ + Utility Bill + """ + RO_UTILITY_BILL + + """ + Articles of Association + """ + SE_ARTICLES_OF_ASSOCIATION + + """ + Bank Statement + """ + SE_BANK_STATEMENT + + """ + Birth Certificate + """ + SE_BIRTH_CERTIFICATE + + """ + Certificate of Incorporation + """ + SE_CERTIFICATE_OF_INCORPORATION + + """ + Certificate of Registration + """ + SE_CERTIFICATE_OF_REGISTRATION + + """ + Director Attestation + """ + SE_DIRECTOR_ATTESTATION + + """ + Drivers License + """ + SE_DRIVERS_LICENSE + + """ + Financial Statement + """ + SE_FINANCIAL_STATEMENT + + """ + Government Issued Letter + """ + SE_GOVERNMENT_ISSUED_LETTER + + """ + Identity Card + """ + SE_IDENTITY_CARD + + """ + Official Gazette Notice + """ + SE_OFFICIAL_GAZETTE_NOTICE + + """ + Other Supporting Document + """ + SE_OTHER + + """ + Passport + """ + SE_PASSPORT + + """ + Phone Bill + """ + SE_PHONE_BILL + + """ + Photo Card + """ + SE_PHOTO_CARD + + """ + Recent Annual Return + """ + SE_RECENT_ANNUAL_RETURN + + """ + Registration Document + """ + SE_REGISTRATION_DOCUMENT + + """ + Resident Permit ID + """ + SE_RESIDENT_PERMIT_ID + + """ + Signed Annual Report + """ + SE_SIGNED_ANNUAL_REPORT + + """ + Swedish Standards Institute approved ID cards + """ + SE_SIS_ID_CARD + + """ + Tax Registration Certificate + """ + SE_TAX_REGISTRATION_CERTIFICATE + + """ + UBO Attestation + """ + SE_UBO_ATTESTATION + + """ + Utility Bill + """ + SE_UTILITY_BILL + + """ + ACRA Bizfile + """ + SG_ACRA_BIZFILE + + """ + ACRA Bizfile + """ + SG_ACRA_BIZFILE_RELATIONSHIP + + """ + Bank Statement + """ + SG_BANK_STATEMENT + + """ + Board Meeting Minutes or Resolutions + """ + SG_BOARD_MEETING_MINUTES_OR_RESOLUTIONS + + """ + Director Attestation + """ + SG_DIRECTOR_ATTESTATION + + """ + Drivers License + """ + SG_DRIVERS_LICENSE + + """ + Government Agency Correspondence + """ + SG_GOVERNMENT_AGENCY_CORRESPONDENCE + + """ + Government Issued Identity Document + """ + SG_GOVERNMENT_ISSUED_IDENTITY_DOCUMENT + + """ + Identity Card + """ + SG_IDENTITY_CARD + + """ + Letter of Authorization + """ + SG_LETTER_OF_AUTHORIZATION + + """ + Other Supporting Document + """ + SG_OTHER + + """ + Passport + """ + SG_PASSPORT + + """ + Phone Bill + """ + SG_PHONE_BILL + + """ + Photo Card + """ + SG_PHOTO_CARD + + """ + Recent Annual Return + """ + SG_RECENT_ANNUAL_RETURN + + """ + Recent Constitution Document + """ + SG_RECENT_CONSTITUTION_DOCUMENT + + """ + Registry of Societies Certificate + """ + SG_REGISTRY_OF_SOCIETIES_CERTIFICATE + + """ + UBO Attestation + """ + SG_UBO_ATTESTATION + + """ + Utility Bill + """ + SG_UTILITY_BILL + + """ + Articles of Incorporation + """ + SI_ARTICLES_OF_INCORPORATION + + """ + Beneficial Owner Report + """ + SI_BENEFICIAL_OWNER_REPORT + + """ + Certificate of Incorporation + """ + SI_CERTIFICATE_OF_INCORPORATION + + """ + Corporate Status Certificate + """ + SI_CORPORATE_STATUS_CERTIFICATE + + """ + Director Attestation + """ + SI_DIRECTOR_ATTESTATION + + """ + Drivers License + """ + SI_DRIVERS_LICENSE + + """ + Electronic Business Extract + """ + SI_ELECTRONIC_BUSINESS_EXTRACT + + """ + Financial Statement + """ + SI_FINANCIAL_STATEMENT + + """ + Government Issued Letter + """ + SI_GOVERNMENT_ISSUED_LETTER + + """ + Identity Card + """ + SI_IDENTITY_CARD + + """ + Notice of Identification and Classification of Activities + """ + SI_NOTICE_OF_IDENTIFICATION_AND_CLASSIFICATION_OF_ACTIVITIES + + """ + Partnership Agreement + """ + SI_PARTNERSHIP_AGREEMENT + + """ + Passport + """ + SI_PASSPORT + + """ + Registration Document + """ + SI_REGISTRATION_DOCUMENT + + """ + Resident Permit + """ + SI_RESIDENT_PERMIT + + """ + Signed Annual Report + """ + SI_SIGNED_ANNUAL_REPORT + + """ + UBO Attestation + """ + SI_UBO_ATTESTATION + + """ + Utility Bill + """ + SI_UTILITY_BILL + + """ + VAT Registration + """ + SI_VAT_REGISTRATION + + """ + Articles of Incorporation + """ + SK_ARTICLES_OF_INCORPORATION + + """ + Bank Statement + """ + SK_BANK_STATEMENT + + """ + Beneficial Owner Report + """ + SK_BENEFICIAL_OWNER_REPORT + + """ + Certificate of Residence + """ + SK_CERTIFICATE_OF_RESIDENCE + + """ + Commercial Register Extract + """ + SK_COMMERCIAL_REGISTER_EXTRACT + + """ + Corporate Status Certificate + """ + SK_CORPORATE_STATUS_CERTIFICATE + + """ + Director Attestation + """ + SK_DIRECTOR_ATTESTATION + + """ + Driver's License + """ + SK_DRIVERS_LICENSE + + """ + Government Issued Letter + """ + SK_GOVERNMENT_ISSUED_LETTER + + """ + Identity Card + """ + SK_IDENTITY_CARD + + """ + Mortgage Statement + """ + SK_MORTGAGE_STATEMENT + + """ + Partnership Agreement + """ + SK_PARTNERSHIP_AGREEMENT + + """ + Passport + """ + SK_PASSPORT + + """ + Pension Book + """ + SK_PENSION_BOOK + + """ + Registration Document + """ + SK_REGISTRATION_DOCUMENT + + """ + Signed Annual Report + """ + SK_SIGNED_ANNUAL_REPORT + + """ + UBO Attestation + """ + SK_UBO_ATTESTATION + + """ + Utility Bill + """ + SK_UTILITY_BILL + + """ + Bank Statement + """ + US_BANK_STATEMENT + + """ + Credit Card Statement + """ + US_CREDIT_CARD_STATEMENT + + """ + Drivers License + """ + US_DRIVERS_LICENSE + + """ + Government Issued Letter + """ + US_GOVERNMENT_ISSUED_LETTER + + """ + Insurance Statement + """ + US_INSURANCE_STATEMENT + + """ + IRS Letter 147c + """ + US_IRS_LETTER_147C + + """ + IRS SS-4 Confirmation Letter + """ + US_IRS_SS_4_CONFIRMATION_LETTER + + """ + Other Supporting Document + """ + US_OTHER + + """ + Passport + """ + US_PASSPORT + + """ + Phone Bill + """ + US_PHONE_BILL + + """ + Photo Card + """ + US_PHOTO_CARD + + """ + Proof Of Address + """ + US_PROOF_OF_ADDRESS + + """ + Proof of Business Registration + """ + US_PROOF_OF_BUSINESS_REGISTRATION + + """ + State ID + """ + US_STATE_ID + + """ + Tax Assessment Notice + """ + US_TAX_ASSESSMENT_NOTICE + + """ + Utility Bill + """ + US_UTILITY_BILL +} + +type DocumentAttachment implements Node { + attachmentType: Attachment! + contentType: FileContent + filename: String + + """ + The ID for an object. + """ + id: GlobalID! + queryComplexity: Int! + queryDepth: Int! +} + +""" +The connection type for DocumentAttachment. +""" +type DocumentAttachmentConnection { + """ + A list of edges. + """ + edges: [DocumentAttachmentEdge!]! + + """ + A list of nodes. + """ + nodes: [DocumentAttachment!]! + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! +} + +""" +An edge in a connection. +""" +type DocumentAttachmentEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: DocumentAttachment! +} + +""" +The ID for a DocumentAttachment. +""" +scalar DocumentAttachmentID + +enum DocumentPurpose { + PROOF_OF_ADDRESS + PROOF_OF_AUTHORITY + PROOF_OF_BANK_ACCOUNT_OWNERSHIP + PROOF_OF_BUSINESS_ADDRESS + PROOF_OF_BUSINESS_REGISTRATION + PROOF_OF_GOVERNMENT_REGISTRATION + PROOF_OF_IDENTITY + PROOF_OF_LICENSE + PROOF_OF_MEMORANDUM_OF_ASSOCIATION + PROOF_OF_PASSPORT + PROOF_OF_RELATIONSHIP + PROOF_OF_TAX_ID + PROOF_OF_VAT_ID + PROOF_OF_VISA +} + +""" +Metadata about a document purpose, including required fields that must be visible on supporting documents +""" +type DocumentPurposeMetadata { + """ + Description of what this document type proves + """ + description: String + + """ + Fields that must be visible on documents of this type + """ + mustInclude: [RequiredField!]! + + """ + Display name for this purpose + """ + name: String! + + """ + The document purpose handle + """ + purpose: DocumentPurpose! +} + +type EasyToGuessPinResponse { + """ + Whether the PIN is easy to guess. + """ + isEasyToGuess: Boolean! + + """ + An array of reasons why the PIN is easy to guess. Empty if the PIN isn't easy to guess. + """ + ruleViolations: [String!]! +} + +input EndCollaborationInput { + """ + The ID of the shop to end collaborator access for. + """ + shopifyShopId: PropertyPublicID! +} + +type EndCollaborationResult { + """ + The collaborator relationship that was ended. + """ + collaboratorRelationship: CollaboratorRelationship + + """ + Errors that occurred while ending collaborator access. + """ + userErrors: [UserError!] +} + +input EnforceSamlOrganizationDomainsInput { + """ + The IDs of the domain to be enforced. + """ + domainIds: [OrganizationDomainID!]! +} + +type EnforceSamlOrganizationDomainsResult { + """ + The organization with the enforced organization domains. + """ + organization: Organization + + """ + The collection of errors. + """ + userErrors: [UserError!] +} + +""" +The ID for a EntitySupportingDocument. +""" +scalar EntitySupportingDocumentID + +type ExpireCollaboratorRelationshipResult { + """ + The collaborator relationship that was expired. + """ + collaboratorRelationship: CollaboratorRelationship + + """ + Errors that occurred while expiring the collaborator relationship. + """ + userErrors: [UserError!] +} + +input ExportResourceInput { + """ + The resource type to export. + """ + exportModel: ExportableResource! +} + +type ExportResourceResult { + """ + Indicates whether the export was successful. + """ + success: Boolean + + """ + The collection of errors. + """ + userErrors: [UserError!] +} + +enum ExportableResource { + """ + Export action audits + """ + ACTION_AUDIT + + """ + Export organization users + """ + ORGANIZATION_USER + + """ + Export roles + """ + ROLE + + """ + Export user groups + """ + USER_GROUP +} + +type ExternalShopTransferRequest implements Node { + """ + The email of the transfer recipient + """ + externalRecipientEmail: String! + + """ + The ID for an object. + """ + id: GlobalID! + queryComplexity: Int! + queryDepth: Int! +} + +input FileAttachmentInput { + """ + Whether this attachment is the Front, Back or Page of the document. + """ + attachmentType: Attachment! + + """ + Metadata for the file to be uploaded. + """ + fileMetadata: FileMetadataInput! +} + +""" +The content_types for file uploads supported by this app +""" +enum FileContent { + APPLICATION_PDF + IMAGE_JPEG + IMAGE_PNG +} + +""" +The metadata of the file that the client will upload directly to the storage service. +""" +input FileMetadataInput { + """ + The size of the file in bytes + """ + byteSize: Int! + + """ + A base64 MD5 digest of the file + """ + checksum: String! + + """ + the content type of the file + """ + contentType: FileContent! + + """ + The name of the file + """ + filename: String! +} + +input FinalizeOrganizationUserImportCsvUploadInput { + """ + Token returned from stageOrganizationUserImportCsvUpload. + """ + directUploadToken: String! +} + +type FinalizeOrganizationUserImportCsvUploadResult { + """ + The import record created for this upload. Use its ID to poll for progress. + """ + businessUsersImport: BusinessUsersImportRun + + """ + The collection of errors. + """ + userErrors: [UserError!] +} + +type FinalizeSupportingDocumentResult { + supportingDocument: SupportingDocument + + """ + The collection of errors. + """ + userErrors: [UserError!] +} + +input FinalizeSupportingDocumentUploadInput { + supportingDocumentAttachments: [SupportingDocumentAttachmentInput!]! + supportingDocumentId: SupportingDocumentID! +} + +input GenerateDomainVerificationCodeInput { + """ + The given domain. + """ + domainName: String +} + +type GenerateDomainVerificationCodeResult { + """ + The collection of errors. + """ + userErrors: [UserError!] + + """ + The generated domain verification code. + """ + verificationCode: String +} + +type GeneratePosPinResult { + """ + The generated POS pin. + """ + posPin: String! +} + +type GenerateScimTokenResult { + """ + The organization object. + """ + organization: Organization + + """ + The generated scim token. + """ + scimToken: String + + """ + List of user errors of generate scim token operation. + """ + userErrors: [UserError!] +} + +scalar GlobalID + +type GovernmentIdentifier implements Node { + countryCode: CountryCode! + + """ + The ID for an object. + """ + id: GlobalID! + identifierType: GovernmentIdentifierType! + maskedValue: String! + queryComplexity: Int! + queryDepth: Int! + + """ + The unmasked value of the government identifier. Warning: querying this field + in a mutation response can return a trust challenge error on mutation success. + """ + value: String! +} + +enum GovernmentIdentifierCategoryEnum { + IDENTIFYING_ID + OTHER + TAX_ID +} + +""" +The connection type for GovernmentIdentifier. +""" +type GovernmentIdentifierConnection { + """ + A list of edges. + """ + edges: [GovernmentIdentifierEdge!]! + + """ + A list of nodes. + """ + nodes: [GovernmentIdentifier!]! + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! +} + +type GovernmentIdentifierDuplicationCheck { + """ + The GID of the entity that owns the duplicate. + """ + identifiableId: ID! + + """ + Display name of the entity that owns the duplicate. + """ + identifiableName: String + + """ + The masked value of the duplicate government identifier. + """ + maskedValue: String! +} + +""" +An edge in a connection. +""" +type GovernmentIdentifierEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: GovernmentIdentifier! +} + +""" +The ID for a GovernmentIdentifier. +""" +scalar GovernmentIdentifierID + +type GovernmentIdentifierResult { + governmentIdentifier: GovernmentIdentifier + + """ + The collection of errors. + """ + userErrors: [UserError!] +} + +type GovernmentIdentifierType { + category: GovernmentIdentifierCategoryEnum! + countryCode: CountryCodeWithDefault! + description: String + fields: [GovernmentIdentifierTypeField!]! + handle: String! + multipleAllowed: Boolean! + name: String! + shortName: String + type: GovernmentIdentifierTypeEnum! +} + +enum GovernmentIdentifierTypeEnum { + BUSINESS_IDENTIFICATION_NUMBER + DRIVERS_LICENSE + PASSPORT + PERSONAL_IDENTIFICATION_NUMBER + TAX_ID +} + +type GovernmentIdentifierTypeField { + format: String + mask: String + name: String! + placeholder: String +} + +enum GovernmentIdentifierTypeInput { + AE_EMIRATES_ID + AE_TIN_COMPANY + AE_VAT_ID + AO_NIF + AR_CUIL + AR_DNI + AT_DRIVERS_LICENSE + AT_FBN + AT_PASSPORT + AT_STEUER_NR + AT_VAT_ID + AU_ABN + AU_ACN + AU_DRIVERS_LICENSE + AU_PASSPORT + AU_TFN + AZ_PIN + BE_BTW + BE_DRIVERS_LICENSE + BE_KBO + BE_KVK + BE_NATIONAL_NUMBER + BE_PASSPORT + BE_TVA + BE_VAT_ID + BG_EGN + BG_TIN_COMPANY + BG_VAT_ID + BN_NRIC + BO_CI + BR_CPF + BS_TIN + BT_CID + BW_TIN + CA_BUSINESS_NUMBER + CA_CORPORATION_NUMBER + CA_CRA + CA_DRIVERS_LICENSE + CA_NEQ + CA_PASSPORT + CA_SIN + CH_AHV + CH_DRIVERS_LICENSE + CH_PASSPORT + CH_TIN_COMPANY + CH_UID + CH_VAT_ID + CL_RUT + CN_PASSPORT + CO_CC + CR_CI + CR_CPF + CR_DIMEX + CR_NITE + CY_TIC + CY_TIN_COMPANY + CY_VAT_ID + CZ_DIC + CZ_DRIVERS_LICENSE + CZ_ICO + CZ_PASSPORT + CZ_RODNE_CISLO + CZ_VAT_ID + DEFAULT_BUSINESS_ID + DEFAULT_DRIVERS_LICENSE + DEFAULT_NATIONAL_ID + DEFAULT_PASSPORT + DEFAULT_PERSONAL_ID_NUMBER + DEFAULT_TAX_ID + DE_DRIVERS_LICENSE + DE_HRN + DE_HR_COURT + DE_PASSPORT + DE_STEUER_ID_NR + DE_VAT_ID + DK_CPR + DK_CVR + DK_DRIVERS_LICENSE + DK_PASSPORT + DK_VAT_ID + DO_CIE + EC_CI + EE_BUSINESS_REGISTRY_CODE + EE_ISIKUKOOD + EE_VAT_ID + ES_DNI + ES_DRIVERS_LICENSE + ES_NIF + ES_PASSPORT + ES_VAT_ID + ET_TIN + FI_HENKILOTUNNUS + FI_VAT_ID + FI_Y_TUNNUS + FR_BUSINESS_REGISTRATION_NUMBER + FR_DRIVERS_LICENSE + FR_NIR + FR_PASSPORT + FR_SPI + FR_VAT_ID + GA_NIF + GB_CRN + GB_DRIVERS_LICENSE + GB_NINO + GB_PASSPORT + GB_VAT_ID + GI_TIN_COMPANY + GR_AFM + GR_IDENTITY_CARD + GR_PASSPORT + GR_TIN_COMPANY + GR_VAT_ID + GT_NIT + HK_BRN + HK_CRN + HK_DRIVERS_LICENSE + HK_HKID + HK_PASSPORT + HK_TIN_COMPANY + HR_OIB + HR_TIN_COMPANY + HR_VAT_ID + HU_HUNGARY_TAX_ID + HU_IDENTITY_CARD + HU_PASSPORT + HU_VAT_ID + ID_KTP + IE_CRN + IE_DRIVERS_LICENSE + IE_PASSPORT + IE_PPS + IE_VAT_ID + IN_PAN + IS_KENNITALA + IT_CODICE_FISCALE + IT_DRIVERS_LICENSE + IT_PASSPORT + IT_REA + IT_VAT_ID + JP_CORPORATE_REGISTRATION_NUMBER + JP_DRIVERS_LICENSE + JP_MY_NUMBER + JP_PASSPORT + KE_KRA_PIN + KZ_IIN + LA_TIN + LI_PEID + LI_TIN_COMPANY + LI_VAT_ID + LT_ASMENS_KODAS + LT_TIN_COMPANY + LT_VAT_ID + LU_NIF + LU_RCS + LU_VAT_ID + LV_PASSPORT + LV_PERSONAS_KODS + LV_TIN_COMPANY + LV_VAT_ID + MD_NI + MG_NIF + MK_PIN + MN_TIN + MO_TIN + MT_TIN + MT_TIN_COMPANY + MT_VAT_ID + MX_CURP + MX_RFC_BUSINESS + MX_RFC_PERSON + MY_MYKAD + MZ_NUIT + NG_NIN + NL_BSN + NL_DRIVERS_LICENSE + NL_KVK + NL_PASSPORT + NL_VAT_ID + NO_FODSELSNUMMER + NO_ORGNR + NO_VAT_ID + NZ_DRIVERS_LICENSE + NZ_GST + NZ_IRD + NZ_NZBN + NZ_PASSPORT + PE_CUI + PK_CNIC + PK_SNIC + PL_PESEL + PL_REGON + PL_VAT_ID + PT_DRIVERS_LICENSE + PT_NIF + PT_NIPC + PT_PASSPORT + PT_VAT_ID + PY_CI + RO_CNP + RO_DRIVERS_LICENSE + RO_PASSPORT + RO_ROMANIA_TAX_ID + RO_VAT_ID + RW_TIN + SA_TIN + SE_DRIVERS_LICENSE + SE_ORGANISATIONSNUMMER + SE_PASSPORT + SE_PERSONNUMMER + SE_VAT_ID + SG_DRIVERS_LICENSE + SG_FIN + SG_NRIC + SG_PASSPORT + SG_UEN + SG_UIN + SI_TIN + SI_TIN_COMPANY + SI_VAT_ID + SK_BUSINESS_REGISTRATION_NUMBER + SK_DIC + SK_VAT_ID + TH_PIN + TR_TIN + US_BUSINESS_LICENSE_NUMBER + US_DRIVERS_LICENSE + US_EIN + US_ITIN + US_PASSPORT + US_SSN + US_SSN_LAST4 + UY_CI + ZA_SAID +} + +""" +A group of users. +""" +type Group implements Node { + """ + Returns a summary of the group's access permissions. + """ + accessSummary: AccessSummary! + + """ + Returns all aggregated role assignments for the group. + """ + aggregatedRoleAssignments( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): AccessAggregatedRoleAssignmentConnection + description: String + + """ + The ID for an object. + """ + id: GlobalID! + name: String! + + """ + Returns the plus role for the group if the group is un-migrated. + """ + plusRole: Role + queryComplexity: Int! + queryDepth: Int! + + """ + Returns a list of Roles in alphabetical order. + """ + shopsAssignedFromRole( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + roleId: AccessRoleID! + ): ShopConnection! + storesList: StoresList! + type: GroupType! + useRbacAccess: Boolean! + usersCount: Int! +} + +""" +The connection type for Group. +""" +type GroupConnection { + """ + A list of edges. + """ + edges: [GroupEdge!]! + + """ + A list of nodes. + """ + nodes: [Group!]! + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! +} + +""" +Inputs for creating a group. +""" +input GroupCreateInput { + """ + The description of the group. + """ + description: String + + """ + The name of the group. + """ + name: String! + + """ + The array of role assignments to create for the group. + """ + roleAssignments: [RoleAssignmentInput!] +} + +""" +The result of creating a group. +""" +type GroupCreateResult { + """ + The group that was created. + """ + group: Group + + """ + Indicates whether the creation was successful. + """ + success: Boolean + + """ + The collection of errors. + """ + userErrors: [UserError!] +} + +""" +An edge in a connection. +""" +type GroupEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: Group! +} + +""" +The ID for a Group. +""" +scalar GroupID + +enum GroupType { + STORE_GROUP + USER_GROUP +} + +""" +Inputs for updating a group. +""" +input GroupUpdateInput { + """ + The description of the group. + """ + description: String + + """ + The ID of the group. + """ + id: GroupID! + + """ + The name of the group. + """ + name: String + + """ + The array of role assignments to create or update for the group. + """ + roleAssignmentsToUpdate: [RoleAssignmentInput!] + + """ + The array of IDs of the roles to fully unassign from the group. + """ + rolesToUnassign: [AccessRoleID!] +} + +""" +The result of updating a group. +""" +type GroupUpdateResult { + """ + The group that was updated. + """ + group: Group + + """ + Indicates whether the creation was successful. + """ + success: Boolean + + """ + The collection of errors. + """ + userErrors: [UserError!] +} + +""" +Inputs for deleting groups. +""" +input GroupsDeleteInput { + """ + The IDs of the Groups to delete. + """ + ids: [GroupID!]! +} + +""" +The result of deleting groups. +""" +type GroupsDeleteResult { + """ + The IDs of the deleted_groups. + """ + deletedIds: [GroupID!] + + """ + Indicates whether the mutation was successful. + """ + success: Boolean + + """ + The collection of errors. + """ + userErrors: [UserError!] +} + +""" +An ISO 8601-encoded date +""" +scalar ISO8601Date @specifiedBy(url: "https://tools.ietf.org/html/rfc3339") + +""" +An ISO 8601-encoded datetime +""" +scalar ISO8601DateTime @specifiedBy(url: "https://tools.ietf.org/html/rfc3339") + +""" +A single row result from a staff CSV import. +""" +type ImportRowResult { + """ + Error code for CSV validation errors. + """ + code: String + + """ + The email address from the CSV row. + """ + email: String + + """ + Error message if the row failed. + """ + error: String + + """ + Validation error message for CSV-level errors. + """ + message: String + + """ + The operation attempted: create, suspend, or reactivate. + """ + operation: String + + """ + The CSV row number this result corresponds to. + """ + rowNumber: Int + + """ + The result status: imported, failed, or skipped. + """ + status: String +} + +input IndividualInput { + """ + The existing person to associate with the entity. + """ + existingPerson: UpdatePersonInput + + """ + The first name of the individual. + """ + firstName: String @deprecated(reason: "Use person argument instead") + + """ + The last name of the individual. + """ + lastName: String @deprecated(reason: "Use person argument instead") + + """ + The new individual associated to the entity. + """ + person: CreatePersonInput + + """ + The person in the organization to associate with the entity. + """ + personId: PersonID @deprecated(reason: "Use existing_person argument instead") +} + +""" +Represents untyped JSON +""" +scalar JSON + +type LegacyOrganizationUser implements Node & OrganizationUserInterface { + """ + Returns a summary of the user's access permissions. + """ + accessSummary: AccessSummary + admin: Boolean! + administrativePermissions: [String!] + + """ + Returns all aggregated role assignments for the user. + """ + aggregatedRoleAssignments( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): AccessAggregatedRoleAssignmentConnection + + """ + Returns all groups that can be assigned to the user. + """ + assignableGroups( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): GroupConnection + + """ + Returns whether the requester can resend the invitation for the target. + """ + canResendInvite( + """ + The target invited organization user. + """ + targetOrganizationUserId: OrganizationUserID! + ): Boolean! + collaboratorAccess: CollaboratorAccessStatus + + """ + A summary of collaborator relationship access for the user. + """ + collaboratorRelationshipAccessSummary: CollaboratorRelationshipAccessSummary + createdAt: ISO8601DateTime! + createdBy: OrganizationUser + email: String! + generatePinForShop(length: Int, shopifyShopId: PropertyPublicID!): String + + """ + Returns a list of groups assigned to the user. + """ + groups( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): GroupConnection! + hasManageCollaboratorShopPermission: Boolean! + id: GlobalID! + isPinEasyToGuessForShop(pin: String!, shopifyShopId: PropertyPublicID!): EasyToGuessPinResponse + isShopifyEmployee: Boolean! + legacyUserType: LegacyUser! + migratableToRbacByRequester: Boolean! + + """ + Organization-wide access conditions applied to the user. + """ + organizationAccessConditions: [String!]! + organizationPermissions: [String!]! + partnerPermissions: [String!] + privateData: PrivateData! + queryComplexity: Int! + queryDepth: Int! + rbacBannerCode: String + + """ + Returns a list of retail accesses for the user. + """ + retailAccesses( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): RetailAccessConnection! + role: Role + + """ + Returns a list of roles assigned to the user. + """ + roles( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): AccessRoleConnection! + samlEnforcementState: UserSamlEnforcementState! + shopAccess: ShopAccess + shopAccessDetailsByShopifyShopId(shopifyShopId: PropertyPublicID!): UserShopAccessDetails + shopifyUserId: String + + """ + Returns a list of Roles in alphabetical order. + """ + shopsAssignedFromRole( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + roleId: AccessRoleID! + ): ShopConnection! + status: OrganizationUserStatus! + + """ + A summary of current store access for the user (legacy or RBAC). + """ + storeAccessSummary: StoreAccessSummary + tfaEnforced: Boolean! + useRbacAccess: Boolean! + verifiedOrganizationDomain: Boolean! + wasSubAdmin: Boolean! +} + +enum LegacyUser { + """ + The user is a collaborator account. + """ + COLLABORATOR + + """ + The user is a Legacy Shopify account. + """ + LEGACY_STAFF + + """ + The user has POS access. + """ + POS_ACCESS +} + +type LegalEntity implements Node { + accountRepresentative: Principal + addresses: [Address!] + + """ + Whether the legal entity can be archived. + """ + archivable: Boolean! + + """ + Archival status of the legal entity. + """ + archived: Boolean! + + """ + People that can be associated with the legal entity as a principal + """ + assignablePeople( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + search: String + ): PersonConnection + category: Category! + + """ + Connected shops for the legal entity + """ + connectedShops: [Shop!] + countryCode: CountryCode! + displayName: String + entityPrincipals( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + search: String + sort: PrincipalSortField + ): PrincipalConnection + + """ + Returns a GovernmentIdentifier by the specified ID. + """ + governmentIdentifier(id: GovernmentIdentifierID!): GovernmentIdentifier + governmentIdentifiers: [GovernmentIdentifier!] + + """ + The ID for an object. + """ + id: GlobalID! + isRegistered: Boolean! + legalEntityType: LegalEntityType + + """ + The legal name of the entity. For individuals, returns the person's full name. + For businesses, returns the registered business name. + """ + legalName: String + + """ + The legal name variants (e.g., kanji, kana) + """ + legalNameVariants: [NameVariant!] + nickname: String + + """ + The total equity owned by all principals + """ + ownedEquity: Float + phoneNumber: String + + """ + Returns a Principal by the specified ID. + """ + principal(id: PrincipalID!): Principal + principals: [Principal!] @deprecated(reason: "Use the 'entity_principals' connection instead") + principalsCount: Int! + queryComplexity: Int! + queryDepth: Int! + + """ + The registered business name. Only applicable for business entities. Returns nil for individuals. + """ + registeredBusinessName: String + + """ + Returns a SupportingDocument by the specified ID. + """ + supportingDocument(id: SupportingDocumentID!): SupportingDocument + supportingDocuments( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): SupportingDocumentConnection + taxPreferenceGovernmentIdentifier: GovernmentIdentifier + tradeName: String @deprecated(reason: "Trade name is deprecated from Legal Entity scope and will be replaced with a shop scope field.") + + """ + The trade name variants (e.g., kanji, kana) + """ + tradeNameVariants: [NameVariant!] @deprecated(reason: "Trade name is deprecated from Legal Entity scope and will be replaced with a shop scope field.") +} + +""" +The connection type for LegalEntity. +""" +type LegalEntityConnection { + """ + A list of edges. + """ + edges: [LegalEntityEdge!]! + + """ + A list of nodes. + """ + nodes: [LegalEntity!]! + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! +} + +""" +An edge in a connection. +""" +type LegalEntityEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: LegalEntity! +} + +""" +Filter fields for legal entities. +""" +enum LegalEntityFilterField { + """ + Filter by archived status. + """ + ARCHIVED + + """ + Filter by category. + """ + CATEGORY + + """ + Filter by country code. + """ + COUNTRY_CODE + + """ + Filter by legal entity type. + """ + LEGAL_ENTITY_TYPE +} + +""" +Filter for legal entities. +""" +input LegalEntityFilterInput { + field: LegalEntityFilterField! + operator: LegalEntityFilterOperator! + value: String! +} + +""" +Operators for filtering legal entities. +""" +enum LegalEntityFilterOperator { + """ + Equals operator. + """ + EQUALS + + """ + Not equals operator. + """ + NOT_EQUALS +} + +""" +The ID for a LegalEntity. +""" +scalar LegalEntityID + +type LegalEntityResult { + legalEntity: LegalEntity + + """ + The collection of errors. + """ + userErrors: [UserError!] +} + +""" +Sort options for legal entities queries. +""" +enum LegalEntitySortField { + """ + Sort by country code ascending. + """ + COUNTRY_CODE_ASC + + """ + Sort by country code descending. + """ + COUNTRY_CODE_DESC + + """ + Sort by display name ascending. + """ + DISPLAY_NAME_ASC + + """ + Sort by display name descending. + """ + DISPLAY_NAME_DESC + + """ + Sort by legal entity type ascending. + """ + LEGAL_ENTITY_TYPE_ASC + + """ + Sort by legal entity type descending. + """ + LEGAL_ENTITY_TYPE_DESC + + """ + Sort by legal name ascending. + """ + LEGAL_NAME_ASC + + """ + Sort by legal name descending. + """ + LEGAL_NAME_DESC + + """ + Sort by nickname ascending. + """ + NICKNAME_ASC + + """ + Sort by nickname descending. + """ + NICKNAME_DESC +} + +type LegalEntityTaxFilingPreference implements Node { + governmentIdentifier: GovernmentIdentifier! + + """ + The ID for an object. + """ + id: GlobalID! + preferredEntity: LegalEntity! + preferredEntityType: String! + queryComplexity: Int! + queryDepth: Int! +} + +type LegalEntityType { + category: String! + country: String! + countryCode: CountryCodeWithDefault! + description: String + handle: String! + jurisdiction: String! + name: String! + nativeName: String! @deprecated(reason: "This field is deprecated. Please use native_names instead.") + nativeNames: [String!]! + subcategory: String +} + +enum LegalEntityTypeInput { + AE_COMPANY_FREE_ZONE_ESTABLISHMENT + AE_COMPANY_FREE_ZONE_LLC + AE_COMPANY_LLC + AE_COMPANY_SOLE_ESTABLISHMENT + AT_COMPANY_INCORPORATED_PARTNERSHIP + AT_COMPANY_PRIVATE_CORPORATION + AT_COMPANY_UNINCORPORATED_PARTNERSHIP + AT_NON_PROFIT_INCORPORATED_NON_PROFIT + AT_NON_PROFIT_UNINCORPORATED_NON_PROFIT + AU_COMPANY_PRIVATE_CORPORATION + AU_COMPANY_PRIVATE_PARTNERSHIP + AU_COMPANY_PUBLIC_COMPANY + AU_COMPANY_PUBLIC_CORPORATION + AU_COMPANY_PUBLIC_PARTNERSHIP + AU_COMPANY_SOLE_PROPRIETORSHIP + AU_NON_PROFIT_NON_PROFIT + AU_NON_PROFIT_UNINCORPORATED_ASSOCIATION + BE_COMPANY_INCORPORATED_PARTNERSHIP + BE_COMPANY_PRIVATE_CORPORATION + BE_COMPANY_PUBLIC_CORPORATION + BE_COMPANY_UNINCORPORATED_PARTNERSHIP + BE_NON_PROFIT_INCORPORATED_NON_PROFIT + BE_NON_PROFIT_UNINCORPORATED_NON_PROFIT + BG_COMPANY_INCORPORATED_PARTNERSHIP + BG_COMPANY_PRIVATE_CORPORATION + BG_COMPANY_PUBLIC_CORPORATION + BG_COMPANY_UNINCORPORATED_PARTNERSHIP + BG_NON_PROFIT_INCORPORATED_NON_PROFIT + BG_NON_PROFIT_UNINCORPORATED_NON_PROFIT + CA_COMPANY_PRIVATE_CORPORATION + CA_COMPANY_PRIVATE_PARTNERSHIP + CA_COMPANY_SOLE_PROPRIETORSHIP + CA_NON_PROFIT_NON_PROFIT + CA_NON_PROFIT_REGISTERED_CHARITY + CH_COMPANY_INCORPORATED_PARTNERSHIP + CH_COMPANY_PRIVATE_CORPORATION + CH_COMPANY_PUBLIC_CORPORATION + CH_COMPANY_UNINCORPORATED_PARTNERSHIP + CH_NON_PROFIT_INCORPORATED_NON_PROFIT + CH_NON_PROFIT_UNINCORPORATED_NON_PROFIT + CY_COMPANY_INCORPORATED_PARTNERSHIP + CY_COMPANY_PRIVATE_CORPORATION + CY_COMPANY_PUBLIC_CORPORATION + CY_COMPANY_UNINCORPORATED_PARTNERSHIP + CY_NON_PROFIT_INCORPORATED_NON_PROFIT + CY_NON_PROFIT_UNINCORPORATED_NON_PROFIT + CZ_COMPANY_INCORPORATED_PARTNERSHIP + CZ_COMPANY_PRIVATE_CORPORATION + CZ_COMPANY_PUBLIC_CORPORATION + CZ_COMPANY_UNINCORPORATED_PARTNERSHIP + CZ_NON_PROFIT_INCORPORATED_NON_PROFIT + CZ_NON_PROFIT_UNINCORPORATED_NON_PROFIT + DEFAULT_COMPANY + DEFAULT_NON_PROFIT + DE_COMPANY_INCORPORATED_PARTNERSHIP + DE_COMPANY_PRIVATE_CORPORATION + DE_COMPANY_PUBLIC_CORPORATION + DE_COMPANY_UNINCORPORATED_PARTNERSHIP + DE_NON_PROFIT_INCORPORATED_NON_PROFIT + DE_NON_PROFIT_UNINCORPORATED_NON_PROFIT + DK_COMPANY_INCORPORATED_PARTNERSHIP + DK_COMPANY_PRIVATE_CORPORATION + DK_COMPANY_UNINCORPORATED_PARTNERSHIP + DK_NON_PROFIT_INCORPORATED_NON_PROFIT + DK_NON_PROFIT_UNINCORPORATED_NON_PROFIT + EE_COMPANY_INCORPORATED_PARTNERSHIP + EE_COMPANY_PRIVATE_CORPORATION + EE_COMPANY_UNINCORPORATED_PARTNERSHIP + EE_NON_PROFIT_INCORPORATED_NON_PROFIT + EE_NON_PROFIT_UNINCORPORATED_NON_PROFIT + ES_COMPANY_INCORPORATED_PARTNERSHIP + ES_COMPANY_PRIVATE_CORPORATION + ES_COMPANY_UNINCORPORATED_PARTNERSHIP + ES_NON_PROFIT_INCORPORATED_NON_PROFIT + ES_NON_PROFIT_UNINCORPORATED_NON_PROFIT + FI_COMPANY_INCORPORATED_PARTNERSHIP + FI_COMPANY_PRIVATE_CORPORATION + FI_COMPANY_PUBLIC_CORPORATION + FI_COMPANY_UNINCORPORATED_PARTNERSHIP + FI_NON_PROFIT_INCORPORATED_NON_PROFIT + FI_NON_PROFIT_UNINCORPORATED_NON_PROFIT + FR_COMPANY_INCORPORATED_PARTNERSHIP + FR_COMPANY_PRIVATE_CORPORATION + FR_COMPANY_PUBLIC_COMPANY + FR_COMPANY_SOLE_PROPRIETORSHIP + FR_GOVERNMENT_GOVERNMENT_AGENCY + FR_NON_PROFIT_INCORPORATED_NON_PROFIT + GB_COMPANY_INCORPORATED_PARTNERSHIP + GB_COMPANY_PRIVATE_CORPORATION + GB_COMPANY_UNINCORPORATED_PARTNERSHIP + GB_NON_PROFIT_INCORPORATED_NON_PROFIT + GB_NON_PROFIT_UNINCORPORATED_NON_PROFIT + GI_COMPANY_INCORPORATED_PARTNERSHIP + GI_COMPANY_PRIVATE_CORPORATION + GI_COMPANY_PUBLIC_CORPORATION + GI_COMPANY_UNINCORPORATED_PARTNERSHIP + GI_NON_PROFIT_INCORPORATED_NON_PROFIT + GI_NON_PROFIT_UNINCORPORATED_NON_PROFIT + GR_COMPANY_INCORPORATED_PARTNERSHIP + GR_COMPANY_PRIVATE_CORPORATION + GR_COMPANY_PUBLIC_CORPORATION + GR_COMPANY_UNINCORPORATED_PARTNERSHIP + GR_NON_PROFIT_INCORPORATED_NON_PROFIT + GR_NON_PROFIT_UNINCORPORATED_NON_PROFIT + HK_COMPANY_PRIVATE_CORPORATION + HK_COMPANY_PRIVATE_PARTNERSHIP + HK_COMPANY_SOLE_PROPRIETORSHIP + HK_NON_PROFIT_INCORPORATED_NON_PROFIT + HK_NON_PROFIT_UNINCORPORATED_NON_PROFIT + HR_COMPANY_INCORPORATED_PARTNERSHIP + HR_COMPANY_PRIVATE_CORPORATION + HR_COMPANY_PUBLIC_CORPORATION + HR_COMPANY_UNINCORPORATED_PARTNERSHIP + HR_NON_PROFIT_INCORPORATED_NON_PROFIT + HR_NON_PROFIT_UNINCORPORATED_NON_PROFIT + HU_COMPANY_INCORPORATED_PARTNERSHIP + HU_COMPANY_PRIVATE_CORPORATION + HU_COMPANY_PUBLIC_CORPORATION + HU_COMPANY_UNINCORPORATED_PARTNERSHIP + HU_NON_PROFIT_INCORPORATED_NON_PROFIT + HU_NON_PROFIT_UNINCORPORATED_NON_PROFIT + IE_COMPANY_INCORPORATED_PARTNERSHIP + IE_COMPANY_PRIVATE_CORPORATION + IE_COMPANY_PUBLIC_CORPORATION + IE_COMPANY_UNINCORPORATED_PARTNERSHIP + IE_NON_PROFIT_INCORPORATED_NON_PROFIT + IE_NON_PROFIT_UNINCORPORATED_NON_PROFIT + IN_COMPANY_LIMITED_LIABILITY_PARTNERSHIP + IN_COMPANY_PRIVATE_COMPANY + IN_COMPANY_PUBLIC_COMPANY + IN_COMPANY_SOLE_PROPRIETORSHIP + IS_COMPANY_INCORPORATED_PARTNERSHIP + IS_COMPANY_PRIVATE_CORPORATION + IS_COMPANY_PUBLIC_CORPORATION + IS_COMPANY_UNINCORPORATED_PARTNERSHIP + IS_NON_PROFIT_INCORPORATED_NON_PROFIT + IS_NON_PROFIT_UNINCORPORATED_NON_PROFIT + IT_COMPANY_INCORPORATED_PARTNERSHIP + IT_COMPANY_PRIVATE_CORPORATION + IT_COMPANY_UNINCORPORATED_PARTNERSHIP + IT_NON_PROFIT_INCORPORATED_NON_PROFIT + IT_NON_PROFIT_UNINCORPORATED_NON_PROFIT + JP_COMPANY_PRIVATE_CORPORATION + JP_COMPANY_SOLE_PROPRIETORSHIP + JP_NON_PROFIT_NON_PROFIT + LI_COMPANY_INCORPORATED_PARTNERSHIP + LI_COMPANY_PRIVATE_CORPORATION + LI_COMPANY_PUBLIC_CORPORATION + LI_COMPANY_UNINCORPORATED_PARTNERSHIP + LI_NON_PROFIT_INCORPORATED_NON_PROFIT + LI_NON_PROFIT_UNINCORPORATED_NON_PROFIT + LT_COMPANY_INCORPORATED_PARTNERSHIP + LT_COMPANY_PRIVATE_CORPORATION + LT_COMPANY_PUBLIC_CORPORATION + LT_COMPANY_UNINCORPORATED_PARTNERSHIP + LT_NON_PROFIT_INCORPORATED_NON_PROFIT + LT_NON_PROFIT_UNINCORPORATED_NON_PROFIT + LU_COMPANY_INCORPORATED_PARTNERSHIP + LU_COMPANY_PRIVATE_CORPORATION + LU_COMPANY_PUBLIC_CORPORATION + LU_COMPANY_UNINCORPORATED_PARTNERSHIP + LU_NON_PROFIT_INCORPORATED_NON_PROFIT + LU_NON_PROFIT_UNINCORPORATED_NON_PROFIT + LV_COMPANY_INCORPORATED_PARTNERSHIP + LV_COMPANY_PRIVATE_CORPORATION + LV_COMPANY_PUBLIC_CORPORATION + LV_COMPANY_UNINCORPORATED_PARTNERSHIP + LV_NON_PROFIT_INCORPORATED_NON_PROFIT + LV_NON_PROFIT_UNINCORPORATED_NON_PROFIT + MC_COMPANY_INCORPORATED_PARTNERSHIP + MC_COMPANY_PRIVATE_CORPORATION + MC_COMPANY_PUBLIC_CORPORATION + MC_COMPANY_UNINCORPORATED_PARTNERSHIP + MC_NON_PROFIT_INCORPORATED_NON_PROFIT + MC_NON_PROFIT_UNINCORPORATED_NON_PROFIT + MT_COMPANY_INCORPORATED_PARTNERSHIP + MT_COMPANY_PRIVATE_CORPORATION + MT_COMPANY_PUBLIC_CORPORATION + MT_COMPANY_UNINCORPORATED_PARTNERSHIP + MT_NON_PROFIT_INCORPORATED_NON_PROFIT + MT_NON_PROFIT_UNINCORPORATED_NON_PROFIT + MX_COMPANY_PRIVATE_CORPORATION + MX_NON_PROFIT_NON_PROFIT + NL_COMPANY_INCORPORATED_PARTNERSHIP + NL_COMPANY_PRIVATE_CORPORATION + NL_COMPANY_SOLE_PROPRIETORSHIP + NL_COMPANY_UNINCORPORATED_PARTNERSHIP + NL_NON_PROFIT_INCORPORATED_NON_PROFIT + NL_NON_PROFIT_UNINCORPORATED_NON_PROFIT + NO_COMPANY_INCORPORATED_PARTNERSHIP + NO_COMPANY_PRIVATE_CORPORATION + NO_COMPANY_UNINCORPORATED_PARTNERSHIP + NO_NON_PROFIT_INCORPORATED_NON_PROFIT + NO_NON_PROFIT_UNINCORPORATED_NON_PROFIT + NZ_COMPANY_PRIVATE_CORPORATION + NZ_COMPANY_PRIVATE_PARTNERSHIP + NZ_COMPANY_SOLE_PROPRIETORSHIP + NZ_NON_PROFIT_INCORPORATED_NON_PROFIT + NZ_NON_PROFIT_NON_PROFIT + NZ_NON_PROFIT_UNINCORPORATED_NON_PROFIT + PL_COMPANY_INCORPORATED_PARTNERSHIP + PL_COMPANY_PRIVATE_CORPORATION + PL_COMPANY_PUBLIC_CORPORATION + PL_COMPANY_UNINCORPORATED_PARTNERSHIP + PL_NON_PROFIT_INCORPORATED_NON_PROFIT + PL_NON_PROFIT_UNINCORPORATED_NON_PROFIT + PT_COMPANY_INCORPORATED_PARTNERSHIP + PT_COMPANY_PRIVATE_CORPORATION + PT_COMPANY_UNINCORPORATED_PARTNERSHIP + PT_NON_PROFIT_INCORPORATED_NON_PROFIT + PT_NON_PROFIT_UNINCORPORATED_NON_PROFIT + RO_COMPANY_INCORPORATED_PARTNERSHIP + RO_COMPANY_PRIVATE_CORPORATION + RO_COMPANY_PUBLIC_CORPORATION + RO_COMPANY_UNINCORPORATED_PARTNERSHIP + SE_COMPANY_INCORPORATED_PARTNERSHIP + SE_COMPANY_PRIVATE_CORPORATION + SE_COMPANY_PUBLIC_CORPORATION + SE_COMPANY_UNINCORPORATED_PARTNERSHIP + SE_NON_PROFIT_INCORPORATED_NON_PROFIT + SE_NON_PROFIT_UNINCORPORATED_NON_PROFIT + SG_COMPANY_PRIVATE_CORPORATION + SG_COMPANY_PRIVATE_PARTNERSHIP + SG_COMPANY_SOLE_PROPRIETORSHIP + SG_NON_PROFIT_NON_PROFIT + SI_COMPANY_INCORPORATED_PARTNERSHIP + SI_COMPANY_PRIVATE_CORPORATION + SI_COMPANY_PUBLIC_CORPORATION + SI_COMPANY_UNINCORPORATED_PARTNERSHIP + SI_NON_PROFIT_INCORPORATED_NON_PROFIT + SI_NON_PROFIT_UNINCORPORATED_NON_PROFIT + SK_COMPANY_INCORPORATED_PARTNERSHIP + SK_COMPANY_PRIVATE_CORPORATION + SK_COMPANY_PUBLIC_CORPORATION + SK_COMPANY_SOLE_PROPRIETORSHIP + SK_COMPANY_UNINCORPORATED_PARTNERSHIP + SK_NON_PROFIT_INCORPORATED_NON_PROFIT + SK_NON_PROFIT_UNINCORPORATED_NON_PROFIT + SM_COMPANY_INCORPORATED_PARTNERSHIP + SM_COMPANY_PRIVATE_CORPORATION + SM_COMPANY_PUBLIC_CORPORATION + SM_COMPANY_UNINCORPORATED_PARTNERSHIP + SM_NON_PROFIT_INCORPORATED_NON_PROFIT + SM_NON_PROFIT_UNINCORPORATED_NON_PROFIT + TH_COMPANY_INCORPORATED_PARTNERSHIP + TH_COMPANY_PRIVATE_CORPORATION + TH_COMPANY_SOLE_PROPRIETORSHIP + TH_COMPANY_UNINCORPORATED_PARTNERSHIP + US_COMPANY_LLC + US_COMPANY_MULTI_MEMBER_LLC + US_COMPANY_PRIVATE_CORPORATION + US_COMPANY_PRIVATE_PARTNERSHIP + US_COMPANY_PUBLIC_CORPORATION + US_COMPANY_PUBLIC_PARTNERSHIP + US_COMPANY_SINGLE_MEMBER_LLC + US_COMPANY_SOLE_PROPRIETORSHIP + US_COMPANY_UNINCORPORATED_ASSOCIATION + US_NON_PROFIT_INCORPORATED_NON_PROFIT + US_NON_PROFIT_NON_PROFIT + US_NON_PROFIT_UNINCORPORATED_NON_PROFIT +} + +""" +The input fields used to determine which locations a retail user has access to. +""" +input LocationAssignmentsInput { + """ + Whether the retail user should have access to all locations. + """ + allLocationsAccess: Boolean = false + + """ + The locations to add to the retail user, i.e. ['gid://shopify/Location/11']. + """ + shopifyLocationIdsToAdd: [ID!] + + """ + The locations to remove from the retail user, i.e. ['gid://shopify/Location/12']. + """ + shopifyLocationIdsToRemove: [ID!] + + """ + The shopify shop id to assign locations to, i.e. 'gid://organization/ShopifyShop/10'. + """ + shopifyShopId: PropertyPublicID! +} + +type MarketsHomeRollbackCompatibleResult { + """ + The reasons why the shop cannot rollback from Markets Home + """ + incompatibleReasons: [String!]! + + """ + Whether the shop can rollback from Markets Home + """ + isCompatible: Boolean! +} + +type MarketsHomeRolloutCompatibleResult { + """ + The apps that are incompatible with Markets Home + """ + incompatibleApps: [String!]! + + """ + Whether the shop can rollout Markets Home + """ + isCompatible: Boolean! +} + +""" +A monetary value with currency +""" +type Money { + """ + Amount of the money + """ + amount: Decimal! + + """ + Currency of the money + """ + currencyCode: CurrencyCode! +} + +type Mutation { + """ + Change organization owner. + """ + accessOrganizationOwnerChange(input: AccessOrganizationOwnerChangeInput!): AccessOrganizationOwnerChangeResult! + + """ + Add access role (RBAC based) for an organization. + """ + accessRoleCreate(roleCreateInput: AccessRoleCreateInput!): AccessRoleCreateResult + + """ + Delete role for an organization. + """ + accessRoleDelete(accessRoleDeleteInput: AccessRoleDeleteInput!): AccessRoleDeleteResult! + + """ + Duplicate a role for an organization. + """ + accessRoleDuplicate(accessRoleDuplicateInput: AccessRoleDuplicateInput!): AccessRoleDuplicateResult! + + """ + Update role for an organization. + """ + accessRoleUpdate(accessRoleUpdateInput: AccessRoleUpdateInput!): AccessRoleUpdateResult! + + """ + Delete roles for an organization. + """ + accessRolesDelete(accessRolesDeleteInput: AccessRolesDeleteInput!): RolesDeleteResult! + + """ + Change store owner. + """ + accessStoreOwnerChange(input: AccessStoreOwnerChangeInput!): AccessStoreOwnerChangeResult! + + """ + Add role for an organization. + """ + addRole(addRoleInput: AddRoleInput!): AddRoleResult! + + """ + Grant an organization user access to one or more shop properties. + """ + addShopAccess(newShopAccesses: [ShopAccessInput!]!, organizationUserId: OrganizationUserID!): UpdateOrganizationUserResult! + + """ + Archive a legal entity. + """ + archiveLegalEntity(id: LegalEntityID!): LegalEntityResult! + + """ + Returns generated HMAC token used for authentication with Async notifications. + """ + argusToken: String + + """ + Assign organization owner (admin) for a Partner Organization User. + """ + assignPartnerOrganizationOwner(assignPartnerOrganizationOwnerInput: AssignPartnerOrganizationOwnerInput!): AssignPartnerOrganizationOwnerResult! + + """ + Adds a property to an Organization + """ + assignProperty(externalId: PropertyPublicID!, idempotencyKey: String!, offeringHandle: String!, organizationId: OrganizationID): PropertyResult! + + """ + Backfill partner organizations to shops relationships. + """ + backfillPartnerOrganizationsShopProperties(input: BackfillPartnerOrganizationsShopPropertiesInput!): BackfillPartnerOrganizationsShopPropertiesResult + + """ + Backfills Partner Organization User + """ + backfillPartnerUser(backfillPartnerUserInput: BackfillPartnerUserInput!): BackfillPartnerUserResult! + + """ + Bulk update role of organization users. + """ + bulkAssignOrganizationUserRole(bulkAssignRoleInput: BulkAssignRoleInput!): BulkAssignRoleResult! + + """ + Start a store copy operation. + """ + bulkDataStoreCopyStart(input: BulkDataStoreCopyStartInput!): BulkDataStoreCopyStartResult! + + """ + Start a store export operation. + """ + bulkDataStoreExportStart(input: BulkDataStoreExportStartInput!): BulkDataStoreExportStartResult! + + """ + Start a store import operation. + """ + bulkDataStoreImportStart(input: BulkDataStoreImportStartInput!): BulkDataStoreImportStartResult! + + """ + Bulk update test drive for shops. + """ + bulkUpdateTestDrive(input: TestDriveBulkUpdateInput!): TestDriveBulkUpdateResult + + """ + Cancel a pending shop transfer + """ + cancelShopTransfer(cancelShopTransferInput: CancelShopTransferInput!): CancelShopTransferResult! + + """ + Change Organization Domain enforcement states. + """ + changeDomainEnforcementState(changeDomainEnforcementStateInput: ChangeDomainEnforcementStateInput!): ChangeDomainEnforcementStateResult! + + """ + Accept collaborator request. + """ + collaboratorAccept(input: CollaboratorAcceptInput!): CollaboratorAcceptResult! + + """ + Convert users from SAML to standard login. + """ + convertUsersFromSaml(convertUsersFromSamlInput: ConvertUsersFromSamlInput!): ConvertUsersFromSamlResult! + + """ + Convert users to SAML users. + """ + convertUsersToSaml(convertUsersToSamlInput: ConvertUsersToSamlInput!): ConvertUsersToSamlResult! + + """ + Create an App Development Store. + """ + createAppDevelopmentStore( + """ + The developer preview handle if one is being enabled on this store. + """ + developerPreviewHandle: String + + """ + Whether the development store should have prepopulated test data. + """ + prepopulateTestData: Boolean = false + + """ + The key to lookup the price. This determines the entitlements for the shop. + """ + priceLookupKey: String! + + """ + The name of the shop. + """ + shopName: String! + ): CreateAppDevelopmentStoreResult! + + """ + Creates a CLI token service account as an organization user with apps developer role. + """ + createCliTokenOrganizationUser(createCliTokenOrganizationUserInput: CreateCliTokenOrganizationUserInput!): CreateCliTokenOrganizationUserResult! + + """ + Creates a client development shop. + """ + createClientDevelopmentShop( + """ + The shops intended country code. + """ + countryCode: String! + + """ + The name of the shop. + """ + shopName: String! + + """ + Whether to create a Shopify Plus shop. + """ + withPlus: Boolean + ): CreateClientDevelopmentShopResult! + + """ + Create a collaborator relationship. + """ + createCollaboratorRelationship(collaboratorRelationshipCreateInput: CreateCollaboratorRelationshipInput!): CreateCollaboratorRelationshipResult! + + """ + Create a government identifier for a legal entity or for a person. + """ + createGovernmentIdentifier(createGovernmentIdentifierInput: CreateGovernmentIdentifierInput!): GovernmentIdentifierResult! + + """ + Create a government identifier for a legal entity. + """ + createGovernmentIdentifierForLegalEntity(createGovernmentIdentifierForLegalEntityInput: CreateGovernmentIdentifierForLegalEntityInput!): GovernmentIdentifierResult! @deprecated(reason: "Deprecated by createGovernmentIdentifier") + + """ + Create new legal entity and assign it to an organization. + """ + createLegalEntity(createLegalEntityInput: CreateLegalEntityInput!): LegalEntityResult! + + """ + Create new individual legal entity for a shop as part of the signup flow. + """ + createLegalEntityOnSignup(createLegalEntityOnSignupInput: CreateLegalEntityOnSignupInput!): LegalEntityResult! + + """ + Create a tax filing preference for a legal entity + """ + createLegalEntityTaxFilingPreference(governmentIdentifierId: GovernmentIdentifierID!, legalEntityId: LegalEntityID!): CreateLegalEntityTaxFilingPreferenceResult! + + """ + Create an Organization. + """ + createOrganization(organizationCreateInput: OrganizationCreateInput!): OrganizationResult! + + """ + Create an organization domain. + """ + createOrganizationDomain(createOrganizationDomainInput: CreateOrganizationDomainInput!): CreateOrganizationDomainResult! + + """ + Create one or more organization users. + """ + createOrganizationUsers(createOrganizationUsersInput: CreateOrganizationUsersInput!): CreateOrganizationUsersResult! + + """ + Create a Partner Organization. + """ + createPartnerOrganization(input: PartnerOrganizationCreateInput!): OrganizationResult! + + """ + Creates Partner Organization User + """ + createPartnerOrganizationUser(createPartnerOrganizationUserInput: CreatePartnerOrganizationUserInput!): CreatePartnerOrganizationUserResult! + + """ + Create a transfer record for a partner shop. + """ + createPartnerShopTransfer(input: CreatePartnerShopTransferInput!): CreatePartnerShopTransferResult + + """ + Create a person. + """ + createPerson(createPersonInput: CreatePersonInput!): PersonResult! + + """ + Create a person alias. + """ + createPersonAlias(createPersonAliasInput: CreatePersonAliasInput!): PersonAliasResult! + + """ + Create a principal. + """ + createPrincipal(createPrincipalInput: CreatePrincipalInput!): CreatePrincipalResult! + + """ + Create a property transfer request. + """ + createPropertyTransferRequest(input: CreatePropertyTransferRequestInput!): CreatePropertyTransferRequestResult + + """ + Creates a client development shop and the associated reseller relationship. + """ + createResellerDevelopmentShop( + """ + The annual resold price (required for Shopify Plus). + """ + annualResoldPrice: Decimal + + """ + The annual revenue (required for Shopify Plus). + """ + annualRevenue: Decimal + + """ + The email of the client to create the shop for. + """ + clientEmail: String! + + """ + The client's purchase order number. + """ + clientPurchaseOrderNumber: String + + """ + The shop's intended country code. + """ + countryCode: String! + + """ + The legal business name (required for Shopify Plus). + """ + legalBusinessName: String + + """ + The plan to use for the shop once transferred to the client. + """ + planName: String! + + """ + The number of POS Pro locations to create for the shop. + """ + posProLocationCount: Int! + + """ + The reseller's purchase order number. + """ + resellerPurchaseOrderNumber: String + + """ + The name of the shop. + """ + shopName: String! + + """ + The plan to use for the shop once transferred to the client. + """ + supportedPlanName: ResellerRelationshipSupportedPlans + + """ + The term length in months. (required for Shopify Plus). + """ + termLengthInMonths: Int + + """ + Whether to transfer the shop to the client immediately after creation. + """ + transferToClientImmediately: Boolean! + ): CreateClientDevelopmentShopResult! + + """ + Create a Sandbox Organization. + """ + createSandboxOrganization(sandboxOrganizationCreateInput: OrganizationCreateInput!): OrganizationResult! + + """ + Create a store. + """ + createStore( + """ + The full store creation payload (shop signup input). + """ + storeCreatePayload: StoreCreatePayloadInput + ): CreateStoreResult! + + """ + Create a store addition request. + """ + createStoreAdditionRequest(input: CreateStoreAdditionRequestInput!): CreateStoreAdditionRequestResult + + """ + Create a vibe transfer request. + """ + createVibeTransferRequest(input: CreateVibeTransferRequestInput!): CreateVibeTransferRequestResult + + """ + Deletes a CLI token service account organization user. + """ + deleteCliTokenOrganizationUser(deleteCliTokenOrganizationUserInput: DeleteCliTokenOrganizationUserInput!): DeleteCliTokenOrganizationUserResult! + + """ + Delete a government identifier. + """ + deleteGovernmentIdentifiers(deleteGovernmentIdentifiersInput: DeleteGovernmentIdentifiersInput!): DeleteGovernmentIdentifiersResult! + + """ + Delete an organization domain. + """ + deleteOrganizationDomain(deleteOrganizationDomainInput: DeleteOrganizationDomainInput!): DeleteOrganizationDomainResult! + + """ + Bulk deletes Organization Users + """ + deleteOrganizationUsers(organizationUserIds: [OrganizationUserID!]!): DeleteOrganizationUsersResult! + + """ + Deletes Partner Organization User + """ + deletePartnerOrganizationUser(deletePartnerOrganizationUserInput: DeletePartnerOrganizationUserInput!): DeletePartnerOrganizationUserResult! + + """ + Delete people. + """ + deletePeople( + """ + The IDs of the people to delete. + """ + ids: [PersonID!]! + ): DeletePeopleResult! + + """ + Delete a person alias. + """ + deletePersonAlias(deletePersonAliasInput: DeletePersonAliasInput!): PersonAliasResult! + + """ + Delete principals. + """ + deletePrincipals( + """ + The IDs of the principals to delete. + """ + ids: [PrincipalID!]! + ): DeletePrincipalsResult! + + """ + Delete role for an organization. + """ + deleteRole(deleteRoleInput: DeleteRoleInput!): DeleteRoleResult! + + """ + Delete SAML integration. + """ + deleteSamlIntegration: DeleteSamlIntegrationResult! + + """ + Delete SCIM token for an organization. + """ + deleteScimToken: DeleteScimTokenResult! + + """ + Delete supporting documents. + """ + deleteSupportingDocuments( + """ + The IDs of the supporting documents to delete. + """ + ids: [SupportingDocumentID!]! + ): DeleteSupportingDocumentsResult! + + """ + End collaborator access for a shop. + """ + endCollaboration(endCollaborationInput: EndCollaborationInput!): EndCollaborationResult! + + """ + Enforce SAML organization domains onto organization. + """ + enforceSamlOrganizationDomains(enforceSamlOrganizationDomainsInput: EnforceSamlOrganizationDomainsInput!): EnforceSamlOrganizationDomainsResult! + + """ + Expire a collaborator relationship. + """ + expireCollaboratorRelationship(organizationId: OrganizationID!, shopifyShopId: PropertyPublicID!): ExpireCollaboratorRelationshipResult! + + """ + Export a resource. + """ + exportResource(exportResourceInput: ExportResourceInput!): ExportResourceResult + + """ + Finalize a CSV file upload for importing organization users. + """ + finalizeOrganizationUserImportCsvUpload(finalizeOrganizationUserImportCsvUploadInput: FinalizeOrganizationUserImportCsvUploadInput!): FinalizeOrganizationUserImportCsvUploadResult! + + """ + Finalize an upload for a supporting document. + """ + finalizeSupportingDocumentUpload(finalizeSupportingDocumentUploadInput: FinalizeSupportingDocumentUploadInput!): FinalizeSupportingDocumentResult! + + """ + Generate domain verification code for an organization. + """ + generateDomainVerificationCode(generateDomainVerificationCodeInput: GenerateDomainVerificationCodeInput!): GenerateDomainVerificationCodeResult! + + """ + Generate SCIM token for an organization. + """ + generateScimToken: GenerateScimTokenResult! + + """ + Create group on an organization. + """ + groupCreate(groupCreateInput: GroupCreateInput!): GroupCreateResult + + """ + Updates a group on an organization. + """ + groupUpdate(groupUpdateInput: GroupUpdateInput!): GroupUpdateResult + + """ + Delete groups on an organization. + """ + groupsDelete(groupsDeleteInput: GroupsDeleteInput!): GroupsDeleteResult! + + """ + Rollback an organization from using organization billing + """ + migrateFromOrganizationBilling(organizationId: OrganizationID): OrganizationResult! + + """ + Migrate an organization to use organization billing + """ + migrateToOrganizationBilling(organizationId: OrganizationID): OrganizationResult! + + """ + Update the status of a Partner Organization. + """ + organizationUpdateStatus(organizationUpdateStatusInput: OrganizationUpdateStatusInput!): OrganizationResult! + + """ + Deletes organization user. + """ + organizationUserDelete(input: OrganizationUserDeleteInput!): OrganizationUserDeleteResult! + + """ + Provision access to a shop for the requester + """ + organizationUserProvisionShopAccess(organizationUserProvisionShopAccessInput: OrganizationUserProvisionShopAccessInput!): OrganizationUserProvisionShopAccessResult! + + """ + Updates an organization user. + """ + organizationUserUpdate(organizationUserUpdateInput: OrganizationUserUpdateInput!): OrganizationUserUpdateResult! + + """ + Bulk assign a group to organization users. + """ + organizationUsersBulkGroupAssign(organizationUsersBulkGroupAssignInput: OrganizationUsersBulkGroupAssignInput!): OrganizationUserIdsResult! + + """ + Bulk assign roles to organization users. + """ + organizationUsersBulkRoleAssign(organizationUsersBulkRoleAssignInput: OrganizationUsersBulkRoleAssignInput!): OrganizationUserIdsResult! + + """ + Create organization users. + """ + organizationUsersCreate(organizationUsersCreateInput: OrganizationUsersCreateInput!): OrganizationUsersCreateResult! + + """ + Deletes an array of organization users. + """ + organizationUsersDelete(organizationUserIdsInput: OrganizationUserIdsInput!): OrganizationUsersDeleteResult! + + """ + Suspends or reactivates an array of organization users. + """ + organizationUsersUpdateStatus(organizationUsersUpdateStatusInput: OrganizationUsersUpdateStatusInput!): OrganizationUserIdsResult! + + """ + Enable RBAC for a Partner organization. Call this after inspecting migrated role data from partnersMigrationMigrateUsers. + """ + partnersMigrationEnableRbac(input: PartnersMigrationEnableRbacInput!): AccessPartnersMigrationEnableRbacResult + + """ + Migrate Partners users to Business Platform RBAC. + """ + partnersMigrationMigrateUsers(input: PartnersMigrationMigrateUsersInput!): AccessPartnersMigrationMigrateUsersResult + + """ + Removes store access from a legacy plus role. + """ + plusRoleRemoveStoreAccess(plusRoleRemoveStoreAccessInput: PlusRoleRemoveStoreAccessInput!): UpdateRoleResult! + + """ + Provision collaborator access for a shop. + """ + provisionCollaboratorAccess(provisionCollaboratorAccessInput: ProvisionCollaboratorAccessInput!): ProvisionCollaboratorAccessResult! + + """ + Updates an organization user, this mutation is only designed to be used by shopify proxy for POS App requests. + """ + proxyOrganizationUserUpdate(input: ProxyOrganizationUserUpdateInput!): ProxyOrganizationUserUpdateResult! + + """ + Creates a retail only organization user, this mutation is only designed to be used by shopify proxy for POS App requests. + """ + proxyRetailOnlyOrganizationUserCreate(input: ProxyRetailOnlyOrganizationUserCreateInput!): ProxyRetailOnlyOrganizationUserCreateResult! + + """ + Updates a retail only organization user, this mutation is only designed to be used by shopify proxy for POS App requests. + """ + proxyRetailOnlyOrganizationUserUpdate(input: ProxyRetailOnlyOrganizationUserUpdateInput!): ProxyRetailOnlyOrganizationUserUpdateResult! + + """ + Deletes a retail only user from the organization's shop, this mutation is only + designed to be used by shopify proxy for POS App requests. + """ + proxyRetailOnlyShopUserDelete(input: ProxyRetailOnlyShopUserDeleteInput!): ProxyRetailOnlyShopUserDeleteResult! + + """ + Reactivate suspended shop property access state. + """ + reactivateShopAccess(organizationUserId: OrganizationUserID!, shopifyShopId: PropertyPublicID!): UpdateOrganizationUserResult! + + """ + Remove role of an organization user. + """ + removeOrganizationUserRole(removeOrganizationUserRoleInput: RemoveOrganizationUserRoleInput!): RemoveOrganizationUserRoleResult! + + """ + Remove shop property access. + """ + removeShopAccess(organizationUserId: OrganizationUserID!, shopifyShopId: PropertyPublicID!): RemoveShopAccessResult! + + """ + Remove shop from an explicit non-plus organization. + """ + removeShopFromNonPlusOrganization(input: RemoveShopFromNonPlusOrganizationInput!): RemoveShopFromNonPlusOrganizationResult! + + """ + Request collaborator access for a shop. + """ + requestCollaboration(requestCollaborationInput: RequestCollaborationInput!): RequestCollaborationResult! + + """ + Re-request access for an expired collaborator relationship. + """ + rerequestCollaboratorRelationship(shopifyShopId: PropertyPublicID!): RerequestCollaboratorRelationshipResult! + + """ + Resends the invite email for an invited organization user. + """ + resendInviteEmail(organizationUserId: OrganizationUserID!): OrganizationUserIdResult! + + """ + Reset the TFA enforcement setting for an organization user. + """ + resetOrganizationUserTfa(resetOrganizationUserTfaInput: ResetOrganizationUserTfaInput!): ResetOrganizationUserTfaResult! + + """ + Re-syncs user data after a Partner hand-off ownership transfer + """ + resyncUserDataAfterPartnerHandoff(shopifyShopId: PropertyPublicID!, sourceOrganizationId: OrganizationID): ResyncUserDataAfterPartnerHandoffResult! + + """ + Update a retail only organization user. + """ + retailOnlyOrganizationUserUpdate(input: RetailOnlyOrganizationUserUpdateInput!): RetailOnlyOrganizationUserUpdateResult! + + """ + Create a retail only organization users. + """ + retailOnlyOrganizationUsersCreate(input: RetailOnlyOrganizationUsersCreateInput!): RetailOnlyOrganizationUsersCreateResult! + + """ + Set the billing_account_id and initial_billing_account_id for a shop in an organization. + """ + setOrganizationShopBillingAccountId(setOrganizationShopBillingAccountIdInput: SetOrganizationShopBillingAccountIdInput!): SetOrganizationShopBillingAccountIdResult! + + """ + Set the test drive status for a shop + """ + setShopTestDriveStatus(handle: String!, shopId: PropertyPublicID!, status: TestDriveShopStatus!): SetShopTestDriveStatusResult + + """ + Setting up SAML integration. + """ + setupSamlIntegration(setupSamlIntegrationInput: SetupSamlIntegrationInput!): SetupSamlIntegrationResult! + + """ + Update shop identification settings. + """ + shopIdentificationSettingsUpdate(code: String, icon: String, internalName: String, shopifyShopId: PropertyPublicID!): ShopIdentificationSettingsUpdateResult + + """ + Stage a CSV file upload for importing organization users. + """ + stageOrganizationUserImportCsvUpload(stageOrganizationUserImportCsvUploadInput: StageOrganizationUserImportCsvUploadInput!): StageOrganizationUserImportCsvUploadResult! + + """ + Stage an upload for a supporting document. + """ + stageSupportingDocumentUpload(stageSupportingDocumentUploadInput: StageSupportingDocumentUploadInput!): StageSupportingDocumentUploadResult! + + """ + Suspend shop property access state. + """ + suspendShopAccess(organizationUserId: OrganizationUserID!, shopifyShopId: PropertyPublicID!): UpdateOrganizationUserResult! + + """ + Sync the test drive status for a shop + """ + syncShopTestDriveStatus(handle: String!, shopId: PropertyPublicID!): SyncShopTestDriveStatusResult + + """ + Activate or deactivate a test drive feature for all shops in an organization + """ + toggleTestDriveForAllShops(input: ToggleTestDriveForAllShopsInput!): ToggleTestDriveForAllShopsResult + + """ + Transfer ownership of an Organization to another user + """ + transferOrganizationOwnership(input: OrganizationTransferOwnershipInput!): OrganizationTransferOwnershipResult! + + """ + Unarchive a legal entity. + """ + unarchiveLegalEntity(id: LegalEntityID!): LegalEntityResult! + + """ + Update a government identifier. + """ + updateGovernmentIdentifier(updateGovernmentIdentifierInput: UpdateGovernmentIdentifierInput!): GovernmentIdentifierResult! + + """ + Updates legacy partner user permissions + """ + updateLegacyPartnerUserPermissions(updateLegacyPartnerUserPermissionsInput: UpdateLegacyPartnerUserPermissionsInput!): UpdateLegacyPartnerUserPermissionsResult! + + """ + Update attributes of a legal entity. + """ + updateLegalEntity(updateLegalEntityInput: UpdateLegalEntityInput!): LegalEntityResult! + + """ + Update the organization name. + """ + updateOrganizationName(name: String!): OrganizationResult! + + """ + Update the TFA enforcement setting for an organization. + """ + updateOrganizationTfaEnforcement(updateOrganizationTfaEnforcementInput: UpdateOrganizationTfaEnforcementInput!): UpdateOrganizationTfaEnforcementResult! + + """ + Update an Organization User. + """ + updateOrganizationUser(updateOrganizationUserInput: UpdateOrganizationUserInput!): UpdateOrganizationUserResult! + + """ + Bulk updates Organization Users access state. + """ + updateOrganizationUserAccessState(active: Boolean!, organizationUserIds: [OrganizationUserID!]!): UpdateOrganizationUserAccessResult! + + """ + Update role of an organization user. + """ + updateOrganizationUserRole(updateOrganizationUserRoleInput: UpdateOrganizationUserRoleInput!): UpdateOrganizationUserRoleResult! + + """ + Update a Partner Organization. + """ + updatePartnerOrganization(updatePartnerOrganizationInput: UpdatePartnerOrganizationInput!): OrganizationResult! + + """ + Update a person. + """ + updatePerson(updatePersonInput: UpdatePersonInput!): PersonResult! + + """ + Update a person alias. + """ + updatePersonAlias(updatePersonAliasInput: UpdatePersonAliasInput!): PersonAliasResult! + + """ + Update a principal. + """ + updatePrincipal(updatePrincipalInput: UpdatePrincipalInput!): UpdatePrincipalResult! + + """ + Updates a reseller relationship. + """ + updateResellerRelationship( + """ + The input for updating the reseller relationship. + """ + resellerRelationshipUpdateInput: UpdateResellerRelationshipInput! + ): UpdateResellerRelationshipResult! + + """ + Update role for an organization. + """ + updateRole(updateRoleInput: UpdateRoleInput!): UpdateRoleResult! + + """ + Update the SAML certificate for an organization. + """ + updateSamlCertificate: UpdateSamlCertificateResult! + + """ + Update an Organization User's single shop access profile. + """ + updateShopAccessProfile(updateShopAccessProfileInput: UpdateShopAccessProfileInput!): UpdateShopAccessProfileResult! + + """ + Create or update a legal entity with all related entities in a single atomic operation. + """ + upsertLegalEntity(input: UpsertLegalEntityInput!): LegalEntityResult! + + """ + Update or create a test drive business feature setting + """ + upsertTestDriveBusinessFeatureSetting(input: UpsertTestDriveBusinessFeatureSettingInput!): UpsertTestDriveBusinessFeatureSettingResult +} + +type NameVariant { + firstName: String + fullName: String + lastName: String + middleName: String + + """ + The name in this variant + """ + name: String + prefix: String + suffix: String + + """ + The type of name variant (e.g., 'kanji', 'kana') + """ + variantType: String! +} + +input NameVariantInput { + """ + The first name in this variant. + """ + firstName: String + + """ + The last name in this variant. + """ + lastName: String + + """ + The middle name in this variant. + """ + middleName: String + + """ + The prefix in this variant. + """ + prefix: String + + """ + The suffix in this variant. + """ + suffix: String + + """ + The type of name variant + """ + variantType: AlphabetType! +} + +type NavigationSettings { + navigationItems: [NavigationSettingsItem!]! +} + +type NavigationSettingsItem { + children: [NavigationSettingsItem!]! + id: String! + title: String! + url: String! +} + +interface Node { + """ + The ID for an object. + """ + id: GlobalID! + queryComplexity: Int! + queryDepth: Int! +} + +type Offering { + """ + Name of the offering + """ + handle: String! + + """ + Handle of the offering + """ + name: String! +} + +""" +Operators for filter queries. +""" +enum Operator { + """ + Between operator. + """ + BETWEEN + + """ + Equals operator. + """ + EQUALS + + """ + In operator. Accepts a comma-separated string of values (e.g. + "value1,value2,value3"). Not supported for all filter fields. + """ + IN +} + +type Organization implements Node { + """ + Returns a role if it exists. + """ + accessRole(id: AccessRoleID!): AccessRole + + """ + Returns a list of roles in the organization. + """ + accessRoles( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + filters: [RoleFilterInput!] + + """ + Returns the first _n_ elements from the list. + """ + first: Int + includeNonAssignableRoles: Boolean = false + + """ + Returns the last _n_ elements from the list. + """ + last: Int + search: String + sort: RoleSort + ): AccessRoleConnection! + + """ + Returns a single shop that the user has access to. + """ + accessibleShop( + """ + The ID of the shop. + """ + id: ShopifyShopID! + ): Shop + + """ + Returns a list of shops that the user has access to. + """ + accessibleShops( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + filters: [ShopFilterInput!] + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Search query for shops. + """ + search: String + + """ + Sort order for shops. + """ + sort: ShopSort + ): ShopConnection + + """ + Returns an action audit if it exists. + """ + actionAudit(id: ActionAuditID!): AccessActionAudit + + """ + Action audits for the organization. + """ + actionAudits( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + filters: [ActionAuditFilterInput!] + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): AccessActionAuditConnection! + + """ + Returns a list of roles in the organization that could be assigned by requesting user. + """ + assignableAccessRoles( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + assigneeType: AccessRoleAssignmentAssignee + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + filters: [RoleFilterInput!] + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + search: String + ): AccessRoleConnection! + + """ + Returns all shops with active collaborator relationships that can be assigned to roles. + """ + assignableCollaboratorShops( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + search: String + ): ShopConnection! + + """ + Returns the list of assignable organization permissions for the organization. + """ + assignableOrganizationPermissions: [String!] + + """ + Returns the list of assignable partner permissions for the organization. + """ + assignablePartnerPermissions: [String!] + + """ + Returns the list of assignable point of sale permissions for the organization. + """ + assignablePointOfSalePermissions: AssignablePointOfSalePermissions + + """ + Returns the list of assignable shop permissions for the organization. + """ + assignableShopPermissions: [String!] + + """ + Returns a list of shops that can be managed by the requesting user. + """ + assignableShops( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + assigneeType: AccessRoleAssignmentAssignee! + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + roleType: AccessRoleAssignmentRole = STORE + search: String + shopifyShopIds: String + ): ShopConnection! + + """ + Returns a list of payment method options the organization can onboard + """ + availablePaymentMethods: [PaymentMethodOption!]! + + """ + Bulk data for the organization. + """ + bulkData: BulkData! + + """ + Returns the collaborator relationship for the organization and the given shop. + """ + collaboratorRelationship(shopifyShopId: ShopifyShopID!): CollaboratorRelationship + + """ + Organizations on the other side of client transfers and collaborator relationships with this organization. + """ + counterpartOrganizations( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): OrganizationReferenceConnection! + + """ + Organization creation date. + """ + createdAt: ISO8601DateTime! + + """ + Returns a single CSV import run by ID. + """ + csvImport( + """ + The ID of the import run. + """ + id: BusinessUsersImportID! + ): BusinessUsersImportRun + + """ + Returns a list of CSV import runs for the organization. + """ + csvImports( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Filter import runs by status. + """ + status: BusinessUsersImportStatus + ): BusinessUsersImportRunConnection! + + """ + Returns the requester. + """ + currentUser: OrganizationUserInterface + + """ + Scopes for the requester's ability to manage role assignments across stores. + """ + currentUserScopesForManagingRoleAssignments: ScopesForManagingRoleAssignments! + + """ + Returns a list of domains in the organization. + """ + domains( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): OrganizationDomainConnection + + """ + Returns true/false values indicating if each flag is enabled for the organization. + """ + enabledFlags( + """ + The hashed handles of the flags to check. + """ + flagHandles: [String!]! + ): [Boolean!]! + + """ + Returns a list of people that can be associated to legal entities in the organization. + """ + entityPeople( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + filters: [PersonFilterInput!] + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + search: String + ): PersonConnection + + """ + Feature set for the organization. + """ + featureSet: [OrganizationFeature!]! + + """ + Checks if a government identifier already exists in the organization. + """ + governmentIdentifierDuplicationCheck( + """ + Optionally exclude a specific entity from the check. + """ + excludeIdentifiableId: SupportedEntityId + + """ + The government identifier type handle (e.g., us_ssn, ca_passport). + """ + identifierType: String! + + """ + The raw government identifier value to check. + """ + value: String! + ): [GovernmentIdentifierDuplicationCheck!] + + """ + Returns a group if it exists. + """ + group(id: GroupID!): Group + + """ + Returns a list of groups in the organization. + """ + groups( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + filters: [UserGroupFilterInput!] + + """ + Returns the first _n_ elements from the list. + """ + first: Int + includeNonAssignableGroups: Boolean = true + + """ + Returns the last _n_ elements from the list. + """ + last: Int + search: String + sort: UserGroupSort + type: GroupType + ): GroupConnection! + + """ + Cached status of a feature flag for the organization. + """ + hasFeatureFlag( + """ + The handle for the feature flag. + """ + handle: String! + ): Boolean! + + """ + Returns true if the organization has users that are not TFA enforced. + """ + hasTfaUnenforcedUsers: Boolean + + """ + The ID for an object. + """ + id: GlobalID! + + """ + Returns a list of applications installed on organization shops. + """ + installedShopApps( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Search query for shop apps. + """ + search: String + ): ShopAppConnection + + """ + Returns true if the organization has been auto migrated to RBAC. + """ + isAutoMigratedToRbac: Boolean! + + """ + Whether the organization is a partner organization. + """ + isPartner: Boolean! + + """ + Whether the organization is a plus organization. + """ + isPlus: Boolean! + + """ + Whether the organization is a reseller partner organization. + """ + isResellerPartner: Boolean! + + """ + Returns a list of the organization's legal entities. + """ + legalEntities( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + excludeUnspecifiedEntities: Boolean = false + filters: [LegalEntityFilterInput!] + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + search: String + sort: LegalEntitySortField + ): LegalEntityConnection + + """ + Returns a Legal Entity by the specified ID. + """ + legalEntity(id: LegalEntityID!): LegalEntity + + """ + Returns the reseller relationship for a shop owned by this organization. + """ + merchantResellerRelationship(shopifyShopId: ShopifyShopID!): ResellerRelationship + + """ + Organization name. + """ + name: String! + + """ + Returns the navigation settings for the organization user. + """ + navigationSettings( + """ + When true, returns navigation settings scoped to organization context only. + """ + organizationContextOnly: Boolean = false + shopifyUserId: String + ): NavigationSettings + + """ + The organization owner. + """ + owner: OrganizationUserInterface + + """ + Returns a single pending store addition request. + """ + pendingStoreAdditionRequest(id: StoreAdditionRequestID!): StoreAdditionRequest + + """ + Returns a list of pending store addition requests. + """ + pendingStoreAdditionRequests( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + filters: [ShopPropertyFilterInput!] + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + search: String + sort: StoreAdditionRequestSort + ): StoreAdditionRequestConnection + + """ + Returns a Person by the specified ID. + """ + person(id: PersonID!): Person + + """ + Organization primary handle + """ + primaryHandle: String + + """ + Returns all the organization's properties. + """ + properties( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + filters: [ShopPropertyFilterInput!] + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Offering handles of the requested properties. Leave blank to get all properties. + """ + offeringHandles: [String!] + + """ + Search query for shop properties. + """ + search: String + sort: ShopPropertySort + ): PropertyInterfaceConnection + + """ + Returns a single property. + """ + property(externalId: PropertyPublicID!, offeringHandle: String!): PropertyInterface + queryComplexity: Int! + queryDepth: Int! + + """ + Returns the reseller for the organization. + """ + reseller: Reseller + + """ + Returns the reseller relationship between the organization and the specified shop. + """ + resellerRelationship(shopifyShopId: ShopifyShopID!): ResellerRelationship + + """ + Returns all reseller relationships for the organization. + """ + resellerRelationships( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): ResellerRelationshipWithShopConnection! + + """ + Returns shops for the organization that have an associated reseller relationship. + """ + resellerShops( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): ShopConnection! + + """ + Returns the Retail specific data for the organization. + """ + retailData: OrganizationRetailData + + """ + Returns a role if it exists. + """ + role(id: RoleID!): Role + + """ + Returns a list of Roles in alphabetical order. + """ + roles( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + search: String + sort: OrganizationRoleSort + ): RoleConnection + + """ + SAML integration settings and metadata. + """ + samlConfiguration: SamlConfiguration + + """ + Returns SAML Single Sign-on url for the organization. + """ + samlSsoUrl: String + + """ + Returns SCIM token for the organization. + """ + scimToken: String + + """ + Returns number of active shops in the organization. + """ + shopCount: Int + + """ + Returns a shop for retail/POS user management purposes. + """ + shopForRetailManagement(shopifyShopId: ShopifyShopID!): RetailShop + shopIdentificationSettingsDuplicationCheck(internalStoreCode: String, internalStoreName: String): [ShopIdentificationSettingsDuplicationCheck!] + + """ + Whether the organization has reached its shop limit. + """ + shopLimitReached: Boolean! + + """ + Returns a single pending app dev store addition request. + """ + storeCreation(shopDomain: String!): StoreCreation + + """ + Organization tags + """ + tags: [Tag!] @deprecated(reason: "Use isPartner/isPlus or similar fields.") + + """ + Returns a test drive feature by its handle if it exists. + """ + testDriveFeature(handle: String!): TestDriveFeature + + """ + Returns a list of test drive features for the organization. + """ + testDriveFeatures: [TestDriveFeature!] + + """ + Returns the state of TFA enforcement for the organization. + """ + tfaEnforcement: TfaEnforcement! + timezone: String + + """ + Returns an organization user if they exist. + """ + userById(id: OrganizationUserID!): OrganizationUserInterface + + """ + Returns an organization user located by their identity uuid if they exist. + """ + userByIdentityUuid(identityUuid: String!): OrganizationUserInterface + + """ + Returns an organization user located by their shopify user id if they exist (example id: gid://shopify/StaffMember/54). + """ + userByShopifyUserId(shopifyUserId: String!): OrganizationUserInterface + + """ + User limits for the organization. + """ + userLimits: UserLimits! + + """ + List of all users that can be managed within the organization. + """ + users( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + filters: [OrganizationUserFilterInput!] + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + search: String + sort: OrganizationUserSort + ): OrganizationUserInterfaceConnection! + + """ + Returns the organization user(s) located by their email if they exist. + """ + usersByEmail(emails: [String!]!): [OrganizationUserInterface!] +} + +""" +The connection type for Organization. +""" +type OrganizationConnection { + """ + A list of edges. + """ + edges: [OrganizationEdge!]! + + """ + A list of nodes. + """ + nodes: [Organization!]! + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! +} + +input OrganizationCreateInput { + """ + Unique key associated with the request. + """ + idempotencyKey: String! + + """ + Organization name + """ + name: String! + + """ + Identity UUID of the organization owner. + """ + ownerUuid: String! +} + +type OrganizationDomain implements Node { + domainName: String! + + """ + The ID for an object. + """ + id: GlobalID! + queryComplexity: Int! + queryDepth: Int! + status: OrganizationDomainStatus! + verificationCode: String + verified: Boolean! +} + +""" +The connection type for OrganizationDomain. +""" +type OrganizationDomainConnection { + """ + A list of edges. + """ + edges: [OrganizationDomainEdge!]! + + """ + A list of nodes. + """ + nodes: [OrganizationDomain!]! + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! +} + +""" +An edge in a connection. +""" +type OrganizationDomainEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: OrganizationDomain! +} + +""" +The ID for a OrganizationDomain. +""" +scalar OrganizationDomainID + +enum OrganizationDomainStatus { + """ + The domain has been declined. + """ + DECLINED + + """ + The domain is currently being enforced. + """ + ENFORCED + + """ + The domain is in the process of being enforced. + """ + ENFORCING + + """ + The domain has been verified and is manually enforced. + """ + MANUALLY_ENFORCED + + """ + The domain is not being enforced. + """ + NOT_ENFORCED + + """ + The domain is in the process of having enforcement revoked. + """ + UNENFORCING + + """ + The domain has not been verified. + """ + UNVERIFIED + + """ + The domain has conflicts with other organization(s). + """ + UNVERIFIED_CONFLICTED +} + +""" +An edge in a connection. +""" +type OrganizationEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: Organization! +} + +enum OrganizationFeature { + """ + All collaborator stores role assignment is enabled for the organization. + """ + ALL_COLLABORATOR_STORES_ROLE_ASSIGNMENT + + """ + All owned stores role assignment is enabled for the organization. + """ + ALL_OWNED_STORES_ROLE_ASSIGNMENT + + """ + Analytics overview is enabled for the organization. + """ + ANALYTICS_OVERVIEW + + """ + App development is enabled for the organization. + """ + APP_DEVELOPMENT + + """ + Central legal entities experience is enabled for the organization. + """ + CENTRAL_LEGAL_ENTITIES + + """ + Client transfer store management is enabled for the organization. + """ + CLIENT_TRANSFER_STORE_MANAGEMENT + + """ + Collaboration with shops in other organizations is enabled for the organization. + """ + COLLABORATORS + + """ + Direct access to Organization Settings is enabled for the organization. + """ + DIRECT_ACCESS + + """ + Domain verification is enabled for the organization. + """ + DOMAIN_VERIFICATION + + """ + Group management is enabled for the organization. + """ + GROUPS + + """ + MFA management is enabled for the organization. + """ + MFA_MANAGEMENT + + """ + Organization billing is enabled for the organization. + """ + ORGANIZATION_BILLING + + """ + Organization settings are enabled for the organization. + """ + ORGANIZATION_SETTINGS + + """ + Partner functionality is enabled for the organization. + """ + PARTNER + + """ + Role management is enabled for the organization. + """ + ROLES + + """ + SAML is enabled for the organization. + """ + SAML + + """ + SCIM is enabled for the organization. + """ + SCIM + + """ + Store builder affiliate store creation flow is enabled for the organization. + Suppresses claim store invitation emails for affiliate-created store transfers. + """ + STORE_BUILDER_AFFILIATE_STORE_CREATION + + """ + Store creation is enabled for the organization. + """ + STORE_CREATION + + """ + Store removal is enabled for the organization. + """ + STORE_REMOVAL + + """ + Stores can be transferred between organizations. + """ + STORE_TRANSFER + + """ + Strict organization data boundary is enforced. Store-only users cannot access organization-level data like legal entities. + """ + STRICT_ORG_DATA_BOUNDARY + + """ + Test Drive is enabled for the organization. + """ + TEST_DRIVE + + """ + Organization-level user seat limits are not enforced for this organization. + """ + UNLIMITED_ORG_USERS +} + +""" +The ID for a Organization. +""" +scalar OrganizationID + +""" +A lightweight reference to an organization. +""" +type OrganizationReference implements Node { + """ + The ID for an object. + """ + id: GlobalID! + + """ + The organization name. + """ + name: String! + queryComplexity: Int! + queryDepth: Int! +} + +""" +The connection type for OrganizationReference. +""" +type OrganizationReferenceConnection { + """ + A list of edges. + """ + edges: [OrganizationReferenceEdge!]! + + """ + A list of nodes. + """ + nodes: [OrganizationReference!]! + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! +} + +""" +An edge in a connection. +""" +type OrganizationReferenceEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: OrganizationReference! +} + +type OrganizationResult { + """ + Created or mutated organization. + """ + organization: Organization + + """ + The collection of errors. + """ + userErrors: [UserError!] +} + +type OrganizationRetailData { + hasPosProSubscription: Boolean! +} + +""" +Sort options for roles queries. +""" +enum OrganizationRoleSort { + """ + Sort by name ascending. + """ + NAME_ASC + + """ + Sort by name descending. + """ + NAME_DESC + + """ + Sort by number of users ascending. + """ + USER_COUNT_ASC + + """ + Sort by number of users descending. + """ + USER_COUNT_DESC +} + +""" +A summary of the permissions for an organization role. +""" +type OrganizationRoleSummary { + permissions: [AccessRolePermission!] +} + +enum OrganizationStatus { + """ + The organization is active. + """ + ACTIVE + + """ + The organization is locked. + """ + LOCKED +} + +type OrganizationTransferOwnershipError { + """ + The error code. + """ + code: OrganizationTransferOwnershipErrorCode! + + """ + Path to the input field which caused the error + """ + field: [String!]! + + """ + The error message + """ + message: String! +} + +enum OrganizationTransferOwnershipErrorCode { + """ + The organization has a Canadian contract. The ownership transfer is not allowed. + """ + CANADIAN_CONTRACT + + """ + The user is not active. + """ + INACTIVE + + """ + The user is invited. They need to accept their invite to transfer ownership. + """ + INVITED + + """ + Email doesn’t exist in this organization. + """ + NOT_FOUND + + """ + Email matches current organization owner. + """ + SAME_EMAIL + + """ + The user is suspended. They need to be reactived to transfer ownership. + """ + SUSPENDED +} + +input OrganizationTransferOwnershipInput { + """ + An email of new organization owner. + """ + newOwnerEmail: String! +} + +type OrganizationTransferOwnershipResult { + """ + New organization owner. + """ + newOrganizationOwner: OrganizationUser + + """ + Mutated organization. + """ + organization: Organization + + """ + The collection of errors. + """ + userErrors: [OrganizationTransferOwnershipError!] +} + +input OrganizationUpdateStatusInput { + organizationId: OrganizationID! + + """ + The new status for the organization. + """ + status: OrganizationStatus! +} + +type OrganizationUser implements Node & OrganizationUserInterface { + """ + Returns all the organization's properties the requesting user can grant access to. + """ + accessGrantableProperties( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + + """ + Offering handles of the requested properties. Leave blank to get all properties. + """ + offeringHandles: [String!] + + """ + Search shop's name or uri. Only returns shop properties. + """ + search: String + + """ + Sort shop's name or uri. + """ + sort: ShopPropertySort + + """ + Filter out properties the target organization user already has access to. + """ + targetOrganizationUserId: OrganizationUserID + + """ + Filter out properties the target role already has access to. + """ + targetRoleId: RoleID + ): PropertyInterfaceConnection + + """ + Returns a summary of the user's access permissions. + """ + accessSummary: AccessSummary + admin: Boolean! + administrativePermissions: [String!] + + """ + Returns all aggregated role assignments for the user. + """ + aggregatedRoleAssignments( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): AccessAggregatedRoleAssignmentConnection + + """ + Returns all groups that can be assigned to the user. + """ + assignableGroups( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): GroupConnection + + """ + Returns whether the requester can resend the invitation for the target. + """ + canResendInvite( + """ + The target invited organization user. + """ + targetOrganizationUserId: OrganizationUserID! + ): Boolean! + collaboratorAccess: CollaboratorAccessStatus + + """ + A summary of collaborator relationship access for the user. + """ + collaboratorRelationshipAccessSummary: CollaboratorRelationshipAccessSummary + createdAt: ISO8601DateTime! + createdBy: OrganizationUser + email: String! + generatePinForShop(length: Int, shopifyShopId: PropertyPublicID!): String + + """ + Returns a list of groups assigned to the user. + """ + groups( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): GroupConnection! + hasManageCollaboratorShopPermission: Boolean! + id: GlobalID! + isPinEasyToGuessForShop(pin: String!, shopifyShopId: PropertyPublicID!): EasyToGuessPinResponse + isShopifyEmployee: Boolean! + migratableToRbacByRequester: Boolean! + + """ + Organization-wide access conditions applied to the user. + """ + organizationAccessConditions: [String!]! + organizationPermissions: [String!]! + partnerPermissions: [String!] + privateData: PrivateData! + queryComplexity: Int! + queryDepth: Int! + rbacBannerCode: String + + """ + Returns a list of retail accesses for the user. + """ + retailAccesses( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): RetailAccessConnection! + role: Role + + """ + Returns a list of roles assigned to the user. + """ + roles( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): AccessRoleConnection! + samlEnforcementState: UserSamlEnforcementState! + shopAccessDetailsByShopifyShopId(shopifyShopId: PropertyPublicID!): UserShopAccessDetails + shopAccesses( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + search: String + shopifyShopIds: [PropertyPublicID!] + sort: ShopPropertySort + ): ShopAccessConnection + + """ + Returns a list of Roles in alphabetical order. + """ + shopsAssignedFromRole( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + roleId: AccessRoleID! + ): ShopConnection! + status: OrganizationUserStatus! + + """ + A summary of current store access for the user (legacy or RBAC). + """ + storeAccessSummary: StoreAccessSummary + tfaEnforced: Boolean! + useRbacAccess: Boolean! + verifiedOrganizationDomain: Boolean! + wasSubAdmin: Boolean! +} + +input OrganizationUserDeleteInput { + """ + The ID of the user to delete. + """ + organizationUserId: OrganizationUserID +} + +type OrganizationUserDeleteResult { + """ + Indicates whether the mutation was successful. + """ + success: Boolean + + """ + Whether the user was deleted immediately. If false, the user will be deleted asynchronously. + """ + synchronouslyDeleted: Boolean! + + """ + The collection of errors. + """ + userErrors: [UserError!] +} + +""" +Field options for filtering users queries. +""" +enum OrganizationUserFilterField { + """ + What parts of shopify the user has access to. + """ + ACCESS_TYPE + + """ + The administrative permissions the user has. + """ + ADMINISTRATIVE_PERMISSION + + """ + The date when this user was created. + """ + CREATED_AT + + """ + The ID of the user who created this user. + """ + CREATED_BY + + """ + The ID for a group the user belongs to. + """ + GROUP_ID + + """ + The IDs for groups the user belongs to. + """ + GROUP_IDS + + """ + Whether or not MFA is enabled on a user. + """ + MFA_ENABLED + + """ + The permissions the user has. + """ + PERMISSION + + """ + The ID for a role the user belongs to. + """ + ROLE_ID + + """ + The security type for the user. + """ + SECURITY_TYPE + + """ + The ID for a Shopify shop the user has access to. + """ + SHOPIFY_SHOP_ID + + """ + The account type of a user on a shop. + """ + SHOP_ACCOUNT_TYPE + + """ + The status of a user. + """ + STATUS + + """ + The type of the user to be filtered by. + """ + USER_TYPE + + """ + Indicates if the user has been migrated to RBAC-based access. + """ + USE_RBAC_ACCESS +} + +""" +Represents a single filter option for users queries. +""" +input OrganizationUserFilterInput { + field: OrganizationUserFilterField! + operator: Operator! + value: String! +} + +""" +The ID for a OrganizationUser. +""" +scalar OrganizationUserID + +type OrganizationUserIdResult { + """ + The organization user id of the target organization user. + """ + organizationUserId: OrganizationUserID + + """ + The collection of errors. + """ + userErrors: [UserError!] +} + +input OrganizationUserIdsInput { + """ + The IDs of the users. + """ + organizationUserIds: [OrganizationUserID!]! +} + +type OrganizationUserIdsResult { + organizationUserIds: [OrganizationUserID!] + + """ + Indicates whether the mutation was successful. + """ + success: Boolean + + """ + The collection of errors. + """ + userErrors: [UserError!] +} + +type OrganizationUserImportDirectUploadParams { + """ + Token used to refer to the uploaded file. + """ + directUploadToken: String! + + """ + Required HTTP headers for the upload request. + """ + headers: [OrganizationUserImportUploadHeader!]! + + """ + Endpoint to upload file directly to storage service. + """ + url: String! +} + +""" +Metadata for the CSV file the client will upload directly to storage. +""" +input OrganizationUserImportFileMetadataInput { + """ + File size in bytes. + """ + byteSize: Int! + + """ + A base64 MD5 digest of the file. + """ + checksum: String! + + """ + Content type of the file. + """ + contentType: CsvFileContent! + + """ + The name of the file. + """ + filename: String! +} + +""" +HTTP header for a signed upload request. +""" +type OrganizationUserImportUploadHeader { + """ + Header name. + """ + name: String! + + """ + Header value. + """ + value: String! +} + +interface OrganizationUserInterface { + """ + Returns a summary of the user's access permissions. + """ + accessSummary: AccessSummary + admin: Boolean! + administrativePermissions: [String!] + + """ + Returns all aggregated role assignments for the user. + """ + aggregatedRoleAssignments( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): AccessAggregatedRoleAssignmentConnection + + """ + Returns all groups that can be assigned to the user. + """ + assignableGroups( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): GroupConnection + collaboratorAccess: CollaboratorAccessStatus + + """ + A summary of collaborator relationship access for the user. + """ + collaboratorRelationshipAccessSummary: CollaboratorRelationshipAccessSummary + createdAt: ISO8601DateTime! + createdBy: OrganizationUser + email: String! + generatePinForShop(length: Int, shopifyShopId: PropertyPublicID!): String + + """ + Returns a list of groups assigned to the user. + """ + groups( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): GroupConnection! + id: GlobalID! + isPinEasyToGuessForShop(pin: String!, shopifyShopId: PropertyPublicID!): EasyToGuessPinResponse + migratableToRbacByRequester: Boolean! + + """ + Organization-wide access conditions applied to the user. + """ + organizationAccessConditions: [String!]! + organizationPermissions: [String!]! + partnerPermissions: [String!] + privateData: PrivateData! + queryComplexity: Int! + queryDepth: Int! + rbacBannerCode: String + + """ + Returns a list of retail accesses for the user. + """ + retailAccesses( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): RetailAccessConnection! + role: Role + + """ + Returns a list of roles assigned to the user. + """ + roles( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): AccessRoleConnection! + samlEnforcementState: UserSamlEnforcementState! + shopAccessDetailsByShopifyShopId(shopifyShopId: PropertyPublicID!): UserShopAccessDetails + + """ + Returns a list of Roles in alphabetical order. + """ + shopsAssignedFromRole( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + roleId: AccessRoleID! + ): ShopConnection! + status: OrganizationUserStatus! + + """ + A summary of current store access for the user (legacy or RBAC). + """ + storeAccessSummary: StoreAccessSummary + tfaEnforced: Boolean! + useRbacAccess: Boolean! + verifiedOrganizationDomain: Boolean! + wasSubAdmin: Boolean! +} + +""" +The connection type for OrganizationUserInterface. +""" +type OrganizationUserInterfaceConnection { + """ + A list of edges. + """ + edges: [OrganizationUserInterfaceEdge!]! + + """ + A list of nodes. + """ + nodes: [OrganizationUserInterface!]! + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! +} + +""" +An edge in a connection. +""" +type OrganizationUserInterfaceEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: OrganizationUserInterface! +} + +input OrganizationUserProvisionShopAccessInput { + """ + The shop to provision the requester on. + """ + shopifyShopId: PropertyPublicID! +} + +type OrganizationUserProvisionShopAccessResult { + """ + Indicates whether the mutation was successful. + """ + success: Boolean + + """ + The collection of errors. + """ + userErrors: [UserError!] +} + +""" +Sort options for users queries. +""" +enum OrganizationUserSort { + """ + Sort by email ascending. + """ + EMAIL_ASC + + """ + Sort by email descending. + """ + EMAIL_DESC + + """ + Sort by first name ascending. + """ + FIRST_NAME_ASC + + """ + Sort by first name descending. + """ + FIRST_NAME_DESC + + """ + Sort by last name ascending. + """ + LAST_NAME_ASC + + """ + Sort by last name descending. + """ + LAST_NAME_DESC + + """ + Sort by status ascending. + """ + STATUS_ASC + + """ + Sort by status descending. + """ + STATUS_DESC +} + +enum OrganizationUserStatus { + """ + The user is active. + """ + ACTIVE + + """ + The user is inactive. + """ + INACTIVE + + """ + The user has a pending invitation. + """ + INVITED + + """ + The user is pending deletion. + """ + PENDING_DELETION + + """ + The user is suspended. + """ + SUSPENDED +} + +input OrganizationUserUpdateInput { + """ + The array of IDs of the groups to add the user to. + """ + groupIdsToAdd: [GroupID!] + + """ + The array of IDs of the groups to remove the user from. + """ + groupIdsToRemove: [GroupID!] + + """ + The location assignments to create for the retail user. + """ + locationAssignments: [LocationAssignmentsInput!] + + """ + The ID of the user to update. + """ + organizationUserId: OrganizationUserID + + """ + The pins of the user to be created. + """ + pins: [PinInput!] + + """ + The array of role assignments to create or update for the user. + """ + roleAssignmentsToUpdate: [RoleAssignmentInput!] + + """ + The array of IDs of the roles to fully unassign from the user. + """ + rolesToUnassign: [AccessRoleID!] + + """ + Whether or not SAML should be enforced for the OrganizationUser. + """ + samlEnforced: Boolean + + """ + Whether or not TFA should be enforced for the OrganizationUser. + """ + tfaEnforced: Boolean +} + +type OrganizationUserUpdateResult { + organizationUser: OrganizationUserInterface + + """ + Indicates whether the mutation was successful. + """ + success: Boolean + + """ + The collection of errors. + """ + userErrors: [UserError!] +} + +input OrganizationUsersBulkGroupAssignInput { + """ + The array of organization user IDs to assign the group to. + """ + organizationUserIds: [OrganizationUserID!]! + + """ + The group to assign to the users. + """ + userGroupId: GroupID! +} + +input OrganizationUsersBulkRoleAssignInput { + """ + The array of organization user IDs to assign the role to. + """ + organizationUserIds: [OrganizationUserID!]! + + """ + The role assignments to create the users. + """ + roleAssignmentToCreate: RoleAssignmentInput! +} + +""" +The user attributes to create a staff member. +""" +input OrganizationUsersCreateAttributesInput { + """ + The email of the user to be created. + """ + email: String! + + """ + The pins of the user to be created. + """ + pins: [PinInput!] +} + +input OrganizationUsersCreateInput { + """ + The emails of the users to be invited / created. + """ + emails: [String!]! + + """ + The array of IDs of the groups to add the user to. + """ + groupIds: [GroupID!] + + """ + The location assignments to create for the retail user. + """ + locationAssignments: [LocationAssignmentsInput!] + + """ + The array of role assignments to create or update for the user. + """ + roleAssignments: [RoleAssignmentInput!] + + """ + Whether or not TFA should be enforced for the OrganizationUser. + """ + tfaEnforced: Boolean + + """ + The staff member attributes to create for the user. + """ + userAttributes: [OrganizationUsersCreateAttributesInput!] +} + +type OrganizationUsersCreateResult { + """ + The emails of the invited users. + """ + emails: [String!] + + """ + Indicates whether the mutation was successful. + """ + success: Boolean + + """ + The collection of errors. + """ + userErrors: [UserError!] +} + +type OrganizationUsersDeleteResult { + organizationUserIds: [OrganizationUserID!] + + """ + Indicates whether the mutation was successful. + """ + success: Boolean + + """ + Whether all users were deleted immediately. If false, one or more users will be deleted asynchronously. + """ + synchronouslyDeleted: Boolean! + + """ + The collection of errors. + """ + userErrors: [UserError!] +} + +input OrganizationUsersUpdateStatusInput { + """ + True to reactivate users, false to suspend them. + """ + active: Boolean! + + """ + The IDs of the users. + """ + organizationUserIds: [OrganizationUserID!]! +} + +""" +Information about pagination in a connection. +""" +type PageInfo { + """ + When paginating forwards, the cursor to continue. + """ + endCursor: String + + """ + When paginating forwards, are there more items? + """ + hasNextPage: Boolean! + + """ + When paginating backwards, are there more items? + """ + hasPreviousPage: Boolean! + + """ + When paginating backwards, the cursor to continue. + """ + startCursor: String +} + +input PartnerOrganizationCreateInput { + """ + Organization name + """ + name: String! + + """ + Email of the organization owner. + """ + ownerEmail: String! + + """ + Identity UUID of the organization owner. + """ + ownerUuid: String! +} + +enum PartnerOrganizationsShopPropertiesBackfill { + CREATE_COMPLETED_PROPERTY_TRANSFER_REQUEST + CREATE_DELETED_PROPERTY_TRANSFER_REQUEST + REASSIGN_SHOP_PROPERTY +} + +""" +A summary of the permissions for a partner role. +""" +type PartnerRoleSummary { + permissions: [AccessRolePermission!] +} + +input PartnersMigrationEnableRbacInput { + organizationId: OrganizationID! +} + +input PartnersMigrationMigrateUsersInput { + deleteExistingAssignments: Boolean = false + organizationId: OrganizationID! + userAssignments: [PartnersMigrationUserAssignmentInput!]! +} + +input PartnersMigrationRoleAssignmentInput { + category: String! + permissions: JSON + roleHandle: String + shopifyShopIds: [ShopifyShopID!] + storeAccessType: String! +} + +input PartnersMigrationUserAssignmentInput { + roleAssignments: [PartnersMigrationRoleAssignmentInput!]! + userId: OrganizationUserID! +} + +""" +The types of payment methods +""" +enum PaymentMethodOption { + """ + Bank account payment method. + """ + bank_account + + """ + Credit card payment method. + """ + credit_card + + """ + Payment happens outside of the billing system. + """ + manual + + """ + PayPal payment method. + """ + paypal + + """ + SEPA direct debit payment method. + """ + sepa_direct_debit + + """ + Shopify Balance Account payment method. + """ + shopify_balance_account + + """ + Shopify Balance Card payment method. + """ + shopify_balance_card + + """ + UPI account payment method. + """ + upi +} + +""" +A summary of the permissions for a user or group. +""" +type PermissionsSummary { + customRolesPresence: Boolean + organizationRoles: OrganizationRoleSummary + partnerRoles: PartnerRoleSummary + storeRoles: StoreRoleSummary + systemRolesPresence: Boolean +} + +type Person implements Node { + addresses( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + countryCode: CountryCode + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): AddressConnection + aliases: [PersonAlias!] + dateOfBirth: ISO8601Date + firstName: String + fullName: String + + """ + Returns a GovernmentIdentifier by the specified ID. + """ + governmentIdentifier(id: GovernmentIdentifierID!): GovernmentIdentifier + governmentIdentifiers( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): GovernmentIdentifierConnection + + """ + The ID for an object. + """ + id: GlobalID! + lastName: String + middleName: String + nameVariants: [NameVariant!] + nationalities: [PersonNationality!] + prefix: String + principals: [Principal!] + queryComplexity: Int! + queryDepth: Int! + suffix: String + supportingDocuments( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): SupportingDocumentConnection + user: PrivateData +} + +type PersonAlias implements Node { + aliasVariants: [NameVariant!] + firstName: String + fullName: String + + """ + The ID for an object. + """ + id: GlobalID! + lastName: String + middleName: String + person: Person! + prefix: String + queryComplexity: Int! + queryDepth: Int! + suffix: String +} + +""" +The ID for a PersonAlias. +""" +scalar PersonAliasID + +type PersonAliasResult { + personAlias: PersonAlias + + """ + The collection of errors. + """ + userErrors: [UserError!] +} + +""" +The connection type for Person. +""" +type PersonConnection { + """ + A list of edges. + """ + edges: [PersonEdge!]! + + """ + A list of nodes. + """ + nodes: [Person!]! + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! +} + +""" +An edge in a connection. +""" +type PersonEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: Person! +} + +""" +Filter fields for people. +""" +enum PersonFilterField { + """ + Filter by address city. + """ + ADDRESS_CITY + + """ + Filter by address country code. + """ + ADDRESS_COUNTRY_CODE + + """ + Filter by address postal code. + """ + ADDRESS_POSTAL_CODE + + """ + Filter by address state or region. + """ + ADDRESS_STATE_OR_REGION + + """ + Filter by date of birth. + """ + DATE_OF_BIRTH + + """ + Filter by principal email. + """ + EMAIL + + """ + Filter by first name (includes aliases). + """ + FIRST_NAME + + """ + Filter by last name (includes aliases). + """ + LAST_NAME + + """ + Filter by nationality country code. + """ + NATIONALITY + + """ + Filter by principal phone number. + """ + PHONE +} + +""" +Filter for people. +""" +input PersonFilterInput { + field: PersonFilterField! + operator: PersonFilterOperator! + value: String! +} + +""" +Operators for filtering people. +""" +enum PersonFilterOperator { + """ + Contains operator. + """ + CONTAINS + + """ + Equals operator. + """ + EQUALS + + """ + Starts with operator. + """ + STARTS_WITH +} + +""" +The ID for a Person. +""" +scalar PersonID + +type PersonNationality implements Node { + countryCode: CountryCode! + + """ + The ID for an object. + """ + id: GlobalID! + queryComplexity: Int! + queryDepth: Int! +} + +type PersonResult { + person: Person + + """ + The collection of errors. + """ + userErrors: [UserError!] +} + +input PinInput { + """ + The PIN to access the POS App of the retail only organization user. + """ + pin: String! + + """ + The Shopify shop ID to assign the PIN to, i.e. 'gid://organization/ShopifyShop/10'. + """ + shopifyShopId: PropertyPublicID! +} + +input PlusRoleRemoveStoreAccessInput { + """ + The ID of the Role to update. + """ + id: RoleID! + + """ + The array of Shopify shop IDs of shops to remove access to on the plus role. + """ + shopifyShopIds: [PropertyPublicID!]! +} + +input PosPinInput { + """ + The PIN to access the POS App of the retail only organization user. + """ + posPin: String! + + """ + The Shopify shop ID to assign the PIN to, i.e. 'gid://organization/ShopifyShop/10'. + """ + shopifyShopId: ID! +} + +type PosPinValidatorResult { + """ + Check if a POS pin is easy to guess + """ + easyToGuess: Boolean + + """ + Whether the POS PIN is valid. + """ + success: Boolean! + + """ + The collection of errors. + """ + userErrors: [UserError!] + + """ + Reasons why the PIN is easy to guess. + """ + violations: [String!] +} + +type PosPinViolations { + """ + Check if a POS pin is easy to guess + """ + easyToGuess: Boolean! + + """ + An array of reasons why the PIN is easy to guess. + """ + violations: [String!]! +} + +type Principal implements Node { + """ + Returns the address associated with this principal + """ + address: Address + email: String + equityOwnership: Float + + """ + The ID for an object. + """ + id: GlobalID! + jobTitle: String + legalEntity: LegalEntity! + person: Person! + phoneNumber: String + queryComplexity: Int! + queryDepth: Int! + roles: [PrincipalRoleTypeEnum!] +} + +""" +The connection type for Principal. +""" +type PrincipalConnection { + """ + A list of edges. + """ + edges: [PrincipalEdge!]! + + """ + A list of nodes. + """ + nodes: [Principal!]! + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! +} + +input PrincipalContactInformationInput { + """ + The email associated with the principal. + """ + email: String + + """ + The phone number associated with the principal. + """ + phoneNumber: String +} + +""" +An edge in a connection. +""" +type PrincipalEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: Principal! +} + +""" +The ID for a Principal. +""" +scalar PrincipalID + +enum PrincipalRoleTypeEnum { + ACCOUNT_REPRESENTATIVE + AUTHORIZER + DIRECTOR + EQUITY_OWNER + EXECUTIVE +} + +""" +Sort options for principals queries. +""" +enum PrincipalSortField { + """ + Sort by equity ownership ascending. + """ + EQUITY_ASC + + """ + Sort by equity ownership descending. + """ + EQUITY_DESC + + """ + Sort by job title ascending. + """ + JOB_TITLE_ASC + + """ + Sort by job title descending. + """ + JOB_TITLE_DESC + + """ + Sort by name ascending. + """ + NAME_ASC + + """ + Sort by name descending. + """ + NAME_DESC +} + +type PrivateData implements Node { + accountType: AccountTypeOfUser! + avatarUrl: URL + email: String + familyName: String + fullName: String + givenName: String + + """ + The ID for an object. + """ + id: GlobalID! + identityUuid: ID + locale: String + phoneNumber: String + queryComplexity: Int! + queryDepth: Int! +} + +type Property implements PropertyInterface { + """ + Property public identifier. + """ + externalId: PropertyPublicID + + """ + Property global identifier. + """ + id: PropertyId! + + """ + The offering for this property. + """ + offering: Offering + + """ + The organization this property belongs to. + """ + organization: Organization + queryComplexity: Int! + queryDepth: Int! +} + +""" +The ID for a Property. +""" +scalar PropertyID + +scalar PropertyId + +interface PropertyInterface { + """ + Property public identifier. + """ + externalId: PropertyPublicID + + """ + Property global identifier. + """ + id: PropertyId! + + """ + The offering for this property. + """ + offering: Offering + + """ + The organization this property belongs to. + """ + organization: Organization + queryComplexity: Int! + queryDepth: Int! +} + +""" +The connection type for PropertyInterface. +""" +type PropertyInterfaceConnection { + """ + A list of edges. + """ + edges: [PropertyInterfaceEdge!]! + + """ + A list of nodes. + """ + nodes: [PropertyInterface!]! + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! +} + +""" +An edge in a connection. +""" +type PropertyInterfaceEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: PropertyInterface! +} + +scalar PropertyPublicID + +type PropertyResult { + """ + Mutated property. + """ + property: Property + + """ + The collection of errors. + """ + userErrors: [UserError!] +} + +enum PropertyTransfer { + EXTERNAL + INTERNAL + PARTNER_HANDOFF + VIBE_TRANSFER +} + +""" +The ID for a PropertyTransferRequest. +""" +scalar PropertyTransferRequestID + +input ProvisionCollaboratorAccessInput { + """ + The ID of the shop to provision collaborator access for. + """ + shopifyShopId: PropertyPublicID! +} + +type ProvisionCollaboratorAccessResult { + """ + Indicates whether the mutation was successful. + """ + success: Boolean + + """ + Errors that occurred while provisioning collaborator access. + """ + userErrors: [UserError!] +} + +""" +The input fields for updating an organization user, this input comes from the shopify proxy. +""" +input ProxyOrganizationUserUpdateInput { + """ + Flag to enable the initialization of the POS (Point of Sale) authorization + check, replacing the default authorization method. + """ + enableInitializePosCheck: Boolean = false + + """ + The locations input to update a retail user locations. + """ + locationAssignments: ProxyRetailOnlyOrganizationLocationAssignmentsInput + + """ + The PIN to access the POS App of the retail only shop user. + """ + posPin: String + + """ + The Shopify User GID of the user who requested the action. + """ + requesterShopifyUserId: ID! + + """ + The role ids to update for the retail user. + """ + roleAssignments: [AccessRoleID!] + + """ + The Shopify User GID of the User to update. + """ + shopifyUserId: ID! +} + +""" +The result of updating an organization user, this result responds to a request from the shopify proxy. +""" +type ProxyOrganizationUserUpdateResult { + """ + Indicates whether the mutation was successful. + """ + success: Boolean + + """ + The collection of errors. + """ + userErrors: [UserError!] +} + +""" +The input fields used to determine which locations a retail user has access to. +""" +input ProxyRetailOnlyOrganizationLocationAssignmentsInput { + """ + Whether the retail user should have access to all locations. + """ + allLocationsAccess: Boolean = false + + """ + The locations to add to the retail user i.e. ['gid://shopify/Location/11']. + """ + shopifyLocationIdsToAdd: [ID!] + + """ + The locations to remove from the retail user i.e. ['gid://shopify/Location/12']. + """ + shopifyLocationIdsToRemove: [ID!] +} + +""" +The user attributes to create a retail user. +""" +input ProxyRetailOnlyOrganizationUserCreateAttributesInput { + """ + The email of the user to be created. + """ + email: String + + """ + The first name of the user to be created. + """ + firstName: String! + + """ + The last name of the user to be created. + """ + lastName: String! + + """ + The phone number of the user to be created. + """ + phoneNumber: String + + """ + The PIN to access the POS App of the retail only shop user. + """ + posPin: String! +} + +""" +The input fields for creating a retail only organization user, this input comes from the shopify proxy. +""" +input ProxyRetailOnlyOrganizationUserCreateInput { + """ + Flag to enable the initialization of the POS (Point of Sale) authorization + check, replacing the default authorization method. + """ + enableInitializePosCheck: Boolean = false + + """ + The locations input to assign a retail user locations. + """ + locationsAssignments: ProxyRetailOnlyOrganizationLocationAssignmentsInput! + + """ + The Shopify User GID of the user who requested the action. + """ + requesterShopifyUserId: ID! + + """ + The role ids to create for the retail user. + """ + roleAssignments: [AccessRoleID!] + + """ + The Shopify shop GID. + """ + shopifyShopId: ID! + + """ + Specifies the input fields to create a retail user. + """ + userAttributes: ProxyRetailOnlyOrganizationUserCreateAttributesInput! +} + +""" +The result of creating a retail only organization user, this result responds to a request from the shopify proxy. +""" +type ProxyRetailOnlyOrganizationUserCreateResult { + """ + The Shopify User GID of the created ShopUser + """ + shopifyUserId: ID + + """ + Indicates whether the mutation was successful. + """ + success: Boolean + + """ + The collection of errors. + """ + userErrors: [UserError!] +} + +""" +The input fields for updating a retail only organization user, this input comes from the shopify proxy. +""" +input ProxyRetailOnlyOrganizationUserUpdateInput { + """ + The email of the retail only organization user. + """ + email: String + + """ + Flag to enable the initialization of the POS (Point of Sale) authorization + check, replacing the default authorization method. + """ + enableInitializePosCheck: Boolean = false + + """ + The first name of the retail only organization user. + """ + firstName: String + + """ + The last name of the retail only organization user. + """ + lastName: String + + """ + The locations input to update a retail user locations. + """ + locationAssignments: ProxyRetailOnlyOrganizationLocationAssignmentsInput + + """ + The phone number of the retail only organization user. + """ + phoneNumber: String + + """ + The PIN to access the POS App of the retail only shop user. + """ + posPin: String + + """ + The Shopify User GID of the user who requested the action. + """ + requesterShopifyUserId: ID! + + """ + The role ids to update for the retail user. + """ + roleAssignments: [AccessRoleID!] + + """ + The Shopify User GID of the User to update. + """ + shopifyUserId: ID! +} + +""" +The result of updating a retail only organization user, this result responds to a request from the shopify proxy. +""" +type ProxyRetailOnlyOrganizationUserUpdateResult { + """ + Indicates whether the mutation was successful. + """ + success: Boolean + + """ + The collection of errors. + """ + userErrors: [UserError!] +} + +""" +The input object for deleting a retail only user from the organization's shop, this input comes from the shopify proxy. +""" +input ProxyRetailOnlyShopUserDeleteInput { + """ + Flag to enable the initialization of the POS (Point of Sale) authorization + check, replacing the default authorization method. + """ + enableInitializePosCheck: Boolean = false + + """ + The Shopify User GID of the user who requested the action. + """ + requesterShopifyUserId: ID! + + """ + The Shopify User GID of the User to delete. + """ + shopifyUserId: ID! +} + +""" +The result of deleting a retail only user from the organization's shop, this +result responds to a request from the shopify proxy. +""" +type ProxyRetailOnlyShopUserDeleteResult { + """ + Indicates whether the mutation was successful. + """ + success: Boolean + + """ + The collection of errors. + """ + userErrors: [UserError!] +} + +type Query { + """ + Returns the apps for the given shopify app gids. + """ + apps(ids: [String!]!): [ShopApp!]! + + """ + Auto-generated POS pin for all of the shops in organization. + """ + autogeneratedPosPinForOrganization(posPinLength: Int): GeneratePosPinResult! + + """ + Auto-generated POS pin for a shop. + """ + autogeneratedPosPinForShop(posPinLength: Int, shopifyShopId: PropertyPublicID!): GeneratePosPinResult! + + """ + Returns collaborator access requirements for a partner on a shop. + """ + collaboratorAccessRequirements(organizationId: OrganizationID!, partnerId: Int, shopifyShopId: PropertyPublicID!): CollaboratorAccessRequirements! + + """ + Returns metadata for a specific document purpose, including required fields. + Returns null if no metadata exists for the purpose. Jurisdiction-specific + overrides take precedence over global defaults. + """ + documentPurposeMetadata(countryCode: CountryCodeWithDefault!, entityType: ApplicableEntityType!, purpose: DocumentPurpose!): DocumentPurposeMetadata + + """ + Returns metadata for all document purposes for a given jurisdiction and entity + type. Jurisdiction-specific overrides take precedence over global defaults. + """ + documentPurposeMetadataList(countryCode: CountryCodeWithDefault!, entityType: ApplicableEntityType!): [DocumentPurposeMetadata!]! + + """ + Returns entity supporting document types for the given country code and + category. Optionally filter by purpose. When purpose is not provided, all + document types for the given country and category are returned. + """ + entitySupportingDocumentTypes(category: Category!, countryCode: CountryCodeWithDefault!, purpose: DocumentPurpose): [SupportingDocumentType!]! + + """ + Returns the government identifier type with the given handle. + """ + governmentIdentifierType(handle: String!): GovernmentIdentifierType + + """ + Returns all government identifier types for the given country code and identifier category. + """ + governmentIdentifierTypesByCountryCode(countryCode: CountryCode!, identifierCategory: String): [GovernmentIdentifierType!]! + + """ + Checks whether a user (identified by identity UUID) has collaborator store + access on a shop, via a collaborator account (identified by shop user ID). + Returns null if the Business Platform cannot determine the result. + """ + hasCollaboratorPermission( + """ + The shop user ID of the collaborator account. + """ + collaboratorUserId: ID! + + """ + The identity UUID of the user requesting access. + """ + identityUuid: ID! + ): CollaboratorPermissionResult + + """ + Returns the legal entity type with the given handle. + """ + legalEntityType(handle: String!): LegalEntityType + + """ + Returns all legal entity types for the given country code and jurisdictions. + """ + legalEntityTypesByCountryCode(countryCode: CountryCode!, jurisdictions: [String!]): [LegalEntityType!]! + + """ + Returns the organization with the given identifier. + """ + organization(organizationId: OrganizationID): Organization + + """ + Returns all the organizations for the requesting property provider + """ + organizations( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): OrganizationConnection! + + """ + Returns Partner Orgs belonging to the IDs passed in + """ + partnerOrganizations(organizationIds: [OrganizationID!]!): [Organization!]! + + """ + Check the POS pin is valid + """ + posPinValidator(posPin: String!, shopifyShopId: PropertyPublicID!): PosPinValidatorResult! + + """ + Check the POS pin for violations + """ + posPinViolations(posPin: String!): PosPinViolations! + + """ + Returns true if the bearer token is privileged. + """ + privilegedActionCheck: Boolean! + + """ + Returns the property with the given identifier. + """ + property(externalId: PropertyPublicID!, offeringHandle: String!): PropertyInterface + + """ + Check the retail employee identifier is valid + """ + retailEmployeeIdentifierValidator(employeeIdentifier: String!): RetailEmployeeIdentifierValidatorResult! + + """ + Returns Partner Orgs that match the requesting search term. + """ + searchPartnerOrganizations(searchTerm: String!): [Organization!]! + + """ + Returns the shop details for the given shop ids, used for billing invoice details + """ + shopDetails(shopifyShopIds: [PropertyPublicID!]!): [ShopDetails!]! + + """ + Indicates whether a subdomain is available for a new shop. + """ + shopSubdomainAvailable(subdomain: String!): Boolean +} + +input RemoveOrganizationUserRoleInput { + """ + The ID of the Organization User who is removed a Role. + """ + organizationUserId: OrganizationUserID! +} + +type RemoveOrganizationUserRoleResult { + """ + The organization user with the removed role. + """ + organizationUser: OrganizationUser + + """ + The collection of errors. + """ + userErrors: [UserError!] +} + +type RemoveShopAccessResult { + """ + ID of the mutated organization user. + """ + organizationUserId: OrganizationUserID + + """ + The collection of errors. + """ + userErrors: [UserError!] +} + +input RemoveShopFromNonPlusOrganizationInput { + """ + The ID of the shop to be removed from the non-plus organization. + """ + shopifyShopId: PropertyPublicID! +} + +type RemoveShopFromNonPlusOrganizationResult { + """ + The original organization that the store has now been removed from. + """ + organization: Organization + + """ + The collection of errors. + """ + userErrors: [UserError!] +} + +input RequestCollaborationInput { + """ + Access code for requesting collaborator access. + """ + collaboratorAccessCode: String + + """ + Message included with collaborator access request. + """ + message: String + + """ + Collaborator permissions to request. + """ + permissions: [String!]! + + """ + The ID of the shop to request collaborator access for. + """ + shopifyShopId: PropertyPublicID! +} + +type RequestCollaborationResult { + """ + The collaborator relationship associated with the request. + """ + collaboratorRelationship: CollaboratorRelationship + + """ + Errors that occurred while requesting collaborator access. + """ + userErrors: [UserError!] +} + +""" +A field that must be visible on a supporting document +""" +type RequiredField { + """ + An example value for this field + """ + example: String + + """ + The field identifier (e.g., 'legal_name', 'date_of_birth', 'address') + """ + field: String! + + """ + The localized display label for this field + """ + label: String! +} + +type RerequestCollaboratorRelationshipResult { + """ + The collaborator relationship that was re-requested. + """ + collaboratorRelationship: CollaboratorRelationship + + """ + Errors that occurred while re-requesting the collaborator relationship. + """ + userErrors: [UserError!] +} + +type Reseller { + contactLink: String! + + """ + Discount rate percentage for the reseller + """ + discountRate: Decimal! + id: ID! + name: String! + organizationId: ID! + + """ + Revenue sharing percentage for the reseller + """ + revenueShare: Decimal! +} + +type ResellerRelationship { + activationLink: String + annualResoldPrice: Decimal + annualRevenue: Decimal + countryCode: String! + createdAt: ISO8601DateTime! + id: ID! + isTransferred: Boolean! + legalBusinessName: String + merchantEmail: String! + merchantPurchaseOrderNumber: String + monthlyResoldPrice: Money + organizationId: ID! + originalPlanPrice: Decimal + planCurrency: String + planName: String! + posProLocationsCount: Int! + + """ + The reseller associated with this relationship. + """ + reseller: Reseller + resellerPurchaseOrderNumber: String + resellerRemittancePrice: Decimal + shopifyShopId: ID! + status: ResellerRelationshipStatus! + supportedPlanName: ResellerRelationshipSupportedPlans + termLengthInMonths: Int + transferredAt: ISO8601DateTime +} + +enum ResellerRelationshipStatus { + """ + The reseller relationship has ended. + """ + ENDED + + """ + The associated store is in development. + """ + IN_DEVELOPMENT + + """ + The associated store has been transferred. + """ + TRANSFERRED + + """ + The associated store is pending transfer. + """ + TRANSFER_PENDING +} + +enum ResellerRelationshipSupportedPlans { + """ + The advanced plan. + """ + ADVANCED + + """ + The basic plan. + """ + BASIC + + """ + The grow plan. + """ + GROW + + """ + The professional plan. + """ + PROFESSIONAL + + """ + The Shopify Plus plan. + """ + SHOPIFY_PLUS + + """ + The unlimited plan. + """ + UNLIMITED +} + +type ResellerRelationshipUpdateResultField { + activationLink: String + annualResoldPrice: Decimal + annualRevenue: Decimal + countryCode: String! + id: ID! + isTransferred: Boolean! + legalBusinessName: String + merchantEmail: String! + merchantPurchaseOrderNumber: String + monthlyResoldPrice: Money + organizationId: ID! + originalPlanPrice: Decimal + planCurrency: String + planName: String! + posProLocationsCount: Int! + resellerPurchaseOrderNumber: String + resellerRemittancePrice: Decimal + shopId: ID! + termLengthInMonths: Int +} + +type ResellerRelationshipWithShop { + activationLink: String + annualResoldPrice: Decimal + annualRevenue: Decimal + countryCode: String! + createdAt: ISO8601DateTime! + id: ID! + isTransferred: Boolean! + legalBusinessName: String + merchantEmail: String! + merchantPurchaseOrderNumber: String + monthlyResoldPrice: Money + organizationId: ID! + originalPlanPrice: Decimal + planCurrency: String + planName: String! + posProLocationsCount: Int! + resellerPurchaseOrderNumber: String + resellerRemittancePrice: Decimal + shopName: String! + shopifyShopId: ID! + status: ResellerRelationshipStatus! + transferredAt: ISO8601DateTime +} + +""" +The connection type for ResellerRelationshipWithShop. +""" +type ResellerRelationshipWithShopConnection { + """ + A list of edges. + """ + edges: [ResellerRelationshipWithShopEdge!]! + + """ + A list of nodes. + """ + nodes: [ResellerRelationshipWithShop!]! + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! +} + +""" +An edge in a connection. +""" +type ResellerRelationshipWithShopEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: ResellerRelationshipWithShop! +} + +input ResetOrganizationUserTfaInput { + """ + The ID of the OrganizationUser to reset TFA enforcement. + """ + organizationUserId: OrganizationUserID! +} + +type ResetOrganizationUserTfaResult { + """ + The organization user with reset TFA enforcement. + """ + organizationUser: OrganizationUser + + """ + The collection of errors. + """ + userErrors: [UserError!] +} + +type ResyncUserDataAfterPartnerHandoffResult { + """ + Id of the shop that had data re-synced. + """ + shopId: ShopifyShopID +} + +""" +A retail access for a organization user. +""" +type RetailAccess { + """ + Whether the user has access to all locations. + """ + allLocationsAccess: Boolean! + + """ + Whether the user is currently logged in. + """ + currentlyLoggedIn: Boolean! + + """ + The employee identifier for the retail access. + """ + employeeIdentifier: String + + """ + Whether the user has POS access. + """ + hasPosAccess: Boolean! + + """ + The ID of the retail access. + """ + id: String! + + """ + Whether the user can initialize POS. + """ + initializePos: Boolean! + + """ + The location assignments for the retail access. + """ + locationAssignments( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): RetailLocationAssignmentsConnection! + + """ + The ID of the organization user. + """ + organizationUserId: String! + + """ + The POS pin for the shop. + """ + posPin: String + + """ + The shop. + """ + shop: Shop! +} + +""" +The connection type for RetailAccess. +""" +type RetailAccessConnection { + """ + A list of edges. + """ + edges: [RetailAccessEdge!]! + + """ + A list of nodes. + """ + nodes: [RetailAccess!]! + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! +} + +""" +An edge in a connection. +""" +type RetailAccessEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: RetailAccess! +} + +type RetailConfig { + posChannelInstalled: Boolean! + roleSelectionEnabled: Boolean! +} + +type RetailData { + canInitializePos: Boolean! + posAccess: Boolean! + retailRole: RetailRole +} + +type RetailEmployeeIdentifierValidatorResult { + """ + Whether the POS PIN is valid. + """ + success: Boolean! + + """ + The collection of errors. + """ + userErrors: [UserError!] +} + +type RetailLocation { + """ + The location address + """ + address: RetailLocationAddress! + + """ + The location name + """ + name: String! + + """ + The location id + """ + shopifyLocationId: ID! +} + +type RetailLocationAddress { + """ + The formatted address + """ + formatted: [String!] +} + +type RetailLocationAssignments { + """ + The ID of the retail location assignment. + """ + id: String! + + """ + The Shopify location ID. + """ + shopifyLocationId: String! +} + +""" +The connection type for RetailLocationAssignments. +""" +type RetailLocationAssignmentsConnection { + """ + A list of edges. + """ + edges: [RetailLocationAssignmentsEdge!]! + + """ + A list of nodes. + """ + nodes: [RetailLocationAssignments!]! + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! +} + +""" +An edge in a connection. +""" +type RetailLocationAssignmentsEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: RetailLocationAssignments! +} + +""" +Available plans for retail locations +""" +enum RetailLocationPlan { + """ + Locations that have the Lite Plan. + """ + LITE + + """ + Locations that have the Pro Plan. + """ + PRO + + """ + Locations that have the Pro Plan until the end of the trial. + """ + TRIAL +} + +type RetailLocationsResult { + """ + The cursor + """ + cursor: String! + + """ + The retail locations + """ + locations: [RetailLocation!]! + + """ + The page info + """ + pageInfo: PageInfo! + + """ + The total count + """ + totalCount: Int! +} + +""" +The input fields used to update a retail only organization user. +""" +input RetailOnlyOrganizationUserUpdateInput { + """ + List of group_ids to add the retail only organization user to. + """ + groupIdsToAdd: [GroupID!] + + """ + List of group_ids to remove the retail only organization user from. + """ + groupIdsToRemove: [GroupID!] + + """ + The location assignments to create for the retail user. + """ + locationAssignments: [RetailUserLocationAssignmentsInput!] + + """ + The ID of the organization user to update. + """ + organizationUserId: OrganizationUserID! + + """ + List of role assignments to update or create to the retail only organization user. + """ + roleAssignmentsToUpdate: [RoleAssignmentInput!] + + """ + List of roles_ids to unassign from the retail only organization user. + """ + rolesToUnassign: [AccessRoleID!] + + """ + The user attributes to update. + """ + userAttributes: RetailOnlyOrganizationUserUpdateUserAttributesInput +} + +type RetailOnlyOrganizationUserUpdateResult { + """ + The updated organization user. + """ + organizationUser: OrganizationUserInterface + + """ + Indicates whether the mutation was successful. + """ + success: Boolean + + """ + The collection of errors. + """ + userErrors: [UserError!] +} + +""" +The user attributes to update a retail user. +""" +input RetailOnlyOrganizationUserUpdateUserAttributesInput { + """ + The email of the user to be updated. + """ + email: String + + """ + The first name of the user to be updated. + """ + firstName: String + + """ + The last name of the user to be updated. + """ + lastName: String + + """ + The phone number of the user to be updated. + """ + phoneNumber: String + + """ + The pos pins of the user to be updated. + """ + posPins: [PosPinInput!] +} + +""" +The input fields used to create a retail user. +""" +input RetailOnlyOrganizationUsersCreateInput { + """ + The array of IDs of the groups to add the user to. + """ + groupIds: [GroupID!] + + """ + The location assignments to create for the retail user. + """ + locationAssignments: [RetailUserLocationAssignmentsInput!] + + """ + The role assignments to create for the retail user. + """ + roleAssignments: [RoleAssignmentInput!] + + """ + The users attributes to create. + """ + usersAttributes: [RetailOnlyUserAttributesInput!]! +} + +type RetailOnlyOrganizationUsersCreateResult { + """ + Indicates whether the mutation was successful. + """ + success: Boolean + + """ + The collection of errors. + """ + userErrors: [UserError!] + + """ + The data of the added users. + """ + usersDetails: [RetailUserDetailsResult!] +} + +""" +The user attributes to create a retail user. +""" +input RetailOnlyUserAttributesInput { + """ + The email of the user to be created. + """ + email: String + + """ + The first name of the user to be created. + """ + firstName: String! + + """ + The last name of the user to be created. + """ + lastName: String! + + """ + The phone number of the user to be created. + """ + phoneNumber: String + + """ + The pos pins of the user to be created. + """ + posPins: [PosPinInput!]! +} + +type RetailRole { + """ + Whether the role is the shop's default role. + """ + default: Boolean! + id: ID! + + """ + Kind for the retail role. + """ + kind: RetailRoleKind! + + """ + The name of the retail role. + """ + name: String! + + """ + Permission settings for the retail role. + """ + retailRolePermissions: [RetailRolePermission!]! +} + +enum RetailRoleKind { + """ + Account owner kind. + """ + ACCOUNT_OWNER + + """ + Full permissions kind. + """ + FULL_PERMISSIONS + + """ + Limited permissions kind. + """ + LIMITED_PERMISSIONS + + """ + POS user kind. + """ + POS_USER +} + +type RetailRolePermission { + access: String! + retailPermissionTag: String! +} + +""" +A shop with retail/POS-specific data for user management purposes +""" +type RetailShop { + """ + The name of the shop + """ + name: String! + + """ + Get the Retail specific data for the current shop. + """ + retailData: ShopRetailData! + + """ + Get the retail pro locations for the current shop + """ + retailLocations(after: String, before: String, first: Int, last: Int, plan: RetailLocationPlan, shopifyLocationIds: [ID!], shopifyUserId: ID): RetailLocationsResult! + + """ + The ID of the shop in Shopify + """ + shopifyShopId: ID! +} + +type RetailUserDetailsResult { + """ + The email of the created user. + """ + email: String + + """ + The first name of the created user. + """ + firstName: String + + """ + The last name of the created user. + """ + lastName: String + + """ + The IDs of the created organization users. + """ + organizationUserIds: [OrganizationUserID!] + + """ + The phone number of the created user. + """ + phoneNumber: String +} + +""" +The input fields used to determine which locations a retail user has access to. +""" +input RetailUserLocationAssignmentsInput { + """ + Whether the retail user should have access to all locations. + """ + allLocationsAccess: Boolean = false + + """ + The locations to add to the retail user, i.e. ['gid://shopify/Location/11']. + """ + shopifyLocationIdsToAdd: [ID!] + + """ + The locations to remove from the retail user, i.e. ['gid://shopify/Location/12']. + """ + shopifyLocationIdsToRemove: [ID!] + + """ + The shopify shop id to assign locations to, i.e. 'gid://organization/ShopifyShop/10'. + """ + shopifyShopId: ID! +} + +type Role implements Node { + administrativePermissions: [String!]! + + """ + The ID for an object. + """ + id: GlobalID! + name: String! + queryComplexity: Int! + queryDepth: Int! + shopRoles( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): ShopRoleConnection! + usersCount: Int! +} + +input RoleAssignmentInput { + """ + The ID of the role to change. + """ + roleId: AccessRoleID! + + """ + The array of Shopify shop IDs to assign the role to. + """ + shopIdsToAssign: [PropertyPublicID!] + + """ + The array of Shopify shop IDs to unassign the role from. + """ + shopIdsToUnassign: [PropertyPublicID!] + targetType: AccessRoleAssignmentTarget! +} + +""" +The connection type for Role. +""" +type RoleConnection { + """ + A list of edges. + """ + edges: [RoleEdge!]! + + """ + A list of nodes. + """ + nodes: [Role!]! + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! +} + +""" +An edge in a connection. +""" +type RoleEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: Role! +} + +""" +Represents a single filter option for access roles queries. +""" +input RoleFilterInput { + field: AccessRoleFilterField! + operator: AccessRoleFilterOperator! + value: String! +} + +""" +The ID for a Role. +""" +scalar RoleID + +""" +Sort options for role queries. +""" +enum RoleSort { + """ + Sort by category ascending. + """ + CATEGORY_ASC + + """ + Sort by category descending. + """ + CATEGORY_DESC + + """ + Sort by name ascending. + """ + NAME_ASC + + """ + Sort by name descending. + """ + NAME_DESC +} + +""" +The result of deleting roles. +""" +type RolesDeleteResult { + """ + The deleted role id. + """ + deletedIds: [AccessRoleID!] + + """ + Indicates whether the mutation was successful. + """ + success: Boolean + + """ + The collection of errors. + """ + userErrors: [UserError!] +} + +type SamlConfiguration implements Node { + """ + The ID for an object. + """ + id: GlobalID! + idpCertificate: String + idpCertificateFingerprint: String + idpEntityId: String + idpMetadataUrl: String! + idpSsoTargetUrl: String + queryComplexity: Int! + queryDepth: Int! +} + +""" +Scopes for the requester's ability to manage role assignments across stores. +""" +type ScopesForManagingRoleAssignments { + canAssignRolesToAllCollaboratorStores: Boolean! + canAssignRolesToAllOwnedStores: Boolean! + canAssignRolesToAllOwnedStoresForGroups: Boolean! +} + +input SetOrganizationShopBillingAccountIdInput { + """ + The ID of the billing account to set. + """ + billingAccountId: Int! + + """ + The GID of the shop to update. + """ + shopifyShopId: ShopifyShopID! +} + +type SetOrganizationShopBillingAccountIdResult { + """ + The shop that was updated. + """ + shop: Shop + + """ + The collection of user errors. + """ + userErrors: [UserError!] +} + +type SetShopTestDriveStatusResult { + success: Boolean! +} + +input SetupSamlIntegrationInput { + """ + The SAML configuration metadata URL. + """ + idpMetadataUrl: String! +} + +type SetupSamlIntegrationResult { + """ + The organization object. + """ + organization: Organization + + """ + List of user errors of setup integration operation. + """ + userErrors: [UserError!] +} + +type Shop implements PropertyInterface { + apps( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): ShopAppConnection + + """ + The billing account ID for the shop + """ + billingAccountId: String + + """ + The currency the shop is billed in + """ + billingCurrency: String + + """ + Check if the current user can access the shop. + """ + canCurrentUserAccess: Boolean! + + """ + Check if the shop can be transferred to a new owner outside of the requester's current organization. + """ + canTransferExternally: Boolean! + + """ + Check if the shop can be transferred to an existing organization owned by the requester. + """ + canTransferInternally: Boolean! + channels( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): ShopChannelConnection + + """ + The client transfer request for this shop, if one exists. + """ + clientTransferRequest: ClientTransferRequest + + """ + The collaborator relationship for the current organization (if this is a collaborator shop) + """ + collaboratorRelationship: CollaboratorRelationship + + """ + The date and time the shop was created + """ + createdAt: ISO8601DateTime! + + """ + The active developer preview handle for the shop + """ + developerPreviewHandle: String + + """ + Property public identifier. + """ + externalId: PropertyPublicID + + """ + A pending transfer exists. + """ + hasPendingTransfer: Boolean + + """ + Property global identifier. + """ + id: PropertyId! + identificationSettings: ShopIdentificationSettings! + isMainShop: Boolean! + + """ + Whether the shop can rollback from Markets Home + """ + marketsHomeRollbackCompatible: MarketsHomeRollbackCompatibleResult! + + """ + Whether the shop is ready to rollout Markets Home + """ + marketsHomeRolloutCompatible: MarketsHomeRolloutCompatibleResult! + name: String! + + """ + The offering for this property. + """ + offering: Offering + + """ + The organization this property belongs to. + """ + organization: Organization + ownerDetails: PrivateData + + """ + Returns pending transfer if one exists. + """ + pendingExternalTransfer: ExternalShopTransferRequest + + """ + The name of the shop's plan. + """ + planName: String + + """ + The variant name of the shop's plan + """ + planVariantName: String + primaryDomain: String + queryComplexity: Int! + queryDepth: Int! + + """ + The reseller relationship for the shop + """ + resellerRelationship: ResellerRelationship + + """ + Get the Retail specific data for the current shop. + """ + retailData: ShopRetailData! + + """ + Get the retail pro locations for the current shop + """ + retailLocations(after: String, before: String, first: Int, last: Int, plan: RetailLocationPlan, shopifyLocationIds: [ID!], shopifyUserId: ID): RetailLocationsResult! + + """ + The ID of the shop in Shopify + """ + shopifyShopId: ID + shortName: String + status: ShopPropertyStatus! + storeAdditionRequest: StoreAdditionRequest + storeType: Store + testDriveStatus(handle: String!): TestDriveShopStatus! + themes: [ShopTheme!] + + """ + Whether the shop is a transferrable client store + """ + transferrableClientStore: Boolean! + url: URL + + """ + The user limits for the shop. + """ + userLimits: UserLimits! + usersCount: Int! +} + +type ShopAccess { + accessConditions: [String!] + accessLevel: ShopUserAccessLevel! + appPermissions: [String!] + collaborator: Boolean! + collaboratorTeamMember: Boolean! + + """ + Returns all permissions that can be managed by the current user for this shop access. + """ + editablePermissions: [String!] + hasPosAccess: Boolean! + hasPosAccessEnforced: Boolean! + initializePosEnforced: Boolean! + permissions: [String!] + shopProperty: PropertyInterface! + shopifyUserId: String + status: ShopUserStatus! +} + +""" +The connection type for ShopAccess. +""" +type ShopAccessConnection { + """ + A list of edges. + """ + edges: [ShopAccessEdge!]! + + """ + A list of nodes. + """ + nodes: [ShopAccess!]! + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! +} + +""" +An edge in a connection. +""" +type ShopAccessEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: ShopAccess! +} + +input ShopAccessInput { + """ + List of access conditions. + """ + accessConditions: [String!] + + """ + List of Shopify app id's to permit access i.e. ["gid://shopify/App/123123"] + """ + appPermissions: [ID!] + + """ + Whether this role grants POS access to the shop. + """ + hasPosAccess: Boolean + + """ + Whether this role grants the ability to initialize POS. + """ + initializePos: Boolean + + """ + List of shop permissions. + """ + permissions: [String!] + shopifyShopId: PropertyPublicID! +} + +type ShopApp implements Node { + handle: String + iconUrl: String + + """ + The ID for an object. + """ + id: GlobalID! + name: String + queryComplexity: Int! + queryDepth: Int! + shopifyGid: ID! +} + +""" +The connection type for ShopApp. +""" +type ShopAppConnection { + """ + A list of edges. + """ + edges: [ShopAppEdge!]! + + """ + A list of nodes. + """ + nodes: [ShopApp!]! + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! +} + +""" +An edge in a connection. +""" +type ShopAppEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: ShopApp! +} + +type ShopChannel implements Node { + iconUrl: String + + """ + The ID for an object. + """ + id: GlobalID! + name: String + queryComplexity: Int! + queryDepth: Int! + shopifyGid: ID! +} + +""" +The connection type for ShopChannel. +""" +type ShopChannelConnection { + """ + A list of edges. + """ + edges: [ShopChannelEdge!]! + + """ + A list of nodes. + """ + nodes: [ShopChannel!]! + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! +} + +""" +An edge in a connection. +""" +type ShopChannelEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: ShopChannel! +} + +""" +The connection type for Shop. +""" +type ShopConnection { + """ + A list of edges. + """ + edges: [ShopEdge!]! + + """ + A list of nodes. + """ + nodes: [Shop!]! + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! +} + +type ShopDetails { + """ + The name of the shop. + """ + name: String! + + """ + The primary domain of the shop. + """ + primaryDomain: String + + """ + The ID of the shop in Shopify. + """ + shopifyShopId: ID! +} + +""" +An edge in a connection. +""" +type ShopEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: Shop! +} + +""" +Field options for filtering shop queries. +""" +enum ShopFilterField { + """ + The phase of the client transfer process. Requires + `store_type=client_transfer`. Values: `in_development`, `pending`, `completed`. + """ + CLIENT_TRANSFER_PHASE + + """ + The status of the collaborator relationship. Requires + `store_type=collaborator`. Values: `active`, `access_pending`, `expired`. + """ + COLLABORATOR_RELATIONSHIP_STATUS + + """ + The GID of the counterpart organization. Requires `store_type=client_transfer` or `store_type=collaborator`. + """ + COUNTERPART_ORGANIZATION_ID + + """ + The plan of the shop. Values: `basic`, `grow`, `plus`, `frozen`, `advanced`, + `inactive`, `cancelled`, `client_transfer`, `plus_client_transfer`, + `development_legacy`, `custom`, `fraudulent`, `staff`, `trial`, + `plus_development`, `retail`, `shop_pay_commerce_components`, `non_profit`. + With the `In` operator, use raw plan names (e.g. "professional,shopify_plus"). + """ + SHOP_PLAN + + """ + The active/inactive status of the shop. Values: `active`, `inactive`. + """ + STORE_STATUS + + """ + The type of the shop. Does not support the `In` operator. Values: + `development`, `production`, `app_development`, `development_superset`, + `client_transfer`, `collaborator`. + """ + STORE_TYPE +} + +""" +Represents a single filter option for shop queries. When using the `In` +operator, pass a comma-separated string of values (e.g. "value1,value2"). +Maximum 20 values. +""" +input ShopFilterInput { + field: ShopFilterField! + operator: Operator! + value: String! +} + +""" +The ID for a Shop. +""" +scalar ShopID + +type ShopIdentificationSettings { + code: String! + internalName: String! + logoImageUrl: String +} + +type ShopIdentificationSettingsDuplicationCheck { + code: ShopIdentificationSettingsErrorCode! + field: [String!]! + message: String! +} + +enum ShopIdentificationSettingsErrorCode { + """ + A matching code already exists within the orgnanization. + """ + DUPLICATE_CODE + + """ + A matching internal name already exists within the organization. + """ + DUPLICATE_INTERNAL_NAME +} + +type ShopIdentificationSettingsUpdateResult { + """ + Mutated shopify shop id. + """ + shopifyShopId: ShopifyShopID + + """ + The collection of errors. + """ + userErrors: [UserError!] +} + +""" +Field options for filtering shop property queries. +""" +enum ShopPropertyFilterField { + """ + The active/inactive status of the shop. + """ + STORE_STATUS + + """ + The type of the shop. + """ + STORE_TYPE + + """ + The test drive handle which is active. + """ + TEST_DRIVE_HANDLE_IS_ACTIVE + + """ + The test drive handle which is is inactive. + """ + TEST_DRIVE_HANDLE_IS_INACTIVE +} + +""" +Represents a single filter option for shop property queries. +""" +input ShopPropertyFilterInput { + field: ShopPropertyFilterField! + operator: Operator! + value: String! +} + +""" +Sort options for shop property queries. +""" +enum ShopPropertySort { + """ + Sort by shop name ascending. + """ + NAME_ASC + + """ + Sort by shop name descending. + """ + NAME_DESC +} + +enum ShopPropertyStatus { + ACTIVE + INACTIVE +} + +type ShopRetailData { + hasPosProSubscription: Boolean! +} + +type ShopRole implements Node { + accessConditions: [String!] + appPermissions: [String!] + hasPosAccess: Boolean + + """ + The ID for an object. + """ + id: GlobalID! + initializePos: Boolean + permissions: [String!] + queryComplexity: Int! + queryDepth: Int! + shop: Shop! +} + +""" +The connection type for ShopRole. +""" +type ShopRoleConnection { + """ + A list of edges. + """ + edges: [ShopRoleEdge!]! + + """ + A list of nodes. + """ + nodes: [ShopRole!]! + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! +} + +""" +An edge in a connection. +""" +type ShopRoleEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: ShopRole! +} + +""" +Sort options for accessible shop queries. +""" +enum ShopSort { + """ + Sort by client transfer phase ascending (in_development, pending, completed). + """ + CLIENT_TRANSFER_PHASE_ASC + + """ + Sort by client transfer phase descending (completed, pending, in_development). + """ + CLIENT_TRANSFER_PHASE_DESC + + """ + Sort by collaborator approved at ascending. + """ + COLLABORATOR_APPROVED_AT_ASC + + """ + Sort by collaborator approved at descending. + """ + COLLABORATOR_APPROVED_AT_DESC + + """ + Sort by collaborator relationship status ascending (pending, active, expired). + """ + COLLABORATOR_RELATIONSHIP_STATUS_ASC + + """ + Sort by collaborator relationship status descending (expired, active, pending). + """ + COLLABORATOR_RELATIONSHIP_STATUS_DESC + + """ + Sort by developer preview handle ascending. + """ + DEVELOPER_PREVIEW_HANDLE_ASC + + """ + Sort by developer preview handle descending. + """ + DEVELOPER_PREVIEW_HANDLE_DESC + + """ + Sort by store name ascending. + """ + NAME_ASC + + """ + Sort by store name descending. + """ + NAME_DESC + + """ + Sort by plan name ascending. + """ + PLAN_NAME_ASC + + """ + Sort by plan name descending. + """ + PLAN_NAME_DESC + + """ + Sort by shop created at ascending. + """ + SHOP_CREATED_AT_ASC + + """ + Sort by shop created at descending. + """ + SHOP_CREATED_AT_DESC + + """ + Sort by shop organization name ascending. + """ + SHOP_ORGANIZATION_NAME_ASC + + """ + Sort by shop organization name descending. + """ + SHOP_ORGANIZATION_NAME_DESC + + """ + Sort by shop plan active status ascending (active first). + """ + SHOP_PLAN_ACTIVE_STATUS_ASC + + """ + Sort by shop plan active status descending (inactive first). + """ + SHOP_PLAN_ACTIVE_STATUS_DESC + + """ + Sort by transfer target organization name ascending. + """ + TRANSFER_TARGET_ORGANIZATION_NAME_ASC + + """ + Sort by transfer target organization name descending. + """ + TRANSFER_TARGET_ORGANIZATION_NAME_DESC +} + +type ShopTheme { + isCurrentTheme: Boolean + name: String! + shopifyThemeId: String! + shopifyUpdatedAt: String! +} + +enum ShopUserAccessLevel { + """ + The shop user is the owner of the shop. + """ + ACCOUNT_OWNER + + """ + The shop user has full access. + """ + FULL_ACCESS + + """ + The shop user has limited access. + """ + LIMITED_ACCESS + + """ + The shop user has no access. + """ + NO_ACCESS + + """ + The shop user has POS access. + """ + POS_ACCESS +} + +enum ShopUserStatus { + """ + The shop user is active. + """ + ACTIVE + + """ + The shop user is pending. + """ + PENDING + + """ + The shop user is inactive. + """ + SUSPENDED +} + +type ShopifyShop { + retailConfig: RetailConfig + retailRoles: [RetailRole!] +} + +""" +The ID for a ShopifyShop. +""" +scalar ShopifyShopID + +type StaffMember { + authorizedApplications: [AuthorizedApplication!] + bio: String + hasDefaultName: Boolean + hasPin: Boolean! + id: ID! + initials: [String!] + phone: String + posEligible: Boolean + receiveAnnouncements: Boolean + recentAdminBrowserSessions: [AdminBrowserSession!] + retailData: RetailData + shopifyShop: ShopifyShop + url: String +} + +input StageOrganizationUserImportCsvUploadInput { + """ + Metadata for the CSV file to be uploaded. + """ + fileMetadata: OrganizationUserImportFileMetadataInput! +} + +type StageOrganizationUserImportCsvUploadResult { + directUploadParams: OrganizationUserImportDirectUploadParams + + """ + The collection of errors. + """ + userErrors: [UserError!] +} + +input StageSupportingDocumentUploadInput { + """ + The attachments to be uploaded. + """ + attachments: [FileAttachmentInput!]! + + """ + The country code of the entity the document is applicable to. + """ + countryCode: CountryCode + + """ + The specific type of localized document being uploaded. + """ + documentType: Document! + + """ + The name of the document. + """ + name: String + + """ + The entity the document is applicable to. Optional to support pre-staging documents before entity creation. + """ + supportedEntityId: SupportedEntityId +} + +type StageSupportingDocumentUploadResult { + directUploadParams: [DirectUploadParams!] + supportingDocument: SupportingDocument + + """ + The collection of errors. + """ + userErrors: [UserError!] +} + +enum Store { + APP_DEVELOPMENT + CLIENT_TRANSFER + COLLABORATOR + DEVELOPMENT + DEVELOPMENT_SUPERSET + PRODUCTION +} + +""" +A summary of current store access for the user. +""" +type StoreAccessSummary { + """ + Shop ids of the shop user has access to collectively. + """ + shopifyShopIds: [ShopifyShopID!] +} + +type StoreAdditionRequest implements Node { + """ + The ID for an object. + """ + id: GlobalID! + owner: PrivateData! + queryComplexity: Int! + queryDepth: Int! + shopProperty: PropertyInterface + shopifyShopExists: Boolean! + shortName: String + status: StoreAdditionRequestStatus! + storeCopyRequest: StoreCopyRequest + storeDomain: String + storeName: String! + storeType: Store +} + +""" +The connection type for StoreAdditionRequest. +""" +type StoreAdditionRequestConnection { + """ + A list of edges. + """ + edges: [StoreAdditionRequestEdge!]! + + """ + A list of nodes. + """ + nodes: [StoreAdditionRequest!]! + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! +} + +""" +An edge in a connection. +""" +type StoreAdditionRequestEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: StoreAdditionRequest! +} + +""" +The ID for a StoreAdditionRequest. +""" +scalar StoreAdditionRequestID + +""" +Sort options for store addition requests. +""" +enum StoreAdditionRequestSort { + """ + Sort by shop name ascending. + """ + NAME_ASC + + """ + Sort by shop name descending. + """ + NAME_DESC +} + +enum StoreAdditionRequestStatus { + APPROVED + PENDING + REJECTED +} + +type StoreCopyChoice implements Node { + choiceType: String! + completedObjectCount: Int + + """ + The ID for an object. + """ + id: GlobalID! + queryComplexity: Int! + queryDepth: Int! + totalObjectCount: Int + value: String! +} + +""" +The connection type for StoreCopyChoice. +""" +type StoreCopyChoiceConnection { + """ + A list of edges. + """ + edges: [StoreCopyChoiceEdge!]! + + """ + A list of nodes. + """ + nodes: [StoreCopyChoice!]! + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! +} + +""" +An edge in a connection. +""" +type StoreCopyChoiceEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: StoreCopyChoice! +} + +input StoreCopyCreationInput { + """ + Whether files should be copied to the new store. + """ + fileCopyingSelected: Boolean + + """ + Whether merchandising data should be copied to the new store. + """ + merchandisingDataCopyingSelected: Boolean + + """ + The source Shopify shop ID from which to copy data. + """ + sourceShopifyShopId: PropertyPublicID! + + """ + The theme IDs to copy from the source shop. + """ + themesToCopy: [String!] +} + +type StoreCopyRequest implements Node { + choices( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): StoreCopyChoiceConnection! + completedAt: ISO8601DateTime + + """ + The ID for an object. + """ + id: GlobalID! + queryComplexity: Int! + queryDepth: Int! + sourceShopProperty: PropertyInterface! + status: StoreCopyRequestStatus! +} + +enum StoreCopyRequestStatus { + """ + The store copy failed. + """ + FAILED + + """ + The store copy is currently in progress. + """ + IN_PROGRESS + + """ + The store copy has not started yet. + """ + PENDING + + """ + The store copy succeeded. + """ + SUCCEEDED +} + +input StoreCreatePayloadExtraInput { + """ + The Ironclad contract ID to associate with the shop at signup time. + """ + contractId: String + + """ + The app selected by the merchant during signup. + """ + selectedApp: String + + """ + The domain selected by the merchant during signup. + """ + selectedDomain: String + + """ + The plan selected by the merchant during signup. + """ + selectedPlan: String + + """ + The theme selected by the merchant during signup. + """ + selectedTheme: String +} + +input StoreCreatePayloadInput { + """ + The primary street address of the merchant where they signed up. + """ + address1: String + + """ + The secondary street address of the merchant where they signed up. + """ + address2: String + + """ + The city of the merchant where they signed up. + """ + city: String + + """ + Extra parameters associated with the store creation. + """ + extra: StoreCreatePayloadExtraInput + + """ + The state/province/region of the merchant where they signed up. + """ + province: String + + """ + The signup types associated with the store creation. + """ + signupTypes: [String!] + + """ + Tracking information associated with the store creation. + """ + trackingInformation: StoreCreatePayloadTrackingInformationInput + + """ + The postal code of the merchant where they signed up. + """ + zip: String +} + +input StoreCreatePayloadShopConversionParamsInput { + """ + Multitrack token - unique cookie for unauthenticated sites like shopify.com + """ + _y: String + + """ + To support Shopify GO during Signup, each Shopify GO promotional program has a code to identify itself. + """ + promotionalProgramCode: String + + """ + Partners distribute this promo code to their qualifying merchants under Shopify Go promotional programs. + """ + promotionalProgramPromoCode: String + ref: String + + """ + Essential token - unique cookie for unauthenticated sites like shopify.com + """ + shopifyEssential: String + + """ + The compliance zone of the merchant during the signup. + """ + signupComplianceZone: String + + """ + The consent state of the merchant during the signup. + """ + signupConsentAnalytics: Boolean + + """ + The consent state of the merchant during the signup. + """ + signupConsentMarketing: Boolean + + """ + Signup flow started on this page. + """ + signupPage: String + + """ + Page view before signup_page. + """ + signupPageReferer: String + + """ + A unique ID to link a shop with the Signup Questionnaire (SQ) or Commerce + Questionnaire (CQ) while the shop is being created. + """ + signupSessionId: String + signupSource: String + source: String + + """ + First brochure page viewed. + """ + sourceUrl: String + sourceUrlReferer: String + + """ + SSID of source or ref. + """ + ssid: String + + """ + Analytics info for merchant marketing. + """ + utmz: String +} + +input StoreCreatePayloadTrackingInformationInput { + """ + The shop conversion tracking parameters. + """ + shopConversionParams: StoreCreatePayloadShopConversionParamsInput +} + +type StoreCreation { + shopifyPermanentDomain: String + status: StoreCreationStatus! +} + +enum StoreCreationStatus { + AWAITING_CORE_STORE_READY + CALLING_CORE + COMPLETE + FAILED + FINALIZING + TIMED_OUT + USER_ERROR +} + +input StoreIdentifierInput @oneOf { + """ + Permanent domain of a shop to lookup. + """ + domain: String + + """ + ID of a store to lookup. + """ + id: ShopID +} + +""" +A summary of the permissions for a store role. +""" +type StoreRoleSummary { + accessConditions: [String!] + permissions: [AccessRolePermission!] + pointOfSaleAccess: AccessPointOfSaleAccess + recordPermissions: [AccessRoleRecordPermission!] + shopifyShopIds: [ShopifyShopID!] +} + +type StoresList { + remainingCount: Int! + selectedStores: [Shop!] + stores: [String!]! @deprecated(reason: "Use `selectedStores` instead.") +} + +scalar SupportedEntityId + +type SupportingDocument implements Node { + """ + Returns the URL of the supporting document attachment by the specified ID. + """ + attachmentUrl(id: DocumentAttachmentID!): URL + attachments( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): DocumentAttachmentConnection + countryCode: CountryCodeWithDefault! + documentType: Document! @deprecated(reason: "Use the 'supporting_document_type' field instead") + + """ + The ID for an object. + """ + id: GlobalID! + name: String + queryComplexity: Int! + queryDepth: Int! + supportingDocumentType: SupportingDocumentType! +} + +input SupportingDocumentAttachmentInput { + """ + The entity the document is applicable to. + """ + directUploadToken: String! + + """ + The linked attachment id as part of the supporting document + """ + documentAttachmentId: DocumentAttachmentID! +} + +""" +The connection type for SupportingDocument. +""" +type SupportingDocumentConnection { + """ + A list of edges. + """ + edges: [SupportingDocumentEdge!]! + + """ + A list of nodes. + """ + nodes: [SupportingDocument!]! + + """ + Information to aid in pagination. + """ + pageInfo: PageInfo! +} + +""" +An edge in a connection. +""" +type SupportingDocumentEdge { + """ + A cursor for use in pagination. + """ + cursor: String! + + """ + The item at the end of the edge. + """ + node: SupportingDocument! +} + +""" +The ID for a SupportingDocument. +""" +scalar SupportingDocumentID + +enum SupportingDocumentPagesTypeEnum { + MULTI_PAGE + SINGLE_SIDED + TWO_SIDED +} + +type SupportingDocumentType { + countryCode: CountryCodeWithDefault! + handle: Document! + name: String! + nativeName: String + pages: SupportingDocumentPagesTypeEnum! + + """ + The purposes for this document type (e.g., proof of identity, proof of address). + """ + purposes: [DocumentPurpose!]! +} + +type SyncShopTestDriveStatusResult { + success: Boolean! +} + +type Tag { + """ + Tag handle + """ + handle: String! + + """ + Tag name + """ + name: String! +} + +input TestDriveBulkUpdateInput { + """ + The handle for the test drive that is being updated. + """ + handle: String! + + """ + The mapping of a shop to its desired state for the test drive. + """ + shopStatus: [TestDriveShopStatusInput!] +} + +type TestDriveBulkUpdateResult { + """ + The affected shopify shop ids. + """ + shopifyShopIds: [ShopifyShopID!] + + """ + The collection of errors. + """ + userErrors: [UserError!] +} + +type TestDriveFeature { + autoEnableForFutureShops: Boolean! + + """ + The date and time when the feature will be automatically released. + """ + autoReleaseDate: ISO8601DateTime! + changelogUrl: URL + description: String! + editionsUrl: URL + endDate: ISO8601DateTime! + handle: String! + helpdocsUrl: URL + limitationsUrl: URL + name: String! + shopCount(storeType: Store): TestDriveShopCount! + startDate: ISO8601DateTime! + supportDocumentUrl: URL +} + +type TestDriveShopCount { + activeShops: Int! + totalShops: Int! +} + +enum TestDriveShopStatus { + ACTIVATING + ACTIVE + DEACTIVATING + INACTIVE +} + +input TestDriveShopStatusInput { + """ + The ID of the shop. + """ + shopifyShopId: PropertyPublicID! + + """ + The desired state of the shop for the test drive. + """ + status: TestDriveShopStatus! +} + +enum TfaEnforcement { + """ + TFA enforcement is fully enforced. + """ + fully_enforced + + """ + TFA enforcement is in progress. + """ + in_progress + + """ + TFA enforcement is manually enforced. + """ + manually_enforced +} + +input ToggleTestDriveForAllShopsInput { + """ + Whether all existing shops in an organization will be opted into a test drive feature. + """ + active: Boolean! + + """ + The handle of the target test drive feature. + """ + handle: String! + + """ + The store type that will be impacted by the change. + """ + storeType: Store +} + +type ToggleTestDriveForAllShopsResult { + """ + The affected shopify shop ids. + """ + shopifyShopIds: [ShopifyShopID!] + + """ + The collection of errors. + """ + userErrors: [UserError!] +} + +""" +An RFC 3986 and RFC 3987 compliant URI string. +""" +scalar URL + +input UpdateAddressInput { + """ + The first line of the address. Typically the street address or PO Box number. + """ + addressLine1: String + + """ + The second line of the address. Typically the number of the apartment, suite, or unit. + """ + addressLine2: String + + """ + The address variants. + """ + addressVariants: [AddressVariantInput!] + + """ + The name of the city, district, village, or town. + """ + city: String + + """ + The id of the address to update. + """ + id: AddressID + + """ + The zip or postal code of the address. + """ + postalCode: String + + """ + The code for the region of the address. + """ + stateOrProvince: String +} + +""" +Inputs for updating government identifiers. +""" +input UpdateGovernmentIdentifierInput { + """ + The country code of the GovernmentIdentifier. + """ + countryCode: CountryCode! + + """ + The ID of the GovernmentIdentifier to update. + """ + id: GovernmentIdentifierID! + + """ + The type of the GovernmentIdentifier. + """ + identifierType: GovernmentIdentifierTypeInput! + + """ + The value of the GovernmentIdentifier. + """ + value: String! +} + +input UpdateLegacyPartnerUserPermissionsInput { + """ + The ID of the Partner business user. + """ + businessUserId: BusinessUserID! + + """ + The permissions to disable for the Partner business user. + """ + propertyProvidersToDisable: [String!]! + + """ + The permissions to enable for the Partner business user. + """ + propertyProvidersToEnable: [String!]! +} + +type UpdateLegacyPartnerUserPermissionsResult { + """ + The ID of the updated business user. + """ + businessUserId: BusinessUserID + + """ + The collection of errors. + """ + userErrors: [UserError!] +} + +input UpdateLegalEntityInput { + """ + The updated address attributes. The country code is immutable. + """ + address: UpdateAddressInput + + """ + The category of the entity. + """ + category: ValidLegalEntityCategoryInput + id: LegalEntityID! + + """ + The individual attributes when specifying an individual entity. + """ + individual: IndividualInput + + """ + Whether the entity is registered. + """ + isRegistered: Boolean + + """ + The specific type of legal entity. + """ + legalEntityType: LegalEntityTypeInput + + """ + The legal name of the entity. + """ + legalName: String + + """ + The nickname of the entity. + """ + nickname: String + + """ + The phone number associated with the entity. + """ + phoneNumber: String + + """ + The trade name of the entity. + """ + tradeName: String @deprecated(reason: "Trade name is deprecated from Legal Entity scope and will be replaced with a shop scope field.") +} + +input UpdateOrganizationTfaEnforcementInput { + """ + The state of TFA enforcement. + """ + tfaEnforcement: String! +} + +type UpdateOrganizationTfaEnforcementResult { + """ + The organization with updated TFA enforcement. + """ + organization: Organization + + """ + The collection of errors. + """ + userErrors: [UserError!] +} + +type UpdateOrganizationUserAccessResult { + """ + The organization user IDs which were updated successfully. + """ + organizationUserIds: [OrganizationUserID!] + + """ + The collection of errors. + """ + userErrors: [UserError!] +} + +input UpdateOrganizationUserInput { + """ + List of updated administrative permissions. + """ + administrativePermissions: [String!] + + """ + The ID of the OrganizationUser to update. + """ + organizationUserId: OrganizationUserID! + + """ + The updated shop access. + """ + shopAccess: ShopAccessInput + + """ + Whether or not TFA is enforced for the OrganizationUser. + """ + tfaEnforced: Boolean +} + +type UpdateOrganizationUserResult { + """ + ID of the mutated organization user. + """ + organizationUserId: OrganizationUserID + + """ + The collection of errors. + """ + userErrors: [UserError!] +} + +input UpdateOrganizationUserRoleInput { + """ + The ID of the Organization User who is assigned a Role. + """ + organizationUserId: OrganizationUserID! + + """ + The ID of the Role to assign. + """ + roleId: RoleID! +} + +type UpdateOrganizationUserRoleResult { + """ + The organization user with the updated role. + """ + organizationUser: OrganizationUser + + """ + The collection of errors. + """ + userErrors: [UserError!] +} + +input UpdatePartnerOrganizationInput { + """ + Organization name + """ + name: String! + + """ + Organization ID. + """ + organizationId: OrganizationID! +} + +input UpdatePersonAliasInput { + """ + The alias variants of the person alias. + """ + aliasVariants: [NameVariantInput!] + + """ + The first name of the person alias. + """ + firstName: String + + """ + The ID of the person alias to update. + """ + id: PersonAliasID! + + """ + The last name of the person alias. + """ + lastName: String + + """ + The middle name of the person alias. + """ + middleName: String + + """ + The prefix of the person alias. + """ + prefix: String + + """ + The suffix of the person alias. + """ + suffix: String +} + +input UpdatePersonInput { + """ + The address of the person. + """ + address: AddressInput @deprecated(reason: "Use the `updateAddress` field instead.") + + """ + The date of birth of the person. + """ + dateOfBirth: ISO8601Date + + """ + The email associated with the person. + """ + email: String + + """ + The first name of the person. + """ + firstName: String + + """ + The id of the person. + """ + id: PersonID! + + """ + The last name of the person. + """ + lastName: String + + """ + The middle name of the person. + """ + middleName: String + + """ + The name variants of the person. If not provided, name variants are unchanged. + If provided as an empty array, all name variants are removed. + If provided with items, all name variants are replaced with the provided ones. + """ + nameVariants: [NameVariantInput!] + + """ + The nationalities of the person. + """ + nationalities: [CountryCode!] + + """ + The phone number associated with the person. + """ + phoneNumber: String + + """ + The prefix of the person. + """ + prefix: String + + """ + The suffix of the person. + """ + suffix: String + + """ + The address of the person. + """ + updateAddress: AssignOrCreateAddressInput +} + +input UpdatePrincipalInput { + """ + The address associated with the principal. + """ + applicableAddress: AssignOrCreateAddressInput + + """ + The attributes that relate to a person within the context of a business category entity. + """ + businessAttributes: BusinessPrincipalInput + + """ + The contact information associated with the principal. + """ + contactInformation: PrincipalContactInformationInput + + """ + The ID of the principal to update. + """ + id: PrincipalID! +} + +type UpdatePrincipalResult { + principal: Principal + + """ + The collection of errors. + """ + userErrors: [UserError!] +} + +input UpdateResellerRelationshipInput { + """ + The activation link for the merchant to accept the store transfer. + """ + activationLink: String + + """ + The annual resold price (required for Plus). + """ + annualResoldPrice: Decimal + + """ + The annual revenue (required for Plus). + """ + annualRevenue: Decimal + + """ + The country code. + """ + countryCode: String + + """ + Whether the relationship has been transferred to the client. + """ + isTransferred: Boolean + + """ + The legal business name (required for Plus). + """ + legalBusinessName: String + + """ + The merchant email address. + """ + merchantEmail: String + + """ + The original price of the plan. + """ + originalPlanPrice: Decimal + + """ + The currency of the plan. + """ + planCurrency: String + + """ + The name of the plan. + """ + planName: String + + """ + The number of POS Pro locations. + """ + posProLocationsCount: Int + + """ + The ID of the reseller relationship to update. + """ + resellerRelationshipId: String! + + """ + The reseller remittance price. + """ + resellerRemittancePrice: Decimal + + """ + The term length in months (required for Plus). + """ + termLengthInMonths: Int +} + +type UpdateResellerRelationshipResult { + """ + The reseller relationship that was updated. + """ + resellerRelationship: ResellerRelationshipUpdateResultField + + """ + Errors that occurred while updating the reseller relationship. + """ + userErrors: [UserError!] +} + +input UpdateRoleInput { + """ + List of updated administrative permissions. + """ + administrativePermissions: [String!] + + """ + The ID of the Role to update. + """ + id: RoleID! + + """ + The updated name of the role. + """ + name: String! + + """ + List of updated shop accesses. + """ + shopAccess: [ShopAccessInput!] +} + +type UpdateRoleResult { + """ + The updated role. + """ + role: Role + + """ + The collection of errors. + """ + userErrors: [UserError!] +} + +type UpdateSamlCertificateResult { + """ + The organization object. + """ + organization: Organization + + """ + List of user errors of update certificate operation. + """ + userErrors: [UserError!] +} + +input UpdateShopAccessProfileInput { + bio: String + canInitializePos: Boolean + + """ + The ID of the OrganizationUser whose shop access is to be updated. + """ + organizationUserId: OrganizationUserID! + + """ + The user's POS PIN for the shop. + """ + pin: String + posAccess: Boolean + posAccessEnforced: Boolean + receiveAnnouncements: Boolean + retailRoleId: ID + + """ + The ID of the shop. + """ + shopifyShopId: PropertyPublicID! + url: String +} + +type UpdateShopAccessProfileResult { + """ + ID of the mutated organization user. + """ + organizationUserId: OrganizationUserID! + + """ + ID of the updated shop access. + """ + shopifyShopId: ShopifyShopID! + + """ + The collection of errors. + """ + userErrors: [UserError!] +} + +""" +Headers of a signed file upload request. +""" +type UploadHeader { + """ + Header name. + """ + name: String! + + """ + Header value. + """ + value: String! +} + +""" +Input for upserting a government identifier +""" +input UpsertGovernmentIdentifierInput { + """ + The country code for this identifier. Required when creating a new identifier. + """ + countryCode: CountryCode + + """ + The ID of the government identifier to update. If not provided, a new identifier will be created. + """ + id: GovernmentIdentifierID + + """ + The type of government identifier. + """ + identifierType: GovernmentIdentifierTypeInput + + """ + Whether to set this government identifier as the tax filing preference for the + legal entity. Only one government identifier can be marked as the tax filing + preference at a time. + """ + taxFilingPreference: Boolean + + """ + The value of the government identifier. + """ + value: String +} + +""" +Input for upserting a legal entity with all related entities +""" +input UpsertLegalEntityInput { + """ + The address of the entity. + """ + address: AssignOrCreateAddressInput + + """ + The category of the entity (BUSINESS, INDIVIDUAL, or UNSPECIFIED). + """ + category: ValidLegalEntityCategoryInput + + """ + The country where the entity is registered. Required for create, immutable on update. + """ + countryCode: CountryCode + + """ + IDs of government identifiers to delete. + """ + deletedGovernmentIdentifierIds: [GovernmentIdentifierID!] + + """ + IDs of principals to delete. + """ + deletedPrincipalIds: [PrincipalID!] + + """ + IDs of supporting documents to delete. + """ + deletedSupportingDocumentIds: [SupportingDocumentID!] + + """ + Government identifiers for the legal entity (business types only). + """ + governmentIdentifiers: [UpsertGovernmentIdentifierInput!] + + """ + The ID of the legal entity to update. If not provided, a new entity will be created. + """ + id: LegalEntityID + + """ + The specific type of legal entity. Required for BUSINESS category. + """ + legalEntityType: LegalEntityTypeInput + + """ + The legal name of the entity. + """ + legalName: String @deprecated(reason: "Use registered_business_name instead.") + + """ + The nickname of the entity. + """ + nickname: String + + """ + The phone number associated with the entity. + """ + phoneNumber: String + + """ + Principals linked to the legal entity, each with a person. + """ + principals: [UpsertPrincipalInput!] + + """ + The registered business name of the entity. + """ + registeredBusinessName: String + + """ + IDs of pre-staged supporting documents to link to this legal entity. + """ + supportingDocumentIds: [SupportingDocumentID!] +} + +""" +Input for upserting a person alias +""" +input UpsertPersonAliasInput { + """ + Name variants for the alias (e.g., kanji/kana for Japan). + """ + aliasVariants: [NameVariantInput!] + + """ + The first name for the alias. + """ + firstName: String + + """ + The ID of the person alias to update. If not provided, a new alias will be created. + """ + id: PersonAliasID + + """ + The last name for the alias. + """ + lastName: String + + """ + The middle name for the alias. + """ + middleName: String + + """ + The name prefix for the alias. + """ + prefix: String + + """ + The name suffix for the alias. + """ + suffix: String +} + +""" +Input for upserting a person +""" +input UpsertPersonInput { + """ + The address of the person. + """ + address: AssignOrCreateAddressInput + + """ + Aliases for the person. + """ + aliases: [UpsertPersonAliasInput!] + + """ + The date of birth of the person. + """ + dateOfBirth: ISO8601Date + + """ + IDs of person aliases to delete. + """ + deletedAliasIds: [PersonAliasID!] + + """ + IDs of government identifiers to delete. + """ + deletedGovernmentIdentifierIds: [GovernmentIdentifierID!] + + """ + IDs of supporting documents to delete. + """ + deletedSupportingDocumentIds: [SupportingDocumentID!] + + """ + The personal email of the person. + """ + email: String + + """ + The first name of the person. Required for create. + """ + firstName: String + + """ + Government identifiers for the person (personal types only). + """ + governmentIdentifiers: [UpsertGovernmentIdentifierInput!] + + """ + The ID of the person to update. If not provided, a new person will be created. + """ + id: PersonID + + """ + The last name of the person. Required for create. + """ + lastName: String + + """ + The middle name of the person. + """ + middleName: String + + """ + Name variants (e.g., kanji/kana for Japan). + """ + nameVariants: [NameVariantInput!] + + """ + The nationalities of the person. + """ + nationalities: [CountryCode!] + + """ + The personal phone number of the person. + """ + phoneNumber: String + + """ + The name prefix (e.g., Mr., Mrs., Dr.). + """ + prefix: String + + """ + The name suffix (e.g., Jr., Sr., III). + """ + suffix: String + + """ + IDs of pre-staged supporting documents to link to this person. + """ + supportingDocumentIds: [SupportingDocumentID!] +} + +""" +Input for upserting a principal with nested person +""" +input UpsertPrincipalInput { + """ + The ID of an existing address to use for this principal. + """ + applicableAddressId: AddressID + + """ + The business email of the principal. + """ + email: String + + """ + The equity ownership percentage (0-100). + """ + equityOwnership: Float + + """ + The ID of the principal to update. If not provided, a new principal will be created. + """ + id: PrincipalID + + """ + The job title of the principal. + """ + jobTitle: String + + """ + The person associated with this principal. + """ + person: UpsertPersonInput + + """ + The business phone number of the principal. + """ + phoneNumber: String + + """ + The roles assigned to this principal. + """ + roles: [PrincipalRoleTypeEnum!] +} + +input UpsertTestDriveBusinessFeatureSettingInput { + """ + Whether future shops will be automatically opted into a test drive feature. + """ + autoEnableForFutureShops: Boolean + + """ + The UTC datetime when the test drive feature will be auto released for all shops in the organization + """ + autoReleaseDate: ISO8601DateTime + + """ + The handle of the target test drive feature. + """ + handle: String! +} + +type UpsertTestDriveBusinessFeatureSettingResult { + """ + Boolean indicating whether future shops will be automatically opted into a test drive. + """ + autoEnableForFutureShops: Boolean + + """ + The UTC datetime when the test drive feature will be auto released for all shops in the organization + """ + autoReleaseDate: ISO8601DateTime + + """ + The collection of errors. + """ + userErrors: [UserError!] +} + +type UserError { + """ + Error code + """ + code: String + + """ + Path to the input field which caused the error + """ + field: [String!]! + + """ + The error message + """ + message: String! +} + +""" +Field options for filtering groups queries. +""" +enum UserGroupFilterField { + """ + The store the group has access to via a role. + """ + ACCESSIBLE_STORE + + """ + The role assigned to the group. + """ + ASSIGNED_ROLE + + """ + The id of the group. + """ + ID + + """ + Whether the group uses legacy access. + """ + USES_LEGACY_ACCESS +} + +""" +Represents a single filter option for user group queries. +""" +input UserGroupFilterInput { + field: UserGroupFilterField! + operator: UserGroupFilterOperator! + value: String! +} + +""" +Operators for filtering groups queries. +""" +enum UserGroupFilterOperator { + """ + Equals operator. + """ + EQUALS + + """ + In operator. + """ + IN + + """ + Not equals operator. + """ + NOT_EQUALS +} + +""" +Sort options for user group queries. +""" +enum UserGroupSort { + """ + Sort by name ascending. + """ + NAME_ASC + + """ + Sort by name descending. + """ + NAME_DESC + + """ + Sort by user count ascending. + """ + USER_COUNT_ASC + + """ + Sort by user count descending. + """ + USER_COUNT_DESC +} + +type UserLimits { + """ + Whether the user limit is enforced. + """ + enforced: Boolean + + """ + The maximum number of users allowed. + """ + maxAllowed: Int! + + """ + The number of used users seats in the organization. + """ + used: Int! +} + +enum UserSamlEnforcementState { + """ + This user cannot use SAML. + """ + OFF + + """ + This user is required to use SAML. + """ + REQUIRED + + """ + This user may be required to use SAML. + """ + SPECIFIC_USERS + + """ + This user is updating to be unable to use SAML. + """ + UPDATING_TO_OFF + + """ + This user is updating to be required to use SAML. + """ + UPDATING_TO_REQUIRED +} + +type UserShopAccessDetails { + shopAccess: ShopAccess + staffMember: StaffMember +} + +enum ValidLegalEntityCategoryInput { + BUSINESS + INDIVIDUAL + UNSPECIFIED +} diff --git a/packages/store/src/cli/api/graphql/business-platform-organizations/queries/poll_store_creation.graphql b/packages/store/src/cli/api/graphql/business-platform-organizations/queries/poll_store_creation.graphql new file mode 100644 index 00000000000..9ce8bfaa94a --- /dev/null +++ b/packages/store/src/cli/api/graphql/business-platform-organizations/queries/poll_store_creation.graphql @@ -0,0 +1,8 @@ +query PollStoreCreation($shopDomain: String!) { + organization { + id + storeCreation(shopDomain: $shopDomain) { + status + } + } +} diff --git a/packages/store/src/cli/commands/store/create/dev.test.ts b/packages/store/src/cli/commands/store/create/dev.test.ts new file mode 100644 index 00000000000..fd4a45b00b5 --- /dev/null +++ b/packages/store/src/cli/commands/store/create/dev.test.ts @@ -0,0 +1,88 @@ +import StoreCreateDev from './dev.js' +import {createDevStore} from '../../../services/store/create/dev.js' +import {AbortError} from '@shopify/cli-kit/node/error' +import {outputResult} from '@shopify/cli-kit/node/output' +import {describe, expect, test, vi} from 'vitest' + +vi.mock('../../../services/store/create/dev.js') + +vi.mock('@shopify/cli-kit/node/output', async (importOriginal) => { + const actual: Record = await importOriginal() + return { + ...actual, + outputResult: vi.fn(), + } +}) + +describe('store create dev command', () => { + test('passes parsed flags through to the service', async () => { + await StoreCreateDev.run(['--name', 'my-test-store']) + + expect(createDevStore).toHaveBeenCalledWith({ + name: 'my-test-store', + organization: undefined, + json: false, + }) + }) + + test('passes organization flag through to the service', async () => { + await StoreCreateDev.run(['--name', 'my-test-store', '--organization', '12345']) + + expect(createDevStore).toHaveBeenCalledWith({ + name: 'my-test-store', + organization: '12345', + json: false, + }) + }) + + test('passes json flag through to the service', async () => { + await StoreCreateDev.run(['--name', 'my-test-store', '--json']) + + expect(createDevStore).toHaveBeenCalledWith({ + name: 'my-test-store', + organization: undefined, + json: true, + }) + }) + + test('defines the expected flags', () => { + expect(StoreCreateDev.flags.name).toBeDefined() + expect(StoreCreateDev.flags.organization).toBeDefined() + expect(StoreCreateDev.flags.json).toBeDefined() + }) + + test('outputs structured JSON error when --json is active and service throws AbortError', async () => { + vi.mocked(createDevStore).mockRejectedValueOnce(new AbortError('Something went wrong')) + const mockExit = vi.spyOn(process, 'exit').mockImplementation((() => { + throw new Error('process.exit') + }) as never) + + await expect(StoreCreateDev.run(['--name', 'my-test-store', '--json'])).rejects.toThrow('process.exit') + + const call = vi.mocked(outputResult).mock.calls[0]![0] as string + const parsed = JSON.parse(call) + expect(parsed).toEqual({ + error: true, + message: 'Something went wrong', + nextSteps: [], + exitCode: 1, + }) + expect(mockExit).toHaveBeenCalledWith(1) + + mockExit.mockRestore() + }) + + test('does not output JSON for non-AbortError even when --json is active', async () => { + vi.mocked(createDevStore).mockRejectedValueOnce(new Error('unexpected')) + + await expect(StoreCreateDev.run(['--name', 'my-test-store', '--json'])).rejects.toThrow() + expect(vi.mocked(outputResult)).not.toHaveBeenCalled() + }) + + test('does not output JSON for AbortError when --json is not active', async () => { + vi.mocked(createDevStore).mockRejectedValueOnce(new AbortError('Something went wrong')) + + await expect(StoreCreateDev.run(['--name', 'my-test-store'])).rejects.toThrow() + expect(vi.mocked(outputResult)).not.toHaveBeenCalled() + }) +}) diff --git a/packages/store/src/cli/commands/store/create/dev.ts b/packages/store/src/cli/commands/store/create/dev.ts new file mode 100644 index 00000000000..324f1347273 --- /dev/null +++ b/packages/store/src/cli/commands/store/create/dev.ts @@ -0,0 +1,57 @@ +import {createDevStore} from '../../../services/store/create/dev.js' +import Command from '@shopify/cli-kit/node/base-command' +import {globalFlags, jsonFlag} from '@shopify/cli-kit/node/cli' +import {AbortError} from '@shopify/cli-kit/node/error' +import {outputResult} from '@shopify/cli-kit/node/output' +import {Flags} from '@oclif/core' + +export default class StoreCreateDev extends Command { + static summary = 'Create a new development store.' + + static descriptionWithMarkdown = 'Creates a new app development store in your organization.' + + static description = this.descriptionWithoutMarkdown() + + static flags = { + ...globalFlags, + ...jsonFlag, + name: Flags.string({ + description: 'Name for the new development store.', + required: true, + env: 'SHOPIFY_FLAG_STORE_NAME', + }), + organization: Flags.string({ + description: + 'The organization to create the store in (numeric ID). Auto-selects if you belong to a single org.', + env: 'SHOPIFY_FLAG_ORGANIZATION', + }), + } + + async run(): Promise { + const {flags} = await this.parse(StoreCreateDev) + try { + await createDevStore({ + name: flags.name, + organization: flags.organization, + json: flags.json, + }) + } catch (error) { + if (flags.json && error instanceof AbortError) { + outputResult( + JSON.stringify( + { + error: true, + message: error.message, + nextSteps: error.nextSteps ?? [], + exitCode: 1, + }, + null, + 2, + ), + ) + process.exit(1) + } + throw error + } + } +} diff --git a/packages/store/src/cli/services/store/create/dev.test.ts b/packages/store/src/cli/services/store/create/dev.test.ts new file mode 100644 index 00000000000..1b0fde4e65f --- /dev/null +++ b/packages/store/src/cli/services/store/create/dev.test.ts @@ -0,0 +1,238 @@ +import {createDevStore} from './dev.js' +import {describe, expect, test, vi, beforeEach} from 'vitest' + +vi.mock('@shopify/organizations', () => ({ + selectOrg: vi.fn(), +})) + +vi.mock('@shopify/cli-kit/node/api/business-platform', () => ({ + businessPlatformOrganizationsRequestDoc: vi.fn(), +})) + +vi.mock('@shopify/cli-kit/node/session', () => ({ + ensureAuthenticatedBusinessPlatform: vi.fn(), +})) + +vi.mock('@shopify/cli-kit/node/ui', () => ({ + renderSingleTask: vi.fn(), + renderSuccess: vi.fn(), +})) + +vi.mock('@shopify/cli-kit/node/output', async (importOriginal) => { + const actual: Record = await importOriginal() + return { + ...actual, + outputResult: vi.fn(), + } +}) + +vi.mock('@shopify/cli-kit/node/system', () => ({ + sleep: vi.fn(), +})) + +import {selectOrg} from '@shopify/organizations' +import {businessPlatformOrganizationsRequestDoc} from '@shopify/cli-kit/node/api/business-platform' +import {ensureAuthenticatedBusinessPlatform} from '@shopify/cli-kit/node/session' +import {renderSingleTask, renderSuccess} from '@shopify/cli-kit/node/ui' +import {outputResult} from '@shopify/cli-kit/node/output' +import {sleep} from '@shopify/cli-kit/node/system' + +const defaultOrg = {id: '123', businessName: 'Test Org'} +const defaultMutationResult = { + createAppDevelopmentStore: { + shopAdminUrl: 'https://test-store.myshopify.com/admin', + shopDomain: 'test-store.myshopify.com', + userErrors: [], + }, +} + +beforeEach(() => { + vi.mocked(selectOrg).mockResolvedValue(defaultOrg) + vi.mocked(ensureAuthenticatedBusinessPlatform).mockResolvedValue('test-token') + vi.mocked(businessPlatformOrganizationsRequestDoc).mockResolvedValue(defaultMutationResult) + vi.mocked(renderSingleTask).mockImplementation(async ({task}) => { + return task(() => {}) + }) + vi.mocked(sleep).mockResolvedValue(undefined) +}) + +describe('createDevStore', () => { + test('creates a development store and renders success', async () => { + vi.mocked(businessPlatformOrganizationsRequestDoc) + .mockResolvedValueOnce(defaultMutationResult) + .mockResolvedValueOnce({ + organization: {id: '123', storeCreation: {status: 'COMPLETE'}}, + }) + + await createDevStore({name: 'test-store', json: false}) + + expect(selectOrg).toHaveBeenCalledWith(undefined) + expect(ensureAuthenticatedBusinessPlatform).toHaveBeenCalled() + expect(businessPlatformOrganizationsRequestDoc).toHaveBeenCalledWith( + expect.objectContaining({ + query: expect.anything(), + token: 'test-token', + organizationId: '123', + variables: { + shopName: 'test-store', + priceLookupKey: 'SHOPIFY_PLUS_APP_DEVELOPMENT', + prepopulateTestData: false, + }, + }), + ) + expect(renderSuccess).toHaveBeenCalledWith( + expect.objectContaining({ + headline: expect.stringContaining('test-store'), + }), + ) + }) + + test('outputs JSON when --json flag is set', async () => { + vi.mocked(businessPlatformOrganizationsRequestDoc) + .mockResolvedValueOnce(defaultMutationResult) + .mockResolvedValueOnce({ + organization: {id: '123', storeCreation: {status: 'COMPLETE'}}, + }) + + await createDevStore({name: 'test-store', json: true}) + + expect(outputResult).toHaveBeenCalledWith( + expect.stringContaining('"domain": "test-store.myshopify.com"'), + ) + expect(renderSuccess).not.toHaveBeenCalled() + }) + + test('throws AbortError when mutation returns null createAppDevelopmentStore', async () => { + vi.mocked(businessPlatformOrganizationsRequestDoc).mockResolvedValueOnce({ + createAppDevelopmentStore: null, + }) + + await expect(createDevStore({name: 'test-store', json: false})).rejects.toThrow( + 'unexpected empty response', + ) + }) + + test('throws AbortError when mutation returns userErrors', async () => { + vi.mocked(businessPlatformOrganizationsRequestDoc).mockResolvedValueOnce({ + createAppDevelopmentStore: { + shopAdminUrl: null, + shopDomain: null, + userErrors: [{code: 'INVALID', field: ['shopName'], message: 'Name is taken'}], + }, + }) + + await expect(createDevStore({name: 'test-store', json: false})).rejects.toThrow('Name is taken') + }) + + test('throws AbortError when mutation returns no shopDomain', async () => { + vi.mocked(businessPlatformOrganizationsRequestDoc).mockResolvedValueOnce({ + createAppDevelopmentStore: { + shopAdminUrl: null, + shopDomain: null, + userErrors: [], + }, + }) + + await expect(createDevStore({name: 'test-store', json: false})).rejects.toThrow( + 'no shop domain was returned', + ) + }) + + test('throws AbortError when polling returns FAILED status', async () => { + vi.mocked(businessPlatformOrganizationsRequestDoc) + .mockResolvedValueOnce(defaultMutationResult) + .mockResolvedValueOnce({ + organization: {id: '123', storeCreation: {status: 'FAILED'}}, + }) + + await expect(createDevStore({name: 'test-store', json: false})).rejects.toThrow( + 'Store creation failed with status: FAILED', + ) + }) + + test('throws AbortError when polling returns TIMED_OUT status', async () => { + vi.mocked(businessPlatformOrganizationsRequestDoc) + .mockResolvedValueOnce(defaultMutationResult) + .mockResolvedValueOnce({ + organization: {id: '123', storeCreation: {status: 'TIMED_OUT'}}, + }) + + await expect(createDevStore({name: 'test-store', json: false})).rejects.toThrow( + 'Store creation failed with status: TIMED_OUT', + ) + }) + + test('throws AbortError when polling returns USER_ERROR status', async () => { + vi.mocked(businessPlatformOrganizationsRequestDoc) + .mockResolvedValueOnce(defaultMutationResult) + .mockResolvedValueOnce({ + organization: {id: '123', storeCreation: {status: 'USER_ERROR'}}, + }) + + await expect(createDevStore({name: 'test-store', json: false})).rejects.toThrow( + 'Store creation failed with status: USER_ERROR', + ) + }) + + test('throws AbortError when polling times out after 5 minutes', async () => { + const realDateNow = Date.now + let callCount = 0 + vi.spyOn(Date, 'now').mockImplementation(() => { + callCount++ + // First call returns start time, second call exceeds timeout + if (callCount <= 1) return 0 + return 6 * 60 * 1000 + }) + + vi.mocked(businessPlatformOrganizationsRequestDoc).mockResolvedValueOnce(defaultMutationResult) + + await expect(createDevStore({name: 'test-store', json: false})).rejects.toThrow( + 'Store creation timed out after 5 minutes', + ) + + Date.now = realDateNow + }) + + test('passes organization flag to selectOrg', async () => { + vi.mocked(businessPlatformOrganizationsRequestDoc) + .mockResolvedValueOnce(defaultMutationResult) + .mockResolvedValueOnce({ + organization: {id: '123', storeCreation: {status: 'COMPLETE'}}, + }) + + await createDevStore({name: 'test-store', organization: '456', json: false}) + + expect(selectOrg).toHaveBeenCalledWith('456') + }) + + test('calls sleep with 2 seconds between polls', async () => { + vi.mocked(businessPlatformOrganizationsRequestDoc) + .mockResolvedValueOnce(defaultMutationResult) + .mockResolvedValueOnce({ + organization: {id: '123', storeCreation: {status: 'CALLING_CORE'}}, + }) + .mockResolvedValueOnce({ + organization: {id: '123', storeCreation: {status: 'COMPLETE'}}, + }) + + await createDevStore({name: 'test-store', json: false}) + + expect(sleep).toHaveBeenCalledWith(2) + }) + + test('renders progress to stderr via renderOptions', async () => { + vi.mocked(businessPlatformOrganizationsRequestDoc) + .mockResolvedValueOnce(defaultMutationResult) + .mockResolvedValueOnce({ + organization: {id: '123', storeCreation: {status: 'COMPLETE'}}, + }) + + await createDevStore({name: 'test-store', json: false}) + + expect(renderSingleTask).toHaveBeenCalledWith( + expect.objectContaining({ + renderOptions: {stdout: process.stderr}, + }), + ) + }) +}) diff --git a/packages/store/src/cli/services/store/create/dev.ts b/packages/store/src/cli/services/store/create/dev.ts new file mode 100644 index 00000000000..f2bd68fe36c --- /dev/null +++ b/packages/store/src/cli/services/store/create/dev.ts @@ -0,0 +1,148 @@ +import {CreateAppDevelopmentStore} from '../../../api/graphql/business-platform-organizations/generated/create_app_development_store.js' +import { + PollStoreCreation, + PollStoreCreationQuery, +} from '../../../api/graphql/business-platform-organizations/generated/poll_store_creation.js' +import {selectOrg} from '@shopify/organizations' +import {businessPlatformOrganizationsRequestDoc} from '@shopify/cli-kit/node/api/business-platform' +import {ensureAuthenticatedBusinessPlatform} from '@shopify/cli-kit/node/session' +import {renderSingleTask, renderSuccess} from '@shopify/cli-kit/node/ui' +import {outputContent, outputResult} from '@shopify/cli-kit/node/output' +import {AbortError} from '@shopify/cli-kit/node/error' +import {sleep} from '@shopify/cli-kit/node/system' + +const POLL_INTERVAL_SECONDS = 2 +const POLL_TIMEOUT_MS = 5 * 60 * 1000 + +interface CreateDevStoreOptions { + name: string + organization?: string + json: boolean +} + +type StoreCreationStatus = NonNullable< + NonNullable['storeCreation']>['status'] +> + +function friendlyStatus(status: StoreCreationStatus): string { + switch (status) { + case 'CALLING_CORE': + return 'Initiating store creation...' + case 'AWAITING_CORE_STORE_READY': + return 'Waiting for store to be ready...' + case 'FINALIZING': + return 'Finalizing store setup...' + case 'COMPLETE': + return 'Store creation complete!' + case 'FAILED': + return 'Store creation failed.' + case 'TIMED_OUT': + return 'Store creation timed out.' + case 'USER_ERROR': + return 'Store creation encountered a user error.' + default: + return `Store creation status: ${status}` + } +} + +export async function createDevStore(options: CreateDevStoreOptions): Promise { + const org = await selectOrg(options.organization) + const token = await ensureAuthenticatedBusinessPlatform() + const unauthorizedHandler = { + type: 'token_refresh' as const, + handler: async () => { + const newToken = await ensureAuthenticatedBusinessPlatform() + return {token: newToken} + }, + } + + const mutationResult = await businessPlatformOrganizationsRequestDoc({ + query: CreateAppDevelopmentStore, + token, + organizationId: org.id, + variables: { + shopName: options.name, + priceLookupKey: 'SHOPIFY_PLUS_APP_DEVELOPMENT', + prepopulateTestData: false, + }, + unauthorizedHandler, + }) + + const createAppDevelopmentStore = mutationResult.createAppDevelopmentStore + if (!createAppDevelopmentStore) { + throw new AbortError('Store creation failed: unexpected empty response.') + } + const userErrors = createAppDevelopmentStore.userErrors + if (userErrors && userErrors.length > 0) { + const messages = userErrors.map((e) => e.message).join(', ') + throw new AbortError(`Failed to create development store: ${messages}`) + } + + const {shopDomain, shopAdminUrl} = createAppDevelopmentStore + if (!shopDomain) { + throw new AbortError('Store creation succeeded but no shop domain was returned.') + } + + await renderSingleTask({ + title: outputContent`Waiting for store to be ready...`, + task: async (updateStatus) => { + const startTime = Date.now() + // eslint-disable-next-line no-constant-condition + while (true) { + if (Date.now() - startTime > POLL_TIMEOUT_MS) { + throw new AbortError('Store creation timed out after 5 minutes.') + } + + const pollResult = await businessPlatformOrganizationsRequestDoc({ + query: PollStoreCreation, + token, + organizationId: org.id, + variables: {shopDomain}, + unauthorizedHandler, + }) + + const status = pollResult.organization?.storeCreation?.status + if (!status) { + throw new AbortError('Unable to determine store creation status.') + } + + if (status === 'COMPLETE') { + return + } + if (status === 'FAILED' || status === 'TIMED_OUT' || status === 'USER_ERROR') { + throw new AbortError(`Store creation failed with status: ${status}`) + } + + updateStatus(outputContent`${friendlyStatus(status)}`) + + await sleep(POLL_INTERVAL_SECONDS) + } + }, + renderOptions: {stdout: process.stderr}, + }) + + if (options.json) { + outputResult( + JSON.stringify( + { + store: { + name: options.name, + domain: shopDomain, + adminUrl: shopAdminUrl, + }, + organization: { + id: org.id, + name: org.businessName, + }, + }, + null, + 2, + ), + ) + } else { + renderSuccess({ + headline: `Development store "${options.name}" created successfully.`, + body: [`Domain: ${shopDomain}`, `Admin: ${shopAdminUrl ?? 'N/A'}`], + }) + } +} diff --git a/packages/store/src/index.ts b/packages/store/src/index.ts index 73e67d78154..ef0fadc5413 100644 --- a/packages/store/src/index.ts +++ b/packages/store/src/index.ts @@ -1,8 +1,10 @@ import StoreAuth from './cli/commands/store/auth.js' +import StoreCreateDev from './cli/commands/store/create/dev.js' import StoreExecute from './cli/commands/store/execute.js' const COMMANDS = { 'store:auth': StoreAuth, + 'store:create:dev': StoreCreateDev, 'store:execute': StoreExecute, } diff --git a/packages/store/tsconfig.json b/packages/store/tsconfig.json index ea7490fa22f..b860755b2f5 100644 --- a/packages/store/tsconfig.json +++ b/packages/store/tsconfig.json @@ -8,6 +8,7 @@ "tsBuildInfoFile": "dist/tsconfig.tsbuildinfo" }, "references": [ - {"path": "../cli-kit"} + {"path": "../cli-kit"}, + {"path": "../organizations"} ] } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 110258ddca7..d174ef86b65 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -642,12 +642,18 @@ importers: packages/store: dependencies: + '@graphql-typed-document-node/core': + specifier: 3.2.0 + version: 3.2.0(graphql@16.10.0) '@oclif/core': specifier: 4.5.3 version: 4.5.3 '@shopify/cli-kit': specifier: 3.93.0 version: link:../cli-kit + '@shopify/organizations': + specifier: 3.93.0 + version: link:../organizations devDependencies: '@vitest/coverage-istanbul': specifier: ^3.1.4 From ce418397c238abcde7786186df984edad5349504 Mon Sep 17 00:00:00 2001 From: Ariel Caplan Date: Fri, 17 Apr 2026 11:38:36 +0300 Subject: [PATCH 2/2] Save schema updates --- .../organizations_schema.graphql | 97 +++++++++++++++++++ 1 file changed, 97 insertions(+) diff --git a/packages/store/src/cli/api/graphql/business-platform-organizations/organizations_schema.graphql b/packages/store/src/cli/api/graphql/business-platform-organizations/organizations_schema.graphql index e41e152ebdb..b334fce217c 100644 --- a/packages/store/src/cli/api/graphql/business-platform-organizations/organizations_schema.graphql +++ b/packages/store/src/cli/api/graphql/business-platform-organizations/organizations_schema.graphql @@ -11235,6 +11235,17 @@ type Organization implements Node { id: ShopifyShopID! ): Shop + """ + Distinct raw plan_name values across all shops accessible to the current user. + """ + accessibleShopPlans( + """ + Distinct raw plan_name values for the requested accessible store type.When + store_type is omitted, returns plan names from owned shops only. + """ + storeType: Store + ): [String!]! + """ Returns a list of shops that the user has access to. """ @@ -11415,6 +11426,56 @@ type Organization implements Node { """ bulkData: BulkData! + """ + Organizations connected to this organization through client transfers - whether as the transferring or receiving party. + """ + clientTransferOrganizations( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): OrganizationReferenceConnection! + + """ + Organizations on the other side of collaborator relationships with this organization. + """ + collaboratorOrganizations( + """ + Returns the elements in the list that come after the specified cursor. + """ + after: String + + """ + Returns the elements in the list that come before the specified cursor. + """ + before: String + + """ + Returns the first _n_ elements from the list. + """ + first: Int + + """ + Returns the last _n_ elements from the list. + """ + last: Int + ): OrganizationReferenceConnection! + """ Returns the collaborator relationship for the organization and the given shop. """ @@ -12473,6 +12534,11 @@ enum OrganizationTransferOwnershipErrorCode { """ NOT_FOUND + """ + The user is pending deletion. Ownership can't be transferred to them. + """ + PENDING_DELETION + """ Email matches current organization owner. """ @@ -14222,6 +14288,7 @@ type PropertyResult { } enum PropertyTransfer { + AFFILIATE_TRANSFER EXTERNAL INTERNAL PARTNER_HANDOFF @@ -15928,6 +15995,11 @@ type Shop implements PropertyInterface { """ userLimits: UserLimits! usersCount: Int! + + """ + The vibe coding partner app installed on the shop, if any. + """ + vibeApp: VibeApp } type ShopAccess { @@ -16183,6 +16255,11 @@ enum ShopFilterField { """ COUNTERPART_ORGANIZATION_ID + """ + The GID of the owning organization of the shop. + """ + OWNER_ORGANIZATION_ID + """ The plan of the shop. Values: `basic`, `grow`, `plus`, `frozen`, `advanced`, `inactive`, `cancelled`, `client_transfer`, `plus_client_transfer`, @@ -18305,3 +18382,23 @@ enum ValidLegalEntityCategoryInput { INDIVIDUAL UNSPECIFIED } + +""" +A vibe coding partner app +""" +type VibeApp { + """ + URL to the app's Shopify App Store listing + """ + appStoreUrl: String + + """ + URL to the app's icon image + """ + iconUrl: String + + """ + Name of the vibe app + """ + name: String! +}