GithubHelp home page GithubHelp logo

jman012 / floatplaneapi Goto Github PK

View Code? Open in Web Editor NEW
17.0 17.0 1.0 2.23 MB

An API specification of the website https://www.floatplane.com

Home Page: https://jman012.github.io/FloatplaneAPIDocs

License: MIT License

HTML 29.08% Shell 7.81% JavaScript 7.48% Dockerfile 1.26% Python 38.45% Makefile 15.92%
floatplane

floatplaneapi's People

Contributors

jman012 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

Forkers

pineapple-eng

floatplaneapi's Issues

Required nullables

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.

Additional API routes

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

Track new Progress APIs

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.

Track audio

Floatplane restored audio attachments. They no longer result in HTTP 403 responses. Now that we get responses, I can track the response schema.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.