Compare commits

...

110 Commits

Author SHA1 Message Date
c4c3ccde00 id in homography 2024-11-25 14:53:41 -08:00
e137ce8ad1 Request id in Homography info 2024-11-21 17:59:29 -07:00
bd5bebb747 Merge pull request 'Update medal collection' (#142) from loewy/update-medals-operation into master
Reviewed-on: #142
2024-11-21 15:16:23 -07:00
034facebf3 update medal operation, create fragment
All checks were successful
Tests / Tests (pull_request) Successful in 16s
2024-11-21 12:18:17 -08:00
ac1fceb648 Merge pull request 'Add new makes medals' (#141) from mk/extend-makes-medals into master
Reviewed-on: #141
2024-11-21 11:56:49 -07:00
fd87ade629 Add new makes medals
All checks were successful
Tests / Tests (pull_request) Successful in 8s
2024-11-21 10:54:06 -08:00
1fab007654 Merge pull request 'Change FilterInput to RunFilterInput' (#140) from mk/use-run-filter-input into master
Reviewed-on: #140
2024-11-19 16:30:20 -07:00
cd2cdb475a Change FilterInput to RunFilterInput
All checks were successful
Tests / Tests (pull_request) Successful in 6s
2024-11-19 15:29:21 -08:00
c3c74379fb Merge pull request 'Add support for getRuns' (#139) from mk/runs-qb into master
Reviewed-on: #139
2024-11-19 15:06:15 -07:00
da21627f15 Add support for getRuns
All checks were successful
Tests / Tests (pull_request) Successful in 31s
2024-11-19 14:05:21 -08:00
8fabfd67cf Merge pull request 'Add difficulty to pocketingIntentionFeatures in ShotWithAllFeatures' (#138) from loewy/add-difficulty-to-shot-features-fragment into master
Reviewed-on: #138
2024-11-19 00:30:17 -07:00
e6960038f2 add difficulty to pocketingIntentionFeatures in ShotWithAllFeatures
All checks were successful
Tests / Tests (pull_request) Successful in 8s
2024-11-18 23:11:47 -08:00
b6ec7ed39d Merge pull request 'Add clientUploadStatus' (#137) from mk/stream-status into master
Reviewed-on: #137
2024-11-18 18:47:30 -07:00
545ba638c2 Add clientUploadStatus
All checks were successful
Tests / Tests (pull_request) Successful in 8s
2024-11-18 17:46:48 -08:00
94e4e55558 Merge pull request 'Medals' (#135) from volodymyr/medals into master
Reviewed-on: #135
2024-11-15 17:52:14 -07:00
2536f5db6b add nickname to operation, remove currently unsupported fields from request
All checks were successful
Tests / Tests (pull_request) Successful in 15s
2024-11-15 16:51:17 -08:00
ffd0814a98 remove dasystreak 2024-11-15 16:44:42 -08:00
55bfe42484 Medals 2024-11-15 16:44:42 -08:00
dabb0d1d9c Merge pull request 'Remove unimplemented dayStreak and add support for nickname' (#136) from mk/add-nickname-to-medals into master
Reviewed-on: #136
2024-11-15 12:50:49 -07:00
a538c1d81c Remove unimplemented dayStreak and add support for nickname
All checks were successful
Tests / Tests (pull_request) Successful in 7s
2024-11-15 11:50:11 -08:00
872bce3adb Merge pull request 'Add ID to user processing' (#134) from kat/add-id-processing into master
Reviewed-on: #134
2024-11-14 00:20:05 -07:00
457d375bed Add ID to user processing
All checks were successful
Tests / Tests (pull_request) Successful in 9s
2024-11-14 00:18:57 -07:00
12798e368c Merge pull request 'Get user videos' (#132) from volodymyr/get-user-videos into master
Reviewed-on: #132
Reviewed-by: Ivan Malison <ivanmalison@gmail.com>
2024-11-13 15:14:48 -07:00
a3d6e6e19e Merge branch 'master' into volodymyr/get-user-videos
All checks were successful
Tests / Tests (pull_request) Successful in 13s
2024-11-13 15:14:30 -07:00
f7a6e393e7 Merge pull request 'Add excludeVideosWithNoShots filter' (#133) from mk/exclude-no-shots-filter into master
Reviewed-on: #133
2024-11-13 15:13:33 -07:00
ee11e506ed Add excludeVideosWithNoShots filter
All checks were successful
Tests / Tests (pull_request) Successful in 16s
2024-11-13 14:12:57 -08:00
90ec47848b Get user videos
All checks were successful
Tests / Tests (pull_request) Successful in 12s
2024-11-13 21:33:50 +01:00
21acb5219d Merge pull request 'Change includeCallersVideos default to True' (#131) from mk/change-caller-video-default into master
Reviewed-on: #131
2024-11-13 12:52:07 -07:00
087d511efc Change includeCallersVideos default to True
All checks were successful
Tests / Tests (pull_request) Successful in 14s
2024-11-13 11:51:29 -08:00
7cc0dca821 Merge pull request 'Add includeCallersVideos to getFeedVideos' (#130) from mk/make-feed-get-only-theirs into master
Reviewed-on: #130
2024-11-13 11:11:22 -07:00
f826121aa3 Add includeCallersVideos to getFeedVideos
All checks were successful
Tests / Tests (pull_request) Successful in 13s
2024-11-13 10:10:11 -08:00
2aadb8b49b Merge pull request 'Add createdAt filterInput to GetUserPlayTime' (#129) from loewy/update-get-play-time-operation into master
Reviewed-on: #129
2024-11-12 14:28:36 -07:00
5468b7ccda add createdAt dateRangeFilter
All checks were successful
Tests / Tests (pull_request) Successful in 8s
2024-11-12 13:00:18 -08:00
08dfafe1a3 Merge pull request 'Privacy' (#128) from volodymyr/privacy into master
Reviewed-on: #128
Reviewed-by: Kat Huang <kkathuang@gmail.com>
2024-11-12 11:27:56 -07:00
36b6804719 Privacy
All checks were successful
Tests / Tests (pull_request) Successful in 10s
2024-11-12 14:15:19 +01:00
0120c15064 Merge pull request 'Add count to GetShotsWithJustIds operation return' (#127) from loewy/add-count-to-getshots-with-just-ids into master
Reviewed-on: #127
2024-11-11 21:13:19 -07:00
9cc99d956a add countRespectsLimit argument
All checks were successful
Tests / Tests (pull_request) Successful in 15s
2024-11-11 20:07:58 -08:00
985fa8b8e5 add count to return for get shots with just ids
All checks were successful
Tests / Tests (pull_request) Successful in 14s
2024-11-11 19:54:10 -08:00
c4868e7ebe Add null default 2024-11-11 19:02:13 -08:00
58e1c18034 Merge pull request 'Add filters for getPlayTime' (#126) from mk/add-filter-for-play-time into master
Reviewed-on: #126
2024-11-11 19:52:36 -07:00
592dea0ca2 Add filters for getPlayTime
All checks were successful
Tests / Tests (pull_request) Successful in 9s
2024-11-11 18:50:00 -08:00
0e00ae9297 Merge pull request 'Add private to VideoGQL' (#125) from mk/not-clear into master
Reviewed-on: #125
2024-11-07 18:50:34 -07:00
e16812f242 ???
All checks were successful
Tests / Tests (pull_request) Successful in 16s
2024-11-07 17:49:36 -08:00
3e9b7a0d16 Merge pull request 'Add private field to user and videos' (#124) from mk/privacy into master
Reviewed-on: #124
2024-11-07 18:19:01 -07:00
309deb9473 Add private field to user and videos
All checks were successful
Tests / Tests (pull_request) Successful in 9s
2024-11-07 17:16:56 -08:00
d5ba9c2ba5 Merge pull request 'Remove id from HomographyInfo fragment for now, use string instead of base64 for FindPrerecordTableLayout' (#122) from loewy/switch-back-to-string into master
Reviewed-on: #122
2024-11-07 18:09:51 -07:00
73771a263a remove id for now, use string instead of base64
All checks were successful
Tests / Tests (pull_request) Successful in 16s
2024-11-07 17:08:35 -08:00
655e59c43c Remove base64 scalar 2024-11-07 17:43:09 -07:00
056120a68a Merge pull request 'Add operation for FindPrerecordTableLayoutMutation + HomographyInfoGql fragment' (#121) from loewy/add-operation-check-homography into master
Reviewed-on: #121
2024-11-07 16:51:16 -07:00
bd7ffa7fdb add operation
All checks were successful
Tests / Tests (pull_request) Successful in 10s
2024-11-07 15:45:03 -08:00
ec58923c65 Add id to homography info gql 2024-11-07 16:29:33 -07:00
63869cd7ca Rename checkHomographyIsValid to findPrerecordTableLayout 2024-11-07 15:55:23 -07:00
08ae9611cf Add id to video processing gql 2024-11-07 15:52:07 -07:00
4e610b7df2 Merge pull request 'Return video processing status in feed' (#119) from kat/current-processing into master
Reviewed-on: #119
2024-11-06 22:41:30 -07:00
2d6d3964ad Return video processing status in feed
All checks were successful
Tests / Tests (pull_request) Successful in 8s
2024-11-06 22:40:18 -07:00
73a58de36e Merge pull request 'Make check homography mutation' (#118) from mk/make-homography-mutation into master
Reviewed-on: #118
2024-11-06 17:26:27 -07:00
dc6f246489 Make check homography mutation
All checks were successful
Tests / Tests (pull_request) Successful in 16s
2024-11-06 16:25:23 -08:00
c0a3aa97dc Merge pull request 'Add getShotsWithJustIds' (#117) from loewy/update-get-shots-with-video-ids into master
Reviewed-on: #117
2024-11-06 16:32:59 -07:00
f4e43b24f2 add getShotsWithJustIds
All checks were successful
Tests / Tests (pull_request) Successful in 15s
2024-11-06 14:58:32 -08:00
51ab8320d7 Merge pull request 'add checkHomographyIsValid' (#116) from mk/get-homography-valid into master
Reviewed-on: #116
2024-11-05 15:45:49 -07:00
f9a00ad3eb add checkHomographyIsValid
All checks were successful
Tests / Tests (pull_request) Successful in 16s
2024-11-05 14:39:23 -08:00
998b2ffc8c Merge pull request 'Create video card fragment' (#115) from kat/video-card-feed into master
Reviewed-on: #115
2024-11-05 14:04:02 -07:00
c7642e6204 Create video card fragment
All checks were successful
Tests / Tests (pull_request) Successful in 16s
2024-11-05 13:58:31 -07:00
b2ce1c2f96 Create video card fragment
All checks were successful
Tests / Tests (pull_request) Successful in 6s
2024-11-05 13:56:51 -07:00
d0cf071934 Merge pull request 'Return profile image in feed' (#114) from kat/image-uri-feed into master
Reviewed-on: #114
2024-11-05 12:54:24 -07:00
6b410b3d78 Return profile image in feed
All checks were successful
Tests / Tests (pull_request) Successful in 10s
2024-11-05 12:53:42 -07:00
607504261c Merge pull request 'Create new get feed operation' (#113) from kat/add-feed into master
Reviewed-on: #113
Reviewed-by: loewy <loewymalkov@gmail.com>
2024-11-04 15:13:56 -07:00
0421be855d Create new get feed operation
All checks were successful
Tests / Tests (pull_request) Successful in 8s
2024-11-04 15:08:21 -07:00
014aab473b Merge pull request 'Add operation for query doesUsernameExist' (#111) from loewy/query-does-username-exist into master
Reviewed-on: #111
2024-10-31 18:39:58 -06:00
353872401e does username exist query
All checks were successful
Tests / Tests (pull_request) Successful in 8s
2024-10-31 17:37:08 -07:00
433dfdaf74 Merge pull request 'Add countRespectsLimit to GetShotsWithMetadataFilterResult operation args' (#110) from loewy/add-count-respects-limit-to-get-shots-with-metadata-filter-result into master
Reviewed-on: #110
2024-10-31 16:41:06 -06:00
a2d9e688e9 add countRespectsLimit
All checks were successful
Tests / Tests (pull_request) Successful in 15s
2024-10-31 15:21:54 -07:00
b3259dac1f Merge pull request 'Add countRespectsLimit' (#109) from mk/count-respects-limit into master
Reviewed-on: #109
2024-10-31 14:40:06 -06:00
0982b9e60c Add countRespectsLimit
All checks were successful
Tests / Tests (pull_request) Successful in 15s
2024-10-31 13:37:15 -07:00
1710ae451c Merge pull request 'Return id for cache;' (#107) from kat/use-logged-in-user into master
Reviewed-on: #107
2024-10-31 01:57:38 -06:00
de9e7dea6a Return id for cache;
All checks were successful
Tests / Tests (pull_request) Successful in 15s
2024-10-31 01:56:34 -06:00
cfcf1dbcd2 Merge pull request 'Use logged in user for followers' (#106) from kat/use-logged-in-user into master
Reviewed-on: #106
2024-10-30 21:52:42 -06:00
05e3182e8b Use logged in user for followers
All checks were successful
Tests / Tests (pull_request) Successful in 15s
2024-10-30 18:20:25 -06:00
baf139aab5 Merge pull request 'Add support for medals' (#105) from mk/medals into master
Reviewed-on: #105
2024-10-30 17:53:33 -06:00
b3b454ef83 Add support for medals
All checks were successful
Tests / Tests (pull_request) Successful in 8s
2024-10-30 16:51:35 -07:00
f6e4a1bc0b Merge pull request 'Use getUser for getting followers' (#104) from kat/get-user-followers into master
Reviewed-on: #104
2024-10-30 16:19:53 -06:00
9d8155527d Use getUser for getting followers
All checks were successful
Tests / Tests (pull_request) Successful in 8s
2024-10-30 16:18:25 -06:00
8690e81029 Merge pull request 'Add doesUsernameExist' (#103) from mk/does-username-exist into master
Reviewed-on: #103
2024-10-30 13:08:59 -06:00
4ef13a482a Add doesUsernameExist
All checks were successful
Tests / Tests (pull_request) Successful in 15s
2024-10-30 12:07:54 -07:00
9db95c4e6c Merge pull request 'Get user following followers' (#101) from kat/get-user-following-followers into master
Reviewed-on: #101
2024-10-29 23:38:48 -06:00
249807c935 Get user following followers
All checks were successful
Tests / Tests (pull_request) Successful in 15s
2024-10-29 23:37:37 -06:00
eec79b2dc5 Merge pull request 'Use getOrderedShots when requesting getShotsWithVideoGql' (#100) from loewy/use-ordered-shots-to-get-thumbnail into master
Reviewed-on: #100
2024-10-29 19:44:14 -06:00
464c013095 Merge branch 'master' into loewy/use-ordered-shots-to-get-thumbnail
All checks were successful
Tests / Tests (pull_request) Successful in 1m37s
2024-10-29 19:42:30 -06:00
e2f4995cad use getOrderedShots when requesting getShotsWithVideoGql
All checks were successful
Tests / Tests (pull_request) Successful in 6m32s
2024-10-29 17:59:18 -07:00
a43b286e39 Merge pull request 'Followers and following' (#99) from kat/return-following-followers into master
Reviewed-on: #99
2024-10-29 15:48:34 -06:00
148f5362f0 Followers and following
All checks were successful
Tests / Tests (pull_request) Successful in 15s
2024-10-29 15:47:00 -06:00
4d01e9814d Merge pull request 'Remove unused field' (#98) from loewy/remove-ids-from-get-shot-video-gql into master
Reviewed-on: #98
2024-10-29 13:45:52 -06:00
b9e3e1f310 remove uneeded ids
All checks were successful
Tests / Tests (pull_request) Successful in 6s
2024-10-29 12:44:56 -07:00
b0da48c4fb Merge pull request 'Add fargoRating in getLoggedInUser operations requested fields' (#97) from loewy/fargo-rating-in-returns into master
Reviewed-on: #97
2024-10-28 17:04:08 -06:00
1e53dc21ee add fargoRating in user operations
All checks were successful
Tests / Tests (pull_request) Successful in 9s
2024-10-28 16:00:11 -07:00
5c5014339f Allow python 3.12 2024-10-28 02:24:24 -06:00
84188a6066 Merge pull request 'Return username in follow unfollow' (#96) from kat/return-username into master
Reviewed-on: #96
2024-10-27 19:19:41 -06:00
7c7be319d1 Return username in follow unfollow
All checks were successful
Tests / Tests (pull_request) Successful in 9s
2024-10-27 19:18:57 -06:00
79784faba1 Merge pull request 'Follow and unfollow mutation' (#95) from kat/user-relationships-result into master
Reviewed-on: #95
2024-10-27 13:53:22 -06:00
f3ea44755c Follow, unfollow mutation
All checks were successful
Tests / Tests (pull_request) Successful in 8s
2024-10-27 12:22:22 -06:00
9b6559559c Use clearer names in the fields of GetUserRelationshipsMatching 2024-10-25 16:58:21 -06:00
2398216bf2 Replace GetUsernamesAndRelationships with GetUserRelationshipsMatching 2024-10-25 02:45:07 -06:00
d942b91d17 Merge pull request 'Update get user and following response' (#94) from kat/update-gql-v2 into master
Reviewed-on: #94
2024-10-25 01:28:03 -06:00
24d9b9225e Update get user and following response
All checks were successful
Tests / Tests (pull_request) Successful in 15s
2024-10-25 01:27:14 -06:00
f6f6404302 Merge pull request 'Delete user with ids' (#92) from kat/remove-user-ids into master
Reviewed-on: #92
2024-10-25 01:08:04 -06:00
4609af726b Delete user with ids
All checks were successful
Tests / Tests (pull_request) Successful in 9s
2024-10-25 01:07:23 -06:00
c5919c90d0 User UserGQL in response 2024-10-25 00:31:29 -06:00
605adc3293 Merge pull request 'Update get usernames ids' (#90) from kat/update-get-username-ids into master
Reviewed-on: #90
2024-10-25 00:18:19 -06:00
b40554d38d Update get usernames ids
All checks were successful
Tests / Tests (pull_request) Successful in 15s
2024-10-25 00:16:59 -06:00
194d7c66a0 Merge pull request 'Add subfields to usernames and following' (#89) from kat/usernames-following-response into master
Reviewed-on: #89
2024-10-24 23:50:28 -06:00
8 changed files with 1935 additions and 347 deletions

View File

@ -7,7 +7,7 @@ readme = "README.md"
packages = [{include = "rbproto"}] packages = [{include = "rbproto"}]
[tool.poetry.dependencies] [tool.poetry.dependencies]
python = ">=3.10,<3.12" python = ">=3.10,<=3.13"
protobuf = "^4.25.3" protobuf = "^4.25.3"

File diff suppressed because it is too large Load Diff

View File

@ -1,3 +1,4 @@
# DO NOT USE: use getVideoFeed instead
query GetFeed( query GetFeed(
$limit: Int! = 5 $limit: Int! = 5
$after: String = null $after: String = null
@ -5,32 +6,71 @@ query GetFeed(
) { ) {
getUserVideos(limit: $limit, after: $after, filters: $filters) { getUserVideos(limit: $limit, after: $after, filters: $filters) {
videos { videos {
id ...VideoCardFields
owner { }
username pageInfo {
} hasNextPage
name endCursor
screenshotUri }
totalShotsMade }
totalShots }
makePercentage
createdAt fragment VideoCardFields on VideoGQL {
updatedAt id
startTime owner {
endTime id
elapsedTime username
screenshotUri profileImageUri
stream { }
id name
isCompleted screenshotUri
} totalShotsMade
tableSize totalShots
tags { makePercentage
tagClasses { createdAt
name updatedAt
} startTime
name endTime
} private
elapsedTime
screenshotUri
stream {
id
isCompleted
}
tableSize
tags {
tagClasses {
name
}
name
}
currentProcessing {
id
errors {
message
}
status
statuses {
status
}
}
}
query GetVideoFeed(
$limit: Int! = 5
$after: String = null
$filters: VideoFilterInput = null
$includeCallersVideos: Boolean = null
) {
getFeedVideos(
limit: $limit
after: $after
filters: $filters
includeCallersVideos: $includeCallersVideos
) {
videos {
...VideoCardFields
} }
pageInfo { pageInfo {
hasNextPage hasNextPage

80
src/operations/medals.gql Normal file
View File

@ -0,0 +1,80 @@
fragment MedalFields on MedalGQL {
count
nickname
}
query getMedals($scope: MedalScope!, $userId: Int) {
getMedals(scope: $scope, userId: $userId) {
distanceOver66 {
...MedalFields
}
distanceOver78 {
...MedalFields
}
distanceOver90 {
...MedalFields
}
runLength3 {
...MedalFields
}
runLength5 {
...MedalFields
}
runLength8 {
...MedalFields
}
runLength10 {
...MedalFields
}
runLength15 {
...MedalFields
}
runLength20 {
...MedalFields
}
runLength25 {
...MedalFields
}
runLength30 {
...MedalFields
}
runLength40 {
...MedalFields
}
runLength50 {
...MedalFields
}
totalMakes100 {
...MedalFields
}
# missing assets
# totalMakes500 {
# ...MedalFields
# }
# totalMakes1000 {
# ...MedalFields
# }
# totalMakes5000 {
# ...MedalFields
# }
# totalMakes10000 {
# ...MedalFields
# }
dailyMakes50 {
...MedalFields
}
dailyMakes100 {
...MedalFields
}
dailyMakes150 {
...MedalFields
}
dailyMakes200 {
...MedalFields
}
# missing asset
# dailyMakes250 {
# ...MedalFields
# }
}
}

View File

@ -40,9 +40,17 @@ mutation UpdateShotAnnotations(
} }
} }
query GetShotsWithVideoGql($filterInput: FilterInput!, $limit: Int) { ## Should be deprecated
getShotsWithMetadata(filterInput: $filterInput, limit: $limit) { query GetShotsWithVideoGql(
ids $filterInput: FilterInput!
$shotsOrdering: GetShotsOrdering
$limit: Int
) {
getOrderedShots(
filterInput: $filterInput
shotsOrdering: $shotsOrdering
limit: $limit
) {
shots { shots {
id id
videoId videoId
@ -54,18 +62,40 @@ query GetShotsWithVideoGql($filterInput: FilterInput!, $limit: Int) {
} }
} }
query GetShotsWithJustIds(
$filterInput: FilterInput!
$shotsOrdering: GetShotsOrdering
$limit: Int
$countRespectsLimit: Boolean
) {
getOrderedShots(
filterInput: $filterInput
shotsOrdering: $shotsOrdering
limit: $limit
countRespectsLimit: $countRespectsLimit
) {
count
shots {
id
videoId
}
}
}
## Reserved for playlists (which are created from a filter) ## Reserved for playlists (which are created from a filter)
query GetShotsWithMetadataFilterResult( query GetShotsWithMetadataFilterResult(
$filterInput: FilterInput! $filterInput: FilterInput!
$shotsOrdering: GetShotsOrdering $shotsOrdering: GetShotsOrdering
$limit: Int $limit: Int
$ids: [Int!] $ids: [Int!]
$countRespectsLimit: Boolean
) { ) {
getOrderedShots( getOrderedShots(
filterInput: $filterInput filterInput: $filterInput
shotsOrdering: $shotsOrdering shotsOrdering: $shotsOrdering
limit: $limit limit: $limit
ids: $ids ids: $ids
countRespectsLimit: $countRespectsLimit
) { ) {
count count
shots { shots {
@ -129,6 +159,7 @@ fragment ShotWithAllFeatures on ShotGQL {
targetPocketAngleDirection targetPocketAngleDirection
marginOfErrorInDegrees marginOfErrorInDegrees
intendedPocketType intendedPocketType
difficulty
} }
pocketingIntentionInfo { pocketingIntentionInfo {
ballId ballId

View File

@ -37,14 +37,16 @@ query getLoggedInUser {
username username
isAdmin isAdmin
profileImageUri profileImageUri
fargoRating
activeVideoId activeVideoId
createdAt createdAt
updatedAt updatedAt
videosPrivateByDefault
} }
} }
query GetUserPlayTime($userId: Int!) { query GetUserPlayTime($userId: Int!, $filters: VideoFilterInput) {
getPlayTime(userId: $userId) { getPlayTime(userId: $userId, filters: $filters) {
totalSeconds totalSeconds
} }
} }
@ -57,23 +59,25 @@ query getUsernames(
getUsernames(matchString: $matchString, limit: $limit, after: $after) getUsernames(matchString: $matchString, limit: $limit, after: $after)
} }
query getUsernamesAndFollowing( query getUserRelationshipsMatching(
$userId: Int! $userId: Int!
$matchString: String! $matchString: String!
$limit: Int = null $limit: Int = null
$after: String = null $after: String = null
) { ) {
getUsernamesAndFollowing( getUserRelationshipsMatching(
userId: $userId userId: $userId
matchString: $matchString matchString: $matchString
limit: $limit limit: $limit
after: $after after: $after
) { ) {
followers relationships {
following toUser {
usernamesAndIds { username
username id
id }
toUserFollows
toUserIsFollowedBy
} }
} }
} }
@ -84,3 +88,72 @@ query GetUserTags {
name name
} }
} }
mutation followUser($followedUserId: Int!) {
followUser(followedUserId: $followedUserId) {
username
id
following {
id
username
}
followers {
id
username
}
}
}
mutation unfollowUser($followedUserId: Int!) {
unfollowUser(followedUserId: $followedUserId) {
username
id
following {
id
username
}
followers {
id
username
}
}
}
query getUserFollowingFollowers {
getLoggedInUser {
id
following {
id
username
}
followers {
id
username
}
}
}
query doesUsernameExist($candidateUsername: String!) {
doesUsernameExist(candidateUsername: $candidateUsername)
}
mutation editUser(
$username: String
$fargoRating: Int
$videosPrivateByDefault: Boolean
) {
editUser(
input: {
username: $username
fargoRating: $fargoRating
videosPrivateByDefault: $videosPrivateByDefault
}
) {
id
firebaseUid
username
fargoRating
updatedAt
videosPrivateByDefault
}
}

View File

@ -5,44 +5,7 @@ query GetStreamMonitoringDetails($videoId: Int!, $debuggingJson: JSON) {
makePercentage makePercentage
elapsedTime elapsedTime
currentHomography { currentHomography {
crop { ...HomographyInfo
left
top
width
height
}
pockets {
left
top
width
height
}
sourcePoints {
topLeft {
x
y
}
topSide {
x
y
}
topRight {
x
y
}
bottomLeft {
x
y
}
bottomSide {
x
y
}
bottomRight {
x
y
}
}
} }
stream { stream {
id id
@ -55,6 +18,7 @@ query GetStreamMonitoringDetails($videoId: Int!, $debuggingJson: JSON) {
initPlaylistUploadStatus initPlaylistUploadStatus
} }
currentProcessing { currentProcessing {
id
errors { errors {
message message
startSegmentIndex startSegmentIndex
@ -154,45 +118,7 @@ query GetVideo($videoId: Int!) {
segmentDurations segmentDurations
} }
homographyHistory { homographyHistory {
frameIndex ...HomographyInfo
crop {
left
top
width
height
}
pockets {
left
top
width
height
}
sourcePoints {
topLeft {
x
y
}
topSide {
x
y
}
topRight {
x
y
}
bottomLeft {
x
y
}
bottomSide {
x
y
}
bottomRight {
x
y
}
}
} }
stream { stream {
id id
@ -288,3 +214,52 @@ query GetHeaderInfoByVideoId($videoId: Int!) {
startTime startTime
} }
} }
mutation FindPrerecordTableLayout($b64Image: String!, $videoId: Int!) {
findPrerecordTableLayout(b64Image: $b64Image, videoId: $videoId) {
...HomographyInfo
}
}
fragment HomographyInfo on HomographyInfoGQL {
id
frameIndex
crop {
left
top
width
height
}
pockets {
left
top
width
height
}
sourcePoints {
topLeft {
x
y
}
topSide {
x
y
}
topRight {
x
y
}
bottomLeft {
x
y
}
bottomSide {
x
y
}
bottomRight {
x
y
}
}
}

View File

@ -9,39 +9,51 @@ type Query {
videoId: ID! videoId: ID!
intervalDuration: Int! = 300 intervalDuration: Int! = 300
): [MakePercentageIntervalGQL!]! ): [MakePercentageIntervalGQL!]!
getMedals(scope: MedalScope!, userId: Int = null): RequestedMedalsGQL!
getRuns(
filterInput: RunFilterInput!
runIds: [Int!] = null
runsOrdering: GetRunsOrdering = null
limit: Int! = 500
countRespectsLimit: Boolean! = false
): GetRunsResult!
getOrderedShots( getOrderedShots(
filterInput: FilterInput! filterInput: FilterInput!
ids: [Int!] = null ids: [Int!] = null
shotsOrdering: GetShotsOrdering = null shotsOrdering: GetShotsOrdering = null
limit: Int! = 500 limit: Int! = 500
countRespectsLimit: Boolean! = false
): GetShotsResult! ): GetShotsResult!
getShotsWithMetadata( getShotsWithMetadata(
filterInput: FilterInput! filterInput: FilterInput!
ids: [Int!] = null ids: [Int!] = null
shotsPagination: GetShotsPagination = null shotsPagination: GetShotsPagination = null
limit: Int! = 500 limit: Int! = 500
countRespectsLimit: Boolean! = false
): GetShotsResult! ): GetShotsResult!
getShots( getShots(
filterInput: FilterInput! filterInput: FilterInput!
shotsPagination: GetShotsPagination = null shotsPagination: GetShotsPagination = null
limit: Int! = 500 limit: Int! = 500
countRespectsLimit: Boolean! = false
): [ShotGQL!]! ): [ShotGQL!]!
getShotsByIds(ids: [Int!]!): [ShotGQL!]! getShotsByIds(ids: [Int!]!): [ShotGQL!]!
getShotAnnotationTypes(errorTypes: Boolean = false): [ShotAnnotationTypeGQL!]! getShotAnnotationTypes(errorTypes: Boolean = false): [ShotAnnotationTypeGQL!]!
getUser(userId: Int!): UserGQL getUser(userId: Int!): UserGQL
doesUsernameExist(candidateUsername: String!): Boolean!
getLoggedInUser: UserGQL getLoggedInUser: UserGQL
getUsernames( getUsernames(
matchString: String = null matchString: String = null
limit: Int = null limit: Int = null
after: String = null after: String = null
): [String!]! ): [String!]!
getUsernamesAndFollowing( getUserRelationshipsMatching(
userId: Int! userId: Int!
matchString: String = null matchString: String = null
limit: Int = 100 limit: Int = 100
after: String = null after: String = null
): UsernamesAndFollowingResponse! ): UserRelationshipsResult!
getPlayTime(userId: Int!): UserPlayTimeGQL! getPlayTime(userId: Int!, filters: VideoFilterInput = null): UserPlayTimeGQL!
getUserVideos( getUserVideos(
userId: Int = null userId: Int = null
limit: Int! = 5 limit: Int! = 5
@ -54,6 +66,7 @@ type Query {
getFeedVideos( getFeedVideos(
limit: Int! = 5 limit: Int! = 5
after: String = null after: String = null
includeCallersVideos: Boolean = true
filters: VideoFilterInput = null filters: VideoFilterInput = null
): VideoHistoryGQL! ): VideoHistoryGQL!
} }
@ -266,10 +279,61 @@ type MakePercentageIntervalGQL {
elapsedTime: Float! elapsedTime: Float!
} }
type GetShotsResult { type RequestedMedalsGQL {
shots: [ShotGQL!]! distanceOver66: MedalGQL
distanceOver78: MedalGQL
distanceOver90: MedalGQL
runLength3: MedalGQL
runLength5: MedalGQL
runLength8: MedalGQL
runLength10: MedalGQL
runLength15: MedalGQL
runLength20: MedalGQL
runLength25: MedalGQL
runLength30: MedalGQL
runLength40: MedalGQL
runLength50: MedalGQL
totalMakes25: MedalGQL @deprecated(reason: "no longer supported")
totalMakes50: MedalGQL @deprecated(reason: "no longer supported")
totalMakes75: MedalGQL @deprecated(reason: "no longer supported")
totalMakes200: MedalGQL @deprecated(reason: "no longer supported")
totalMakes300: MedalGQL @deprecated(reason: "no longer supported")
totalMakes400: MedalGQL @deprecated(reason: "no longer supported")
totalMakes750: MedalGQL @deprecated(reason: "no longer supported")
totalMakes100: MedalGQL
totalMakes500: MedalGQL
totalMakes1000: MedalGQL
totalMakes5000: MedalGQL
totalMakes10000: MedalGQL
dailyMakes50: MedalGQL
dailyMakes100: MedalGQL
dailyMakes150: MedalGQL
dailyMakes200: MedalGQL
dailyMakes250: MedalGQL
}
type MedalGQL {
count: Int!
nickname: String
}
input MedalScope @oneOf {
videoId: Int
interval: TimeInterval
}
type GetRunsResult {
runs: [RunGQL!]!
count: Int count: Int
ids: [Int!]! runIds: [Int!]!
}
type RunGQL {
id: Int!
runLength: Int!
videoId: Int!
userId: Int!
shots: [ShotGQL!]!
} }
type ShotGQL { type ShotGQL {
@ -341,16 +405,17 @@ type SerializedShotPathsGQL {
type UserGQL { type UserGQL {
id: Int! id: Int!
firebaseUid: String! firebaseUid: String
username: String! username: String!
isAdmin: Boolean! isAdmin: Boolean
fargoRating: Int fargoRating: Int
activeVideoId: Int activeVideoId: Int
profileImageUri: String profileImageUri: String
createdAt: DateTime createdAt: DateTime
updatedAt: DateTime updatedAt: DateTime
following: [Int!] videosPrivateByDefault: Boolean
followers: [Int!] following: [UserGQL!]
followers: [UserGQL!]
} }
type ShotAnnotationGQL { type ShotAnnotationGQL {
@ -386,6 +451,7 @@ type VideoGQL {
elapsedTime: Float elapsedTime: Float
framesPerSecond: Float! framesPerSecond: Float!
tableSize: Float! tableSize: Float!
private: Boolean!
stream: UploadStreamGQL stream: UploadStreamGQL
playlist: HLSPlaylistGQL playlist: HLSPlaylistGQL
tags: [VideoTag!]! tags: [VideoTag!]!
@ -408,6 +474,7 @@ type UploadStreamGQL {
createdAt: DateTime! createdAt: DateTime!
updatedAt: DateTime! updatedAt: DateTime!
segments: [UploadSegmentGQL!]! segments: [UploadSegmentGQL!]!
clientUploadStatus: ClientUploadStatusEnum
resolution: VideoResolutionGQL! resolution: VideoResolutionGQL!
streamSegmentType: StreamSegmentTypeEnum! streamSegmentType: StreamSegmentTypeEnum!
} }
@ -432,6 +499,11 @@ type UploadSegmentGQL {
linksRequested: Int! linksRequested: Int!
} }
enum ClientUploadStatusEnum {
UPLOAD_ENABLED
UPLOAD_DISABLED
}
type VideoResolutionGQL { type VideoResolutionGQL {
width: Int width: Int
height: Int height: Int
@ -458,6 +530,7 @@ type VideoTagClass {
} }
type HomographyInfoGQL { type HomographyInfoGQL {
id: Int!
frameIndex: Int! frameIndex: Int!
crop: BoundingBoxGQL! crop: BoundingBoxGQL!
pockets: [BoundingBoxGQL!]! pockets: [BoundingBoxGQL!]!
@ -487,6 +560,7 @@ type IntPoint2D {
} }
type VideoProcessingGQL { type VideoProcessingGQL {
id: Int!
errors: [VideoProcessingErrorGQL!]! errors: [VideoProcessingErrorGQL!]!
status: ProcessingStatusEnum! status: ProcessingStatusEnum!
statuses: [VideoProcessingStatusGQL!]! statuses: [VideoProcessingStatusGQL!]!
@ -517,33 +591,61 @@ type VideoProcessingStatusGQL {
updatedAt: DateTime updatedAt: DateTime
} }
input RunFilterInput {
videoId: [Int!]
userId: [Int!]
username: [String!]
andFilters: [RunFilterInput!]
orFilters: [RunFilterInput!]
notFilter: RunFilterInput
tableSize: FloatRangeFilter
createdAt: DateRangeFilter
runLength: FloatRangeFilter
}
input GetRunsOrdering {
orderings: [RunsOrderingComponent!]!
}
input RunsOrderingComponent @oneOf {
runLength: IntOrdering
videoId: IntOrdering
videoCreation: DatetimeOrdering
}
input IntOrdering {
descending: Boolean! = true
startingAt: Int = null
}
input DatetimeOrdering {
descending: Boolean! = true
startingAt: DateTime = null
}
type GetShotsResult {
shots: [ShotGQL!]!
count: Int
ids: [Int!]!
}
input GetShotsOrdering { input GetShotsOrdering {
orderings: [ShotsOrderingComponent!]! orderings: [ShotsOrderingComponent!]!
} }
input ShotsOrderingComponent @oneOf { input ShotsOrderingComponent @oneOf {
videoCreation: DatetimeShotOrdering videoCreation: DatetimeOrdering
marginOfError: FloatShotOrdering marginOfError: FloatOrdering
videoId: IntShotOrdering videoId: IntOrdering
startFrame: IntShotOrdering startFrame: IntOrdering
runLength: IntShotOrdering runLength: IntOrdering
} }
input DatetimeShotOrdering { input FloatOrdering {
descending: Boolean! = true
startingAt: DateTime = null
}
input FloatShotOrdering {
descending: Boolean! = true descending: Boolean! = true
startingAt: Float = null startingAt: Float = null
} }
input IntShotOrdering {
descending: Boolean! = true
startingAt: Int = null
}
input GetShotsPagination { input GetShotsPagination {
createdAfter: CreatedAfter! createdAfter: CreatedAfter!
startFrameAfter: Int! startFrameAfter: Int!
@ -554,16 +656,28 @@ input CreatedAfter @oneOf {
createdAt: DateTime createdAt: DateTime
} }
type UsernamesAndFollowingResponse { type UserRelationshipsResult {
usernames: [String!]! inquiringUser: UserGQL!
following: [Int!]! relationships: [UserRelationship!]!
followers: [Int!]! }
type UserRelationship {
toUser: UserGQL!
toUserFollows: Boolean!
toUserIsFollowedBy: Boolean!
} }
type UserPlayTimeGQL { type UserPlayTimeGQL {
totalSeconds: Float! totalSeconds: Float!
} }
input VideoFilterInput {
isStreamCompleted: Boolean = null
requireCursorCompletion: Boolean! = true
createdAt: DateRangeFilter = null
excludeVideosWithNoShots: Boolean = null
}
type VideoHistoryGQL { type VideoHistoryGQL {
videos: [VideoGQL!]! videos: [VideoGQL!]!
pageInfo: PageInfoGQL! pageInfo: PageInfoGQL!
@ -574,11 +688,6 @@ type PageInfoGQL {
endCursor: String endCursor: String
} }
input VideoFilterInput {
isStreamCompleted: Boolean = null
requireCursorCompletion: Boolean! = true
}
type TagGQL { type TagGQL {
name: String! name: String!
id: Int! id: Int!
@ -612,6 +721,7 @@ type Mutation {
editUser(input: EditUserInputGQL!): UserGQL! editUser(input: EditUserInputGQL!): UserGQL!
followUser(followedUserId: Int!): UserGQL! followUser(followedUserId: Int!): UserGQL!
unfollowUser(followedUserId: Int!): UserGQL! unfollowUser(followedUserId: Int!): UserGQL!
findPrerecordTableLayout(b64Image: String!, videoId: Int!): HomographyInfoGQL
createUploadStream( createUploadStream(
videoMetadata: VideoMetadataInput! videoMetadata: VideoMetadataInput!
): CreateUploadStreamReturn! ): CreateUploadStreamReturn!
@ -700,6 +810,7 @@ type TooManyProfileImageUploadsErr {
input EditUserInputGQL { input EditUserInputGQL {
username: String = null username: String = null
fargoRating: Int = null fargoRating: Int = null
videosPrivateByDefault: Boolean = null
} }
type CreateUploadStreamReturn { type CreateUploadStreamReturn {
@ -714,7 +825,9 @@ input VideoMetadataInput {
tableSize: Float = null tableSize: Float = null
lastIntendedSegmentBound: Int = null lastIntendedSegmentBound: Int = null
streamSegmentType: StreamSegmentTypeEnum = null streamSegmentType: StreamSegmentTypeEnum = null
private: Boolean = null
endStream: Boolean! = false endStream: Boolean! = false
clientUploadStatus: ClientUploadStatusEnum = null
resolution: VideoResolution = null resolution: VideoResolution = null
framesPerSecond: Float = null framesPerSecond: Float = null
} }