type SCIMConfiguration implements Node { id: ID! endpointUrl: String! @goField(forceResolver: true) createdAt: Datetime! updatedAt: Datetime! organization: Organization @goField(forceResolver: true) bridge: SCIMBridge @goField(forceResolver: true) events( first: Int after: CursorKey last: Int before: CursorKey orderBy: SCIMEventOrder ): SCIMEventConnection @goField(forceResolver: true) permission(action: String!): Boolean! @goField(forceResolver: true) @authentication(required: PRESENT) } type SCIMBridge implements Node { id: ID! state: SCIMBridgeState! syncError: String scimConfiguration: SCIMConfiguration @goField(forceResolver: true) connector: Connector @goField(forceResolver: true) type: SCIMBridgeType! excludedUserNames: [String!]! createdAt: Datetime! updatedAt: Datetime! permission(action: String!): Boolean! @goField(forceResolver: true) @authentication(required: PRESENT) } type Connector implements Node { id: ID! provider: ConnectorProvider! createdAt: Datetime! updatedAt: Datetime! permission(action: String!): Boolean! @goField(forceResolver: true) @authentication(required: PRESENT) } enum ConnectorProvider @goModel(model: "go.probo.inc/probo/pkg/coredata.ConnectorProvider") { SLACK @goEnum(value: "go.probo.inc/probo/pkg/coredata.ConnectorProviderSlack") GOOGLE_WORKSPACE @goEnum(value: "go.probo.inc/probo/pkg/coredata.ConnectorProviderGoogleWorkspace") MICROSOFT_365 @goEnum(value: "go.probo.inc/probo/pkg/coredata.ConnectorProviderMicrosoft365") BREX @goEnum(value: "go.probo.inc/probo/pkg/coredata.ConnectorProviderBrex") TALLY @goEnum(value: "go.probo.inc/probo/pkg/coredata.ConnectorProviderTally") CLOUDFLARE @goEnum(value: "go.probo.inc/probo/pkg/coredata.ConnectorProviderCloudflare") } enum SCIMBridgeType @goModel(model: "go.probo.inc/probo/pkg/coredata.SCIMBridgeType") { GOOGLE_WORKSPACE @goEnum(value: "go.probo.inc/probo/pkg/coredata.SCIMBridgeTypeGoogleWorkspace") MICROSOFT_365 @goEnum(value: "go.probo.inc/probo/pkg/coredata.SCIMBridgeTypeMicrosoft365") } type SCIMBridgeTypeInfo { type: SCIMBridgeType! oauth2Scopes: [String!]! } enum SCIMBridgeState @goModel(model: "go.probo.inc/probo/pkg/coredata.SCIMBridgeState") { PENDING @goEnum(value: "go.probo.inc/probo/pkg/coredata.SCIMBridgeStatePending") SYNCING @goEnum(value: "go.probo.inc/probo/pkg/coredata.SCIMBridgeStateSyncing") ACTIVE @goEnum(value: "go.probo.inc/probo/pkg/coredata.SCIMBridgeStateActive") FAILED @goEnum(value: "go.probo.inc/probo/pkg/coredata.SCIMBridgeStateFailed") DISABLED @goEnum(value: "go.probo.inc/probo/pkg/coredata.SCIMBridgeStateDisabled") } type SCIMEvent implements Node { id: ID! method: String! path: String! statusCode: Int! requestBody: String responseBody: String errorMessage: String userName: String! ipAddress: String! createdAt: Datetime! permission(action: String!): Boolean! @goField(forceResolver: true) @authentication(required: PRESENT) } enum SCIMEventOrderField @goModel(model: "go.probo.inc/probo/pkg/coredata.SCIMEventOrderField") { CREATED_AT @goEnum( value: "go.probo.inc/probo/pkg/coredata.SCIMEventOrderFieldCreatedAt" ) } input SCIMEventOrder @goModel( model: "go.probo.inc/probo/pkg/server/api/connect/v1/types.SCIMEventOrderBy" ) { direction: OrderDirection! field: SCIMEventOrderField! } type SCIMEventConnection @goModel( model: "go.probo.inc/probo/pkg/server/api/connect/v1/types.SCIMEventConnection" ) { edges: [SCIMEventEdge!]! pageInfo: PageInfo! totalCount: Int @goField(forceResolver: true) } type SCIMEventEdge { node: SCIMEvent! cursor: CursorKey! } extend type Mutation { createSCIMConfiguration( input: CreateSCIMConfigurationInput! ): CreateSCIMConfigurationPayload @authentication(required: PRESENT) @sessionOnly deleteSCIMConfiguration( input: DeleteSCIMConfigurationInput! ): DeleteSCIMConfigurationPayload @authentication(required: PRESENT) @sessionOnly regenerateSCIMToken( input: RegenerateSCIMTokenInput! ): RegenerateSCIMTokenPayload @authentication(required: PRESENT) @sessionOnly updateSCIMBridge( input: UpdateSCIMBridgeInput! ): UpdateSCIMBridgePayload @authentication(required: PRESENT) requestSCIMEventExport( input: RequestSCIMEventExportInput! ): RequestSCIMEventExportPayload @authentication(required: PRESENT) @sessionOnly } input CreateSCIMConfigurationInput { organizationId: ID! connectorId: ID } input DeleteSCIMConfigurationInput { organizationId: ID! scimConfigurationId: ID! } input RegenerateSCIMTokenInput { organizationId: ID! scimConfigurationId: ID! } input UpdateSCIMBridgeInput { organizationId: ID! scimBridgeId: ID! excludedUserNames: [String!]! } type CreateSCIMConfigurationPayload { scimConfiguration: SCIMConfiguration! scimBridge: SCIMBridge token: String! } type DeleteSCIMConfigurationPayload { deletedScimConfigurationId: ID! } type RegenerateSCIMTokenPayload { scimConfiguration: SCIMConfiguration! token: String! } type UpdateSCIMBridgePayload { scimBridge: SCIMBridge! } input RequestSCIMEventExportInput { organizationId: ID! fromTime: Datetime! toTime: Datetime! } type RequestSCIMEventExportPayload { exportJobId: ID! }