generator client { provider = "prisma-client-js" } datasource db { provider = "mongodb" url = env("MONGOHQ_URL") } // USER COLLECTION --------------------- type File { contents String ext String key String name String path String? // Undefined | Null } type CompletedChallenge { challengeType Int? @db.Int // Null | Undefined completedDate Float // TODO(Post-MVP): Change to DateTime files File[] githubLink String? // Undefined id String isManuallyApproved Boolean? // Undefined solution String? // Null | Undefined } type PartiallyCompletedChallenge { id String completedDate Float } type Portfolio { description String id String image String title String url String } type ProfileUI { isLocked Boolean? // Undefined showAbout Boolean? // Undefined showCerts Boolean? // Undefined showDonation Boolean? // Undefined showHeatMap Boolean? // Undefined showLocation Boolean? // Undefined showName Boolean? // Undefined showPoints Boolean? // Undefined showPortfolio Boolean? // Undefined showTimeLine Boolean? // Undefined } type ProgressTimestamp { timestamp Float } type SavedChallengeFile { contents String ext String history String[] key String name String } type SavedChallenge { files SavedChallengeFile[] id String lastSavedDate Float } model user { id String @id @default(auto()) @map("_id") @db.ObjectId about String acceptedPrivacyTerms Boolean // badges Json? // Undefined | { coreTeam [][] } removed, as new API never uses it. completedChallenges CompletedChallenge[] currentChallengeId String? donationEmails String[] // Undefined | String[] (only possible for built in Types like String) email String emailAuthLinkTTL DateTime? // Null | Undefined emailVerified Boolean emailVerifyTTL DateTime? // Null | Undefined externalId String // github String? Removed, because value was only ever found to be Null githubProfile String? // Undefined isApisMicroservicesCert Boolean? // Undefined isBackEndCert Boolean? // Undefined isBanned Boolean? // Undefined isCheater Boolean? // Undefined isDataAnalysisPyCertV7 Boolean? // Undefined isDataVisCert Boolean? // Undefined isDonating Boolean isFrontEndCert Boolean? // Undefined isFrontEndLibsCert Boolean? // Undefined isFullStackCert Boolean? // Undefined isHonest Boolean? isInfosecCertV7 Boolean? // Undefined isInfosecQaCert Boolean? // Undefined isJsAlgoDataStructCert Boolean? // Undefined isMachineLearningPyCertV7 Boolean? // Undefined isQaCertV7 Boolean? // Undefined isRelationalDatabaseCertV8 Boolean? // Undefined isRespWebDesignCert Boolean? // Undefined isSciCompPyCertV7 Boolean? // Undefined is2018DataVisCert Boolean? // Undefined is2018FullStackCert Boolean? // Undefined isCollegeAlgebraPyCertV8 Boolean? // Undefined keyboardShortcuts Boolean? // Undefined linkedin String? // Null | Undefined location String? // Null name String? // Null needsModeration Boolean? // Undefined newEmail String? // Null | Undefined partiallyCompletedChallenges PartiallyCompletedChallenge[] // Undefined | PartiallyCompletedChallenge[] password String? // Undefined picture String portfolio Portfolio[] profileUI ProfileUI? // Undefined progressTimestamps Json? // ProgressTimestamp[] | Null[] | Int64[] | Double[] - TODO: NORMALIZE // rand Float? // Undefined removed, as new API never uses it. savedChallenges SavedChallenge[] // Undefined | SavedChallenge[] sendQuincyEmail Boolean sound Boolean? // Undefined theme String? // Undefined timezone String? // Undefined twitter String? // Null | Undefined unsubscribeId String username String // TODO(Post-MVP): make this unique usernameDisplay String? // Undefined verificationToken String? // Undefined website String? // Undefined yearsTopContributor String[] // Undefined | String[] } // ----------------------------------- model AccessToken { id String @id @map("_id") created DateTime @db.Date ttl Int userId String @db.ObjectId @@index([userId], map: "userId_1") } model AuthToken { id String @id @map("_id") created DateTime @db.Date ttl Int userId String @db.ObjectId } model Donation { id String @id @default(auto()) @map("_id") @db.ObjectId amount Int @db.Int customerId String duration String? email String endDate DonationEndDate? provider String startDate DonationStartDate subscriptionId String userId String @db.ObjectId @@index([email], map: "email_1") @@index([userId], map: "userId_1") } model UserRateLimit { id String @id @default(auto()) @map("_id") @db.ObjectId /// Field referred in an index, but found no data to define the type. expirationDate Json? @@index([expirationDate], map: "expirationDate_1") } model UserToken { id String @id @map("_id") created DateTime @db.Date ttl Float userId String @db.ObjectId @@index([userId], map: "userId_1") } model changelog { id String @id @default(auto()) @map("_id") @db.ObjectId appliedAt DateTime @db.Date fileName String } model sessions { id String @id @map("_id") expires DateTime @db.Date session String @@index([expires], map: "expires_1") } model userCredential { id String @id @default(auto()) @map("_id") @db.ObjectId authScheme String created DateTime @db.Date credentials UserCredentialCredentials externalId String modified DateTime @db.Date /// Could not determine type: the field only had null or empty values in the sample set. profile Json? provider String userId String @db.ObjectId } model userIdentity { id String @id @default(auto()) @map("_id") @db.ObjectId authScheme String? created DateTime? @db.Date credentials UserIdentityCredentials? externalId String modified DateTime? @db.Date profile UserIdentityProfile? provider String userId String @db.ObjectId @@index([userId], map: "userId_1") @@index([externalId], map: "externalId_1") @@index([provider, externalId], map: "provider_1_externalId_1") } type DonationEndDate { date DateTime @map("_date") @db.Date when String @map("_when") } type DonationStartDate { date DateTime @map("_date") @db.Date when String @map("_when") } type UserCredentialCredentials { accessToken String } type UserIdentityCredentials { accessToken String? token String? tokenSecret String? } type UserIdentityProfile { /// This field was commented out because of an invalid name. Please provide a valid one that matches [a-zA-Z][a-zA-Z0-9_]* // 0 String? @map("0") /// This field was commented out because of an invalid name. Please provide a valid one that matches [a-zA-Z][a-zA-Z0-9_]* // 1 String? @map("1") /// This field was commented out because of an invalid name. Please provide a valid one that matches [a-zA-Z][a-zA-Z0-9_]* // 2 String? @map("2") /// This field was commented out because of an invalid name. Please provide a valid one that matches [a-zA-Z][a-zA-Z0-9_]* // 3 String? @map("3") /// This field was commented out because of an invalid name. Please provide a valid one that matches [a-zA-Z][a-zA-Z0-9_]* // 4 String? @map("4") /// This field was commented out because of an invalid name. Please provide a valid one that matches [a-zA-Z][a-zA-Z0-9_]* // 5 String? @map("5") accessLevel String? @map("_accessLevel") json UserIdentityProfileJson? @map("_json") raw String? @map("_raw") birthday String? displayName String? email String? emails UserIdentityProfileEmails[] gender String? /// Multiple data types found: String: 97.5%, Int: 2.5% out of 917 sampled entries id Json? isPerson Boolean? isPlusUser Boolean? language String? name UserIdentityProfileName? /// Multiple data types found: Array(String): 0.4%, Array(UserIdentityProfilePhotos): 99.6% out of 767 sampled entries photos Json? placesLived UserIdentityProfilePlacesLived[] profileUrl String? provider String? relationship String? username String? } type UserIdentityProfileEmails { type String? value String? } type UserIdentityProfileJson { aboutMe String? apiStandardProfileRequest UserIdentityProfileJsonApiStandardProfileRequest? avatar_url String? bio String? birthday String? blog String? braggingRights String? circledByCount Int? company String? contributors_enabled Boolean? cover UserIdentityProfileJsonCover? created_at String? currentShare UserIdentityProfileJsonCurrentShare? default_profile Boolean? default_profile_image Boolean? description String? displayName String? distance Int? domain String? email String? emailAddress String? emails UserIdentityProfileJsonEmails[] entities UserIdentityProfileJsonEntities? etag String? events_url String? favourites_count Int? firstName String? first_name String? follow_request_sent Boolean? followers Int? followers_count Int? followers_url String? /// Multiple data types found: Boolean: 5%, Int: 95% out of 686 sampled entries following Json? following_url String? formattedName String? friends_count Int? gender String? geo_enabled Boolean? gists_url String? gravatar_id String? has_extended_profile Boolean? headline String? hireable Boolean? html_url String? /// Multiple data types found: String: 25.2%, Float: 1.2%, Int: 73.6% out of 917 sampled entries id Json id_str String? image UserIdentityProfileJsonImage? industry String? isPlusUser Boolean? is_translation_enabled Boolean? is_translator Boolean? kind String? lang String? language String? lastName String? last_name String? link String? listed_count Int? locale String? /// Multiple data types found: String: 87.2%, UserIdentityProfileJsonLocation: 12.8% out of 727 sampled entries location Json? login String? maidenName String? middle_name String? /// Multiple data types found: String: 80.8%, UserIdentityProfileJsonName: 19.2% out of 877 sampled entries name Json? needs_phone_verification Boolean? nickname String? notifications Boolean? numConnections Int? numConnectionsCapped Boolean? objectType String? occupation String? organizations UserIdentityProfileJsonOrganizations[] organizations_url String? pictureUrl String? pictureUrls UserIdentityProfileJsonPictureUrls? placesLived UserIdentityProfileJsonPlacesLived[] positions UserIdentityProfileJsonPositions? profile_background_color String? profile_background_image_url String? profile_background_image_url_https String? profile_background_tile Boolean? profile_banner_url String? profile_image_url String? profile_image_url_https String? profile_link_color String? profile_location UserIdentityProfileJsonProfileLocation? profile_sidebar_border_color String? profile_sidebar_fill_color String? profile_text_color String? profile_use_background_image Boolean? protected Boolean? publicProfileUrl String? public_gists Int? public_repos Int? received_events_url String? relationToViewer UserIdentityProfileJsonRelationToViewer? relationshipStatus String? repos_url String? screen_name String? siteStandardProfileRequest UserIdentityProfileJsonSiteStandardProfileRequest? site_admin Boolean? skills String? starred_url String? status UserIdentityProfileJsonStatus? statuses_count Int? subscriptions_url String? summary String? suspended Boolean? tagline String? time_zone String? /// Multiple data types found: Float: 10.2%, Int: 89.8% out of 49 sampled entries timezone Json? translator_type String? type String? updated_at String? updated_time String? url String? urls UserIdentityProfileJsonUrls[] utc_offset Int? verified Boolean? } type UserIdentityProfileJsonApiStandardProfileRequest { headers UserIdentityProfileJsonApiStandardProfileRequestHeaders url String } type UserIdentityProfileJsonApiStandardProfileRequestHeaders { total Int @map("_total") values UserIdentityProfileJsonApiStandardProfileRequestHeadersValues[] } type UserIdentityProfileJsonApiStandardProfileRequestHeadersValues { name String value String } type UserIdentityProfileJsonCover { coverInfo UserIdentityProfileJsonCoverCoverInfo coverPhoto UserIdentityProfileJsonCoverCoverPhoto layout String } type UserIdentityProfileJsonCoverCoverInfo { leftImageOffset Int topImageOffset Int } type UserIdentityProfileJsonCoverCoverPhoto { height Int url String width Int } type UserIdentityProfileJsonCurrentShare { attribution UserIdentityProfileJsonCurrentShareAttribution? author UserIdentityProfileJsonCurrentShareAuthor comment String? content UserIdentityProfileJsonCurrentShareContent? id String source UserIdentityProfileJsonCurrentShareSource timestamp Float visibility UserIdentityProfileJsonCurrentShareVisibility } type UserIdentityProfileJsonCurrentShareAttribution { share UserIdentityProfileJsonCurrentShareAttributionShare } type UserIdentityProfileJsonCurrentShareAttributionShare { author UserIdentityProfileJsonCurrentShareAttributionShareAuthor comment String? id String } type UserIdentityProfileJsonCurrentShareAttributionShareAuthor { firstName String id String lastName String } type UserIdentityProfileJsonCurrentShareAuthor { firstName String id String lastName String } type UserIdentityProfileJsonCurrentShareContent { description String eyebrowUrl String resolvedUrl String shortenedUrl String submittedImageUrl String? submittedUrl String thumbnailUrl String? title String } type UserIdentityProfileJsonCurrentShareSource { application UserIdentityProfileJsonCurrentShareSourceApplication? serviceProvider UserIdentityProfileJsonCurrentShareSourceServiceProvider } type UserIdentityProfileJsonCurrentShareSourceApplication { name String } type UserIdentityProfileJsonCurrentShareSourceServiceProvider { name String } type UserIdentityProfileJsonCurrentShareVisibility { code String } type UserIdentityProfileJsonEmails { type String value String } type UserIdentityProfileJsonEntities { description UserIdentityProfileJsonEntitiesDescription url UserIdentityProfileJsonEntitiesUrl? } type UserIdentityProfileJsonEntitiesDescription { urls UserIdentityProfileJsonEntitiesDescriptionUrls[] } type UserIdentityProfileJsonEntitiesDescriptionUrls { display_url String expanded_url String indices Int[] url String } type UserIdentityProfileJsonEntitiesUrl { urls UserIdentityProfileJsonEntitiesUrlUrls[] } type UserIdentityProfileJsonEntitiesUrlUrls { display_url String expanded_url String indices Int[] url String } type UserIdentityProfileJsonImage { isDefault Boolean url String } type UserIdentityProfileJsonLocation { country UserIdentityProfileJsonLocationCountry? id String? name String } type UserIdentityProfileJsonLocationCountry { code String } type UserIdentityProfileJsonName { familyName String givenName String } type UserIdentityProfileJsonOrganizations { endDate String? name String primary Boolean startDate String? title String? type String } type UserIdentityProfileJsonPictureUrls { total Int @map("_total") values String[] } type UserIdentityProfileJsonPlacesLived { primary Boolean? value String } type UserIdentityProfileJsonPositions { total Int @map("_total") values UserIdentityProfileJsonPositionsValues[] } type UserIdentityProfileJsonPositionsValues { company UserIdentityProfileJsonPositionsValuesCompany id Int isCurrent Boolean location UserIdentityProfileJsonPositionsValuesLocation? startDate UserIdentityProfileJsonPositionsValuesStartDate? summary String? title String } type UserIdentityProfileJsonPositionsValuesCompany { id Int? industry String? name String size String? ticker String? type String? } type UserIdentityProfileJsonPositionsValuesLocation { country UserIdentityProfileJsonPositionsValuesLocationCountry? name String? } type UserIdentityProfileJsonPositionsValuesLocationCountry { code String name String } type UserIdentityProfileJsonPositionsValuesStartDate { month Int? year Int } type UserIdentityProfileJsonProfileLocation { /// Nested objects had no data in the sample dataset to introspect a nested type. attributes Json /// Could not determine type: the field only had null or empty values in the sample set. bounding_box Json? /// Could not determine type: the field only had null or empty values in the sample set. contained_within Json? country String country_code String full_name String id String name String place_type String url String } type UserIdentityProfileJsonRelationToViewer { distance Int } type UserIdentityProfileJsonSiteStandardProfileRequest { url String } type UserIdentityProfileJsonStatus { /// Could not determine type: the field only had null or empty values in the sample set. contributors Json? /// Could not determine type: the field only had null or empty values in the sample set. coordinates Json? created_at String entities UserIdentityProfileJsonStatusEntities extended_entities UserIdentityProfileJsonStatusExtendedEntities? favorite_count Int favorited Boolean /// Could not determine type: the field only had null or empty values in the sample set. geo Json? id Float id_str String in_reply_to_screen_name String? in_reply_to_status_id Float? in_reply_to_status_id_str String? /// Multiple data types found: Float: 33.3%, Int: 66.7% out of 33 sampled entries in_reply_to_user_id Json? in_reply_to_user_id_str String? is_quote_status Boolean? lang String place UserIdentityProfileJsonStatusPlace? possibly_sensitive Boolean? quoted_status_id Float? quoted_status_id_str String? retweet_count Int retweeted Boolean retweeted_status UserIdentityProfileJsonStatusRetweetedStatus? source String text String truncated Boolean } type UserIdentityProfileJsonStatusEntities { hashtags UserIdentityProfileJsonStatusEntitiesHashtags[] media UserIdentityProfileJsonStatusEntitiesMedia[] /// Could not determine type: the field only had null or empty values in the sample set. symbols Json? urls UserIdentityProfileJsonStatusEntitiesUrls[] user_mentions UserIdentityProfileJsonStatusEntitiesUserMentions[] } type UserIdentityProfileJsonStatusEntitiesHashtags { indices Int[] text String } type UserIdentityProfileJsonStatusEntitiesMedia { display_url String expanded_url String id Float id_str String indices Int[] media_url String media_url_https String sizes UserIdentityProfileJsonStatusEntitiesMediaSizes source_status_id Float? source_status_id_str String? /// Multiple data types found: Float: 40%, Int: 60% out of 5 sampled entries source_user_id Json? source_user_id_str String? type String url String } type UserIdentityProfileJsonStatusEntitiesMediaSizes { large UserIdentityProfileJsonStatusEntitiesMediaSizesLarge medium UserIdentityProfileJsonStatusEntitiesMediaSizesMedium small UserIdentityProfileJsonStatusEntitiesMediaSizesSmall thumb UserIdentityProfileJsonStatusEntitiesMediaSizesThumb } type UserIdentityProfileJsonStatusEntitiesMediaSizesLarge { h Int resize String w Int } type UserIdentityProfileJsonStatusEntitiesMediaSizesMedium { h Int resize String w Int } type UserIdentityProfileJsonStatusEntitiesMediaSizesSmall { h Int resize String w Int } type UserIdentityProfileJsonStatusEntitiesMediaSizesThumb { h Int resize String w Int } type UserIdentityProfileJsonStatusEntitiesUrls { display_url String expanded_url String indices Int[] url String } type UserIdentityProfileJsonStatusEntitiesUserMentions { /// Multiple data types found: Float: 20.8%, Int: 79.2% out of 24 sampled entries id Json id_str String indices Int[] name String screen_name String } type UserIdentityProfileJsonStatusExtendedEntities { media UserIdentityProfileJsonStatusExtendedEntitiesMedia[] } type UserIdentityProfileJsonStatusExtendedEntitiesMedia { display_url String expanded_url String id Float id_str String indices Int[] media_url String media_url_https String sizes UserIdentityProfileJsonStatusExtendedEntitiesMediaSizes source_status_id Float? source_status_id_str String? /// Multiple data types found: Float: 40%, Int: 60% out of 5 sampled entries source_user_id Json? source_user_id_str String? type String url String video_info UserIdentityProfileJsonStatusExtendedEntitiesMediaVideoInfo? } type UserIdentityProfileJsonStatusExtendedEntitiesMediaSizes { large UserIdentityProfileJsonStatusExtendedEntitiesMediaSizesLarge medium UserIdentityProfileJsonStatusExtendedEntitiesMediaSizesMedium small UserIdentityProfileJsonStatusExtendedEntitiesMediaSizesSmall thumb UserIdentityProfileJsonStatusExtendedEntitiesMediaSizesThumb } type UserIdentityProfileJsonStatusExtendedEntitiesMediaSizesLarge { h Int resize String w Int } type UserIdentityProfileJsonStatusExtendedEntitiesMediaSizesMedium { h Int resize String w Int } type UserIdentityProfileJsonStatusExtendedEntitiesMediaSizesSmall { h Int resize String w Int } type UserIdentityProfileJsonStatusExtendedEntitiesMediaSizesThumb { h Int resize String w Int } type UserIdentityProfileJsonStatusExtendedEntitiesMediaVideoInfo { aspect_ratio Int[] variants UserIdentityProfileJsonStatusExtendedEntitiesMediaVideoInfoVariants[] } type UserIdentityProfileJsonStatusExtendedEntitiesMediaVideoInfoVariants { bitrate Int content_type String url String } type UserIdentityProfileJsonStatusPlace { /// Nested objects had no data in the sample dataset to introspect a nested type. attributes Json bounding_box UserIdentityProfileJsonStatusPlaceBoundingBox /// Could not determine type: the field only had null or empty values in the sample set. contained_within Json? country String country_code String full_name String id String name String place_type String url String } type UserIdentityProfileJsonStatusPlaceBoundingBox { coordinates Json type String } type UserIdentityProfileJsonStatusRetweetedStatus { /// Could not determine type: the field only had null or empty values in the sample set. contributors Json? /// Could not determine type: the field only had null or empty values in the sample set. coordinates Json? created_at String entities UserIdentityProfileJsonStatusRetweetedStatusEntities extended_entities UserIdentityProfileJsonStatusRetweetedStatusExtendedEntities? favorite_count Int favorited Boolean /// Could not determine type: the field only had null or empty values in the sample set. geo Json? id Float id_str String /// Could not determine type: the field only had null or empty values in the sample set. in_reply_to_screen_name Json? /// Could not determine type: the field only had null or empty values in the sample set. in_reply_to_status_id Json? /// Could not determine type: the field only had null or empty values in the sample set. in_reply_to_status_id_str Json? /// Could not determine type: the field only had null or empty values in the sample set. in_reply_to_user_id Json? /// Could not determine type: the field only had null or empty values in the sample set. in_reply_to_user_id_str Json? is_quote_status Boolean? lang String /// Could not determine type: the field only had null or empty values in the sample set. place Json? possibly_sensitive Boolean? retweet_count Int retweeted Boolean source String text String truncated Boolean } type UserIdentityProfileJsonStatusRetweetedStatusEntities { hashtags UserIdentityProfileJsonStatusRetweetedStatusEntitiesHashtags[] media UserIdentityProfileJsonStatusRetweetedStatusEntitiesMedia[] /// Could not determine type: the field only had null or empty values in the sample set. symbols Json? urls UserIdentityProfileJsonStatusRetweetedStatusEntitiesUrls[] /// Could not determine type: the field only had null or empty values in the sample set. user_mentions Json? } type UserIdentityProfileJsonStatusRetweetedStatusEntitiesHashtags { indices Int[] text String } type UserIdentityProfileJsonStatusRetweetedStatusEntitiesMedia { display_url String expanded_url String id Float id_str String indices Int[] media_url String media_url_https String sizes UserIdentityProfileJsonStatusRetweetedStatusEntitiesMediaSizes source_status_id Float? source_status_id_str String? source_user_id Float? source_user_id_str String? type String url String } type UserIdentityProfileJsonStatusRetweetedStatusEntitiesMediaSizes { large UserIdentityProfileJsonStatusRetweetedStatusEntitiesMediaSizesLarge medium UserIdentityProfileJsonStatusRetweetedStatusEntitiesMediaSizesMedium small UserIdentityProfileJsonStatusRetweetedStatusEntitiesMediaSizesSmall thumb UserIdentityProfileJsonStatusRetweetedStatusEntitiesMediaSizesThumb } type UserIdentityProfileJsonStatusRetweetedStatusEntitiesMediaSizesLarge { h Int resize String w Int } type UserIdentityProfileJsonStatusRetweetedStatusEntitiesMediaSizesMedium { h Int resize String w Int } type UserIdentityProfileJsonStatusRetweetedStatusEntitiesMediaSizesSmall { h Int resize String w Int } type UserIdentityProfileJsonStatusRetweetedStatusEntitiesMediaSizesThumb { h Int resize String w Int } type UserIdentityProfileJsonStatusRetweetedStatusEntitiesUrls { display_url String expanded_url String indices Int[] url String } type UserIdentityProfileJsonStatusRetweetedStatusExtendedEntities { media UserIdentityProfileJsonStatusRetweetedStatusExtendedEntitiesMedia[] } type UserIdentityProfileJsonStatusRetweetedStatusExtendedEntitiesMedia { display_url String expanded_url String id Float id_str String indices Int[] media_url String media_url_https String sizes UserIdentityProfileJsonStatusRetweetedStatusExtendedEntitiesMediaSizes source_status_id Float? source_status_id_str String? source_user_id Float? source_user_id_str String? type String url String video_info UserIdentityProfileJsonStatusRetweetedStatusExtendedEntitiesMediaVideoInfo? } type UserIdentityProfileJsonStatusRetweetedStatusExtendedEntitiesMediaSizes { large UserIdentityProfileJsonStatusRetweetedStatusExtendedEntitiesMediaSizesLarge medium UserIdentityProfileJsonStatusRetweetedStatusExtendedEntitiesMediaSizesMedium small UserIdentityProfileJsonStatusRetweetedStatusExtendedEntitiesMediaSizesSmall thumb UserIdentityProfileJsonStatusRetweetedStatusExtendedEntitiesMediaSizesThumb } type UserIdentityProfileJsonStatusRetweetedStatusExtendedEntitiesMediaSizesLarge { h Int resize String w Int } type UserIdentityProfileJsonStatusRetweetedStatusExtendedEntitiesMediaSizesMedium { h Int resize String w Int } type UserIdentityProfileJsonStatusRetweetedStatusExtendedEntitiesMediaSizesSmall { h Int resize String w Int } type UserIdentityProfileJsonStatusRetweetedStatusExtendedEntitiesMediaSizesThumb { h Int resize String w Int } type UserIdentityProfileJsonStatusRetweetedStatusExtendedEntitiesMediaVideoInfo { aspect_ratio Int[] variants UserIdentityProfileJsonStatusRetweetedStatusExtendedEntitiesMediaVideoInfoVariants[] } type UserIdentityProfileJsonStatusRetweetedStatusExtendedEntitiesMediaVideoInfoVariants { bitrate Int content_type String url String } type UserIdentityProfileJsonUrls { label String type String value String } type UserIdentityProfileName { familyName String? givenName String? middleName String? } type UserIdentityProfilePhotos { type String? value String } type UserIdentityProfilePlacesLived { primary Boolean? value String }