diff --git a/.gitignore b/.gitignore index 0ce4a2985cfcb22940734b9a8920e07fdfd0e3cb..672f0c68053d1cc0aaeafe03cf1cc0b10f6dd675 100644 --- a/.gitignore +++ b/.gitignore @@ -22,6 +22,4 @@ vite.config.ts.timestamp-* static/*.jpg - - -.vscode +src/graphql.d.ts diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000000000000000000000000000000000000..4824881b2f6da037cfd8333090e8aeb109803b6f --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,4 @@ +{ + "typescript.tsdk": "node_modules/typescript/lib", + "typescript.enablePromptUseWorkspaceTsdk": true +} diff --git a/package.json b/package.json index c4514859c1fe0b650a15ff750732d24c1783028a..68277343b1a8c91cba01540c252c58d1ffa73a12 100644 --- a/package.json +++ b/package.json @@ -11,14 +11,15 @@ "start": "node build", "dev": "vite dev", "build": "vite build", - "prebuild": "npm run pull-schema", + "prebuild": "npm run schema && npm run graphql-dts", "preview": "vite preview", "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json", "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch", "lint": "prettier --check . && eslint .", "format": "prettier --write .", "schema-env": "gql.tada generate-schema $API_ORIGIN/graphql/v0 --header \"Authorization: Basic $API_TOKEN\" -o src/lib/graphql/schema.gql", - "schema": "dotenv -- pnpm run schema-env" + "schema": "dotenv -- pnpm run schema-env", + "graphql-dts": "gql.tada generate-output" }, "devDependencies": { "@sveltejs/adapter-node": "^5.2.2", diff --git a/src/graphql-env.d.ts b/src/graphql-env.d.ts deleted file mode 100644 index f31f53d14db1246d35d944290b989c45ada0e663..0000000000000000000000000000000000000000 --- a/src/graphql-env.d.ts +++ /dev/null @@ -1,110 +0,0 @@ -/* eslint-disable */ -/* prettier-ignore */ - -export type introspection_types = { - 'Account': { kind: 'UNION'; name: 'Account'; fields: {}; possibleTypes: 'Group' | 'User'; }; - 'AccountId': { kind: 'INPUT_OBJECT'; name: 'AccountId'; isOneOf: false; inputFields: [{ name: 'uuid'; type: { kind: 'SCALAR'; name: 'UUID'; ofType: null; }; defaultValue: null }, { name: 'id'; type: { kind: 'SCALAR'; name: 'SmolStr'; ofType: null; }; defaultValue: null }]; }; - 'Address': { kind: 'OBJECT'; name: 'Address'; fields: { 'accountUuid': { name: 'accountUuid'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'UUID'; ofType: null; }; } }; 'country': { name: 'country'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'formatted': { name: 'formatted'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'locality': { name: 'locality'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'name': { name: 'name'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'postalCode': { name: 'postalCode'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'region': { name: 'region'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'streetAddress': { name: 'streetAddress'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; }; }; - 'Base64': unknown; - 'Boolean': unknown; - 'BooleanFilter': { kind: 'INPUT_OBJECT'; name: 'BooleanFilter'; isOneOf: false; inputFields: [{ name: 'eq'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; }; defaultValue: null }]; }; - 'BuildInfo': { kind: 'OBJECT'; name: 'BuildInfo'; fields: { 'ref': { name: 'ref'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'sha': { name: 'sha'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; }; }; - 'ClaimAccess': { name: 'ClaimAccess'; enumValues: 'NONE' | 'READ' | 'WRITE' | 'CREATE' | 'DELETE'; }; - 'CreateGroup': { kind: 'INPUT_OBJECT'; name: 'CreateGroup'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Identifier'; ofType: null; }; }; defaultValue: null }, { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'type'; type: { kind: 'ENUM'; name: 'GroupType'; ofType: null; }; defaultValue: null }]; }; - 'CreateToken': { kind: 'INPUT_OBJECT'; name: 'CreateToken'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'description'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'globalAccess'; type: { kind: 'ENUM'; name: 'ClaimAccess'; ofType: null; }; defaultValue: null }, { name: 'allowedIps'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; }; defaultValue: null }, { name: 'claims'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'NewTokenClaim'; ofType: null; }; }; }; defaultValue: null }]; }; - 'CreateTraining': { kind: 'INPUT_OBJECT'; name: 'CreateTraining'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Identifier'; ofType: null; }; }; defaultValue: null }, { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'fullName'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }]; }; - 'CreateUnixAccount': { kind: 'INPUT_OBJECT'; name: 'CreateUnixAccount'; isOneOf: false; inputFields: [{ name: 'vhost'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }]; }; - 'CreateUser': { kind: 'INPUT_OBJECT'; name: 'CreateUser'; isOneOf: false; inputFields: [{ name: 'password'; type: { kind: 'INPUT_OBJECT'; name: 'Password'; ofType: null; }; defaultValue: null }, { name: 'familyName'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'givenName'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'promotion'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; }; defaultValue: null }, { name: 'trainingId'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Identifier'; ofType: null; }; }; defaultValue: null }]; }; - 'CurrentGroupRole': { name: 'CurrentGroupRole'; enumValues: 'MEMBER' | 'ADMIN' | 'BOARD_MEMBER' | 'OWNER'; }; - 'Date': unknown; - 'DateTime': unknown; - 'DateTimeFilter': { kind: 'INPUT_OBJECT'; name: 'DateTimeFilter'; isOneOf: false; inputFields: [{ name: 'gt'; type: { kind: 'SCALAR'; name: 'LocalDateTime'; ofType: null; }; defaultValue: null }, { name: 'eq'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'LocalDateTime'; ofType: null; }; }; }; defaultValue: null }, { name: 'lt'; type: { kind: 'SCALAR'; name: 'LocalDateTime'; ofType: null; }; defaultValue: null }]; }; - 'Float': unknown; - 'FromNull': { name: 'FromNull'; enumValues: 'NUMBER' | 'STRING' | 'BOOLEAN' | 'LIST' | 'OBJECT'; }; - 'Gender': { name: 'Gender'; enumValues: 'MALE' | 'FEMALE' | 'NON_BINARY' | 'UNKNOWN'; }; - 'GenderFilter': { kind: 'INPUT_OBJECT'; name: 'GenderFilter'; isOneOf: false; inputFields: [{ name: 'isIn'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'Gender'; ofType: null; }; }; }; }; defaultValue: null }]; }; - 'GlobalValues': { kind: 'OBJECT'; name: 'GlobalValues'; fields: { 'evenSemester': { name: 'evenSemester'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; 'integration': { name: 'integration'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; 'schoolYear': { name: 'schoolYear'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; }; }; - 'Group': { kind: 'OBJECT'; name: 'Group'; fields: { 'active': { name: 'active'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; 'backgroundImage': { name: 'backgroundImage'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Url'; ofType: null; }; } }; 'backgroundImageThumbnailHash': { name: 'backgroundImageThumbnailHash'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Base64'; ofType: null; }; } }; 'createdAt': { name: 'createdAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; 'description': { name: 'description'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'email': { name: 'email'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'hidden': { name: 'hidden'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Identifier'; ofType: null; }; } }; 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'picture': { name: 'picture'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Url'; ofType: null; }; } }; 'pictureThumbnailHash': { name: 'pictureThumbnailHash'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Base64'; ofType: null; }; } }; 'profile': { name: 'profile'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Url'; ofType: null; }; } }; 'shortDescription': { name: 'shortDescription'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'type': { name: 'type'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'GroupType'; ofType: null; }; } }; 'unixAccount': { name: 'unixAccount'; type: { kind: 'OBJECT'; name: 'UnixAccount'; ofType: null; } }; 'updatedAt': { name: 'updatedAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; 'uuid': { name: 'uuid'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'UUID'; ofType: null; }; } }; 'website': { name: 'website'; type: { kind: 'SCALAR'; name: 'Url'; ofType: null; } }; }; }; - 'GroupConnection': { kind: 'OBJECT'; name: 'GroupConnection'; fields: { 'edges': { name: 'edges'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'GroupEdge'; ofType: null; }; }; }; } }; 'nodes': { name: 'nodes'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Group'; ofType: null; }; }; }; } }; 'pageInfo': { name: 'pageInfo'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'PageInfo'; ofType: null; }; } }; 'remainingCount': { name: 'remainingCount'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; }; }; - 'GroupEdge': { kind: 'OBJECT'; name: 'GroupEdge'; fields: { 'cursor': { name: 'cursor'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'node': { name: 'node'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Group'; ofType: null; }; } }; 'remainingCount': { name: 'remainingCount'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; }; }; - 'GroupFilter': { kind: 'INPUT_OBJECT'; name: 'GroupFilter'; isOneOf: false; inputFields: [{ name: 'uuid'; type: { kind: 'INPUT_OBJECT'; name: 'UuidFilter'; ofType: null; }; defaultValue: null }, { name: 'name'; type: { kind: 'INPUT_OBJECT'; name: 'TextFilter'; ofType: null; }; defaultValue: null }, { name: 'type'; type: { kind: 'INPUT_OBJECT'; name: 'GroupTypeFilter'; ofType: null; }; defaultValue: null }, { name: 'shortDescription'; type: { kind: 'INPUT_OBJECT'; name: 'NullableTextFilter'; ofType: null; }; defaultValue: null }, { name: 'description'; type: { kind: 'INPUT_OBJECT'; name: 'NullableTextFilter'; ofType: null; }; defaultValue: null }, { name: 'active'; type: { kind: 'INPUT_OBJECT'; name: 'BooleanFilter'; ofType: null; }; defaultValue: null }, { name: 'accountUuid'; type: { kind: 'INPUT_OBJECT'; name: 'UuidFilter'; ofType: null; }; defaultValue: null }, { name: 'unixAccount'; type: { kind: 'INPUT_OBJECT'; name: 'UnixAccountFilter'; ofType: null; }; defaultValue: null }, { name: 'id'; type: { kind: 'INPUT_OBJECT'; name: 'TextFilter'; ofType: null; }; defaultValue: null }, { name: 'email'; type: { kind: 'INPUT_OBJECT'; name: 'TextFilter'; ofType: null; }; defaultValue: null }, { name: 'emailVerified'; type: { kind: 'INPUT_OBJECT'; name: 'BooleanFilter'; ofType: null; }; defaultValue: null }, { name: 'website'; type: { kind: 'INPUT_OBJECT'; name: 'NullableTextFilter'; ofType: null; }; defaultValue: null }, { name: 'hidden'; type: { kind: 'INPUT_OBJECT'; name: 'BooleanFilter'; ofType: null; }; defaultValue: null }, { name: 'createdAt'; type: { kind: 'INPUT_OBJECT'; name: 'DateTimeFilter'; ofType: null; }; defaultValue: null }, { name: 'updatedAt'; type: { kind: 'INPUT_OBJECT'; name: 'DateTimeFilter'; ofType: null; }; defaultValue: null }, { name: 'or'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'GroupFilter'; ofType: null; }; }; }; defaultValue: null }]; }; - 'GroupId': { kind: 'INPUT_OBJECT'; name: 'GroupId'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'SCALAR'; name: 'SmolStr'; ofType: null; }; defaultValue: null }, { name: 'email'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'uuid'; type: { kind: 'SCALAR'; name: 'UUID'; ofType: null; }; defaultValue: null }]; }; - 'GroupOfMember': { kind: 'OBJECT'; name: 'GroupOfMember'; fields: { 'group': { name: 'group'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Group'; ofType: null; }; } }; 'isAdmin': { name: 'isAdmin'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; 'isBoardMember': { name: 'isBoardMember'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; 'isOwner': { name: 'isOwner'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; 'role': { name: 'role'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'CurrentGroupRole'; ofType: null; }; } }; 'since': { name: 'since'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Date'; ofType: null; }; } }; }; }; - 'GroupOfMemberFilter': { kind: 'INPUT_OBJECT'; name: 'GroupOfMemberFilter'; isOneOf: false; inputFields: [{ name: 'role'; type: { kind: 'ENUM'; name: 'CurrentGroupRole'; ofType: null; }; defaultValue: null }, { name: 'since'; type: { kind: 'INPUT_OBJECT'; name: 'NeverDateFilter'; ofType: null; }; defaultValue: null }, { name: 'strictRole'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; }; defaultValue: "false" }]; }; - 'GroupRole': { name: 'GroupRole'; enumValues: 'GONE' | 'MEMBER' | 'ADMIN' | 'BOARD_MEMBER' | 'OWNER'; }; - 'GroupType': { name: 'GroupType'; enumValues: 'ASSOCIATION' | 'CLUB' | 'COMMISSION' | 'LIST' | 'HOME' | 'OTHER' | 'UNKNOWN'; }; - 'GroupTypeFilter': { kind: 'INPUT_OBJECT'; name: 'GroupTypeFilter'; isOneOf: false; inputFields: [{ name: 'isIn'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'GroupType'; ofType: null; }; }; }; }; defaultValue: null }]; }; - 'Health': { kind: 'OBJECT'; name: 'Health'; fields: { 'db': { name: 'db'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; }; }; - 'HistoricalGroupOfMember': { kind: 'OBJECT'; name: 'HistoricalGroupOfMember'; fields: { 'group': { name: 'group'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Group'; ofType: null; }; } }; 'role': { name: 'role'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'GroupRole'; ofType: null; }; } }; 'since': { name: 'since'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Date'; ofType: null; }; } }; }; }; - 'HistoricalGroupOfMemberFilter': { kind: 'INPUT_OBJECT'; name: 'HistoricalGroupOfMemberFilter'; isOneOf: false; inputFields: [{ name: 'role'; type: { kind: 'ENUM'; name: 'GroupRole'; ofType: null; }; defaultValue: null }, { name: 'since'; type: { kind: 'INPUT_OBJECT'; name: 'NeverDateFilter'; ofType: null; }; defaultValue: null }, { name: 'strictRole'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; }; defaultValue: "false" }]; }; - 'HistoricalMemberOfGroup': { kind: 'OBJECT'; name: 'HistoricalMemberOfGroup'; fields: { 'role': { name: 'role'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'GroupRole'; ofType: null; }; } }; 'since': { name: 'since'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Date'; ofType: null; }; } }; 'user': { name: 'user'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'User'; ofType: null; }; } }; }; }; - 'Identifier': unknown; - 'Int': unknown; - 'Int16Filter': { kind: 'INPUT_OBJECT'; name: 'Int16Filter'; isOneOf: false; inputFields: [{ name: 'gt'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }, { name: 'eq'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; }; }; defaultValue: null }, { name: 'lt'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }]; }; - 'LevenshteinFilter': { kind: 'INPUT_OBJECT'; name: 'LevenshteinFilter'; isOneOf: false; inputFields: [{ name: 'value'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'threshold'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }]; }; - 'LocalDateTime': unknown; - 'Mutation': { kind: 'OBJECT'; name: 'Mutation'; fields: { 'addClaims': { name: 'addClaims'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Token'; ofType: null; }; } }; 'addGroupMemberRole': { name: 'addGroupMemberRole'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'HistoricalMemberOfGroup'; ofType: null; }; } }; 'copyClaims': { name: 'copyClaims'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Token'; ofType: null; }; } }; 'createGroup': { name: 'createGroup'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Group'; ofType: null; }; } }; 'createGroupUnixAccount': { name: 'createGroupUnixAccount'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'UnixAccount'; ofType: null; }; } }; 'createToken': { name: 'createToken'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'PlainToken'; ofType: null; }; } }; 'createTraining': { name: 'createTraining'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Training'; ofType: null; }; } }; 'createUser': { name: 'createUser'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'User'; ofType: null; }; } }; 'createUserUnixAccount': { name: 'createUserUnixAccount'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'UnixAccount'; ofType: null; }; } }; 'deleteClaims': { name: 'deleteClaims'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Token'; ofType: null; }; } }; 'deleteGroup': { name: 'deleteGroup'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; 'deleteToken': { name: 'deleteToken'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'deleteTraining': { name: 'deleteTraining'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'deleteUser': { name: 'deleteUser'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'endOfIntegration': { name: 'endOfIntegration'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; 'evenSemester': { name: 'evenSemester'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; 'newYear': { name: 'newYear'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'regenerateToken': { name: 'regenerateToken'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'PlainToken'; ofType: null; }; } }; 'status': { name: 'status'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'updateGroup': { name: 'updateGroup'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Group'; ofType: null; }; } }; 'updateToken': { name: 'updateToken'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Token'; ofType: null; }; } }; 'updateTraining': { name: 'updateTraining'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Training'; ofType: null; }; } }; 'updateUnixAccount': { name: 'updateUnixAccount'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'UnixAccount'; ofType: null; }; } }; 'updateUser': { name: 'updateUser'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'User'; ofType: null; }; } }; }; }; - 'NeverDateFilter': { kind: 'INPUT_OBJECT'; name: 'NeverDateFilter'; isOneOf: false; inputFields: [{ name: 'gt'; type: { kind: 'SCALAR'; name: 'Date'; ofType: null; }; defaultValue: null }, { name: 'eq'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Date'; ofType: null; }; }; }; defaultValue: null }, { name: 'lt'; type: { kind: 'SCALAR'; name: 'Date'; ofType: null; }; defaultValue: null }]; }; - 'NewTokenClaim': { kind: 'INPUT_OBJECT'; name: 'NewTokenClaim'; isOneOf: false; inputFields: [{ name: 'claim'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'access'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'ClaimAccess'; ofType: null; }; }; defaultValue: null }]; }; - 'NullableDateFilter': { kind: 'INPUT_OBJECT'; name: 'NullableDateFilter'; isOneOf: false; inputFields: [{ name: 'null'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; defaultValue: null }, { name: 'day'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }, { name: 'month'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }, { name: 'gt'; type: { kind: 'SCALAR'; name: 'Date'; ofType: null; }; defaultValue: null }, { name: 'eq'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Date'; ofType: null; }; }; }; defaultValue: null }, { name: 'lt'; type: { kind: 'SCALAR'; name: 'Date'; ofType: null; }; defaultValue: null }]; }; - 'NullableDateTimeFilter': { kind: 'INPUT_OBJECT'; name: 'NullableDateTimeFilter'; isOneOf: false; inputFields: [{ name: 'null'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; defaultValue: null }, { name: 'gt'; type: { kind: 'SCALAR'; name: 'LocalDateTime'; ofType: null; }; defaultValue: null }, { name: 'eq'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'LocalDateTime'; ofType: null; }; }; }; defaultValue: null }, { name: 'lt'; type: { kind: 'SCALAR'; name: 'LocalDateTime'; ofType: null; }; defaultValue: null }]; }; - 'NullableFilter': { kind: 'INPUT_OBJECT'; name: 'NullableFilter'; isOneOf: false; inputFields: [{ name: 'null'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; defaultValue: null }]; }; - 'NullableTextFilter': { kind: 'INPUT_OBJECT'; name: 'NullableTextFilter'; isOneOf: false; inputFields: [{ name: 'null'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; defaultValue: null }, { name: 'like'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; }; defaultValue: null }, { name: 'notLike'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; }; defaultValue: null }, { name: 'similar'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'SimilarFilter'; ofType: null; }; }; }; defaultValue: null }, { name: 'levenshtein'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'LevenshteinFilter'; ofType: null; }; }; }; defaultValue: null }]; }; - 'OrderByGroup': { name: 'OrderByGroup'; enumValues: 'UUID' | 'ID' | 'NAME' | 'CREATED_AT' | 'UPDATED_AT'; }; - 'OrderByUser': { name: 'OrderByUser'; enumValues: 'UUID' | 'ID' | 'GIVEN_NAME' | 'FAMILY_NAME' | 'NICKNAME' | 'BIRTH_DATE' | 'PROMOTION' | 'YEAR' | 'CREATED_AT' | 'UPDATED_AT' | 'LAST_USED_AT'; }; - 'PageInfo': { kind: 'OBJECT'; name: 'PageInfo'; fields: { 'endCursor': { name: 'endCursor'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'hasNextPage': { name: 'hasNextPage'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; 'hasPreviousPage': { name: 'hasPreviousPage'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; 'startCursor': { name: 'startCursor'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; }; }; - 'Password': { kind: 'INPUT_OBJECT'; name: 'Password'; isOneOf: false; inputFields: [{ name: 'hash'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'plain'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }]; }; - 'PlainToken': { kind: 'OBJECT'; name: 'PlainToken'; fields: { 'base64': { name: 'base64'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'raw': { name: 'raw'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; }; }; - 'Query': { kind: 'OBJECT'; name: 'Query'; fields: { 'account': { name: 'account'; type: { kind: 'UNION'; name: 'Account'; ofType: null; } }; 'buildInfo': { name: 'buildInfo'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'BuildInfo'; ofType: null; }; } }; 'currentToken': { name: 'currentToken'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Token'; ofType: null; }; } }; 'globalsValues': { name: 'globalsValues'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'GlobalValues'; ofType: null; }; } }; 'group': { name: 'group'; type: { kind: 'OBJECT'; name: 'Group'; ofType: null; } }; 'groups': { name: 'groups'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'GroupConnection'; ofType: null; }; } }; 'health': { name: 'health'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Health'; ofType: null; }; } }; 'oAuthAppOwner': { name: 'oAuthAppOwner'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'UNION'; name: 'Account'; ofType: null; }; } }; 'token': { name: 'token'; type: { kind: 'OBJECT'; name: 'Token'; ofType: null; } }; 'tokens': { name: 'tokens'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Token'; ofType: null; }; }; }; } }; 'trainings': { name: 'trainings'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Training'; ofType: null; }; }; }; } }; 'user': { name: 'user'; type: { kind: 'OBJECT'; name: 'User'; ofType: null; } }; 'users': { name: 'users'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'UserConnection'; ofType: null; }; } }; }; }; - 'SimilarFilter': { kind: 'INPUT_OBJECT'; name: 'SimilarFilter'; isOneOf: false; inputFields: [{ name: 'value'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; defaultValue: null }, { name: 'threshold'; type: { kind: 'SCALAR'; name: 'Float'; ofType: null; }; defaultValue: null }]; }; - 'SmolStr': unknown; - 'String': unknown; - 'TextFilter': { kind: 'INPUT_OBJECT'; name: 'TextFilter'; isOneOf: false; inputFields: [{ name: 'like'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; }; defaultValue: null }, { name: 'notLike'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; }; defaultValue: null }, { name: 'similar'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'SimilarFilter'; ofType: null; }; }; }; defaultValue: null }, { name: 'levenshtein'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'LevenshteinFilter'; ofType: null; }; }; }; defaultValue: null }]; }; - 'Token': { kind: 'OBJECT'; name: 'Token'; fields: { 'allowedIps': { name: 'allowedIps'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; }; } }; 'claims': { name: 'claims'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'TokenClaim'; ofType: null; }; }; }; } }; 'description': { name: 'description'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'globalAccess': { name: 'globalAccess'; type: { kind: 'ENUM'; name: 'ClaimAccess'; ofType: null; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'tokenHash': { name: 'tokenHash'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'uuid': { name: 'uuid'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'UUID'; ofType: null; }; } }; }; }; - 'TokenClaim': { kind: 'OBJECT'; name: 'TokenClaim'; fields: { 'access': { name: 'access'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'ClaimAccess'; ofType: null; }; } }; 'claim': { name: 'claim'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; }; }; - 'TokenId': { kind: 'INPUT_OBJECT'; name: 'TokenId'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'SCALAR'; name: 'SmolStr'; ofType: null; }; defaultValue: null }, { name: 'uuid'; type: { kind: 'SCALAR'; name: 'UUID'; ofType: null; }; defaultValue: null }, { name: 'globalAccess'; type: { kind: 'ENUM'; name: 'ClaimAccess'; ofType: null; }; defaultValue: null }]; }; - 'Training': { kind: 'OBJECT'; name: 'Training'; fields: { 'fullName': { name: 'fullName'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Identifier'; ofType: null; }; } }; 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'uuid': { name: 'uuid'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'UUID'; ofType: null; }; } }; }; }; - 'TrainingId': { kind: 'INPUT_OBJECT'; name: 'TrainingId'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'SCALAR'; name: 'SmolStr'; ofType: null; }; defaultValue: null }, { name: 'uuid'; type: { kind: 'SCALAR'; name: 'UUID'; ofType: null; }; defaultValue: null }]; }; - 'UUID': unknown; - 'UnixAccount': { kind: 'OBJECT'; name: 'UnixAccount'; fields: { 'accountUuid': { name: 'accountUuid'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'UUID'; ofType: null; }; } }; 'uid': { name: 'uid'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'vhost': { name: 'vhost'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'website': { name: 'website'; type: { kind: 'SCALAR'; name: 'Url'; ofType: null; } }; }; }; - 'UnixAccountFilter': { kind: 'INPUT_OBJECT'; name: 'UnixAccountFilter'; isOneOf: false; inputFields: [{ name: 'null'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; defaultValue: null }, { name: 'uuid'; type: { kind: 'INPUT_OBJECT'; name: 'UuidFilter'; ofType: null; }; defaultValue: null }, { name: 'uid'; type: { kind: 'INPUT_OBJECT'; name: 'Int16Filter'; ofType: null; }; defaultValue: null }, { name: 'vhost'; type: { kind: 'INPUT_OBJECT'; name: 'TextFilter'; ofType: null; }; defaultValue: null }]; }; - 'UnixAccountId': { kind: 'INPUT_OBJECT'; name: 'UnixAccountId'; isOneOf: false; inputFields: [{ name: 'uid'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }, { name: 'uuid'; type: { kind: 'SCALAR'; name: 'UUID'; ofType: null; }; defaultValue: null }]; }; - 'UpdateGroup': { kind: 'INPUT_OBJECT'; name: 'UpdateGroup'; isOneOf: false; inputFields: [{ name: 'name'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'type'; type: { kind: 'ENUM'; name: 'GroupType'; ofType: null; }; defaultValue: null }, { name: 'shortDescription'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'description'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'active'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; defaultValue: null }, { name: 'id'; type: { kind: 'SCALAR'; name: 'Identifier'; ofType: null; }; defaultValue: null }, { name: 'email'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'emailVerified'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; defaultValue: null }, { name: 'website'; type: { kind: 'SCALAR'; name: 'Url'; ofType: null; }; defaultValue: null }, { name: 'hidden'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; defaultValue: null }]; }; - 'UpdateToken': { kind: 'INPUT_OBJECT'; name: 'UpdateToken'; isOneOf: false; inputFields: [{ name: 'id'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'description'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'allowedIps'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; }; }; defaultValue: null }]; }; - 'UpdateTraining': { kind: 'INPUT_OBJECT'; name: 'UpdateTraining'; isOneOf: false; inputFields: [{ name: 'name'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'fullName'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }]; }; - 'UpdateUnixAccount': { kind: 'INPUT_OBJECT'; name: 'UpdateUnixAccount'; isOneOf: false; inputFields: [{ name: 'uid'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }, { name: 'vhost'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }]; }; - 'UpdateUser': { kind: 'INPUT_OBJECT'; name: 'UpdateUser'; isOneOf: false; inputFields: [{ name: 'password'; type: { kind: 'INPUT_OBJECT'; name: 'Password'; ofType: null; }; defaultValue: null }, { name: 'givenNameAtBirth'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'givenNameInUse'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'middleName'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'familyName'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'nickname'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'gender'; type: { kind: 'ENUM'; name: 'Gender'; ofType: null; }; defaultValue: null }, { name: 'birthdate'; type: { kind: 'SCALAR'; name: 'Date'; ofType: null; }; defaultValue: null }, { name: 'zoneinfo'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'locale'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'schoolLogin'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'phoneNumber'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'phoneNumberVerified'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; defaultValue: null }, { name: 'initialPromotion'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }, { name: 'gapYear'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }, { name: 'diplomaYearDuration'; type: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; defaultValue: null }, { name: 'trainingId'; type: { kind: 'SCALAR'; name: 'SmolStr'; ofType: null; }; defaultValue: null }, { name: 'extendedTrialPeriod'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; defaultValue: null }, { name: 'aeiieMember'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; defaultValue: null }, { name: 'suspended'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; defaultValue: null }, { name: 'public'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; defaultValue: null }, { name: 'lastUsedAt'; type: { kind: 'SCALAR'; name: 'LocalDateTime'; ofType: null; }; defaultValue: null }, { name: 'id'; type: { kind: 'SCALAR'; name: 'Identifier'; ofType: null; }; defaultValue: null }, { name: 'email'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'emailVerified'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; defaultValue: null }, { name: 'website'; type: { kind: 'SCALAR'; name: 'Url'; ofType: null; }; defaultValue: null }, { name: 'hidden'; type: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; defaultValue: null }]; }; - 'Url': unknown; - 'Urn': unknown; - 'User': { kind: 'OBJECT'; name: 'User'; fields: { 'address': { name: 'address'; type: { kind: 'OBJECT'; name: 'Address'; ofType: null; } }; 'aeiieMember': { name: 'aeiieMember'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; 'backgroundImage': { name: 'backgroundImage'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Url'; ofType: null; }; } }; 'backgroundImageThumbnailHash': { name: 'backgroundImageThumbnailHash'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Base64'; ofType: null; }; } }; 'birthdate': { name: 'birthdate'; type: { kind: 'SCALAR'; name: 'Date'; ofType: null; } }; 'civilName': { name: 'civilName'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'createdAt': { name: 'createdAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; 'diplomaYearDuration': { name: 'diplomaYearDuration'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'email': { name: 'email'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'emailForwardAddress': { name: 'emailForwardAddress'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'emailVerified': { name: 'emailVerified'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; 'extendedTrialPeriod': { name: 'extendedTrialPeriod'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; 'familyName': { name: 'familyName'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'forenames': { name: 'forenames'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'gapYear': { name: 'gapYear'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'gender': { name: 'gender'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'ENUM'; name: 'Gender'; ofType: null; }; } }; 'givenName': { name: 'givenName'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'givenNameAtBirth': { name: 'givenNameAtBirth'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'givenNameInUse': { name: 'givenNameInUse'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'group': { name: 'group'; type: { kind: 'OBJECT'; name: 'GroupOfMember'; ofType: null; } }; 'groupHistory': { name: 'groupHistory'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'HistoricalGroupOfMember'; ofType: null; }; }; }; } }; 'groups': { name: 'groups'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'GroupOfMember'; ofType: null; }; }; }; } }; 'hidden': { name: 'hidden'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; 'id': { name: 'id'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Identifier'; ofType: null; }; } }; 'initialPromotion': { name: 'initialPromotion'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'lastUsedAt': { name: 'lastUsedAt'; type: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; } }; 'locale': { name: 'locale'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'middleName': { name: 'middleName'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'name': { name: 'name'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'nickname': { name: 'nickname'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'oAuthGroup': { name: 'oAuthGroup'; type: { kind: 'OBJECT'; name: 'GroupOfMember'; ofType: null; } }; 'passwordHash': { name: 'passwordHash'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'phoneNumber': { name: 'phoneNumber'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; } }; 'phoneNumberVerified': { name: 'phoneNumberVerified'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; 'photo': { name: 'photo'; type: { kind: 'SCALAR'; name: 'Url'; ofType: null; } }; 'photoThumbnailHash': { name: 'photoThumbnailHash'; type: { kind: 'SCALAR'; name: 'Base64'; ofType: null; } }; 'picture': { name: 'picture'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Url'; ofType: null; }; } }; 'pictureThumbnailHash': { name: 'pictureThumbnailHash'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Base64'; ofType: null; }; } }; 'preferredNickname': { name: 'preferredNickname'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'preferredUsername': { name: 'preferredUsername'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'profile': { name: 'profile'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Url'; ofType: null; }; } }; 'promotion': { name: 'promotion'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'restrictedAccess': { name: 'restrictedAccess'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; 'schoolEmail': { name: 'schoolEmail'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'schoolLogin': { name: 'schoolLogin'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'semester': { name: 'semester'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'suspended': { name: 'suspended'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Boolean'; ofType: null; }; } }; 'training': { name: 'training'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'Training'; ofType: null; }; } }; 'trialPeriodDaysLeft': { name: 'trialPeriodDaysLeft'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'unixAccount': { name: 'unixAccount'; type: { kind: 'OBJECT'; name: 'UnixAccount'; ofType: null; } }; 'updatedAt': { name: 'updatedAt'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'DateTime'; ofType: null; }; } }; 'uuid': { name: 'uuid'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'UUID'; ofType: null; }; } }; 'website': { name: 'website'; type: { kind: 'SCALAR'; name: 'Url'; ofType: null; } }; 'year': { name: 'year'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; 'zoneinfo': { name: 'zoneinfo'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; }; }; - 'UserConnection': { kind: 'OBJECT'; name: 'UserConnection'; fields: { 'edges': { name: 'edges'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'UserEdge'; ofType: null; }; }; }; } }; 'nodes': { name: 'nodes'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'User'; ofType: null; }; }; }; } }; 'pageInfo': { name: 'pageInfo'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'PageInfo'; ofType: null; }; } }; 'remainingCount': { name: 'remainingCount'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; }; }; - 'UserEdge': { kind: 'OBJECT'; name: 'UserEdge'; fields: { 'cursor': { name: 'cursor'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'String'; ofType: null; }; } }; 'node': { name: 'node'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'OBJECT'; name: 'User'; ofType: null; }; } }; 'remainingCount': { name: 'remainingCount'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'Int'; ofType: null; }; } }; }; }; - 'UserFilter': { kind: 'INPUT_OBJECT'; name: 'UserFilter'; isOneOf: false; inputFields: [{ name: 'uuid'; type: { kind: 'INPUT_OBJECT'; name: 'UuidFilter'; ofType: null; }; defaultValue: null }, { name: 'givenName'; type: { kind: 'INPUT_OBJECT'; name: 'TextFilter'; ofType: null; }; defaultValue: null }, { name: 'givenNameInUse'; type: { kind: 'INPUT_OBJECT'; name: 'NullableTextFilter'; ofType: null; }; defaultValue: null }, { name: 'givenNameAtBirth'; type: { kind: 'INPUT_OBJECT'; name: 'TextFilter'; ofType: null; }; defaultValue: null }, { name: 'middleName'; type: { kind: 'INPUT_OBJECT'; name: 'NullableTextFilter'; ofType: null; }; defaultValue: null }, { name: 'familyName'; type: { kind: 'INPUT_OBJECT'; name: 'TextFilter'; ofType: null; }; defaultValue: null }, { name: 'nickname'; type: { kind: 'INPUT_OBJECT'; name: 'NullableTextFilter'; ofType: null; }; defaultValue: null }, { name: 'gender'; type: { kind: 'INPUT_OBJECT'; name: 'GenderFilter'; ofType: null; }; defaultValue: null }, { name: 'birthdate'; type: { kind: 'INPUT_OBJECT'; name: 'NullableDateFilter'; ofType: null; }; defaultValue: null }, { name: 'zoneinfo'; type: { kind: 'INPUT_OBJECT'; name: 'TextFilter'; ofType: null; }; defaultValue: null }, { name: 'locale'; type: { kind: 'INPUT_OBJECT'; name: 'TextFilter'; ofType: null; }; defaultValue: null }, { name: 'pictureThumbnailHash'; type: { kind: 'INPUT_OBJECT'; name: 'NullableFilter'; ofType: null; }; defaultValue: null }, { name: 'backgroundThumbnailHash'; type: { kind: 'INPUT_OBJECT'; name: 'NullableFilter'; ofType: null; }; defaultValue: null }, { name: 'photoThumbnailHash'; type: { kind: 'INPUT_OBJECT'; name: 'NullableFilter'; ofType: null; }; defaultValue: null }, { name: 'phoneNumber'; type: { kind: 'INPUT_OBJECT'; name: 'NullableTextFilter'; ofType: null; }; defaultValue: null }, { name: 'phoneNumberVerified'; type: { kind: 'INPUT_OBJECT'; name: 'BooleanFilter'; ofType: null; }; defaultValue: null }, { name: 'schoolLogin'; type: { kind: 'INPUT_OBJECT'; name: 'TextFilter'; ofType: null; }; defaultValue: null }, { name: 'promotion'; type: { kind: 'INPUT_OBJECT'; name: 'Int16Filter'; ofType: null; }; defaultValue: null }, { name: 'initialPromotion'; type: { kind: 'INPUT_OBJECT'; name: 'Int16Filter'; ofType: null; }; defaultValue: null }, { name: 'gapYear'; type: { kind: 'INPUT_OBJECT'; name: 'Int16Filter'; ofType: null; }; defaultValue: null }, { name: 'year'; type: { kind: 'INPUT_OBJECT'; name: 'Int16Filter'; ofType: null; }; defaultValue: null }, { name: 'diplomaYearDuration'; type: { kind: 'INPUT_OBJECT'; name: 'Int16Filter'; ofType: null; }; defaultValue: null }, { name: 'semester'; type: { kind: 'INPUT_OBJECT'; name: 'Int16Filter'; ofType: null; }; defaultValue: null }, { name: 'training'; type: { kind: 'INPUT_OBJECT'; name: 'TextFilter'; ofType: null; }; defaultValue: null }, { name: 'aeiieMember'; type: { kind: 'INPUT_OBJECT'; name: 'BooleanFilter'; ofType: null; }; defaultValue: null }, { name: 'trialPeriodDaysLeft'; type: { kind: 'INPUT_OBJECT'; name: 'Int16Filter'; ofType: null; }; defaultValue: null }, { name: 'extendedTrialPeriod'; type: { kind: 'INPUT_OBJECT'; name: 'BooleanFilter'; ofType: null; }; defaultValue: null }, { name: 'restrictedAccess'; type: { kind: 'INPUT_OBJECT'; name: 'BooleanFilter'; ofType: null; }; defaultValue: null }, { name: 'suspended'; type: { kind: 'INPUT_OBJECT'; name: 'BooleanFilter'; ofType: null; }; defaultValue: null }, { name: 'public'; type: { kind: 'INPUT_OBJECT'; name: 'BooleanFilter'; ofType: null; }; defaultValue: null }, { name: 'lastUsedAt'; type: { kind: 'INPUT_OBJECT'; name: 'NullableDateTimeFilter'; ofType: null; }; defaultValue: null }, { name: 'groups'; type: { kind: 'INPUT_OBJECT'; name: 'UserGroupsFilter'; ofType: null; }; defaultValue: null }, { name: 'accountUuid'; type: { kind: 'INPUT_OBJECT'; name: 'UuidFilter'; ofType: null; }; defaultValue: null }, { name: 'unixAccount'; type: { kind: 'INPUT_OBJECT'; name: 'UnixAccountFilter'; ofType: null; }; defaultValue: null }, { name: 'id'; type: { kind: 'INPUT_OBJECT'; name: 'TextFilter'; ofType: null; }; defaultValue: null }, { name: 'email'; type: { kind: 'INPUT_OBJECT'; name: 'TextFilter'; ofType: null; }; defaultValue: null }, { name: 'emailVerified'; type: { kind: 'INPUT_OBJECT'; name: 'BooleanFilter'; ofType: null; }; defaultValue: null }, { name: 'website'; type: { kind: 'INPUT_OBJECT'; name: 'NullableTextFilter'; ofType: null; }; defaultValue: null }, { name: 'hidden'; type: { kind: 'INPUT_OBJECT'; name: 'BooleanFilter'; ofType: null; }; defaultValue: null }, { name: 'createdAt'; type: { kind: 'INPUT_OBJECT'; name: 'DateTimeFilter'; ofType: null; }; defaultValue: null }, { name: 'updatedAt'; type: { kind: 'INPUT_OBJECT'; name: 'DateTimeFilter'; ofType: null; }; defaultValue: null }, { name: 'or'; type: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'INPUT_OBJECT'; name: 'UserFilter'; ofType: null; }; }; }; defaultValue: null }]; }; - 'UserGroupsFilter': { kind: 'INPUT_OBJECT'; name: 'UserGroupsFilter'; isOneOf: false; inputFields: [{ name: 'uuid'; type: { kind: 'INPUT_OBJECT'; name: 'UuidFilter'; ofType: null; }; defaultValue: null }, { name: 'id'; type: { kind: 'INPUT_OBJECT'; name: 'TextFilter'; ofType: null; }; defaultValue: null }, { name: 'name'; type: { kind: 'INPUT_OBJECT'; name: 'TextFilter'; ofType: null; }; defaultValue: null }, { name: 'type'; type: { kind: 'INPUT_OBJECT'; name: 'GroupTypeFilter'; ofType: null; }; defaultValue: null }, { name: 'active'; type: { kind: 'INPUT_OBJECT'; name: 'BooleanFilter'; ofType: null; }; defaultValue: null }, { name: 'hidden'; type: { kind: 'INPUT_OBJECT'; name: 'BooleanFilter'; ofType: null; }; defaultValue: null }]; }; - 'UserId': { kind: 'INPUT_OBJECT'; name: 'UserId'; isOneOf: false; inputFields: [{ name: 'uuid'; type: { kind: 'SCALAR'; name: 'UUID'; ofType: null; }; defaultValue: null }, { name: 'id'; type: { kind: 'SCALAR'; name: 'SmolStr'; ofType: null; }; defaultValue: null }, { name: 'personalEmail'; type: { kind: 'SCALAR'; name: 'String'; ofType: null; }; defaultValue: null }, { name: 'urn'; type: { kind: 'SCALAR'; name: 'Urn'; ofType: null; }; defaultValue: null }]; }; - 'UuidFilter': { kind: 'INPUT_OBJECT'; name: 'UuidFilter'; isOneOf: false; inputFields: [{ name: 'isIn'; type: { kind: 'NON_NULL'; name: never; ofType: { kind: 'LIST'; name: never; ofType: { kind: 'NON_NULL'; name: never; ofType: { kind: 'SCALAR'; name: 'UUID'; ofType: null; }; }; }; }; defaultValue: null }]; }; -}; - -/** An IntrospectionQuery representation of your schema. - * - * @remarks - * This is an introspection of your schema saved as a file by GraphQLSP. - * It will automatically be used by `gql.tada` to infer the types of your GraphQL documents. - * If you need to reuse this data or update your `scalars`, update `tadaOutputLocation` to - * instead save to a .ts instead of a .d.ts file. - */ -export type introspection = { - name: never; - query: 'Query'; - mutation: 'Mutation'; - subscription: never; - types: introspection_types; -}; - -import * as gqlTada from 'gql.tada'; - -declare module 'gql.tada' { - interface setupSchema { - introspection: introspection; - } -} diff --git a/src/lib/graphql/schema.gql b/src/lib/graphql/schema.gql index e5981e2c2c1761e68f0485f2fd2e0f0464393c3f..f4ff494fd70623d284bcaa851d3fb9158b00c888 100644 --- a/src/lib/graphql/schema.gql +++ b/src/lib/graphql/schema.gql @@ -17,199 +17,15 @@ Indicates that an Input Object is a OneOf Input Object (and thus requires """ directive @oneOf on INPUT_OBJECT -union Account = User | Group - -input AccountId { - uuid: UUID - id: SmolStr -} - -type Address { - """ - # **ADMIN ONLY** - ## UUID interne de l'adresse - - Par exemple, `72c612f8-1d07-432e-8f71-60584be51f40` - """ - accountUuid: UUID! - - """ - ## Nom de l'adresse - Le nom usuel de l'adresse s'il existe. Limite de **64** caractères. - - Par exemple, `Pyroloc` ou `Résidence "Les Estudines du Parc"`. - """ - name: String - - """ - ## Adresse postale complète de l'adresse - Formatée pour être affichée ou utilisée sur une étiquette d'envoi. - Ce champ PEUT contenir plusieurs lignes, séparées par des retours à la ligne. - Les nouvelles lignes peuvent être représentées soit par une paire retour - chariot/saut de ligne ("\r\n"), soit par un seul caractère de saut de ligne ("\n"). - """ - formatted: String! - - """ - ## Rue de l'adresse - Composante complète de l'adresse de la rue, qui PEUT inclure le numéro de la maison, - le nom de la rue, la boîte postale et des informations sur plusieurs lignes concernant - l'adresse de la rue. Ce champ PEUT contenir plusieurs lignes, séparées par des retours - à la ligne. Les nouvelles lignes peuvent être représentées soit par une paire retour - chariot/saut de ligne ("\r\n"), soit par un seul caractère de saut de ligne ("\n"). - """ - streetAddress: String! - - """ - ## Ville ou localité de l'adresse - """ - locality: String! - - """ - ## Région de l'adresse - Province, de la préfecture ou région. - """ - region: String - - """ - ## Code postal de l'adresse - """ - postalCode: String! - - """ - ## Pays de l'adresse - """ - country: String! -} - -""" -Base64 [RFC4648](https://www.rfc-editor.org/rfc/rfc4648) -""" -scalar Base64 - -input BooleanFilter { - eq: Boolean! -} - type BuildInfo { ref: String sha: String } -""" -Rôles dans un group -""" -enum ClaimAccess { - """ - Aucun - """ - NONE - - """ - Lecture - """ - READ - - """ - Écriture - """ - WRITE - - """ - Création - """ - CREATE - - """ - Suppression - """ - DELETE -} - -input CreateGroup { - id: Identifier! - name: String! - type: GroupType -} - -input CreateToken { - id: String! - description: String! - globalAccess: ClaimAccess - allowedIps: [String!] - claims: [NewTokenClaim!] -} - -input CreateTraining { - id: Identifier! - name: String! - fullName: String -} - input CreateUnixAccount { vhost: String } -input CreateUser { - password: Password - familyName: String! - givenName: String! - promotion: Int! - trainingId: Identifier! -} - -""" -Rôles dans un groupe -""" -enum CurrentGroupRole { - """ - Membre ordinaire - """ - MEMBER - - """ - Administrateur·trice - """ - ADMIN - - """ - Membre du bureau - """ - BOARD_MEMBER - - """ - Président·e - """ - OWNER -} - -""" -ISO 8601 calendar date without timezone. -Format: %Y-%m-%d - -# Examples - -* `1994-11-13` -* `2000-02-24` -""" -scalar Date - -""" -A datetime with timezone offset. - -The input is a string in RFC3339 format, e.g. "2022-01-12T04:00:19.12345Z" -or "2022-01-12T04:00:19+03:00". The output is also a string in RFC3339 -format, but it is always normalized to the UTC (Z) offset, e.g. -"2022-01-12T04:00:19.12345Z". -""" -scalar DateTime - -input DateTimeFilter { - gt: LocalDateTime - eq: [LocalDateTime!] - lt: LocalDateTime -} - enum FromNull { NUMBER STRING @@ -218,1260 +34,70 @@ enum FromNull { OBJECT } -""" -Genre d'une personne -""" -enum Gender { - """ - Masculin - """ - MALE - - """ - Féminin - """ - FEMALE - - """ - Non binaire - """ - NON_BINARY - - """ - Inconnu - """ - UNKNOWN -} - -input GenderFilter { - isIn: [Gender!]! -} - -type GlobalValues { - schoolYear: Int! - evenSemester: Boolean! - integration: Boolean! +input GroupId { + id: SmolStr + email: String + uuid: UUID } -type Group { - """ - # **ADMIN ONLY** - ## UUID interne du group - - Par exemple, `72c612f8-1d07-432e-8f71-60584be51f40` - """ - uuid: UUID! - - """ - ## Identifiant du group - Le nom du group normalisé (sans accents, caractères spéciaux ni espaces). - Ne peut contenir que des caractères ASCII et éventuellement des tirets pour - remplacer les espaces. - - Par exemple, `arise` ou `aeiie`. - """ - id: Identifier! - - """ - ## Nom du group - Le nom usuel du group, présenté sous forme d'acronyme ou sous forme longue. - - Par exemple, `ARISE` ou `BdE`. - """ - name: String! - - """ - ## Description courte du group - 64 caractères maximum, de quoi présenter le group succinctement. - """ - shortDescription: String - - """ - ## Description du group - Une description plus complète que `short_description`, sans limite de caractères. - """ - description: String - - """ - ## Adresse électronique préférée de l'utilisateur. - Sa valeur DOIT être conforme à la syntaxe addr-spec de la RFC 5322 [RFC5322]. - - Par exemple, `arise@iiens.net` ou `bde@iiens.net`. - """ - email: String! - - """ - ## URL du site perso du groupe - """ - website: Url - - """ - ## Type de groupe - Club, Association 1901, etc. - """ - type: GroupType! - unixAccount: UnixAccount - - """ - ## Date de la création du compte du group - Sa valeur est un string JSON [RFC3339] représentant le temps entre 1970-01-01T0:0:0Z, - mesuré en UTC, et la date/heure. - """ - createdAt: DateTime! - - """ - ## Date de la dernière mise à jour des informations relatives au group - Sa valeur est un string JSON [RFC3339] représentant le temps entre 1970-01-01T0:0:0Z, - mesuré en UTC, et la date/heure. - """ - updatedAt: DateTime! - - """ - ## URL de la page de profil du group - Page de profil sur [www.iiens.net]. - - Par exemple, `https://www.iiens.net/eleve/acier2020` ou `https://www.iiens.net/eleve/dupontj2042` - """ - profile: Url! - - """ - ## URL de la photo de profil du groupe - Cette URL fait référence à un fichier image (par exemple, un fichier image PNG, - JPEG ou GIF), plutôt qu'à une page Web contenant une image. - - Par exemple, `https://api.iiens.net/picture/acier2020` ou `https://api.iiens.net/picture/dupontj2042` - """ - picture: Url! - - """ - Hash de la photo de profil du groupe - """ - pictureThumbnailHash: Base64! - - """ - ## URL de la photo de profil du groupe - Cette URL fait référence à un fichier image (par exemple, un fichier image PNG, - JPEG ou GIF), plutôt qu'à une page Web contenant une image. - - Par exemple, `https://api.iiens.net/picture/acier2020` ou `https://api.iiens.net/picture/dupontj2042` - """ - backgroundImage: Url! - - """ - Hash de l'image d'arrière plan du groupe - """ - backgroundImageThumbnailHash: Base64! - - """ - ## Groupe actif - **VRAI** si le group est encore actif. - Se traduit par une déclaration lors d'une réunion publique de l'AEIIE s'il - s'agit d'un group BdE. Les listes candidates à l'élection BdE sont actives le - temps de la campagne. - """ - active: Boolean! - - """ - # **ADMIN ONLY** - ## Compte caché - Le compte du group sera invisible de toutes les requêtes, sauf admin si le filtre - de la requête le demande. - """ - hidden: Boolean! +type Health { + db: String! } -type GroupConnection { - """ - Information to aid in pagination. - """ - pageInfo: PageInfo! - - """ - A list of edges. - """ - edges: [GroupEdge!]! +scalar Identifier - """ - A list of nodes. - """ - nodes: [Group!]! - remainingCount: Int! +type Mutation { + createGroupUnixAccount(group: GroupId!, account: CreateUnixAccount!): UnixAccount! + status: Int! } """ -An edge in a connection. +Ensemble des requêtes possibles pour l'API Arise. +Certaines peuvent être cachées, en fonction des permissions courantes. """ -type GroupEdge { - """ - The item at the end of the edge - """ - node: Group! - remainingCount: Int! - - """ - A cursor for use in pagination - """ - cursor: String! +type Query { + trainings: [Training!]! + buildInfo: BuildInfo! + health: Health! } -input GroupFilter { - uuid: UuidFilter - name: TextFilter - type: GroupTypeFilter - shortDescription: NullableTextFilter - description: NullableTextFilter - active: BooleanFilter - accountUuid: UuidFilter - unixAccount: UnixAccountFilter - id: TextFilter - email: TextFilter - emailVerified: BooleanFilter - website: NullableTextFilter - hidden: BooleanFilter - createdAt: DateTimeFilter - updatedAt: DateTimeFilter - or: [GroupFilter!] -} +scalar SmolStr -input GroupId { - id: SmolStr - email: String - uuid: UUID +type Training { + uuid: UUID! + id: Identifier! + name: String! + fullName: String } -type GroupOfMember { - group: Group! - role: CurrentGroupRole! - isOwner: Boolean! - isBoardMember: Boolean! - isAdmin: Boolean! - since: Date! -} +""" +A UUID is a unique 128-bit number, stored as 16 octets. UUIDs are parsed as +Strings within GraphQL. UUIDs are used to assign unique identifiers to +entities without requiring a central allocating authority. -input GroupOfMemberFilter { - role: CurrentGroupRole - since: NeverDateFilter - strictRole: Boolean! = false -} +# References +* [Wikipedia: Universally Unique Identifier](http://en.wikipedia.org/wiki/Universally_unique_identifier) +* [RFC4122: A Universally Unique IDentifier (UUID) URN Namespace](http://tools.ietf.org/html/rfc4122) """ -Rôles dans un groupe -""" -enum GroupRole { - """ - A quitté le groupe - """ - GONE +scalar UUID - """ - Membre ordinaire - """ - MEMBER +type UnixAccount { + accountUuid: UUID! + uid: Int! + vhost: String """ - Administrateur·trice - """ - ADMIN + URL du site personnel de l'utilisateur - """ - Membre du bureau - """ - BOARD_MEMBER + Page "perso" de l'utilisateur hébergée sur les serveurs d'ARISE. + Par exemple, `https://acier.perso.iiens.net` """ - Président·e - """ - OWNER -} - -enum GroupType { - ASSOCIATION - CLUB - COMMISSION - LIST - HOME - OTHER - UNKNOWN -} - -input GroupTypeFilter { - isIn: [GroupType!]! -} - -type Health { - db: String! -} - -type HistoricalGroupOfMember { - group: Group! - role: GroupRole! - since: Date! -} - -input HistoricalGroupOfMemberFilter { - role: GroupRole - since: NeverDateFilter - strictRole: Boolean! = false -} - -type HistoricalMemberOfGroup { - user: User! - role: GroupRole! - since: Date! -} - -scalar Identifier - -input Int16Filter { - gt: Int - eq: [Int!] - lt: Int -} - -input LevenshteinFilter { - value: String! - threshold: Int -} - -""" -A local datetime without timezone offset. - -The input/output is a string in ISO 8601 format without timezone, including -subseconds. E.g. "2022-01-12T07:30:19.12345". -""" -scalar LocalDateTime - -type Mutation { - """ - Création d'un utilisateur - ### Erreurs possibles - - `NOT_FOUND`: La formation n'existe pas. - - `ID_GENERATION_FAILURE`: L'identifiant de l'utilisateur n'a pas pu être généré. - """ - createUser(user: CreateUser!): User! - - """ - Mise à jour d'un utilisateur - ### Erreurs possibles - - `NOT_FOUND`: L'utilisateur ou la formation n'existe pas. - """ - updateUser(user: UserId!, update: UpdateUser!): User! - - """ - Suppression d'un utilisateur - ### Erreurs possibles - - `NOT_FOUND`: L'utilisateur n'existe pas. - """ - deleteUser(user: UserId!): Int! - - """ - Création d'un groupe - """ - createGroup(group: CreateGroup!): Group! - - """ - Mise à jour d'un groupe - ### Erreurs possibles - - `NOT_FOUND`: Le groupe n'existe pas. - """ - updateGroup(group: GroupId!, update: UpdateGroup!): Group! - - """ - Suppression d'un groupe - ### Erreurs possibles - - `NOT_FOUND`: Le groupe n'existe pas. - """ - deleteGroup(group: GroupId!): Boolean! - addGroupMemberRole(user: UserId!, group: GroupId!, role: GroupRole!): HistoricalMemberOfGroup! - createToken(token: CreateToken!): PlainToken! - updateToken(token: TokenId!, update: UpdateToken!): Token! - regenerateToken(token: TokenId!): PlainToken! - deleteClaims(token: TokenId!, claims: [String!]): Token! - addClaims(token: TokenId!, claims: [NewTokenClaim!]!): Token! - copyClaims(srcToken: TokenId!, dstToken: TokenId!): Token! - deleteToken(token: TokenId!): Int! - createUserUnixAccount(user: UserId!, account: CreateUnixAccount!): UnixAccount! - createGroupUnixAccount(group: GroupId!, account: CreateUnixAccount!): UnixAccount! - updateUnixAccount(unixAccount: UnixAccountId!, update: UpdateUnixAccount!): UnixAccount! - createTraining(training: CreateTraining!): Training! - updateTraining(training: TrainingId!, update: UpdateTraining!): Training! - deleteTraining(training: TrainingId!): Int! - newYear: Int! - evenSemester: Boolean! - endOfIntegration: Boolean! - status: Int! -} - -input NeverDateFilter { - gt: Date - eq: [Date!] - lt: Date -} - -input NewTokenClaim { - claim: String! - access: ClaimAccess! -} - -input NullableDateFilter { - null: Boolean - day: Int - month: Int - gt: Date - eq: [Date!] - lt: Date -} - -input NullableDateTimeFilter { - null: Boolean - gt: LocalDateTime - eq: [LocalDateTime!] - lt: LocalDateTime -} - -input NullableFilter { - null: Boolean -} - -input NullableTextFilter { - null: Boolean - like: [String!] - notLike: [String!] - similar: [SimilarFilter!] - levenshtein: [LevenshteinFilter!] -} - -enum OrderByGroup { - UUID - ID - NAME - CREATED_AT - UPDATED_AT -} - -enum OrderByUser { - UUID - ID - GIVEN_NAME - FAMILY_NAME - NICKNAME - BIRTH_DATE - PROMOTION - YEAR - CREATED_AT - UPDATED_AT - LAST_USED_AT -} - -""" -Information about pagination in a connection -""" -type PageInfo { - """ - When paginating backwards, are there more items? - """ - hasPreviousPage: Boolean! - - """ - When paginating forwards, are there more items? - """ - hasNextPage: Boolean! - - """ - When paginating backwards, the cursor to continue. - """ - startCursor: String - - """ - When paginating forwards, the cursor to continue. - """ - endCursor: String -} - -input Password { - hash: String - plain: String -} - -type PlainToken { - raw: String! - base64: String! -} - -""" -Ensemble des requêtes possibles pour l'API Arise. -Certaines peuvent être cachées, en fonction des permissions courantes. -""" -type Query { - user(user: UserId!): User - users( - after: String - before: String - first: Int - last: Int - filter: UserFilter - orderBy: [OrderByUser!]! = [] - ): UserConnection! - group(group: GroupId!): Group - groups( - after: String - before: String - first: Int - last: Int - filter: GroupFilter - orderBy: [OrderByGroup!]! = [] - ): GroupConnection! - account(account: AccountId!): Account - oAuthAppOwner: Account! - currentToken: Token! - token(token: TokenId!): Token - tokens: [Token!]! - trainings: [Training!]! - buildInfo: BuildInfo! - health: Health! - globalsValues: GlobalValues! -} - -input SimilarFilter { - value: String! - threshold: Float -} - -scalar SmolStr - -input TextFilter { - like: [String!] - notLike: [String!] - similar: [SimilarFilter!] - levenshtein: [LevenshteinFilter!] -} - -type Token { - """ - # **ADMIN ONLY** - ## UUID interne du jeton - - Par exemple, `72c612f8-1d07-432e-8f71-60584be51f40` - """ - uuid: UUID! - - """ - # **ADMIN ONLY** - ## Identifiant du jeton - """ - id: String! - - """ - # **ADMIN ONLY** - ## Description du jeton - """ - description: String! - - """ - # **ADMIN ONLY** - ## Hash du jeton - Standard actuel : BLAKE3 - - Par exemple, `$blake3$1ChQCR0BrfBO42AkRogZaw$+COVVpcK/ptUTSckqIdI/rFF1JdIkvk9V++z56kLNf4'` - """ - tokenHash: String! - globalAccess: ClaimAccess - allowedIps: [String!]! - claims: [TokenClaim!]! -} - -type TokenClaim { - claim: String! - access: ClaimAccess! -} - -input TokenId { - id: SmolStr - uuid: UUID - globalAccess: ClaimAccess -} - -type Training { - uuid: UUID! - id: Identifier! - name: String! - fullName: String -} - -input TrainingId { - id: SmolStr - uuid: UUID -} - -""" -A UUID is a unique 128-bit number, stored as 16 octets. UUIDs are parsed as -Strings within GraphQL. UUIDs are used to assign unique identifiers to -entities without requiring a central allocating authority. - -# References - -* [Wikipedia: Universally Unique Identifier](http://en.wikipedia.org/wiki/Universally_unique_identifier) -* [RFC4122: A Universally Unique IDentifier (UUID) URN Namespace](http://tools.ietf.org/html/rfc4122) -""" -scalar UUID - -type UnixAccount { - accountUuid: UUID! - uid: Int! - vhost: String - - """ - URL du site personnel de l'utilisateur - - Page "perso" de l'utilisateur hébergée sur les serveurs d'ARISE. - - Par exemple, `https://acier.perso.iiens.net` - """ - website: Url -} - -input UnixAccountFilter { - null: Boolean - uuid: UuidFilter - uid: Int16Filter - vhost: TextFilter -} - -input UnixAccountId { - uid: Int - uuid: UUID -} - -input UpdateGroup { - name: String - type: GroupType - shortDescription: String - description: String - active: Boolean - id: Identifier - email: String - emailVerified: Boolean - website: Url - hidden: Boolean -} - -input UpdateToken { - id: String - description: String - allowedIps: [String!] -} - -input UpdateTraining { - name: String - fullName: String -} - -input UpdateUnixAccount { - uid: Int - vhost: String -} - -input UpdateUser { - password: Password - givenNameAtBirth: String - givenNameInUse: String - middleName: String - familyName: String - nickname: String - gender: Gender - birthdate: Date - zoneinfo: String - locale: String - schoolLogin: String - phoneNumber: String - phoneNumberVerified: Boolean - initialPromotion: Int - gapYear: Int - diplomaYearDuration: Int - trainingId: SmolStr - extendedTrialPeriod: Boolean - aeiieMember: Boolean - suspended: Boolean - public: Boolean - lastUsedAt: LocalDateTime - id: Identifier - email: String - emailVerified: Boolean - website: Url - hidden: Boolean + website: Url } """ URL is a String implementing the [URL Standard](http://url.spec.whatwg.org/) """ scalar Url - -scalar Urn - -type User { - """ - UUID du compte de l'utilisateur - """ - uuid: UUID! - - """ - Identifiant de l'utilisateur - - Plus communément appelé AriseID, il est composé de 8 caractères maximum formés du nom - et du prénom, et de 4 chiffre représentant l'année d'arrivée pour arriver à un identifiant unique. - - Par exemple, `acier2020` ou `dupontj2042`. - """ - id: Identifier! - - """ - Hash du mot de passe de l'utilisateur - - Standard actuel : Argon2id - - Par exemple, `$argon2id$v=19$m=19456,t=2,p=1$XMBjfqZtpEyVxZbGNjKPCg$krFvSFSL3XUr6736galD8YVmGgXpqNSc02VyLqFesPY'` - """ - passwordHash: String - - """ - Nom complet de l'utilisateur - - Présenté sous une forme affichable, avec toutes les parties du nom, **Y COMPRIS** le surnom. - - Par exemple, `Jean "Foobar" Dupont` ou `Jean Dupont` - """ - name: String! - - """ - Nom complet administratif de l'utilisateur - - Présenté sous une forme affichable, avec toutes les parties du nom, **SAUF** le surnom. - - Par exemple, `Jean Dupont` - """ - civilName: String! - - """ - Prénom(s) de l'utilisateur - - Notez que dans certaines cultures, les personnes peuvent avoir plusieurs prénoms ; - tous peuvent être présents, les noms étant séparés par des caractères d'espacement. - - Par exemple, `Jean` ou `Pierre Jacques` - """ - givenName: String! - - """ - Prénom(s) de naissance de l'utilisateur - - Notez que dans certaines cultures, les personnes peuvent avoir plusieurs prénoms ; - tous peuvent être présents, les noms étant séparés par des caractères d'espacement. - - Par exemple, `Jean` ou `Pierre Jacques` - """ - givenNameAtBirth: String! - - """ - Prénom(s) d'usage de l'utilisateur - - Notez que dans certaines cultures, les personnes peuvent avoir plusieurs prénoms ; - tous peuvent être présents, les noms étant séparés par des caractères d'espacement. - - Par exemple, `Jeanne` ou `Pierre Jacques` - """ - givenNameInUse: String - - """ - Deuxième(s) prénom(s) de l'utilisateur - - Notez que dans certaines cultures, les personnes peuvent avoir plusieurs seconds prénoms ; - tous peuvent être présents, les noms étant séparés par des caractères d'espacement. - Notez également que dans certaines cultures, les seconds prénoms ne sont pas utilisés. - - Par exemple, `Robert` - """ - middleName: String - - """ - Prénoms de l'utilisateur - - Tous les prénoms de l'utilisateur concaténés ensembles. - - Par exemple, `Jean Pierre-Jacques` ou `Robert` - """ - forenames: String! - - """ - Nom(s) de famille de l'utilisateur - - Notez que dans certaines cultures, les personnes peuvent avoir plusieurs noms de famille ou - aucun nom de famille ; tous peuvent être présents, les noms étant séparés par des caractères d'espacement. - - Par exemple, `Leroy` - """ - familyName: String! - - """ - Surnom de l'utilisateur - - Le surnom qu'a choisi l'utilisateur. - - Par exemple, `Foobar` ou `Jean` - """ - nickname: String - - """ - Pseudo préféré - - Pseudo abrégé non unique par lequel l'utilisateur souhaite être désigné. - - Surnom si renseigné par l'utilisateur, sinon nom civil par défaut. - - Par exemple, `Foobar` ou `dupontj2042` - """ - preferredNickname: String! - - """ - Nom d'utilisateur préféré - - Nom abrégé non unique par lequel l'utilisateur souhaite être désigné. - - Surnom si renseigné par l'utilisateur, sinon identifiant ARISE par défaut. - - Par exemple, `Foobar` ou `dupontj2042` - """ - preferredUsername: String! - - """ - Genre de l'utilisateur - - Par défaut à `UNKNOWN`. - """ - gender: Gender! - - """ - Date de naissance de l'utilisateur - """ - birthdate: Date - - """ - URL de la page de profil de l'utilisateur - - Page de profil sur [www.iiens.net](https://www.iiens.net). - - Par exemple, `https://www.iiens.net/eleve/acier2020` - """ - profile: Url! - - """ - URL de l'image de profil de l'utilisateur - - Cette URL fait référence à un fichier image (par exemple, un fichier image PNG, - JPEG ou GIF), plutôt qu'à une page Web contenant une image. - - Par exemple, `https://api.iiens.net/picture/acier2020` - """ - picture: Url! - - """ - Hash de la photo de profil de l'utilisateur - """ - pictureThumbnailHash: Base64! - - """ - URL de l'image d'arrière plan de l'utilisateur - - Cette URL fait référence à un fichier image (par exemple, un fichier image PNG, - JPEG ou GIF), plutôt qu'à une page Web contenant une image. - - Par exemple, `https://api.iiens.net/picture/acier2020` - """ - backgroundImage: Url! - - """ - Hash de l'image d'arrière plan de l'utilisateur - """ - backgroundImageThumbnailHash: Base64! - - """ - URL de la photo de trombinoscope de l'utilisateur - - Cette URL fait référence à un fichier image (par exemple, un fichier image PNG, - JPEG ou GIF), plutôt qu'à une page Web contenant une image. - - Par exemple, `https://api.iiens.net/rest/v0/photo/acier2020` - """ - photo: Url - - """ - Hash de la photo de trombinoscope de l'utilisateur - """ - photoThumbnailHash: Base64 - - """ - URL du site Web ou du blog de l'utilisateur - - Par exemple, `https://foo.com` - """ - website: Url - - """ - Fuseau horaire - - Chaîne de caractères provenant de la base de données des fuseaux horaires zoneinfo - [zoneinfo] représentant le fuseau horaire de l'utilisateur. - - Par exemple, `Europe/Paris` ou `Amérique/Los_Angeles`. - """ - zoneinfo: String! - - """ - Langue - - Les paramètres régionaux de l'utilisateur, représentés par une balise de - langue BCP47 [RFC5646]. Il s'agit généralement d'un code de langue ISO 639-1 - Alpha-2 [ISO639-1] en minuscules et d'un code de pays ISO 3166-1 Alpha-2 - [ISO3166-1] en majuscules, séparés par un tiret. - - Par exemple, `en-US` ou `fr-CA`. - """ - locale: String! - - """ - Adresse électronique de l'utilisateur - - Un alias de l'adresse électronique véritable de l'utilisateur. - À utiliser en priorité pour la création de comptes. - - Par exemple, `acier2020.e2e01581919c@alias.iiens.net`. - """ - email: String! - - """ - Adresse électronique réelle de l'utilisateur - - Sa valeur DOIT être conforme à la syntaxe addr-spec de la RFC 5322 [RFC5322]. - - Par exemple, `foo.bar@ensiie.fr` ou `dupont.jean@gmail.com`. - """ - emailForwardAddress: String - - """ - Adresse électronique de l'utilisateur vérifiée - - Vrai si l'adresse électronique préférée de l'utilisateur a été vérifiée, sinon faux. - Lorsque cette valeur d'allégation est vraie, cela signifie qu'ARISE a pris des mesures - positives pour s'assurer que l'adresse électronique était contrôlée par l'utilisateur - au moment où la vérification a été effectuée. - """ - emailVerified: Boolean! - - """ - Identifiant de connexion scolaire de l'utilisateur - - Habituellement sous la forme `prenom.nom` - """ - schoolLogin: String! - - """ - Adresse électronique scolaire de l'utilisateur - - Sa valeur DOIT être conforme à la syntaxe addr-spec de la RFC 5322 [RFC5322]. - - Par exemple, `mael.acier@ensiie.eu` ou `dupont.jean@ensiie.eu`. - """ - schoolEmail: String! - - """ - Numéro de téléphone de l'utilisateur - - E.164 [E.164] est le format adopté pour ce champ. - - Par exemple, `+14255551212` ou `+5626872400`. - """ - phoneNumber: String - - """ - Numéro de téléphone de l'utilisateur vérifié - - Vrai si le numéro de téléphone de l'utilisateur a été vérifié, sinon faux. - Lorsque cette valeur d'allégation est vraie, cela signifie qu'ARISE a pris - des mesures positives pour s'assurer que ce numéro de téléphone était contrôlé - par l'utilisateur final au moment où la vérification a été effectuée. Les moyens - par lesquels un numéro de téléphone est vérifié sont spécifiques au contexte - et dépendent du cadre de confiance ou des accords contractuels dans lesquels - les parties opèrent. - """ - phoneNumberVerified: Boolean! - - """ - Adresse de l'utilisateur - """ - address: Address - - """ - Promotion d'origine de l'utilisateur - - La promotion présupposée de l'utilisateur au moment où il rentre à l'école. - - Habituellement `année d'entrée + 3` - """ - initialPromotion: Int! - - """ - Promotion effective de l'utilisateur - - Promotion de l'utilisateur en tenant compte des redoublements et autres facteurs. - """ - promotion: Int! - - """ - Années d'étude d'écart de l'utilisateur - - Désigne des périodes de temps où un utilisateur prend une pause ou un écart par - rapport à la norme. Cela peut être causé par une année sabbatique, une année de - redoublement ou pour d'autres raisons. - - Par défaut cette valeur est de 0. - """ - gapYear: Int! - - """ - Années d'études requises jusqu'au diplôme - - Par défaut cette valeur est de 03. - """ - diplomaYearDuration: Int! - - """ - Année en cours de l'utilisateur - - Compteur d'années en fonction de l'année de promotion effective. - Les redoublements sont pris en compte dans l'évaluation de cette valeur. - - Par exemple, `1A`, `2A`, `3A` *(Le `A` n'est pas ajouté automatiquement)* - """ - year: Int! - - """ - Semestre actuel de l'utilisateur - - Compteur de semestres en fonction de l'année de promotion effective. - Les redoublements sont pris en compte dans l'évaluation de cette valeur. - - Par exemple, `S1`, `S2`, `S3` *(Le `S` n'est pas ajouté automatiquement)* - """ - semester: Int! - - """ - ## Parcours - - Par exemple, "FISE", "FISA" - """ - training: Training! - - """ - Groupe de l'utilisateur - """ - group(id: GroupId!): GroupOfMember - - """ - Groupes de l'utilisateur - - Les rôles passés ne seront pas renvoyés dans cette requête. - Pour cela, se référer à `group_history.` - """ - groups(filter: GroupOfMemberFilter): [GroupOfMember!]! - - """ - Historique des groupes de l'utilisateur - - Cet historique retrace tous les rôles que l'utilisateur à pu prendre au - sein des groups de l'école. - """ - groupHistory(filter: HistoricalGroupOfMemberFilter): [HistoricalGroupOfMember!]! - - """ - Groupe courant de l'utilisateur - - Retourne le propriétaire de l'application si ce dernier est un groupe. - - Les rôles passés ne seront pas renvoyés dans cette requête. - Pour cela, se référer à `current_group_history.` - """ - oAuthGroup: GroupOfMember - - """ - Adhérent de l'AEIIE - - **VRAI** si l'utilisateur est membre de l'AEIIE. **FAUX** à la création du compte. - """ - aeiieMember: Boolean! - - """ - Nombre de jours restants sur la période d'essai de l'utilisateur - - **42** lors de la création du compte. - """ - trialPeriodDaysLeft: Int! - - """ - Période d'essai étendue de l'utilisateur - - **FAUX** lors de la création du compte. - - Cette variable permet d'outrepasser le champ `restricted_access`. - """ - extendedTrialPeriod: Boolean! - - """ - Accès restreint aux services d'ARISE - - **VRAI** si la période d'essai est arrivée à terme (42 jours) et que l'utilisateur n'est pas - membre d'ARISE **ET** de l'AEIIE. - """ - restrictedAccess: Boolean! - - """ - Compte caché - - Le compte utilisateur sera invisible de toutes les requêtes, sauf admin si le filtre - de la requête le demande. - """ - hidden: Boolean! - - """ - Compte suspendu - - Le compte utilisateur ne sera plus utilisable pour se connecter aux services d'ARISE. - """ - suspended: Boolean! - - """ - Compte UNIX - """ - unixAccount: UnixAccount - - """ - Date de la création du compte de l'utilisateur - - Sa valeur est un string JSON [RFC3339] représentant le temps entre 1970-01-01T0:0:0Z, - mesuré en UTC, et la date/heure. - """ - createdAt: DateTime! - - """ - Date de la dernière mise à jour des informations relatives à l'utilisateur - - Sa valeur est un string JSON [RFC3339] représentant le temps entre 1970-01-01T0:0:0Z, - mesuré en UTC, et la date/heure. - """ - updatedAt: DateTime! - - """ - Date de la dernière activité via l'API de l'utilisateur - - Sa valeur est un string JSON [RFC3339] représentant le temps entre 1970-01-01T0:0:0Z, - mesuré en UTC, et la date/heure. - """ - lastUsedAt: DateTime -} - -type UserConnection { - """ - Information to aid in pagination. - """ - pageInfo: PageInfo! - - """ - A list of edges. - """ - edges: [UserEdge!]! - - """ - A list of nodes. - """ - nodes: [User!]! - remainingCount: Int! -} - -""" -An edge in a connection. -""" -type UserEdge { - """ - The item at the end of the edge - """ - node: User! - remainingCount: Int! - - """ - A cursor for use in pagination - """ - cursor: String! -} - -input UserFilter { - uuid: UuidFilter - givenName: TextFilter - givenNameInUse: NullableTextFilter - givenNameAtBirth: TextFilter - middleName: NullableTextFilter - familyName: TextFilter - nickname: NullableTextFilter - gender: GenderFilter - birthdate: NullableDateFilter - zoneinfo: TextFilter - locale: TextFilter - pictureThumbnailHash: NullableFilter - backgroundThumbnailHash: NullableFilter - photoThumbnailHash: NullableFilter - phoneNumber: NullableTextFilter - phoneNumberVerified: BooleanFilter - schoolLogin: TextFilter - promotion: Int16Filter - initialPromotion: Int16Filter - gapYear: Int16Filter - year: Int16Filter - diplomaYearDuration: Int16Filter - semester: Int16Filter - training: TextFilter - aeiieMember: BooleanFilter - trialPeriodDaysLeft: Int16Filter - extendedTrialPeriod: BooleanFilter - restrictedAccess: BooleanFilter - suspended: BooleanFilter - public: BooleanFilter - lastUsedAt: NullableDateTimeFilter - groups: UserGroupsFilter - accountUuid: UuidFilter - unixAccount: UnixAccountFilter - id: TextFilter - email: TextFilter - emailVerified: BooleanFilter - website: NullableTextFilter - hidden: BooleanFilter - createdAt: DateTimeFilter - updatedAt: DateTimeFilter - or: [UserFilter!] -} - -input UserGroupsFilter { - uuid: UuidFilter - id: TextFilter - name: TextFilter - type: GroupTypeFilter - active: BooleanFilter - hidden: BooleanFilter -} - -input UserId { - uuid: UUID - id: SmolStr - personalEmail: String - urn: Urn -} - -input UuidFilter { - isIn: [UUID!]! -} diff --git a/tsconfig.json b/tsconfig.json index 431cb8bf2cca9092a5cbc75f3adebce0330f314c..1557f79d8ae96bf4c4fd9b8c22678e866144f368 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -14,7 +14,7 @@ { "name": "gql.tada/ts-plugin", "schema": "./src/lib/graphql/schema.gql", - "tadaOutputLocation": "./src/graphql-env.d.ts" + "tadaOutputLocation": "./src/graphql.d.ts" } ] }