""" Can only be resolved by authenticated users. When the condition fails, the following can be returned (following this priority): 1) `OperationInfo`/`OperationMessage` if those types are allowed at the return type 2) `null` in case the field is not mandatory (e.g. `String` or `[String]`) 3) An empty list in case the field is a list (e.g. `[String]!`) 4) An empty `Connection` in case the return type is a relay connection 2) Otherwise, an error will be raised """ directive @isAuthenticated repeatable on FIELD_DEFINITION directive @oneOf on INPUT_OBJECT type AoiGeometryAssetPropertyType { """Positive float value""" area: Float! bbox: [Float!]! center: [Float!]! } union AoiGeometryAssetPropertyTypeObjectImageAssetPropertyType = AoiGeometryAssetPropertyType | ObjectImageAssetPropertyType type AppEnumCollection { AssetMimetypeEnum: [AppEnumCollectionAssetMimetypeEnum!]! AssetTypeEnum: [AppEnumCollectionAssetTypeEnum!]! ContributorUserGroupMembershipLogActionEnum: [AppEnumCollectionContributorUserGroupMembershipLogActionEnum!]! FirebasePushStatusEnum: [AppEnumCollectionFirebasePushStatusEnum!]! GlobalExportAssetTypeEnum: [AppEnumCollectionGlobalExportAssetTypeEnum!]! IconEnum: [AppEnumCollectionIconEnum!]! MappingSessionClientTypeEnum: [AppEnumCollectionMappingSessionClientTypeEnum!]! OverlayLayerTypeEnum: [AppEnumCollectionOverlayLayerTypeEnum!]! ProjectAssetExportTypeEnum: [AppEnumCollectionProjectAssetExportTypeEnum!]! ProjectAssetInputTypeEnum: [AppEnumCollectionProjectAssetInputTypeEnum!]! ProjectProcessingStatusEnum: [AppEnumCollectionProjectProcessingStatusEnum!]! ProjectProgressStatusEnum: [AppEnumCollectionProjectProgressStatusEnum!]! ProjectStatusEnum: [AppEnumCollectionProjectStatusEnum!]! ProjectTypeEnum: [AppEnumCollectionProjectTypeEnum!]! RasterTileServerNameEnum: [AppEnumCollectionRasterTileServerNameEnum!]! SubGridSizeEnum: [AppEnumCollectionSubGridSizeEnum!]! TutorialAssetInputTypeEnum: [AppEnumCollectionTutorialAssetInputTypeEnum!]! TutorialInformationPageBlockTypeEnum: [AppEnumCollectionTutorialInformationPageBlockTypeEnum!]! TutorialStatusEnum: [AppEnumCollectionTutorialStatusEnum!]! ValidateImageSourceTypeEnum: [AppEnumCollectionValidateImageSourceTypeEnum!]! ValidateObjectSourceTypeEnum: [AppEnumCollectionValidateObjectSourceTypeEnum!]! VectorTileServerNameEnum: [AppEnumCollectionVectorTileServerNameEnum!]! } type AppEnumCollectionAssetMimetypeEnum { key: AssetMimetypeEnum! label: String! } type AppEnumCollectionAssetTypeEnum { key: AssetTypeEnum! label: String! } type AppEnumCollectionContributorUserGroupMembershipLogActionEnum { key: ContributorUserGroupMembershipLogActionEnum! label: String! } type AppEnumCollectionFirebasePushStatusEnum { key: FirebasePushStatusEnum! label: String! } type AppEnumCollectionGlobalExportAssetTypeEnum { key: GlobalExportAssetTypeEnum! label: String! } type AppEnumCollectionIconEnum { key: IconEnum! label: String! } type AppEnumCollectionMappingSessionClientTypeEnum { key: MappingSessionClientTypeEnum! label: String! } type AppEnumCollectionOverlayLayerTypeEnum { key: OverlayLayerTypeEnum! label: String! } type AppEnumCollectionProjectAssetExportTypeEnum { key: ProjectAssetExportTypeEnum! label: String! } type AppEnumCollectionProjectAssetInputTypeEnum { key: ProjectAssetInputTypeEnum! label: String! } type AppEnumCollectionProjectProcessingStatusEnum { key: ProjectProcessingStatusEnum! label: String! } type AppEnumCollectionProjectProgressStatusEnum { key: ProjectProgressStatusEnum! label: String! } type AppEnumCollectionProjectStatusEnum { key: ProjectStatusEnum! label: String! } type AppEnumCollectionProjectTypeEnum { key: ProjectTypeEnum! label: String! } type AppEnumCollectionRasterTileServerNameEnum { key: RasterTileServerNameEnum! label: String! } type AppEnumCollectionSubGridSizeEnum { key: SubGridSizeEnum! label: String! } type AppEnumCollectionTutorialAssetInputTypeEnum { key: TutorialAssetInputTypeEnum! label: String! } type AppEnumCollectionTutorialInformationPageBlockTypeEnum { key: TutorialInformationPageBlockTypeEnum! label: String! } type AppEnumCollectionTutorialStatusEnum { key: TutorialStatusEnum! label: String! } type AppEnumCollectionValidateImageSourceTypeEnum { key: ValidateImageSourceTypeEnum! label: String! } type AppEnumCollectionValidateObjectSourceTypeEnum { key: ValidateObjectSourceTypeEnum! label: String! } type AppEnumCollectionVectorTileServerNameEnum { key: VectorTileServerNameEnum! label: String! } scalar AreaSqKm enum AssetMimetypeEnum { CSV GEOJSON GZIP IMAGE_GIF IMAGE_JPEG IMAGE_PNG JSON PLAINTEXT } input AssetMimetypeEnumFilterLookup { """ Case-sensitive containment test. Filter will be skipped on `null` value """ contains: AssetMimetypeEnum """Case-sensitive ends-with. Filter will be skipped on `null` value""" endsWith: AssetMimetypeEnum """Exact match. Filter will be skipped on `null` value""" exact: AssetMimetypeEnum """ Case-insensitive containment test. Filter will be skipped on `null` value """ iContains: AssetMimetypeEnum """Case-insensitive ends-with. Filter will be skipped on `null` value""" iEndsWith: AssetMimetypeEnum """Case-insensitive exact match. Filter will be skipped on `null` value""" iExact: AssetMimetypeEnum """ Case-insensitive regular expression match. Filter will be skipped on `null` value """ iRegex: AssetMimetypeEnum """Case-insensitive starts-with. Filter will be skipped on `null` value""" iStartsWith: AssetMimetypeEnum """ Exact match of items in a given list. Filter will be skipped on `null` value """ inList: [AssetMimetypeEnum!] """Assignment test. Filter will be skipped on `null` value""" isNull: Boolean """ Case-sensitive regular expression match. Filter will be skipped on `null` value """ regex: AssetMimetypeEnum """Case-sensitive starts-with. Filter will be skipped on `null` value""" startsWith: AssetMimetypeEnum } enum AssetTypeEnum { DEBUG EXPORT INPUT OUTPUT } input AssetTypeEnumFilterLookup { """ Case-sensitive containment test. Filter will be skipped on `null` value """ contains: AssetTypeEnum """Case-sensitive ends-with. Filter will be skipped on `null` value""" endsWith: AssetTypeEnum """Exact match. Filter will be skipped on `null` value""" exact: AssetTypeEnum """ Case-insensitive containment test. Filter will be skipped on `null` value """ iContains: AssetTypeEnum """Case-insensitive ends-with. Filter will be skipped on `null` value""" iEndsWith: AssetTypeEnum """Case-insensitive exact match. Filter will be skipped on `null` value""" iExact: AssetTypeEnum """ Case-insensitive regular expression match. Filter will be skipped on `null` value """ iRegex: AssetTypeEnum """Case-insensitive starts-with. Filter will be skipped on `null` value""" iStartsWith: AssetTypeEnum """ Exact match of items in a given list. Filter will be skipped on `null` value """ inList: [AssetTypeEnum!] """Assignment test. Filter will be skipped on `null` value""" isNull: Boolean """ Case-sensitive regular expression match. Filter will be skipped on `null` value """ regex: AssetTypeEnum """Case-sensitive starts-with. Filter will be skipped on `null` value""" startsWith: AssetTypeEnum } input AssetTypeSpecificInput @oneOf { objectImage: ObjectImageAssetPropertyInput } input BoolBaseFilterLookup { """Exact match. Filter will be skipped on `null` value""" exact: Boolean """ Exact match of items in a given list. Filter will be skipped on `null` value """ inList: [Boolean!] """Assignment test. Filter will be skipped on `null` value""" isNull: Boolean } type CommunityFilteredStats { areaSwipedByProjectType: [ProjectTypeAreaStatsType!]! swipeByOrganizationName: [OrganizationSwipeStatsType!]! swipeByProjectGeo: [MapContributionStatsType!]! swipeByProjectType: [ProjectTypeSwipeStatsType!]! swipeTimeByDate: [ContributorTimeStatType!]! } type CommunityStatsType { id: ID! totalContributors: Int! totalSwipes: Int! totalUserGroups: Int! } input CompareProjectPropertyInput { """Numeric value as string""" aoiGeometry: String! tileServerBProperty: ProjectRasterTileServerConfigInput! tileServerProperty: ProjectRasterTileServerConfigInput! """Zoom level from 14 to 22""" zoomLevel: Int! } type CompareProjectPropertyType { """Numeric value as string""" aoiGeometry: String! tileServerBProperty: ProjectRasterTileServerConfig! tileServerProperty: ProjectRasterTileServerConfig! """Zoom level from 14 to 22""" zoomLevel: Int! } union CompareProjectPropertyTypeFindProjectPropertyTypeValidateProjectPropertyTypeValidateImageProjectPropertyTypeCompletenessProjectPropertyTypeStreetProjectPropertyTypeLocateProjectPropertyType = CompareProjectPropertyType | CompletenessProjectPropertyType | FindProjectPropertyType | LocateProjectPropertyType | StreetProjectPropertyType | ValidateImageProjectPropertyType | ValidateProjectPropertyType input CompareTutorialTaskPropertyInput { tileX: Int! tileY: Int! tileZ: Int! } type CompareTutorialTaskPropertyType { tileX: Int! tileY: Int! tileZ: Int! } union CompareTutorialTaskPropertyTypeFindTutorialTaskPropertyTypeValidateTutorialTaskPropertyTypeValidateImageTutorialTaskPropertyTypeCompletenessTutorialTaskPropertyTypeStreetTutorialTaskPropertyTypeLocateTutorialTaskPropertyType = CompareTutorialTaskPropertyType | CompletenessTutorialTaskPropertyType | FindTutorialTaskPropertyType | LocateTutorialTaskPropertyType | StreetTutorialTaskPropertyType | ValidateImageTutorialTaskPropertyType | ValidateTutorialTaskPropertyType input CompletenessProjectPropertyInput { """Numeric value as string""" aoiGeometry: String! overlayTileServerProperty: ProjectOverlayTileServerConfigInput! tileServerProperty: ProjectRasterTileServerConfigInput! """Zoom level from 14 to 22""" zoomLevel: Int! } type CompletenessProjectPropertyType { """Numeric value as string""" aoiGeometry: String! overlayTileServerProperty: ProjectOverlayTileServerConfig! tileServerProperty: ProjectRasterTileServerConfig! """Zoom level from 14 to 22""" zoomLevel: Int! } input CompletenessTutorialTaskPropertyInput { tileX: Int! tileY: Int! tileZ: Int! } type CompletenessTutorialTaskPropertyType { tileX: Int! tileY: Int! tileZ: Int! } type ContributorSwipeStatType { taskDate: Date! totalSwipes: Int! } """ Model representing a private team that contributor users can be assigned to. Team membership is managed exclusively by system managers; contributor users cannot join or leave teams on their own. Members of a team can only access projects linked to that team. """ input ContributorTeamFilter { AND: ContributorTeamFilter DISTINCT: Boolean NOT: ContributorTeamFilter OR: ContributorTeamFilter id: IDBaseFilterLookup isArchived: BoolBaseFilterLookup name: String } input ContributorTeamOrder { id: Ordering name: Ordering } """ Model representing a private team that contributor users can be assigned to. Team membership is managed exclusively by system managers; contributor users cannot join or leave teams on their own. Members of a team can only access projects linked to that team. """ type ContributorTeamType implements UserResourceTypeMixin & FirebasePushResourceTypeMixin { archivedAt: DateTime archivedBy: UserType clientId: String! createdAt: DateTime! createdBy: UserType! firebaseId: String! """The latest time when resource was pushed to firebase""" firebaseLastPushed: DateTime firebasePushStatus: FirebasePushStatusEnum id: ID! isArchived: Boolean! members(pagination: OffsetPaginationInput): ContributorUserTypeOffsetPaginated! membersCount: Int! modifiedAt: DateTime! modifiedBy: UserType! name: String! } type ContributorTeamTypeOffsetPaginated { pageInfo: OffsetPaginationInfo! """List of paginated results.""" results: [ContributorTeamType!]! """Total count of existing results.""" totalCount: Int! } type ContributorTimeStatType { date: Date! """total swipe time (seconds)""" totalSwipeTime: Int! } """ Model representing contributors synchronized from firebase. Contributor accounts are typically created in firebase and then synced into this system. A contributor user may or may not be linked to a corresponding user in the system. """ input ContributorUserFilter { AND: ContributorUserFilter DISTINCT: Boolean NOT: ContributorUserFilter OR: ContributorUserFilter """Firebase User ID (External)""" firebaseId: StrFilterLookup id: IDBaseFilterLookup teamId: IDBaseFilterLookup username: StrFilterLookup } type ContributorUserFilteredStats implements ContributorUserUserGroupBaseFilterStatsQuery { areaSwipedByProjectType: [ProjectTypeAreaStatsType!]! id: ID! swipeByDate: [ContributorSwipeStatType!]! swipeByOrganizationName: [OrganizationSwipeStatsType!]! swipeByProjectGeo: [MapContributionStatsType!]! swipeByProjectType: [ProjectTypeSwipeStatsType!]! swipeTimeByDate: [ContributorTimeStatType!]! } """ Model representing a group that contributor users can join or leave. Groups are used to aggregate contributions made by users within the group, facilitating management and organization of collective efforts. """ input ContributorUserGroupCreateInput { clientId: String! description: String! name: String! } """ Model representing a group that contributor users can join or leave. Groups are used to aggregate contributions made by users within the group, facilitating management and organization of collective efforts. """ input ContributorUserGroupFilter { AND: ContributorUserGroupFilter DISTINCT: Boolean NOT: ContributorUserGroupFilter OR: ContributorUserGroupFilter id: IDBaseFilterLookup isArchived: BoolBaseFilterLookup name: String userFirebaseId: ID } type ContributorUserGroupFilteredStats implements ContributorUserUserGroupBaseFilterStatsQuery { areaSwipedByProjectType: [ProjectTypeAreaStatsType!]! swipeByDate: [ContributorSwipeStatType!]! swipeByOrganizationName: [OrganizationSwipeStatsType!]! swipeByProjectGeo: [MapContributionStatsType!]! swipeByProjectType: [ProjectTypeSwipeStatsType!]! swipeTimeByDate: [ContributorTimeStatType!]! } type ContributorUserGroupLatestStatsType { totalContributors: Int! totalMappingProjects: Int! """total swipe time (seconds)""" totalSwipeTime: Int! totalSwipes: Int! } """ Model representing membership of contributor users in contributor user groups. """ input ContributorUserGroupMembershipFilter { AND: ContributorUserGroupMembershipFilter DISTINCT: Boolean NOT: ContributorUserGroupMembershipFilter OR: ContributorUserGroupMembershipFilter id: IDBaseFilterLookup userGroupId: IDBaseFilterLookup } enum ContributorUserGroupMembershipLogActionEnum { JOIN LEAVE } input ContributorUserGroupMembershipOrder { id: Ordering } """ Model representing membership of contributor users in contributor user groups. """ type ContributorUserGroupMembershipType { id: ID! isActive: Boolean! totalMappingProjects: Int! totalSwipeTime: Int! totalSwipes: Int! user: ContributorUserType! userId: ID! } type ContributorUserGroupMembershipTypeOffsetPaginated { pageInfo: OffsetPaginationInfo! """List of paginated results.""" results: [ContributorUserGroupMembershipType!]! """Total count of existing results.""" totalCount: Int! } input ContributorUserGroupOrder { id: Ordering name: Ordering } type ContributorUserGroupStats { filteredStats(dateRange: DateRangeInput = null): ContributorUserGroupFilteredStats! id: ID! stats: ContributorUserGroupStatsType! """Stats from last 30 days""" statsLatest: ContributorUserGroupLatestStatsType! } type ContributorUserGroupStatsType { totalAreaSwiped: AreaSqKm! totalContributors: Int! totalMappingProjects: Int! totalOrganization: Int! """total swipe time (seconds)""" totalSwipeTime: Int! totalSwipes: Int! } """ Model representing a group that contributor users can join or leave. Groups are used to aggregate contributions made by users within the group, facilitating management and organization of collective efforts. """ type ContributorUserGroupType implements UserResourceTypeMixin & FirebasePushResourceTypeMixin { archivedAt: DateTime archivedBy: UserType clientId: String! communityDashboardUrl: String! createdAt: DateTime! createdBy: UserType! description: String! firebaseId: String! """The latest time when resource was pushed to firebase""" firebaseLastPushed: DateTime firebasePushStatus: FirebasePushStatusEnum id: ID! isArchived: Boolean! membersCount: Int! modifiedAt: DateTime! modifiedBy: UserType! name: String! userMemberships(pagination: OffsetPaginationInput): ContributorUserGroupMembershipTypeOffsetPaginated! } type ContributorUserGroupTypeMutationResponseType { errors: CustomErrorType ok: Boolean! result: ContributorUserGroupType } type ContributorUserGroupTypeOffsetPaginated { pageInfo: OffsetPaginationInfo! """List of paginated results.""" results: [ContributorUserGroupType!]! """Total count of existing results.""" totalCount: Int! } """ Model representing a group that contributor users can join or leave. Groups are used to aggregate contributions made by users within the group, facilitating management and organization of collective efforts. """ input ContributorUserGroupUpdateInput { clientId: String! description: String isArchived: Boolean name: String } type ContributorUserLatestStatsType { """total swipe time (seconds)""" totalSwipeTime: Int! totalSwipes: Int! totalUserGroups: Int! } input ContributorUserOrder { id: Ordering username: Ordering } type ContributorUserStatType { totalAreaSwiped: AreaSqKm! totalMappingProjects: Int! totalOrganization: Int! """total swipe time (seconds)""" totalSwipeTime: Int! totalSwipes: Int! } type ContributorUserStats { filteredStats(dateRange: DateRangeInput = null): ContributorUserFilteredStats! firebaseId: ID! id: ID! stats: ContributorUserStatType! """Stats from last 30 days""" statsLatest: ContributorUserLatestStatsType! } """ Model representing contributors synchronized from firebase. Contributor accounts are typically created in firebase and then synced into this system. A contributor user may or may not be linked to a corresponding user in the system. """ type ContributorUserType { communityDashboardUrl: String! createdAt: DateTime """Firebase User ID (External)""" firebaseId: ID! id: ID! totalMappingProjects: Int! totalSwipeTime: Int! totalSwipes: Int! username: String! } type ContributorUserTypeOffsetPaginated { pageInfo: OffsetPaginationInfo! """List of paginated results.""" results: [ContributorUserType!]! """Total count of existing results.""" totalCount: Int! } interface ContributorUserUserGroupBaseFilterStatsQuery { areaSwipedByProjectType: [ProjectTypeAreaStatsType!]! swipeByDate: [ContributorSwipeStatType!]! swipeByOrganizationName: [OrganizationSwipeStatsType!]! swipeByProjectGeo: [MapContributionStatsType!]! swipeByProjectType: [ProjectTypeSwipeStatsType!]! swipeTimeByDate: [ContributorTimeStatType!]! } union CreateContributorUserGroupPayload = ContributorUserGroupTypeMutationResponseType | OperationInfo union CreateOrganizationPayload = OperationInfo | OrganizationTypeMutationResponseType union CreateProjectAssetPayload = OperationInfo | ProjectAssetTypeMutationResponseType union CreateProjectPayload = OperationInfo | ProjectTypeMutationResponseType union CreateTutorialAssetPayload = OperationInfo | TutorialAssetTypeMutationResponseType union CreateTutorialPayload = OperationInfo | TutorialTypeMutationResponseType """A generic type to return error messages""" scalar CustomErrorType input CustomOptionInput { """ULID value""" clientId: String! description: String! icon: IconEnum! """Hex color string like '#fff' or '#ffffff' or 'transparent'""" iconColor: String! subOptions: [CustomSubOptionInput!] title: String! """Positive integer value""" value: Int! } type CustomOptionType { description: String! icon: IconEnum! iconColor: String! title: String! value: Int! } input CustomSubOptionInput { """ULID value""" clientId: String! description: String! """Positive integer value""" value: Int! } """Date (isoformat)""" scalar Date input DateRangeInput { fromDate: Date! toDate: Date! } """Date with time (isoformat)""" scalar DateTime input DeleteInput { id: ID! } union DeleteProjectAssetsPayload = OperationInfo | ProjectAssetsDeleteTypeMutationResponseType union DeleteProjectPayload = OperationInfo | ProjectType union DeleteTutorialPayload = OperationInfo | TutorialType input FindProjectPropertyInput { """Numeric value as string""" aoiGeometry: String! tileServerProperty: ProjectRasterTileServerConfigInput! """Zoom level from 14 to 22""" zoomLevel: Int! } type FindProjectPropertyType { """Numeric value as string""" aoiGeometry: String! tileServerProperty: ProjectRasterTileServerConfig! """Zoom level from 14 to 22""" zoomLevel: Int! } input FindTutorialTaskPropertyInput { tileX: Int! tileY: Int! tileZ: Int! } type FindTutorialTaskPropertyType { tileX: Int! tileY: Int! tileZ: Int! } input FirebaseOrInternalIdInputType @oneOf { firebaseId: ID id: ID } interface FirebasePushResourceTypeMixin { firebaseId: String! firebaseLastPushed: DateTime firebasePushStatus: FirebasePushStatusEnum } enum FirebasePushStatusEnum { FAILED PENDING PROCESSING SUCCESS } scalar GenericJSON """Model representing an area.""" type GeometryType { bbox: Polygon centroid: Point id: ID! totalArea: Float } """Model representing a global export asset with associated metadata.""" type GlobalExportAssetType { """The file associated with the asset""" file: MapswipeDjangoFileType """The size of the file in bytes""" fileSize: Int! lastUpdatedAt: DateTime! type: GlobalExportAssetTypeEnum! } enum GlobalExportAssetTypeEnum { PROJECTS_CENTROID_GEOJSON PROJECTS_CSV PROJECTS_GEOM_GEOJSON PROJECT_STATS_BY_TYPES } input IDBaseFilterLookup { """Exact match. Filter will be skipped on `null` value""" exact: ID """ Exact match of items in a given list. Filter will be skipped on `null` value """ inList: [ID!] """Assignment test. Filter will be skipped on `null` value""" isNull: Boolean } enum IconEnum { ADD_OUTLINE ALERT_OUTLINE BAN_OUTLINE CHECK CHECKMARK_OUTLINE CLOSE_OUTLINE EGG_OUTLINE ELLIPSE_OUTLINE FLAG_OUTLINE GENERAL_TAP HAND_LEFT_OUTLINE HAND_RIGHT_OUTLINE HAPPY_OUTLINE HEART_OUTLINE HELP_OUTLINE INFORMATION_OUTLINE PRISM_OUTLINE REFRESH_OUTLINE REMOVE_OUTLINE SAD_OUTLINE SEARCH_OUTLINE SHAPES_OUTLINE SQUARE_OUTLINE STAR_OUTLINE SWIPE_LEFT TAP TAP_1 TAP_2 TAP_3 THUMBS_DOWN_OUTLINE THUMBS_UP_OUTLINE TRIANGLE_OUTLINE WARNING_OUTLINE } input IntComparisonFilterLookup { """Exact match. Filter will be skipped on `null` value""" exact: Int """Greater than. Filter will be skipped on `null` value""" gt: Int """Greater than or equal to. Filter will be skipped on `null` value""" gte: Int """ Exact match of items in a given list. Filter will be skipped on `null` value """ inList: [Int!] """Assignment test. Filter will be skipped on `null` value""" isNull: Boolean """Less than. Filter will be skipped on `null` value""" lt: Int """Less than or equal to. Filter will be skipped on `null` value""" lte: Int """Inclusive range test (between)""" range: IntRangeLookup } input IntRangeLookup { end: Int = null start: Int = null } input LocateProjectPropertyInput { """Numeric value as string""" aoiGeometry: String! customOptions: [CustomOptionInput!] = null exportMetaKey: String! exportMetaValue: String! subGridSize: SubGridSizeEnum! tileServerProperty: ProjectRasterTileServerConfigInput! """Zoom level from 14 to 22""" zoomLevel: Int! } type LocateProjectPropertyType { """Numeric value as string""" aoiGeometry: String! customOptions: [ProjectCustomOption!] exportMetaKey: String! exportMetaValue: String! subGridSize: SubGridSizeEnum! tileServerProperty: ProjectRasterTileServerConfig! """Zoom level from 14 to 22""" zoomLevel: Int! } input LocateTutorialTaskPropertyInput { tileX: Int! tileY: Int! tileZ: Int! } type LocateTutorialTaskPropertyType { tileX: Int! tileY: Int! tileZ: Int! } type MapContributionStatsType { geojson: GenericJSON! totalContribution: Int! } enum MappingSessionClientTypeEnum { MOBILE_ANDROID MOBILE_IOS UNKNOWN WEB } type MapswipeDjangoFileType { name: String! url: String! } type Mutation { createContributorUserGroup(data: ContributorUserGroupCreateInput!): CreateContributorUserGroupPayload! @isAuthenticated createOrganization(data: OrganizationCreateInput!): CreateOrganizationPayload! @isAuthenticated createProject(data: ProjectCreateInput!): CreateProjectPayload! @isAuthenticated createProjectAsset(data: ProjectAssetCreateInput!): CreateProjectAssetPayload! @isAuthenticated createTutorial(data: TutorialCreateInput!): CreateTutorialPayload! @isAuthenticated createTutorialAsset(data: TutorialAssetCreateInput!): CreateTutorialAssetPayload! @isAuthenticated deleteProject: DeleteProjectPayload! @isAuthenticated deleteProjectAssets(projectId: ID!, assetInputType: [ProjectAssetInputTypeEnum!]!): DeleteProjectAssetsPayload! @isAuthenticated deleteTutorial: DeleteTutorialPayload! @isAuthenticated login(username: String!, password: String!): UserMeType! logout: Boolean! updateContributorUserGroup(data: ContributorUserGroupUpdateInput!, pk: ID!): UpdateContributorUserGroupPayload! @isAuthenticated updateOrganization(data: OrganizationUpdateInput!, pk: ID!): UpdateOrganizationPayload! @isAuthenticated updateProcessedProject(data: ProcessedProjectUpdateInput!, pk: ID!): UpdateProcessedProjectPayload! @isAuthenticated updateProject(data: ProjectUpdateInput!, pk: ID!): UpdateProjectPayload! @isAuthenticated updateProjectStatus(data: ProjectStatusUpdateInput!, pk: ID!): UpdateProjectStatusPayload! @isAuthenticated updateTutorial(data: TutorialUpdateInput!, pk: ID!): UpdateTutorialPayload! @isAuthenticated updateTutorialStatus(data: TutorialStatusUpdateInput!, pk: ID!): UpdateTutorialStatusPayload! @isAuthenticated } input ObjectImageAnnotationInput { area: Float = null bbox: [Float!]! categoryId: String = null """Numeric value as string""" id: String! imageId: String = null iscrowd: Int = null segmentation: [[Float!]!] = null } type ObjectImageAnnotationType { area: Float bbox: [Float!]! categoryId: String """Numeric value as string""" id: String! imageId: String iscrowd: Int segmentation: [[Float!]!] } input ObjectImageAssetPropertyInput { annotations: [ObjectImageAnnotationInput!] = null image: ObjectImageInput! } type ObjectImageAssetPropertyType { annotations: [ObjectImageAnnotationType!] image: ObjectImageType! } input ObjectImageInput { cocoUrl: String = null dateCaptured: DateTime = null fileName: String! flickrUrl: String = null height: Int = null """Numeric value as string""" id: String! license: Int = null width: Int = null } type ObjectImageType { cocoUrl: String dateCaptured: DateTime fileName: String! flickrUrl: String height: Int """Numeric value as string""" id: String! license: Int width: Int } type OffsetPaginationInfo { limit: Int offset: Int! } input OffsetPaginationInput { limit: Int offset: Int! = 0 } type OperationInfo { """List of messages returned by the operation.""" messages: [OperationMessage!]! } type OperationMessage { """The error code, or `null` if no error code was set.""" code: String """ The field that caused the error, or `null` if it isn't associated with any particular field. """ field: String """The kind of this message.""" kind: OperationMessageKind! """The error message.""" message: String! } enum OperationMessageKind { ERROR INFO PERMISSION VALIDATION WARNING } enum Ordering { ASC ASC_NULLS_FIRST ASC_NULLS_LAST DESC DESC_NULLS_FIRST DESC_NULLS_LAST } """Model representing the organization requesting the project.""" input OrganizationCreateInput { abbreviation: String clientId: String! description: String name: String! } """Model representing the organization requesting the project.""" input OrganizationFilter { AND: OrganizationFilter DISTINCT: Boolean NOT: OrganizationFilter OR: OrganizationFilter id: IDBaseFilterLookup isArchived: BoolBaseFilterLookup name: String } input OrganizationOrder { id: Ordering name: Ordering } type OrganizationSwipeStatsType { organizationName: String! totalSwipes: Int! } """Model representing the organization requesting the project.""" type OrganizationType implements UserResourceTypeMixin & FirebasePushResourceTypeMixin { abbreviation: String archivedAt: DateTime archivedBy: UserType clientId: String! createdAt: DateTime! createdBy: UserType! description: String firebaseId: String! """The latest time when resource was pushed to firebase""" firebaseLastPushed: DateTime firebasePushStatus: FirebasePushStatusEnum id: ID! isArchived: Boolean! modifiedAt: DateTime! modifiedBy: UserType! name: String! } type OrganizationTypeMutationResponseType { errors: CustomErrorType ok: Boolean! result: OrganizationType } type OrganizationTypeOffsetPaginated { pageInfo: OffsetPaginationInfo! """List of paginated results.""" results: [OrganizationType!]! """Total count of existing results.""" totalCount: Int! } """Model representing the organization requesting the project.""" input OrganizationUpdateInput { abbreviation: String clientId: String! description: String isArchived: Boolean name: String } enum OverlayLayerTypeEnum { RASTER_TILE VECTOR_TILE } """Represents a point as `(x, y, z)` or `(x, y)`.""" scalar Point """ A geographical object that gets 1 or 2 LinearRing objects as external and internal rings. """ scalar Polygon """Model representing the project.""" input ProcessedProjectUpdateInput { """ Provide an optional link to a resource with additional information on the project """ additionalInfoUrl: String clientId: String! description: String image: ID isFeatured: Boolean """What should the users look for (e.g. buildings, cars, trees)""" lookFor: String """How many tasks each user is allowed to work on for this project""" maxTasksPerUser: Int """Provide project instruction""" projectInstruction: String projectNumber: Int region: String """Which group, institution or community is requesting this project?""" requestingOrganization: ID team: ID topic: String """Tutorial used for this project.""" tutorial: ID } """Model representing assets for a project.""" input ProjectAssetCreateInput { assetTypeSpecifics: AssetTypeSpecificInput clientId: String! """Provide link to the file associated with the asset""" externalUrl: String """The file associated with the asset""" file: Upload inputType: ProjectAssetInputTypeEnum! project: ID! } enum ProjectAssetExportTypeEnum { AGGREGATED_RESULTS AGGREGATED_RESULTS_WITH_GEOMETRY AREA_OF_INTEREST GROUPS HISTORY HOT_TASKING_MANAGER_GEOMETRIES MODERATE_TO_HIGH_AGREEMENT_YES_MAYBE_GEOMETRIES RESULTS TASKS USERS } input ProjectAssetExportTypeEnumFilterLookup { """ Case-sensitive containment test. Filter will be skipped on `null` value """ contains: ProjectAssetExportTypeEnum """Case-sensitive ends-with. Filter will be skipped on `null` value""" endsWith: ProjectAssetExportTypeEnum """Exact match. Filter will be skipped on `null` value""" exact: ProjectAssetExportTypeEnum """ Case-insensitive containment test. Filter will be skipped on `null` value """ iContains: ProjectAssetExportTypeEnum """Case-insensitive ends-with. Filter will be skipped on `null` value""" iEndsWith: ProjectAssetExportTypeEnum """Case-insensitive exact match. Filter will be skipped on `null` value""" iExact: ProjectAssetExportTypeEnum """ Case-insensitive regular expression match. Filter will be skipped on `null` value """ iRegex: ProjectAssetExportTypeEnum """Case-insensitive starts-with. Filter will be skipped on `null` value""" iStartsWith: ProjectAssetExportTypeEnum """ Exact match of items in a given list. Filter will be skipped on `null` value """ inList: [ProjectAssetExportTypeEnum!] """Assignment test. Filter will be skipped on `null` value""" isNull: Boolean """ Case-sensitive regular expression match. Filter will be skipped on `null` value """ regex: ProjectAssetExportTypeEnum """Case-sensitive starts-with. Filter will be skipped on `null` value""" startsWith: ProjectAssetExportTypeEnum } """Model representing assets for a project.""" input ProjectAssetFilter { AND: ProjectAssetFilter DISTINCT: Boolean NOT: ProjectAssetFilter OR: ProjectAssetFilter exportType: ProjectAssetExportTypeEnumFilterLookup id: IDBaseFilterLookup inputType: ProjectAssetInputTypeEnumFilterLookup mimetype: AssetMimetypeEnumFilterLookup projectId: IDBaseFilterLookup type: AssetTypeEnumFilterLookup } enum ProjectAssetInputTypeEnum { AOI_GEOMETRY COVER_IMAGE OBJECT_IMAGE } input ProjectAssetInputTypeEnumFilterLookup { """ Case-sensitive containment test. Filter will be skipped on `null` value """ contains: ProjectAssetInputTypeEnum """Case-sensitive ends-with. Filter will be skipped on `null` value""" endsWith: ProjectAssetInputTypeEnum """Exact match. Filter will be skipped on `null` value""" exact: ProjectAssetInputTypeEnum """ Case-insensitive containment test. Filter will be skipped on `null` value """ iContains: ProjectAssetInputTypeEnum """Case-insensitive ends-with. Filter will be skipped on `null` value""" iEndsWith: ProjectAssetInputTypeEnum """Case-insensitive exact match. Filter will be skipped on `null` value""" iExact: ProjectAssetInputTypeEnum """ Case-insensitive regular expression match. Filter will be skipped on `null` value """ iRegex: ProjectAssetInputTypeEnum """Case-insensitive starts-with. Filter will be skipped on `null` value""" iStartsWith: ProjectAssetInputTypeEnum """ Exact match of items in a given list. Filter will be skipped on `null` value """ inList: [ProjectAssetInputTypeEnum!] """Assignment test. Filter will be skipped on `null` value""" isNull: Boolean """ Case-sensitive regular expression match. Filter will be skipped on `null` value """ regex: ProjectAssetInputTypeEnum """Case-sensitive starts-with. Filter will be skipped on `null` value""" startsWith: ProjectAssetInputTypeEnum } input ProjectAssetOrder { id: Ordering } """Model representing assets for a project.""" type ProjectAssetType implements UserResourceTypeMixin { assetTypeSpecifics: AoiGeometryAssetPropertyTypeObjectImageAssetPropertyType clientId: String! createdAt: DateTime! createdBy: UserType! exportType: ProjectAssetExportTypeEnum """Provide link to the file associated with the asset""" externalUrl: String """The file associated with the asset""" file: MapswipeDjangoFileType """The size of the file in bytes""" fileSize: Int! id: ID! inputType: ProjectAssetInputTypeEnum """If this flag is enabled, this asset will be deleted in the future""" markedAsDeleted: Boolean! mimetype: AssetMimetypeEnum modifiedAt: DateTime! modifiedBy: UserType! projectId: ID! type: AssetTypeEnum! } type ProjectAssetTypeMutationResponseType { errors: CustomErrorType ok: Boolean! result: ProjectAssetType } type ProjectAssetTypeOffsetPaginated { pageInfo: OffsetPaginationInfo! """List of paginated results.""" results: [ProjectAssetType!]! """Total count of existing results.""" totalCount: Int! } type ProjectAssetsDeleteType { count: Int! } type ProjectAssetsDeleteTypeMutationResponseType { errors: CustomErrorType ok: Boolean! result: ProjectAssetsDeleteType } """Model representing the project.""" input ProjectCreateInput { """ Provide an optional link to a resource with additional information on the project """ additionalInfoUrl: String clientId: String! description: String """What should the users look for (e.g. buildings, cars, trees)""" lookFor: String """Provide project instruction""" projectInstruction: String! projectNumber: Int! projectType: ProjectTypeEnum! region: String! """Which group, institution or community is requesting this project?""" requestingOrganization: ID! team: ID topic: String! } type ProjectCustomOption { """ULID value""" clientId: String! description: String! icon: IconEnum! """Hex color string like '#fff' or '#ffffff' or 'transparent'""" iconColor: String! subOptions: [ProjectCustomSubOption!] title: String! """Positive integer value""" value: Int! } type ProjectCustomSubOption { """ULID value""" clientId: String! description: String! """Positive integer value""" value: Int! } interface ProjectExportAssetTypeMixin { exportAggregatedResults: ProjectAssetType exportAggregatedResultsWithGeometry: ProjectAssetType exportAreaOfInterest: ProjectAssetType exportGroups: ProjectAssetType exportHistory: ProjectAssetType exportHotTaskingManagerGeometries: ProjectAssetType exportModerateToHighAgreementYesMaybeGeometries: ProjectAssetType exportResults: ProjectAssetType exportTasks: ProjectAssetType exportUsers: ProjectAssetType } """Model representing the project.""" input ProjectFilter { AND: ProjectFilter DISTINCT: Boolean NOT: ProjectFilter OR: ProjectFilter createdById: IDBaseFilterLookup id: IDBaseFilterLookup isFeatured: BoolBaseFilterLookup """ If the project is private, then it is only visible to the team members. """ isPrivate: BoolBaseFilterLookup name: String oldId: StrFilterLookup progressStatus: ProjectProgressStatusEnumFilterLookup projectNumber: IntComparisonFilterLookup projectType: ProjectTypeEnumFilterLookup region: String """Which group, institution or community is requesting this project?""" requestingOrganizationId: IDBaseFilterLookup status: ProjectStatusEnumFilterLookup teamId: IDBaseFilterLookup topic: String } input ProjectNameInput { projectNumber: Int! projectType: ProjectTypeEnum! region: String! requestingOrganizationId: ID! topic: String! } input ProjectOrder { id: Ordering name: Ordering topic: Ordering } type ProjectOverlayRasterTileServerConfig { """Float value from 0.0 to 1.0""" opacity: Float! tileServer: ProjectRasterTileServerConfig! } input ProjectOverlayRasterTileServerConfigInput { """Float value from 0.0 to 1.0""" opacity: Float! tileServer: ProjectRasterTileServerConfigInput! } type ProjectOverlayTileServerConfig { raster: ProjectOverlayRasterTileServerConfig type: OverlayLayerTypeEnum! vector: ProjectOverlayVectorTileServerConfig } input ProjectOverlayTileServerConfigInput { raster: ProjectOverlayRasterTileServerConfigInput = null type: OverlayLayerTypeEnum! vector: ProjectOverlayVectorTileServerConfigInput = null } type ProjectOverlayVectorTileServerConfig { """Hex color string like '#fff' or '#ffffff' or 'transparent'""" circleColor: String! """Float value from 0.0 to 1.0""" circleOpacity: Float! """Positive float value""" circleRadius: Float! """Hex color string like '#fff' or '#ffffff' or 'transparent'""" fillColor: String! """Float value from 0.0 to 1.0""" fillOpacity: Float! """Hex color string like '#fff' or '#ffffff' or 'transparent'""" lineColor: String! lineDasharray: [Int!]! """Float value from 0.0 to 1.0""" lineOpacity: Float! """Positive float value""" lineWidth: Float! tileServer: ProjectVectorTileServerConfig! } input ProjectOverlayVectorTileServerConfigInput { """Hex color string like '#fff' or '#ffffff' or 'transparent'""" circleColor: String! """Float value from 0.0 to 1.0""" circleOpacity: Float! """Positive float value""" circleRadius: Float! """Hex color string like '#fff' or '#ffffff' or 'transparent'""" fillColor: String! """Float value from 0.0 to 1.0""" fillOpacity: Float! """Hex color string like '#fff' or '#ffffff' or 'transparent'""" lineColor: String! lineDasharray: [Int!]! """Float value from 0.0 to 1.0""" lineOpacity: Float! """Positive float value""" lineWidth: Float! tileServer: ProjectVectorTileServerConfigInput! } enum ProjectProcessingStatusEnum { ANALYZING_GROUPS_AND_TASK COMPLETED GENERATING_GROUPS_AND_TASKS GENERATING_TASKS_GEOJSON PREPARING VALIDATING_GEOMETRY } enum ProjectProgressStatusEnum { COMPLETED ON_GOING } input ProjectProgressStatusEnumFilterLookup { """ Case-sensitive containment test. Filter will be skipped on `null` value """ contains: ProjectProgressStatusEnum """Case-sensitive ends-with. Filter will be skipped on `null` value""" endsWith: ProjectProgressStatusEnum """Exact match. Filter will be skipped on `null` value""" exact: ProjectProgressStatusEnum """ Case-insensitive containment test. Filter will be skipped on `null` value """ iContains: ProjectProgressStatusEnum """Case-insensitive ends-with. Filter will be skipped on `null` value""" iEndsWith: ProjectProgressStatusEnum """Case-insensitive exact match. Filter will be skipped on `null` value""" iExact: ProjectProgressStatusEnum """ Case-insensitive regular expression match. Filter will be skipped on `null` value """ iRegex: ProjectProgressStatusEnum """Case-insensitive starts-with. Filter will be skipped on `null` value""" iStartsWith: ProjectProgressStatusEnum """ Exact match of items in a given list. Filter will be skipped on `null` value """ inList: [ProjectProgressStatusEnum!] """Assignment test. Filter will be skipped on `null` value""" isNull: Boolean """ Case-sensitive regular expression match. Filter will be skipped on `null` value """ regex: ProjectProgressStatusEnum """Case-sensitive starts-with. Filter will be skipped on `null` value""" startsWith: ProjectProgressStatusEnum } type ProjectRasterTileServerCommonConfig { credits: String! } type ProjectRasterTileServerConfig { bing: ProjectRasterTileServerCommonConfig custom: ProjectRasterTileServerCustomConfig esri: ProjectRasterTileServerCommonConfig esriBeta: ProjectRasterTileServerCommonConfig mapbox: ProjectRasterTileServerCommonConfig maxarPremium: ProjectRasterTileServerCommonConfig maxarStandard: ProjectRasterTileServerCommonConfig name: RasterTileServerNameEnum! } input ProjectRasterTileServerConfigInput { bing: RasterTileServerCommonConfigInput = null custom: RasterTileServerCustomConfigInput = null esri: RasterTileServerCommonConfigInput = null esriBeta: RasterTileServerCommonConfigInput = null mapbox: RasterTileServerCommonConfigInput = null maxarPremium: RasterTileServerCommonConfigInput = null maxarStandard: RasterTileServerCommonConfigInput = null name: RasterTileServerNameEnum! } type ProjectRasterTileServerCustomConfig { credits: String! maxZoom: Int minZoom: Int url: String! } enum ProjectStatusEnum { DISCARDED DRAFT FINISHED PAUSED PROCESSED PROCESSING_FAILED PUBLISHED PUBLISHING_FAILED READY_TO_PROCESS READY_TO_PUBLISH WITHDRAWN } input ProjectStatusEnumFilterLookup { """ Case-sensitive containment test. Filter will be skipped on `null` value """ contains: ProjectStatusEnum """Case-sensitive ends-with. Filter will be skipped on `null` value""" endsWith: ProjectStatusEnum """Exact match. Filter will be skipped on `null` value""" exact: ProjectStatusEnum """ Case-insensitive containment test. Filter will be skipped on `null` value """ iContains: ProjectStatusEnum """Case-insensitive ends-with. Filter will be skipped on `null` value""" iEndsWith: ProjectStatusEnum """Case-insensitive exact match. Filter will be skipped on `null` value""" iExact: ProjectStatusEnum """ Case-insensitive regular expression match. Filter will be skipped on `null` value """ iRegex: ProjectStatusEnum """Case-insensitive starts-with. Filter will be skipped on `null` value""" iStartsWith: ProjectStatusEnum """ Exact match of items in a given list. Filter will be skipped on `null` value """ inList: [ProjectStatusEnum!] """Assignment test. Filter will be skipped on `null` value""" isNull: Boolean """ Case-sensitive regular expression match. Filter will be skipped on `null` value """ regex: ProjectStatusEnum """Case-sensitive starts-with. Filter will be skipped on `null` value""" startsWith: ProjectStatusEnum } """Model representing the project.""" input ProjectStatusUpdateInput { clientId: String! status: ProjectStatusEnum } """Model representing the project.""" type ProjectType implements UserResourceTypeMixin & ProjectExportAssetTypeMixin & FirebasePushResourceTypeMixin { """ Provide an optional link to a resource with additional information on the project """ additionalInfoUrl: String aoiGeometry: GeometryType aoiGeometryInputAsset: ProjectAssetType clientId: String! createdAt: DateTime! createdBy: UserType! description: String exportAggregatedResults: ProjectAssetType exportAggregatedResultsWithGeometry: ProjectAssetType exportAreaOfInterest: ProjectAssetType exportGroups: ProjectAssetType exportHistory: ProjectAssetType exportHotTaskingManagerGeometries: ProjectAssetType exportModerateToHighAgreementYesMaybeGeometries: ProjectAssetType exportResults: ProjectAssetType exportTasks: ProjectAssetType exportUsers: ProjectAssetType firebaseId: String! """The latest time when resource was pushed to firebase""" firebaseLastPushed: DateTime firebasePushStatus: FirebasePushStatusEnum """ How big should a mapping session be? Group size refers to the number of tasks per mapping session. """ groupSize: Int! id: ID! image: ProjectAssetType isFeatured: Boolean! """ If the project is private, then it is only visible to the team members. """ isPrivate: Boolean! """Last recent contribution date""" lastContributionDate: Date """What should the users look for (e.g. buildings, cars, trees)""" lookFor: String """How many tasks each user is allowed to work on for this project""" maxTasksPerUser: Int modifiedAt: DateTime! modifiedBy: UserType! """ Project name generated from topic, region, project number, and requesting organization name. """ name: String! """Number of users who made contributions to this project""" numberOfContributorUsers: Int! """Number of results contributed to this project""" numberOfResults: Int! """ Number of results contributed to this project that can be used to calculate the progress of this project. Max no. of results per task that can be used to calculate progress is equal to the `verification number` """ numberOfResultsForProgress: Int! oldId: String processingStatus: ProjectProcessingStatusEnum """Percentage of the required contribution that has been completed""" progress: Float! progressStatus: ProjectProgressStatusEnum! """Provide project instruction""" projectInstruction: String projectNumber: Int! projectType: ProjectTypeEnum! projectTypeSpecificOutputAsset: ProjectAssetType projectTypeSpecifics: CompareProjectPropertyTypeFindProjectPropertyTypeValidateProjectPropertyTypeValidateImageProjectPropertyTypeCompletenessProjectPropertyTypeStreetProjectPropertyTypeLocateProjectPropertyType region: String! """Which group, institution or community is requesting this project?""" requestingOrganization: OrganizationType! """Which group, institution or community is requesting this project?""" requestingOrganizationId: ID! requiredResults: Int! status: ProjectStatusEnum! statusMessage: String team: ContributorTeamType topic: String! totalArea: Float @deprecated(reason: "Use AOI Geometry instead") """Tutorial used for this project.""" tutorial: TutorialType """Tutorial used for this project.""" tutorialId: ID """ How many people do you want to see every tile before you consider it finished? """ verificationNumber: Int! websiteUrl: String! } type ProjectTypeAreaStatsType { projectType: ProjectTypeEnum! projectTypeDisplay: String! totalArea: AreaSqKm! } enum ProjectTypeEnum { COMPARE COMPLETENESS FIND LOCATE STREET VALIDATE VALIDATE_IMAGE } input ProjectTypeEnumFilterLookup { """ Case-sensitive containment test. Filter will be skipped on `null` value """ contains: ProjectTypeEnum """Case-sensitive ends-with. Filter will be skipped on `null` value""" endsWith: ProjectTypeEnum """Exact match. Filter will be skipped on `null` value""" exact: ProjectTypeEnum """ Case-insensitive containment test. Filter will be skipped on `null` value """ iContains: ProjectTypeEnum """Case-insensitive ends-with. Filter will be skipped on `null` value""" iEndsWith: ProjectTypeEnum """Case-insensitive exact match. Filter will be skipped on `null` value""" iExact: ProjectTypeEnum """ Case-insensitive regular expression match. Filter will be skipped on `null` value """ iRegex: ProjectTypeEnum """Case-insensitive starts-with. Filter will be skipped on `null` value""" iStartsWith: ProjectTypeEnum """ Exact match of items in a given list. Filter will be skipped on `null` value """ inList: [ProjectTypeEnum!] """Assignment test. Filter will be skipped on `null` value""" isNull: Boolean """ Case-sensitive regular expression match. Filter will be skipped on `null` value """ regex: ProjectTypeEnum """Case-sensitive starts-with. Filter will be skipped on `null` value""" startsWith: ProjectTypeEnum } type ProjectTypeMutationResponseType { errors: CustomErrorType ok: Boolean! result: ProjectType } type ProjectTypeOffsetPaginated { pageInfo: OffsetPaginationInfo! """List of paginated results.""" results: [ProjectType!]! """Total count of existing results.""" totalCount: Int! } input ProjectTypeSpecificInput @oneOf { compare: CompareProjectPropertyInput completeness: CompletenessProjectPropertyInput find: FindProjectPropertyInput locate: LocateProjectPropertyInput street: StreetProjectPropertyInput validate: ValidateProjectPropertyInput validateImage: ValidateImageProjectPropertyInput } type ProjectTypeSwipeStatsType { projectType: ProjectTypeEnum! projectTypeDisplay: String! totalSwipes: Int! } """Model representing the project.""" input ProjectUpdateInput { """ Provide an optional link to a resource with additional information on the project """ additionalInfoUrl: String clientId: String! description: String """ How big should a mapping session be? Group size refers to the number of tasks per mapping session. """ groupSize: Int image: ID """What should the users look for (e.g. buildings, cars, trees)""" lookFor: String """How many tasks each user is allowed to work on for this project""" maxTasksPerUser: Int """Provide project instruction""" projectInstruction: String projectNumber: Int projectTypeSpecifics: ProjectTypeSpecificInput region: String """Which group, institution or community is requesting this project?""" requestingOrganization: ID team: ID topic: String """Tutorial used for this project.""" tutorial: ID """ How many people do you want to see every tile before you consider it finished? """ verificationNumber: Int } type ProjectVectorTileServerCommonConfig { credits: String! sourceLayer: String! } type ProjectVectorTileServerConfig { custom: ProjectVectorTileServerCustomConfig name: VectorTileServerNameEnum! openFreeMap: ProjectVectorTileServerCommonConfig openStreetMap: ProjectVectorTileServerCommonConfig versatiles: ProjectVectorTileServerCommonConfig } input ProjectVectorTileServerConfigInput { custom: VectorTileServerCustomConfigInput = null name: VectorTileServerNameEnum! openFreeMap: VectorTileServerCommonConfigInput = null openStreetMap: VectorTileServerCommonConfigInput = null versatiles: VectorTileServerCommonConfigInput = null } type ProjectVectorTileServerCustomConfig { credits: String! """Zoom level from 0 to 22""" maxZoom: Int! """Zoom level from 0 to 22""" minZoom: Int! sourceLayer: String! url: String! } type Query { communityFilteredStats(dateRange: DateRangeInput = null): CommunityFilteredStats! communityStats: CommunityStatsType! """Stats from last 30 days.""" communityStatsLatest: CommunityStatsType! communityUserGroupStats(userGroupId: FirebaseOrInternalIdInputType!): ContributorUserGroupStats! communityUserStats(userId: FirebaseOrInternalIdInputType!): ContributorUserStats! contributorTeam(id: ID!): ContributorTeamType! contributorTeams(includeAll: Boolean! = false, filters: ContributorTeamFilter, order: ContributorTeamOrder, pagination: OffsetPaginationInput): ContributorTeamTypeOffsetPaginated! @isAuthenticated contributorUser(userId: FirebaseOrInternalIdInputType!): ContributorUserType! contributorUserGroup(userGroupId: FirebaseOrInternalIdInputType!): ContributorUserGroupType! contributorUserGroupMembers(includeAll: Boolean! = false, filters: ContributorUserGroupMembershipFilter, order: ContributorUserGroupMembershipOrder, pagination: OffsetPaginationInput): ContributorUserGroupMembershipTypeOffsetPaginated! contributorUserGroups(includeAll: Boolean! = false, filters: ContributorUserGroupFilter, order: ContributorUserGroupOrder, pagination: OffsetPaginationInput): ContributorUserGroupTypeOffsetPaginated! contributorUsers(pagination: OffsetPaginationInput, filters: ContributorUserFilter, order: ContributorUserOrder): ContributorUserTypeOffsetPaginated! defaultCustomOptions(projectType: ProjectTypeEnum!): [CustomOptionType!]! @isAuthenticated enums: AppEnumCollection! globalExportAsset(assetType: GlobalExportAssetTypeEnum!): GlobalExportAssetType! globalExportAssets: [GlobalExportAssetType!]! me: UserMeType organization(id: ID!): OrganizationType! @isAuthenticated organizations(includeAll: Boolean! = false, filters: OrganizationFilter, order: OrganizationOrder, pagination: OffsetPaginationInput): OrganizationTypeOffsetPaginated! @isAuthenticated project(id: ID!): ProjectType! @isAuthenticated projectAsset(id: ID!): ProjectAssetType! @isAuthenticated projectAssets(includeAll: Boolean! = false, filters: ProjectAssetFilter, order: ProjectAssetOrder, pagination: OffsetPaginationInput): ProjectAssetTypeOffsetPaginated! @isAuthenticated projectName(params: ProjectNameInput): String! projects(includeAll: Boolean! = false, filters: ProjectFilter, order: ProjectOrder, pagination: OffsetPaginationInput): ProjectTypeOffsetPaginated! @isAuthenticated publicOrganization(id: ID!): OrganizationType! publicOrganizations(filters: OrganizationFilter, order: OrganizationOrder, pagination: OffsetPaginationInput): OrganizationTypeOffsetPaginated! publicProject(id: ID!): ProjectType! publicProjects(filters: ProjectFilter, order: ProjectOrder, pagination: OffsetPaginationInput): ProjectTypeOffsetPaginated! testAoiObjects(projectId: ID!, assetId: ID!, ohsomeFilter: String!): TestValidateAoiObjectsResponse! @isAuthenticated testTaskingManagerProject(hotTmId: String!, ohsomeFilter: String!): TestValidateTaskingManagerProjectResponse! @isAuthenticated tileServers: RasterTileServersType! @isAuthenticated tutorial(id: ID!): TutorialType! @isAuthenticated tutorialAsset(id: ID!): TutorialAssetType! @isAuthenticated tutorialAssets(includeAll: Boolean! = false, filters: TutorialAssetFilter, order: TutorialAssetOrder, pagination: OffsetPaginationInput): TutorialAssetTypeOffsetPaginated! @isAuthenticated tutorials(includeAll: Boolean! = false, filters: TutorialFilter, order: TutorialOrder, pagination: OffsetPaginationInput): TutorialTypeOffsetPaginated! @isAuthenticated users(filters: UserFilter, order: UserOrder, pagination: OffsetPaginationInput): UserTypeOffsetPaginated! @isAuthenticated } input RasterTileServerCommonConfigInput { credits: String! } input RasterTileServerCustomConfigInput { credits: String! maxZoom: Int = null minZoom: Int = null url: String! } enum RasterTileServerNameEnum { BING CUSTOM ESRI ESRI_BETA MAPBOX MAXAR_PREMIUM MAXAR_STANDARD } type RasterTileServerType { credits: String! disabled: Boolean! label: String! maxZoom: Int minZoom: Int type: RasterTileServerNameEnum! url: String! } type RasterTileServersType { raster: [RasterTileServerType!]! vector: [VectorTileServerType!]! } input StrFilterLookup { """ Case-sensitive containment test. Filter will be skipped on `null` value """ contains: String """Case-sensitive ends-with. Filter will be skipped on `null` value""" endsWith: String """Exact match. Filter will be skipped on `null` value""" exact: String """ Case-insensitive containment test. Filter will be skipped on `null` value """ iContains: String """Case-insensitive ends-with. Filter will be skipped on `null` value""" iEndsWith: String """Case-insensitive exact match. Filter will be skipped on `null` value""" iExact: String """ Case-insensitive regular expression match. Filter will be skipped on `null` value """ iRegex: String """Case-insensitive starts-with. Filter will be skipped on `null` value""" iStartsWith: String """ Exact match of items in a given list. Filter will be skipped on `null` value """ inList: [String!] """Assignment test. Filter will be skipped on `null` value""" isNull: Boolean """ Case-sensitive regular expression match. Filter will be skipped on `null` value """ regex: String """Case-sensitive starts-with. Filter will be skipped on `null` value""" startsWith: String } type StreetMapillaryImageFilters { creatorId: String endTime: String isPano: Boolean organizationId: String randomizeOrder: Boolean! samplingThreshold: Float startTime: String } input StreetMapillaryImageFiltersInput { creatorId: String = null endTime: String = null isPano: Boolean = null organizationId: String = null randomizeOrder: Boolean! = false samplingThreshold: Float = null startTime: String = null } input StreetProjectPropertyInput { """Numeric value as string""" aoiGeometry: String! customOptions: [CustomOptionInput!] = null mapillaryImageFilters: StreetMapillaryImageFiltersInput! } type StreetProjectPropertyType { """Numeric value as string""" aoiGeometry: String! customOptions: [ProjectCustomOption!] mapillaryImageFilters: StreetMapillaryImageFilters! } input StreetTutorialTaskPropertyInput { geometry: String! mapillaryImageId: String! } type StreetTutorialTaskPropertyType { geometry: String! mapillaryImageId: String! } enum SubGridSizeEnum { SIZE_2X2 SIZE_4X4 SIZE_8X8 } type TestValidateAoiObjectsResponse { assetId: ID error: String objectCount: Int ohsomeFilter: String ok: Boolean! projectId: ID } type TestValidateTaskingManagerProjectResponse { error: String hotTmId: String objectCount: Int ohsomeFilter: String ok: Boolean! } """Model representing assets for a tutorial.""" input TutorialAssetCreateInput { clientId: String! """The file associated with the asset""" file: Upload! inputType: TutorialAssetInputTypeEnum! tutorial: ID! } """Model representing assets for a tutorial.""" input TutorialAssetFilter { AND: TutorialAssetFilter DISTINCT: Boolean NOT: TutorialAssetFilter OR: TutorialAssetFilter id: IDBaseFilterLookup mimetype: AssetMimetypeEnumFilterLookup tutorialId: IDBaseFilterLookup type: AssetTypeEnumFilterLookup } enum TutorialAssetInputTypeEnum { INFORMATION_BLOCK_IMAGE } input TutorialAssetOrder { id: Ordering } """Model representing assets for a tutorial.""" type TutorialAssetType implements UserResourceTypeMixin { clientId: String! createdAt: DateTime! createdBy: UserType! """The file associated with the asset""" file: MapswipeDjangoFileType! """The size of the file in bytes""" fileSize: Int! id: ID! inputType: TutorialAssetInputTypeEnum """If this flag is enabled, this asset will be deleted in the future""" markedAsDeleted: Boolean! mimetype: AssetMimetypeEnum modifiedAt: DateTime! modifiedBy: UserType! tutorialId: ID! type: AssetTypeEnum! } type TutorialAssetTypeMutationResponseType { errors: CustomErrorType ok: Boolean! result: TutorialAssetType } type TutorialAssetTypeOffsetPaginated { pageInfo: OffsetPaginationInfo! """List of paginated results.""" results: [TutorialAssetType!]! """Total count of existing results.""" totalCount: Int! } """ Model representing a tutorial associated with a specific project. Tutorial guides users through the process of contributing to a project. It includes instructions, and examples to help users understand how to complete tasks. """ input TutorialCreateInput { clientId: String! name: String! """Project this tutorial is referring to.""" project: ID! } """ Model representing a tutorial associated with a specific project. Tutorial guides users through the process of contributing to a project. It includes instructions, and examples to help users understand how to complete tasks. """ input TutorialFilter { AND: TutorialFilter DISTINCT: Boolean NOT: TutorialFilter OR: TutorialFilter createdById: IDBaseFilterLookup id: IDBaseFilterLookup name: String """Project this tutorial is referring to.""" project: ProjectFilter status: TutorialStatusEnumFilterLookup } """Model representing a text or image block in the information page.""" input TutorialInformationPageBlockCreateInput { blockNumber: Int! blockType: TutorialInformationPageBlockTypeEnum! clientId: String! image: ID text: String } input TutorialInformationPageBlockInput { create: TutorialInformationPageBlockCreateInput delete: DeleteInput update: TutorialInformationPageBlockUpdateInput } """Model representing a text or image block in the information page.""" type TutorialInformationPageBlockType implements UserResourceTypeMixin { blockNumber: Int! blockType: TutorialInformationPageBlockTypeEnum! clientId: String! createdAt: DateTime! createdBy: UserType! id: ID! image: TutorialAssetType imageId: ID modifiedAt: DateTime! modifiedBy: UserType! pageId: ID! text: String } enum TutorialInformationPageBlockTypeEnum { IMAGE TEXT } """Model representing a text or image block in the information page.""" input TutorialInformationPageBlockUpdateInput { blockNumber: Int blockType: TutorialInformationPageBlockTypeEnum clientId: String! id: ID! image: ID text: String } """Model representing a information page in the tutorial.""" input TutorialInformationPageCreateInput { blocks: [TutorialInformationPageBlockCreateInput!]! clientId: String! pageNumber: Int! title: String! } input TutorialInformationPageInput { create: TutorialInformationPageCreateInput delete: DeleteInput update: TutorialInformationPageUpdateInput } """Model representing a information page in the tutorial.""" type TutorialInformationPageType implements UserResourceTypeMixin { blocks: [TutorialInformationPageBlockType!]! clientId: String! createdAt: DateTime! createdBy: UserType! id: ID! modifiedAt: DateTime! modifiedBy: UserType! pageNumber: Int! title: String! tutorialId: ID! } """Model representing a information page in the tutorial.""" input TutorialInformationPageUpdateInput { blocks: [TutorialInformationPageBlockInput!] clientId: String! id: ID! pageNumber: Int title: String } input TutorialOrder { id: Ordering name: Ordering } """Model representing a scenario in the tutorial.""" input TutorialScenarioPageCreateInput { clientId: String! hintDescription: String! hintIcon: IconEnum! hintTitle: String! instructionsDescription: String! instructionsIcon: IconEnum! instructionsTitle: String! scenarioPageNumber: Int! successDescription: String! successIcon: IconEnum! successTitle: String! tasks: [TutorialTaskCreateInput!]! } """Model representing a individual task in the scenario.""" input TutorialScenarioPageInput { create: TutorialScenarioPageCreateInput delete: DeleteInput update: TutorialScenarioPageUpdateInput } """Model representing a scenario in the tutorial.""" type TutorialScenarioPageType implements UserResourceTypeMixin { clientId: String! createdAt: DateTime! createdBy: UserType! hintDescription: String! hintIcon: IconEnum! hintTitle: String! id: ID! instructionsDescription: String! instructionsIcon: IconEnum! instructionsTitle: String! modifiedAt: DateTime! modifiedBy: UserType! scenarioPageNumber: Int! successDescription: String! successIcon: IconEnum! successTitle: String! tasks: [TutorialTaskType!]! tutorialId: ID! } """Model representing a scenario in the tutorial.""" input TutorialScenarioPageUpdateInput { clientId: String! hintDescription: String hintIcon: IconEnum hintTitle: String id: ID! instructionsDescription: String instructionsIcon: IconEnum instructionsTitle: String scenarioPageNumber: Int successDescription: String successIcon: IconEnum successTitle: String tasks: [TutorialTaskInput!] } enum TutorialStatusEnum { ARCHIVED DISCARDED DRAFT PUBLISHED PUBLISHING_FAILED READY_TO_PUBLISH } input TutorialStatusEnumFilterLookup { """ Case-sensitive containment test. Filter will be skipped on `null` value """ contains: TutorialStatusEnum """Case-sensitive ends-with. Filter will be skipped on `null` value""" endsWith: TutorialStatusEnum """Exact match. Filter will be skipped on `null` value""" exact: TutorialStatusEnum """ Case-insensitive containment test. Filter will be skipped on `null` value """ iContains: TutorialStatusEnum """Case-insensitive ends-with. Filter will be skipped on `null` value""" iEndsWith: TutorialStatusEnum """Case-insensitive exact match. Filter will be skipped on `null` value""" iExact: TutorialStatusEnum """ Case-insensitive regular expression match. Filter will be skipped on `null` value """ iRegex: TutorialStatusEnum """Case-insensitive starts-with. Filter will be skipped on `null` value""" iStartsWith: TutorialStatusEnum """ Exact match of items in a given list. Filter will be skipped on `null` value """ inList: [TutorialStatusEnum!] """Assignment test. Filter will be skipped on `null` value""" isNull: Boolean """ Case-sensitive regular expression match. Filter will be skipped on `null` value """ regex: TutorialStatusEnum """Case-sensitive starts-with. Filter will be skipped on `null` value""" startsWith: TutorialStatusEnum } """ Model representing a tutorial associated with a specific project. Tutorial guides users through the process of contributing to a project. It includes instructions, and examples to help users understand how to complete tasks. """ input TutorialStatusUpdateInput { clientId: String! status: TutorialStatusEnum } """Model representing a individual task in the scenario.""" input TutorialTaskCreateInput { clientId: String! projectTypeSpecifics: TutorialTaskProjectTypeSpecificInput! reference: Int! taskPartitionIndex: Int } input TutorialTaskInput { create: TutorialTaskCreateInput delete: DeleteInput update: TutorialTaskUpdateInput } input TutorialTaskProjectTypeSpecificInput @oneOf { compare: CompareTutorialTaskPropertyInput completeness: CompletenessTutorialTaskPropertyInput find: FindTutorialTaskPropertyInput locate: LocateTutorialTaskPropertyInput street: StreetTutorialTaskPropertyInput validate: ValidateTutorialTaskPropertyInput validateImage: ValidateImageTutorialTaskPropertyInput } """Model representing a individual task in the scenario.""" type TutorialTaskType implements UserResourceTypeMixin { clientId: String! createdAt: DateTime! createdBy: UserType! id: ID! modifiedAt: DateTime! modifiedBy: UserType! projectTypeSpecifics: CompareTutorialTaskPropertyTypeFindTutorialTaskPropertyTypeValidateTutorialTaskPropertyTypeValidateImageTutorialTaskPropertyTypeCompletenessTutorialTaskPropertyTypeStreetTutorialTaskPropertyTypeLocateTutorialTaskPropertyType reference: Int! scenarioId: ID! taskPartitionIndex: Int } """Model representing a individual task in the scenario.""" input TutorialTaskUpdateInput { clientId: String! id: ID! projectTypeSpecifics: TutorialTaskProjectTypeSpecificInput! reference: Int taskPartitionIndex: Int } """ Model representing a tutorial associated with a specific project. Tutorial guides users through the process of contributing to a project. It includes instructions, and examples to help users understand how to complete tasks. """ type TutorialType implements UserResourceTypeMixin & FirebasePushResourceTypeMixin { clientId: String! createdAt: DateTime! createdBy: UserType! firebaseId: String! """The latest time when resource was pushed to firebase""" firebaseLastPushed: DateTime firebasePushStatus: FirebasePushStatusEnum id: ID! informationPages: [TutorialInformationPageType!]! modifiedAt: DateTime! modifiedBy: UserType! name: String! """Project this tutorial is referring to.""" project: ProjectType! """Project this tutorial is referring to.""" projectId: ID! scenarios: [TutorialScenarioPageType!]! status: TutorialStatusEnum! statusMessage: String } type TutorialTypeMutationResponseType { errors: CustomErrorType ok: Boolean! result: TutorialType } type TutorialTypeOffsetPaginated { pageInfo: OffsetPaginationInfo! """List of paginated results.""" results: [TutorialType!]! """Total count of existing results.""" totalCount: Int! } """ Model representing a tutorial associated with a specific project. Tutorial guides users through the process of contributing to a project. It includes instructions, and examples to help users understand how to complete tasks. """ input TutorialUpdateInput { clientId: String! informationPages: [TutorialInformationPageInput!] name: String scenarios: [TutorialScenarioPageInput!] } union UpdateContributorUserGroupPayload = ContributorUserGroupTypeMutationResponseType | OperationInfo union UpdateOrganizationPayload = OperationInfo | OrganizationTypeMutationResponseType union UpdateProcessedProjectPayload = OperationInfo | ProjectTypeMutationResponseType union UpdateProjectPayload = OperationInfo | ProjectTypeMutationResponseType union UpdateProjectStatusPayload = OperationInfo | ProjectTypeMutationResponseType union UpdateTutorialPayload = OperationInfo | TutorialTypeMutationResponseType union UpdateTutorialStatusPayload = OperationInfo | TutorialTypeMutationResponseType scalar Upload """ Custom user model with email as unique identifier. The user is linked to a contributor user, which holds user information synced from firebase. This mapping is essential to integrate Firebase authentication this system. Additionally, the mapping ensures that data created or updated in this system can be accurately synchronized back to Firebase with the correct user association. """ input UserFilter { AND: UserFilter DISTINCT: Boolean NOT: UserFilter OR: UserFilter """ The Contributor user associated with this User. This will also be used for authentication using firebase. """ contributorUser: ContributorUserFilter displayName: String id: IDBaseFilterLookup search: String } """ Custom user model with email as unique identifier. The user is linked to a contributor user, which holds user information synced from firebase. This mapping is essential to integrate Firebase authentication this system. Additionally, the mapping ensures that data created or updated in this system can be accurately synchronized back to Firebase with the correct user association. """ type UserMeType { anonymizedEmail: String! """ The Contributor user associated with this User. This will also be used for authentication using firebase. """ contributorUser: ContributorUserType displayName: String! email: String! firstName: String! id: ID! lastName: String! } input UserOrder { displayName: Ordering id: Ordering } interface UserResourceTypeMixin { clientId: String! createdAt: DateTime! createdBy: UserType! modifiedAt: DateTime! modifiedBy: UserType! } """ Custom user model with email as unique identifier. The user is linked to a contributor user, which holds user information synced from firebase. This mapping is essential to integrate Firebase authentication this system. Additionally, the mapping ensures that data created or updated in this system can be accurately synchronized back to Firebase with the correct user association. """ type UserType { anonymizedEmail: String! """ The Contributor user associated with this User. This will also be used for authentication using firebase. """ contributorUser: ContributorUserType displayName: String! firstName: String! id: ID! lastName: String! } type UserTypeOffsetPaginated { pageInfo: OffsetPaginationInfo! """List of paginated results.""" results: [UserType!]! """Total count of existing results.""" totalCount: Int! } input ValidateImageProjectPropertyInput { customOptions: [CustomOptionInput!] = null sourceType: ValidateImageSourceTypeEnum! } type ValidateImageProjectPropertyType { customOptions: [ProjectCustomOption!] sourceType: ValidateImageSourceTypeEnum! } enum ValidateImageSourceTypeEnum { DATASET_FILE DIRECT_IMAGES } input ValidateImageTutorialTaskPropertyInput { annotation: ObjectImageAnnotationInput = null fileName: String! height: Int = null imageId: String = null url: String! width: Int = null } type ValidateImageTutorialTaskPropertyType { annotation: ObjectImageAnnotationType fileName: String! height: Int imageId: String url: String! width: Int } type ValidateObjectSourceConfig { aoiGeometry: String objectGeojsonUrl: String ohsomeFilter: String sourceType: ValidateObjectSourceTypeEnum! taskingManagerProjectId: String } input ValidateObjectSourceConfigInput { aoiGeometry: String = null objectGeojsonUrl: String = null ohsomeFilter: String = null sourceType: ValidateObjectSourceTypeEnum! taskingManagerProjectId: String = null } enum ValidateObjectSourceTypeEnum { AOI_GEOJSON_FILE OBJECT_GEOJSON_URL TASKING_MANAGER } input ValidateProjectPropertyInput { customOptions: [CustomOptionInput!] = null objectSource: ValidateObjectSourceConfigInput! tileServerProperty: ProjectRasterTileServerConfigInput! } type ValidateProjectPropertyType { customOptions: [ProjectCustomOption!] objectSource: ValidateObjectSourceConfig! tileServerProperty: ProjectRasterTileServerConfig! } input ValidateTutorialTaskPropertyInput { identifier: Int! objectGeometry: String! } type ValidateTutorialTaskPropertyType { identifier: Int! objectGeometry: String! } input VectorTileServerCommonConfigInput { credits: String! sourceLayer: String! } input VectorTileServerCustomConfigInput { credits: String! """Zoom level from 0 to 22""" maxZoom: Int! """Zoom level from 0 to 22""" minZoom: Int! sourceLayer: String! url: String! } enum VectorTileServerNameEnum { CUSTOM OPEN_FREE_MAP OPEN_STREET_MAP VERSATILES } type VectorTileServerType { credits: String! label: String! layers: [String!]! maxZoom: Int minZoom: Int type: VectorTileServerNameEnum! url: String! }