""" input for addUserToGroup mutation """ input AddUserToGroupInput { userId: ID! groupId: ID! """ A unique identifier for the client performing the mutation. Optional for client use """ clientMutationId: String } """ response from addUserToGroup mutation """ type AddUserToGroupPayload { """ The user that was modified """ user: User! clientMutationId: String } """ input for assignLicense mutation """ input AssignLicenseInput { """ userId to assign license to """ userId: ID! """ licensePoolId (SalesPackageConfigId) to assign to user """ licensePoolId: ID! """ A unique identifier for the client performing the mutation. Optional for client use """ clientMutationId: String } """ response payload for assignLicense mutation """ type AssignLicensePayload { """ The affected user """ user: User! clientMutationId: String } scalar ConstraintNumber scalar ConstraintString """ Input to createGroup mutation """ input CreateGroupInput { """ orgId to create the group in, if not provided will default to the org of admin performing request """ orgId: ID """ group name """ groupName: ConstraintString! """ group description """ groupDescription: ConstraintString! """ A unique identifier for the client performing the mutation. Optional for client use """ clientMutationId: String } """ response payload for createGroup mutation """ type CreateGroupPayload { """ The created group """ group: Group! clientMutationId: String } """ Input to createUser mutation """ input CreateUserInput { """ orgId to create the user, typically this is the same as the myOrg {id} """ orgId: ID! """email serves as username, must be valid email 50 characters or less""" email: String! """ Single Sign On ID for customer using SAML authentication Only set if using SAML SSO """ ssoId: String firstName: ConstraintString! lastName: ConstraintString! """language used for localization , required for registered users""" interfaceLanguage: InterfaceLanguage! """ Language the user will learn, to start the user's Learning Program """ languageOfStudy: LanguageOfStudy! userField1: ConstraintString userField2: ConstraintString userField3: ConstraintString userField4: ConstraintString userField5: ConstraintString userField6: ConstraintString notes: ConstraintString """ A unique identifier for the client performing the mutation. Optional for client use """ clientMutationId: String } """ Response from createUser mutation """ type CreateUserPayload { """ The user that was created """ user: User! clientMutationId: String } """ ISO8601 String. Example: 2019-07-24T16:22:35+0000 """ scalar Datetime """ Input to deleteGroup mutation """ input DeleteGroupInput { """ groupId to delete """ groupId: ID! """ A unique identifier for the client performing the mutation. Optional for client use """ clientMutationId: String } """ response payload for deleteGroup mutation """ type DeleteGroupPayload { wasDeleted: Boolean clientMutationId: String } """Input to deleteUser mutation""" input DeleteUserInput { """ user to update """ userId: ID! """ A unique identifier for the client performing the mutation. Optional for client use """ clientMutationId: String } """ Response from updateUser mutation """ type DeleteUserPayload { """ The org the user was deleted from """ org: Org! clientMutationId: String } """ A group of users in an org. A user may belong to multiple groups. """ type Group { id: ID! name: String! description: String """ Connection to the users that are members of this group """ users(after: String, first: Int): UserConnection createdAt: Datetime! updatedAt: Datetime! } """ Set of langauges that are supported localizations in our website and apps ISO code, with dash(-) replaced with underscores """ enum InterfaceLanguage { """ en-US: English """ en_US """ de-DE: German """ de_DE """ es-419: Spanish """ es_419 """ fr-FR: French """ fr_FR """ it-IT: Italian """ it_IT """ pt-BR: Portuguese """ pt_BR """ ja-JP: Japanese """ ja_JP """ ko-KR: Korean """ ko_KR """ nl-NL: Dutch """ nl_NL """ pl-PL: Polish """ pl_PL """ ru-RU: Russian """ ru_RU """ zh-CN: Chinese """ zh_CN } """ Set of langauges that are supported for learners to study. Note that not all languges are available for all languages levels. Currently supported Advanced Languages in Catalyst: English, Spanish, French, German, Italian ISO code, with dash(-) replaced with underscores Catalyst lanugage support by proficiency levels Beginner (A), Intermediate(B), Advanced (C) [A] : this language has beginner content only (Foundations only) [ABC] : beginner, intermediate, and advanced content available (Intermediate and Advanced Content in Fluency Builder) """ enum LanguageOfStudy { """ don't set the language, and let the user select """ LET_LEARNER_SELECT """ ar: Arabic [A] """ ar """ zh-CN: Chinese [A] """ cic """ cic: Chickasaw [ABC] """ zh_CN """ nl-NL: Dutch [A] """ nl_NL """ en-US: English (American) [ABC] """ en_US """ en-GB: English (British) [ABC] """ en_GB """ tl-PH: Filipino (Tagalog) [A] """ tl_PH """ fr-FR: French [ABC] """ fr_FR """ de-DE: German [ABC] """ de_DE """ el-GR: Greek [A] """ el_GR """ hi-IN: Hindi [A] """ hi_IN """ he-IL: Hebrew [A] """ he_IL """ ga-IE: Irish [A] """ ga_IE """ it-IT: Italian [ABC] """ it_IT """ ja-JP: Japanese [A] """ ja_JP """ ko-KR: Korean [A] """ ko_KR """ fa-IR: Persian (Farsi) [A] """ fa_IR """ pl-PL: Polish [A] """ pl_PL """ pt-BR: Portuguese [A] """ pt_BR """ ru-RU: Russian [A] """ ru_RU """ es-419: Spanish [ABC] """ es_419 """ es-ES: Spanish (Spain) [ABC] """ es_ES """ sv-SE: Swedish [A] """ sv_SE """ tr-TR: Turkish [A] """ tr_TR """ vi-VN Vietnamese [A] """ vi_VN } """ The language program for the user is currently studying. Contains the language and currently proficiency level. """ type LanguageProgram { id: ID! """ Language the learner is studying """ languageOfStudy: LanguageOfStudy! """ Proficiency Level, CEFR for Catalyst learners https://en.wikipedia.org/wiki/Common_European_Framework_of_Reference_for_Languages possible CEFR Levels: A1, A2, B1, B2, C1 """ level: String """ The last time the user worked on a lesson, or took a tutoring session for this program """ lastUsageAt: Datetime """ All time usage summary For catalyst users only Usage will aggregated for the language of program Potentially combining usage for multiple subproducts (ie Foundations + Fluency Builder) and levels Usage from current day (UTC) included """ allTimeUsageSummary: UsageSummary """ Last 30 day usage summary For catalyst users only Usage will aggregated for the language of program Potentially combining usage for multiple subproducts (ie Foundations + Fluency Builder) and levels Usage from current day (UTC) included """ last30daysUsageSummary: UsageSummary """ Month to date usage summary For catalyst users only Usage will aggregrated for the language of program Potentially combining usage for multiple subproducts (ie Foundations + Fluency Builder) and levels Usage from current day (UTC) included """ monthToDateUsageSummary: UsageSummary """ Time period usage summary from last 'timePeriodDays' days For catalyst users only Usage will aggregated for the language of program Potentially combining usage for multiple subproducts (ie AEB + Fluency Builder) and levels Usage from current day (UTC) included If specified in the query, should set variable 'timePeriodDays' on languagePrograms, otherwise defaults to zero, for today's usage only """ timePeriodUsageSummary: UsageSummary } type License { licensePool: LicensePool! assignedAt: Datetime! } """The type of License.""" enum LicenseModel { """ The user will be licensed for the duration of term the License Pool """ FIXED } """ A set of licenses that can be assigned to a user. Also know as Salespackage Config Contains some purchase order information as well """ type LicensePool { """ Id of the License Pool. AKA SalesPackageConfigId """ id: ID! productId: ID! """ ie: Rosetta Stone Catalyst """ productName: String! salesPackageId: ID! """ Flavor of the product, ie: Catalyst 2.0 Bronze """ salesPackageName: String! """ Purchase Order Number """ poNumber: String """ Total number of licenses purchased """ totalLicenseCount: Int """ Number of licenses currently in use """ assignedLicenseCount: Int licenseModel: LicenseModel """ Start of term where this LicensePool grants license """ termStart: Datetime """ End of term where this LicensePool grants license """ termEnd: Datetime createdAt: Datetime } type Mutation { """ Create group """ createGroup(input: CreateGroupInput!): CreateGroupPayload! """ Delete group """ deleteGroup(input: DeleteGroupInput!): DeleteGroupPayload! """ Create a new user. """ createUser(input: CreateUserInput!): CreateUserPayload """ Update user """ updateUser(input: UpdateUserInput!): UpdateUserPayload """ Deletes the user from the systerm. The deleted user's license(s) will be returned the licnese pool(s). """ deleteUser(input: DeleteUserInput!): DeleteUserPayload """ Add User to group """ addUserToGroup(input: AddUserToGroupInput!): AddUserToGroupPayload! """ Remove User from group """ removeUserFromGroup(input: RemoveUserFromGroupInput!): RemoveUserFromGroupPayload! """ Send the user an email to register their account. After the user completes this step, their status will change from UNREGISTERED to REGISTERED This mutations doesn't change any data immediatly, user status will be updated after user acts upon email Precondition: The user must have a license Precondition: The user must be in UNREGISTERED status """ sendEmailNotificationRegistration(input: SendEmailNotificationRegistrationInput!): SendEmailNotificationRegistrationPayload! """ Provide necessary fields for user registration, including password. After registration, the user can then log into the system https://login.rosettastone.com/ The user can register themselves via the sendEmailNotificationRegistration mutation, instead of using this call. After this call, the user status will be REGISTERED Precondition: The user must have a license Precondition: The user must be in UNREGISTERED status """ registerUser(input: RegisterUserInput): RegisterUserPayload! """ Assign License to user """ assignLicense(input: AssignLicenseInput!): AssignLicensePayload! """ Remove license from user """ unassignLicense(input: UnassignLicenseInput!): UnassignLicensePayload! """ Assign user a new Language Of Study. Current version of the product only supports a single languge at a time. Catalyst learners given a new language will be repromted to take questionairre and assessment Precondition: The user must have a learning license (ie Catalyst) """ newLanguageProgram(input: NewLanguageProgramInput!): NewLanguageProgramPayload! """ Override learning level for the user's language program. Precondition: The user must have a learning license (ie Catalyst) """ overrideLanguageProgramLevel(input: OverrideLanguageProgramLevelInput): OverrideLanguageProgramLevelPayload } """ input for newLanguageProgram mutation """ input NewLanguageProgramInput { userId: ID! """ New Language for user to study """ languageOfStudy: LanguageOfStudy! """ A unique identifier for the client performing the mutation. Optional for client use """ clientMutationId: String } """ response payload for newLanguageProgram mutation """ type NewLanguageProgramPayload { """ The affected user """ user: User! clientMutationId: String } """An object with an ID.""" interface Node { """ID of the object.""" id: ID! } """ Organization using Rosetta Stone (RSM2/Catalyst) An organization contains users, licenses and groups. """ type Org { id: ID! namespace: String name: String createdAt: Datetime """ Connection to the users that are members of this org """ users( """Returns the elements in the list that come after the specified cursor.""" after: String """Returns the first _n_ elements from the list.""" first: Int ): UserConnection """ LicensePools available to this org """ licensePools: [LicensePool] """ Lists of groups in the org """ groups( """ Optional select the group by id """ groupId: ID ): [Group] } """ input for overrideLanguageProgramLevel mutation """ input OverrideLanguageProgramLevelInput { userId: ID! """ The level to assign to the user. Note that allowed levels will depend upon the user's language of study and product See enum LanguageOfStudy for more information about languages and supported levels. Allowed Catalyst 2 levels: A1, A2, B1, B2, C1 """ level: String! """ A unique identifier for the client performing the mutation. Optional for client use """ clientMutationId: String } """ response payload for overrideLanguageProgramLevel mutation """ type OverrideLanguageProgramLevelPayload { """ The affected user """ user: User! clientMutationId: String } """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! } type Query { """ Query the org of logged in user using the API (from the Authorization bearer token) """ myOrg: Org """ Get the org with given orgId or namespace. Note that elevated user is required to use this. When using an orgAdmin user, should use the myOrg query instead. """ org(orgId: String, namespace: String): Org """Returns system_check data for all endpoints we are using""" systemReadiness: [SystemCheck] """Get user by id""" user(id: ID!): User """ SearchUsers required: groupId (can be the orgId) results are additive (logical OR) """ userSearch(groupId: ID!, email: String, firstName: String, lastName: String): [User] """ Find user by SSO id Parameter orgId is optional. If not provided will user the current logged in user's org """ userBySsoId(orgId: ID, ssoId: String!): User } """ input for registerUser mutation """ input RegisterUserInput { userId: ID! password: ConstraintString! voiceType: Voicetype! originLanguage: ConstraintString! timezone: TimezoneConstraint! clientMutationId: String } """ response payload for registerUser mutation """ type RegisterUserPayload { """ The affected user """ user: User! clientMutationId: String } """ input for removeUserFromGroup mutation """ input RemoveUserFromGroupInput { userId: ID! groupId: ID! """ A unique identifier for the client performing the mutation. Optional for client use """ clientMutationId: String } """ Response from removeUserFromGroup mutation """ type RemoveUserFromGroupPayload { """ The user that was modified """ user: User! clientMutationId: String } """ input for sendEmailNotificationRegistration mutation """ input SendEmailNotificationRegistrationInput { userId: ID! """ A unique identifier for the client performing the mutation. Optional for client use """ clientMutationId: String } """response from sendEmailNotificationRegistration mutation""" type SendEmailNotificationRegistrationPayload { user: User! clientMutationId: String } """system_check""" type SystemCheck { id: ID success: Boolean time: Int message: String } type TestResult { language: String testName: String completedAt: Datetime timeSpentSecs: Float cefr: String scaledScore: String } scalar TimezoneConstraint """ input for unassignLicense mutation """ input UnassignLicenseInput { """ userId to unassign license from """ userId: ID! """ licensePoolId (SalesPackageConfigId) to unassign from user """ licensePoolId: ID! """ A unique identifier for the client performing the mutation. Optional for client use """ clientMutationId: String } """ response payload for unassignLicense mutation """ type UnassignLicensePayload { """ The affected user """ user: User! clientMutationId: String } """ Input to updateUser mutation Only the fields provided will be updated, omitted fields will remain their existing value """ input UpdateUserInput { """ user to update """ userId: ID! """email serves as username, must be valid email 50 characters or less""" email: String """Single Sign On ID for customer using SAML authentication""" ssoId: String firstName: ConstraintString lastName: ConstraintString """ language used for localization """ interfaceLanguage: InterfaceLanguage userField1: ConstraintString userField2: ConstraintString userField3: ConstraintString userField4: ConstraintString userField5: ConstraintString userField6: ConstraintString notes: ConstraintString """ A unique identifier for the client performing the mutation. Optional for client use """ clientMutationId: String } """ Response from updateUser mutation """ type UpdateUserPayload { """ The user that was update """ user: User! clientMutationId: String } type UsageSummary { totalMinutes: Float! desktopLessonMinutes: Float! mobileLessonMinutes: Float! tutoringMinutes: Float! } """ A user who can login and use the Rosetta Stone product Users may be admins or learners. A user must have a valid license to use the product """ type User implements Node { """UUID uniquely identifying the user""" id: ID! """email serves as username, must be valid email 50 characters or less""" email: String! """ Datetime when this user was created """ createdAt: Datetime! """ Datetime when this user was last updated """ updatedAt: Datetime! """ User's first name """ firstName: String """ User's last name """ lastName: String """ Collection of groupIds the user is a member """ groupIds: [ID] """language used for client localization""" interfaceLanguage: InterfaceLanguage! """voice type configuration for SRE, required for registered users""" voiceType: Voicetype """ timezone for localization, required for registered users. Must be valid IANA tz, ie: America/Los_Angeles """ timezone: String """ Collected during registration """ originLanguage: String registrationDate: Datetime status: UserStatus! """ The language and level the user is currently studying. Currently Catalyst 2.0 supports a single language program at a time. An admin may adjust the level, or assign a new language """ languagePrograms(timePeriodDays: Int): [LanguageProgram] """ userField1: For customer use """ userField1: String """ userField2: For customer use """ userField2: String """ userField3: For customer use """ userField3: String """ userField4: For customer use """ userField4: String """ userField5: For customer use """ userField5: String """ userField6: For customer use """ userField6: String """ Administrator notes for the user, for customer use """ notes: String """ List of licenses assigned to this user """ licenses: [License] """ List of users test results """ testResults: [TestResult] """ Number of days per week the user has selected as a learning goal """ usageGoalDays: Int """ Number minutes per week the user has selected as a learning goal """ usageGoalMinutes: Int """Single Sign On ID for customer using SAML authentication""" ssoId: String } """The connection type for User.""" type UserConnection { """A list of edges.""" edges: [UserEdge] """A list of nodes.""" nodes: [User] """Information to aid in pagination.""" pageInfo: PageInfo! """Identifies the total count of items in the connection.""" totalCount: Int! } """Represents a user.""" type UserEdge { """A cursor for use in pagination.""" cursor: String! """The item at the end of the edge.""" node: User } """ Current status of the user """ enum UserStatus { """ Unregistered users have not yet logged into the system and set their password """ UNREGISTERED """ Active users have completed registration """ ACTIVE """ Users in this state are typically filtered out """ DELETED } """ Voice type used for Speech Engine Recognization """ enum Voicetype { FEMALE MALE }