jman012 / floatplaneapi Goto Github PK
View Code? Open in Web Editor NEWAn API specification of the website https://www.floatplane.com
Home Page: https://jman012.github.io/FloatplaneAPIDocs
License: MIT License
An API specification of the website https://www.floatplane.com
Home Page: https://jman012.github.io/FloatplaneAPIDocs
License: MIT License
Previously, if a property could be null
in a JSON response from Floatplane, I modeled this as a property in the JSON Schema without that property being present in the "required": [...]
section of the schema. For strict languages like Swift, this resulted in a Swift Optional (either the value or null
/nil
) and worked out okay.
In TypeScript generation, it turns out this was interpreted, probably more correctly, as string | undefined
. We want this to be string | null
instead, because the key does appear in the JSON payload but the value is null
instead of a value.
I need to go through and find all other instances where I've marked these incorrectly as non-required instead of required+nullable and change this. I'll write a quick script to find instances of this in the schema json for me and correct them. After that, I need to re-visit the C# unit tests because I remember doing some funky stuff to make it even more strict with regard to present/non-present keys. I might be able to remove that hacky code and rely more on this method to make it strict.
I was scraping the API routes contained inside the mobile app and thought I'd post them here in case you can do something with them!
/api/v2/creator/social/get
/api/cms/v3/blogPost/get
/api/v3/shopify/multipass
/api/v2/cdn/delivery
/api/acp/v3/user/export
/api/acp/v2/user/payment/processor/data
/api/v2/push/web/info
/api/v2/payment/braintree/token
/api/v2/user/password/reset/validate
/api/acp/v2/creator/urlname/availability
/api/cms/v3/creator/channels
/api/cms/v3/creator/channels/default
/api/v3/content/audio
/api/v2/auth/spoof/begin
/api/acp/v2/creator/titles
/api/v2/push/web/register
/api/v2/creator/info/update
/api/cms/v3/creator/channels/list
/api/acp/v2/creator/subscriptionplan/update
/api/v3/redirect-yt-latest/:channelKey
/api/acp/v2/dashboard/job/start/
/api/acp/v2/dashboard/job/status/
/api/acp/v2/dashboard/job/stop/
/api/acp/v2/moderator/creator/add/
/api/acp/v2/moderator/creator/list/
/api/connect/
/api/v2/image/optimizations/
/api/acp/v2/article/
/api/acp/v2/article/create
/api/v3/comment/moderate/
/api/acp/v2/article/edit
/api/v3/image/optimizations/
/api/acp/v2/creator/
/api/acp/v2/creator/card/upload
/api/acp/v2/creator/category/list
/api/acp/v2/creator/cover/upload
/api/acp/v2/creator/create
/api/acp/v2/creator/icon/upload
/api/acp/v2/creator/list
/api/v2/video/transcode/progress
/api/v2/video/transcode/progress/subscribe
/api/acp/v2/creator/subscriptionplans/list
/api/acp/v2/creator/update
/api/acp/v2/creatoragreement
/api/acp/v2/creatoragreement/edit
/api/acp/v2/creatoragreement/list
/api/acp/v2/feature/category/save
/api/acp/v2/feature/configs
/api/acp/v2/feature/dependencies/save
/api/acp/v2/feature/resolution/save
/api/acp/v2/feature/save
/api/acp/v2/feature/type/save
/api/acp/v2/image/list
/api/acp/v2/image/upload
/api/acp/v2/moderator/create
/api/acp/v2/moderator/creator/available
/api/acp/v2/moderator/creator/remove
/api/acp/v2/moderator/list
/api/acp/v2/moderator/update/global
/api/acp/v2/section/
/api/acp/v2/section/create
/api/acp/v2/section/edit
/api/acp/v2/section/list
/api/acp/v2/user/
/api/acp/v2/user/admin/create
/api/acp/v2/user/administrator/update
/api/acp/v2/user/avatar/upload
/api/acp/v2/user/create
/api/acp/v2/user/delete
/api/acp/v2/user/edit
/api/acp/v2/user/email/availability
/api/acp/v2/user/find
/api/acp/v2/user/list
/api/acp/v2/user/list/notmoderator
/api/acp/v2/user/payment/invoice/list
/api/acp/v2/user/subscription/add
/api/acp/v2/user/username/availability
/api/acp/v2/user/usersubscription/delete
/api/acp/v2/user/usersubscription/list
/api/acp/v3/achievement/delete
/api/acp/v3/achievement/emote/upload
/api/acp/v3/achievement/list
/api/acp/v3/achievement/perk/delete
/api/acp/v3/achievement/perk/list
/api/acp/v3/achievement/perk/save
/api/acp/v3/achievement/save
/api/acp/v3/blogPost/list
/api/acp/v3/blogPost/moveContent
/api/acp/v3/creator/invite/create
/api/acp/v3/creator/invite/list
/api/acp/v3/invoice/mark-refunded
/api/acp/v3/service-message
/api/acp/v3/service-message/create
/api/acp/v3/service-message/delete
/api/acp/v3/service-message/list
/api/acp/v3/service-message/update
/api/acp/v3/user/delete
/api/acp/v3/user/password/reset/request
/api/acp/v3/user/undelete
/api/cms/v3/blogPost/attachments/update
/api/cms/v3/blogPost/create
/api/cms/v3/blogPost/delete
/api/cms/v3/blogPost/edit
/api/cms/v3/blogPost/edit/bulk
/api/cms/v3/blogPost/list
/api/cms/v3/content/
/api/cms/v3/content/audio/
/api/cms/v3/content/audio/list
/api/cms/v3/content/bulk
/api/cms/v3/content/delete
/api/cms/v3/content/edit
/api/cms/v3/content/move
/api/cms/v3/content/picture/
/api/cms/v3/content/picture/list
/api/cms/v3/content/video/
/api/cms/v3/content/video/list
/api/cms/v3/creator/channels/delete
/api/cms/v3/creator/channels/image
/api/cms/v3/creator/channels/reorder
/api/cms/v3/creator/channels/social
/api/cms/v3/creator/channels/update
/api/cms/v3/creatorwarehouse
/api/cms/v3/creatorwarehouse/collections/get
/api/cms/v3/creatorwarehouse/collections/list
/api/cms/v3/creatorwarehouse/countries/get
/api/cms/v3/creatorwarehouse/pricerule/
/api/cms/v3/creatorwarehouse/pricerule/create
/api/cms/v3/creatorwarehouse/pricerule/delete
/api/cms/v3/creatorwarehouse/pricerule/edit
/api/cms/v3/creatorwarehouse/pricerule/list
/api/cms/v3/creatorwarehouse/products/get
/api/cms/v3/creatorwarehouse/products/list
/api/cms/v3/creatorwarehouse/save
/api/cms/v3/creatorwarehouse/shop/get
/api/cms/v3/creatorwarehouse/shop/shippingcountries/list
/api/cms/v3/live/info
/api/cms/v3/live/thumbnail
/api/cms/v3/live/update
/api/cms/v3/plan/list
/api/cms/v3/plan/preview
/api/cms/v3/plan/preview/stop
/api/cms/v3/processing/active
/api/cms/v3/subscribers/download
/api/cms/v3/subscribers/list
/api/cms/v3/transcode/subscribe
/api/cms/v3/transcode/unsubscribe
/api/v2/activation/email/confirm
/api/v2/activation/email/request
/api/v2/administration/moderators/get/:user
/api/v2/administration/moderators/global/add
/api/v2/administration/moderators/global/remove
/api/v2/administration/moderators/list
/api/v2/administration/moderators/remove
/api/v2/api/creator/agreement/
/api/v2/api/creator/agreement/confirm
/api/v2/auth/checkFor2faLogin
/api/v2/auth/login
/api/v2/auth/logout
/api/v2/auth/signup
/api/v2/auth/spoof/end
/api/v2/connect/:site
/api/v2/connect/:site/callback
/api/v2/connect/complete
/api/v2/connect/dissociate
/api/v2/connect/list
/api/v2/connect/refresh
/api/v2/creator/administration/moderators/add
/api/v2/creator/administration/moderators/list
/api/v2/creator/administration/moderators/remove
/api/v2/creator/discover
/api/v2/creator/image/update
/api/v2/creator/info
/api/v2/creator/info/get
/api/v2/creator/list
/api/v2/creator/named
/api/v2/creator/social/update
/api/v2/creator/videos
/api/v2/creatorcategory/list
/api/v2/creatorplanfeaturelevel/cost
/api/v2/creatorplanfeaturelevel/list
/api/v2/creators/:creator/administration/moderators/add
/api/v2/creators/:creator/administration/moderators/list
/api/v2/creators/:creator/administration/moderators/remove
/api/v2/discord/bot/info
/api/v2/discord/bot/invite/generate
/api/v2/discord/bot/link
/api/v2/discord/bot/link/callback
/api/v2/discord/bot/list
/api/v2/discord/bot/unlink
/api/v2/discord/bot/update
/api/v2/discord/server/join
/api/v2/edges
/api/v2/faq/list
/api/v2/get/player/:guid
/api/v2/live/config/update
/api/v2/live/thumbnail/upload
/api/v2/moderation/comment/hide
/api/v2/moderation/comment/unhide
/api/v2/moderation/user/ban
/api/v2/moderation/user/ban/list
/api/v2/moderation/user/info
/api/v2/moderation/user/unban
/api/v2/moderator/user/unban
/api/v2/moderator/userBanStatus
/api/v2/payment/address/add
/api/v2/payment/address/delete
/api/v2/payment/address/list
/api/v2/payment/address/set
/api/v2/payment/address/update
/api/v2/payment/invoice/list
/api/v2/payment/method/add
/api/v2/payment/method/delete
/api/v2/payment/method/list
/api/v2/payment/method/set
/api/v2/payment/setup-intents
/api/v2/payment/stripe/pk
/api/v2/payment/subscription/cancel
/api/v2/payment/subscription/cancel-renew-change
/api/v2/payment/subscription/change
/api/v2/payment/subscription/purchase
/api/v2/payment/subscription/uncancel
/api/v2/payment/tax/estimate
/api/v2/payment/webhook/:paymentProcessor
/api/v2/payment/webhook/:paymentProcessor/:subPaymentProcessor
/api/v2/plan/feature/list
/api/v2/plan/info
/api/v2/plan/list
/api/v2/plan/publish
/api/v2/plan/update
/api/v2/push/web/revoke
/api/v2/push/web/tokenInfo
/api/v2/socket/subscribe/user
/api/v2/socket/subscribe/user/:id
/api/v2/support/
/api/v2/support/ticket/types
/api/v2/sync/connect
/api/v2/sync/disconnect
/api/v2/user/administrator
/api/v2/user/avatar
/api/v2/user/ban/status
/api/v2/user/creator
/api/v2/user/email/update
/api/v2/user/email/update/complete
/api/v2/user/info
/api/v2/user/links
/api/v2/user/named
/api/v2/user/password/change
/api/v2/user/password/reset
/api/v2/user/password/reset/request
/api/v2/user/security
/api/v2/user/security/2fa
/api/v2/user/security/2fa/activate
/api/v2/user/security/2fa/deactivate
/api/v2/user/security/backupcode
/api/v2/user/security/backupcode/activate
/api/v2/user/security/backupcode/deactivate
/api/v2/user/self
/api/v2/user/subscribed
/api/v2/user/subscriptions
/api/v2/user/update
/api/v2/video/dash/chunk/signed
/api/v2/video/dash/watchkey
/api/v2/video/delete
/api/v2/video/info
/api/v2/video/list
/api/v2/video/related
/api/v2/video/transcode/progress/unsubscribe
/api/v2/video/update
/api/v2/video/upload/s3/multipart
/api/v2/video/upload/s3/multipart/abort
/api/v2/video/upload/s3/multipart/complete
/api/v2/video/upload/s3/multipart/sign
/api/v2/video/upload/thumbnail
/api/v2/video/url
/api/v2/video/watchkey
/api/v2/webhooks/connectedAccount/:site
/api/v3/auth/captcha/info
/api/v3/comment
/api/v3/comment/delete
/api/v3/comment/dislike
/api/v3/comment/edit
/api/v3/comment/history
/api/v3/comment/like
/api/v3/comment/pin
/api/v3/comment/replies
/api/v3/content/creator
/api/v3/content/creator/list
/api/v3/content/dislike
/api/v3/content/get/progress
/api/v3/content/history
/api/v3/content/info
/api/v3/content/like
/api/v3/content/picture
/api/v3/content/picture/url
/api/v3/content/post
/api/v3/content/progress
/api/v3/content/progress/clear
/api/v3/content/progress/delete
/api/v3/content/related
/api/v3/content/tags
/api/v3/content/thumbnail/subscribe
/api/v3/content/thumbnail/unsubscribe
/api/v3/content/upload/s3/multipart
/api/v3/content/upload/s3/multipart/abort
/api/v3/content/upload/s3/multipart/complete
/api/v3/content/upload/s3/multipart/sign
/api/v3/content/upload/thumbnail
/api/v3/content/upload/thumbnail?content=
/api/v3/content/video
/api/v3/creator/category/list
/api/v3/creator/channels/list
/api/v3/creator/discover
/api/v3/creator/info
/api/v3/creator/invite/bind
/api/v3/creator/invite/claim
/api/v3/creator/invite/info
/api/v3/creator/list
/api/v3/creator/named
/api/v3/delivery/info
/api/v3/experiments/vpn/enabled
/api/v3/experiments/vpn/profile/download
/api/v3/experiments/vpn/profile/ephemeral
/api/v3/experiments/vpn/server/list
/api/v3/moderation/comment/hide
/api/v3/moderation/comment/unhide
/api/v3/moderation/user/ban
/api/v3/moderation/user/ban/list
/api/v3/moderation/user/info
/api/v3/moderation/user/unban
/api/v3/moderator/user/unban
/api/v3/moderator/userBanStatus
/api/v3/plan/content
/api/v3/poll/close
/api/v3/poll/cms/list
/api/v3/poll/live/create
/api/v3/poll/live/joinroom
/api/v3/poll/live/joinroommoderator
/api/v3/poll/live/leaveroom
/api/v3/poll/live/leaveroommoderator
/api/v3/poll/vote
/api/v3/push/web/info
/api/v3/push/web/register
/api/v3/push/web/revoke
/api/v3/shopify/verify
/api/v3/socket/connect
/api/v3/socket/disconnect
/api/v3/status
/api/v3/user/achievement/perks
/api/v3/user/activity
/api/v3/user/creator
/api/v3/user/delete
/api/v3/user/info
/api/v3/user/links
/api/v3/user/loyaltyreward/claim
/api/v3/user/loyaltyreward/list
/api/v3/user/notification/channels
/api/v3/user/notification/channels/list
/api/v3/user/notification/digest
/api/v3/user/notification/email
/api/v3/user/notification/list
/api/v3/user/notification/update
/api/v3/user/self
/api/v3/user/subscribed
/api/v3/user/subscriptions
/api/v3/user/undelete
/api/v3/webhooks/ivs/livestream
/api/v3/webhooks/livestream
Most detail from AJ in Discord. Tracking here for documentation.
URL for posting progress: https://www.floatplane.com/api/v3/content/progress
/**
* @api {post} /content/progress
* @apiPrefix /api
* @apiName updateProgress
* @apiFunction updateProgress
* @apiGroup Content
* @apiDescription updates Playback Progress
*
* @apiParam {string} id
* @apiParam {string} contentType
* @apiParam {number} progress
*
* @apiReturns {void}
*
* @apiError contentNotFoundError - No such content could be found.
* @apiError paramValidationError - "id" is required
* @apiError paramValidationError - "contentType" is required
* @apiError notLoggedInError - You must be logged-in to access this resource.
*/
contentType, in your case, should be "video" or "audio" depending on what you're playing. And, "id" is the content ID, so the video, audio ID that the blogpost returns
Please keep this endpoint to a max of 10RPM, or update for each ~10 seconds of playback If you can, I would only update on player exit.
The request to get progress is : POST https://www.floatplane.com/api/v3/content/get/progress
Body :
{"ids":["VVHQaTtSc7","hjfJHy9cUj","GZRmozSIM0","fvNbFlmoPj","15KcPBNX6E","oK260WpGEI","ihZAAx8HXR","jhmLqBaFuJ","MTTtJArRsw","bll7niF3ch","apxTRWH7Xe","PcQixIYJ7P","oYURYNHuub","WMx2Uj1PA4","K6T6tX85WD","cfZTUxS5Ky","P1u086uk9E","i74rOKGFEG","xyjPflHtpu","QGutu0g41u"],"contentType":"blogPost"}
However, there is a new progress
field that appears when set on a video object (/api/v3/content/video?id=zpk4mwdZTA
) as well. The above bulk query is needed for showing progress on a home page before querying the /api/v3/content/video
object for playback (at which point the current progress isn't too important since playback will begin and will be updated soon). I will add in the new progress
field (not required, and not nullable, always an integer).
Make sure it's video/audio IDs, not blogPostId.
Hey!
Would you mind to add the trimmed version to this repository as well?
Bests
Floatplane restored audio attachments. They no longer result in HTTP 403 responses. Now that we get responses, I can track the response schema.
Produce full and trimmed versions of the spec in YAML in addition to JSON.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.