Skip to content

androidbroadcast/frameio-generated-api

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

dev.androidbroadcast.framesdk - Kotlin client library for Frame.io API

Frame.io Developer Platform

Not every creative team, process, or software stack is exactly the same. That's where our Developer Platform comes in. The Frame.io Developer Platform allows you to handle common tasks using our API. Some popular use cases developers have used our API for include automatically adding existing files or folders to the Frame.io app, uploading new content, and managing teams.

Camera to Cloud (C2C) Program

Camera to Cloud is a unique type of integration. These integrations are purpose built for any device or application that is generating data. If you are building a C2C integration then you will want to use the C2C Integration guides. There you can find all the information you need to get started connecting to the cloud with Frame.io!

Frame.io Official SDKs

  • Python SDK: Frame.io offers an SDK in Python to make getting started with our API easier, including abstraction of key concepts like pagination and rate limiting. This project is available on PyPI, so pip install frameioclient and off you go!
  • Python CLI: If you'd prefer to work from the command line FIOCTL is also available on PyPI.

Quick Start Guide

If you want to get started right away, just click this button to bring our API into Postman!

Run in Postman

Otherwise, read on. As a starting point, you'll need to ensure that you have a Frame.io account that you can sign in with.

From there:

To confirm that your token is working, go ahead and make a test call using a language, tool, or proxy of your choice:

curl --request GET \\
    --url https://api.frame.io/v2/me \\
    --header 'authorization: Bearer <DEV_TOKEN>'
import requests

url = \"https://api.frame.io/v2/me\"
headers = {
\"Authorization\": \"Bearer <DEV_TOKEN>\"
}

requests.GET(url,headers=headers)

In response, you should see your user information.

Error codes

The Frame.io API may return the following common errors:

HTTP Status Details Reason(s)
401 Unauthorized Invalid API token. Check to make sure you're using Bearer Token authentication, and passing your token via the Authorization header.
402 Usage exceeded You have gone over your Frame.io plan limits.
403 Forbidden You do not have access to that resource. Returned for both user access and token scope.
404 Not Found Resource has been moved or deleted.
409 Conflict That resource already exists.
422 Invalid arguments One or more parameters supplied were invalid.
429 Rate Limited You have hit the rate limit for the API.
500 Server Error Our server doesn't know how to interpret your request, or was unable to complete your request within the available timeframe (30 seconds).

Troubleshooting common errors

When using a valid API token to perform common tasks, the most common errors are 403, 404 and 500.

A 403 error will usually indicate one of three scenarios:

  1. The token used in the request, and/or the User to which the token belongs, does not have sufficient access to the area of the Frame.io Account where the resource was requested.
  2. The token does not have sufficient Scopes for the resource requested. For example: calling GET /comments/ without the comments.read scope.
  3. A network traffic problem is preventing the Frame.io API from processing the request. If you suspect your requests are being blocked by a network traffic problem, please contact Customer Support.

A 404 error will usually indicate a resource no longer exists -- it has been moved or deleted.

A 500 error usually indicates a malformed request URL or body, but could also happen when we're unable to complete the request within the available timeframe (30s).

Rate limits

Whether you're using a Developer Token, accessing via an OAuth App, or you're interacting with our API using any of our internal apps, all API calls to Frame.io are rate limited.

Rate limits apply are applied across any and all API requests from an individual user (irrespective of which token or auth method is used), are depleted and refilled progressively, and are reflected in the response headers of every request made to the Frame.io API. Each endpoint is configured with its own limits, which range from as low as 10 requests/minute, to as high as 100 requests/second.

Requests that have exceeded the rate limit for a particular endpoint will receive a 429 HTTP error in response.

Limit depletion and refill

The Frame.io API uses a leaky bucket strategy of progressive rate limiting, in which limits refresh gradually during their allotted time window. In other words, there is not a concept of any hard cutoff after which limits refresh for a particular resource (i.e. "fixed" and "sliding window" enforcement strategies). Rather, remaining limits are constantly refreshing at a pace relative to a resource's limit and time window.

Exponential backoff

Our recommended strategy for managing rate limits is usually referred to as "exponential backoff."

In short:

  • When receiving a 429, pause for a period (normally one second)
  • If another 429 is received, exponentially increase the wait period until normal function resumes

Headers

Responses to API requests will always include the following three headers that should be utilized to limit your outbound requests:

Header Value
x-ratelimit-limit The rate limit for this resource path, measured in requests.
x-ratelimit-remaining The number of requests remaining in the current time window.
x-ratelimit-window The time window for this resource path's limits, measured in milliseconds (ms).

Example

The following example is from the response to GET v2/assets/:id/children, to fetch the child assets of a Project root, folder, or Version Stack. The limit for that path is 40 requests per 60,000 ms (one minute), and there are 39 requests remaining after one has been made.

x-ratelimit-limit → 40
x-ratelimit-remaining → 39
x-ratelimit-window → 60000

Details

Rate limits vary greatly across resource paths in the Frame.io API. Below are some select details, expressed for readability as resource and action (e.g. "Assets -- Update" instead of PUT /assets/:id).

As a general rule, resource paths that create new data are limited at or below 100 calls per minute, and resource paths that fetch lists of assets are limited to 200 calls per minute.

Resource Action Limit (requests) Limit window (ms)
Assets create 5 1,000
Assets update 10 1,000
Assets read 5 1,000
Comments
Presentations
Projects
Review Links
Teams
Team Members
create 100 60,000
Search read 200 60,000

Overview

This API client was generated by the OpenAPI Generator project. By using the openapi-spec from a remote server, you can easily generate an API client.

  • API version: 2.0.0
  • Package version:
  • Generator version: 7.8.0
  • Build package: org.openapitools.codegen.languages.KotlinClientCodegen For more information, please visit http://developer.frame.io

Requires

  • Kotlin 1.5.10

Build

./gradlew check assemble

This runs all tests and packages the library.

Features/Implementation Notes

  • Supports JSON inputs/outputs, File inputs, and Form inputs.
  • Supports collection formats for query parameters: csv, tsv, ssv, pipes.
  • Some Kotlin and Java types are fully qualified to avoid conflicts with types defined in OpenAPI definitions.

Documentation for API Endpoints

All URIs are relative to https://api.frame.io

Class Method HTTP request Description
AccountsApi deviceIdentify GET /v2/devices/me Device Information
AccountsApi deviceListAccounts GET /v2/devices/accounts List accounts
AccountsApi getAccount GET /v2/accounts/{account_id} Get Account
AccountsApi getAccountMembership GET /v2/accounts/{account_id}/membership Get Account membership
AccountsApi getAccounts GET /v2/accounts Get Accounts for User
AssetsApi addVersionToAsset POST /v2/assets/{asset_id}/version Version an Asset
AssetsApi assetSearchGet GET /v2/search/assets Search for Assets
AssetsApi assetSearchPost POST /v2/search/assets Search for Assets
AssetsApi batchCopyAsset POST /v2/batch/assets/{destination_id}/copy Bulk copy assets
AssetsApi batchDeleteAsset DELETE /v2/batch/assets Bulk delete assets
AssetsApi copyAsset POST /v2/assets/{destination_folder}/copy Copy asset
AssetsApi createAsset POST /v2/assets/{asset_id}/children Create an Asset
AssetsApi createRealtimeUploadParts POST /v2/assets/{asset_id}/realtime_upload/parts Request upload URLs for real-time upload
AssetsApi deleteAsset DELETE /v2/assets/{asset_id} Delete an Asset
AssetsApi deviceAssetCreate POST /v2/devices/assets Create C2C asset
AssetsApi deviceAssetCreateDeprecated POST /v2/assets Create C2C asset
AssetsApi getAsset GET /v2/assets/{asset_id} Get an Asset
AssetsApi getAssets GET /v2/assets/{asset_id}/children Fetch child Assets
AssetsApi getAudio GET /v2/assets/{asset_id}/audio Get audio for an Asset
AssetsApi getSubtitles GET /v2/assets/{asset_id}/subtitles Get the subtitles for an Asset
AssetsApi librarySearchGet GET /v2/search/library Advanced search for Assets
AssetsApi librarySearchPost POST /v2/search/library Advanced search for Assets
AssetsApi moveAsset POST /v2/assets/{destination_folder}/move Move asset
AssetsApi unversionAsset DELETE /v2/assets/{asset_id}/unversion Unversion an Asset
AssetsApi updateAsset PUT /v2/assets/{asset_id} Update an Asset
AuditLogsApi getAccountAuditLogs GET /v2/accounts/{account_id}/events Get audit log entries for an Account
AuditLogsApi getAuditLogs GET /v2/accounts/{account_id}/audit_logs (Legacy) Get Audit Logs for an Account
AuditLogsApi getUserAuditLogs GET /v2/users/{user_id}/events Get audit log entries for a specified User
AuthorizationApi authDeviceConfirmDevice GET /v2/auth/token Polling for Device Authorization
AuthorizationApi authDeviceRefreshToken POST /v2/auth/token Refresh Device Token
AuthorizationApi authDeviceRevokeToken POST /v2/auth/revoke Revoke Device Authorization
AuthorizationApi deviceRequestCode POST /v2/device/code Request device code
CommentsApi completeComment POST /v2/comments/{comment_id}/complete Mark completed
CommentsApi createComment POST /v2/assets/{asset_id}/comments Create a Comment
CommentsApi createCommentImpressionLike POST /v2/comments/{comment_id}/like Create a Like on a Comment
CommentsApi createReply POST /v2/comments/{comment_id}/replies Leave a Reply on a Comment
CommentsApi deleteComment DELETE /v2/comments/{comment_id} Delete a Comment
CommentsApi deleteCommentImpressionLike DELETE /v2/comments/{comment_id}/like Delete a like from a comment
CommentsApi getComment GET /v2/comments/{comment_id} Get a Comment by ID
CommentsApi getCommentImpressions GET /v2/comments/{comment_id}/impressions Get impressions
CommentsApi getComments GET /v2/assets/{asset_id}/comments Get all the Comments and Replies from a Comment thread
CommentsApi getReplies GET /v2/comments/{comment_id}/replies Get comments and replies
CommentsApi uncompleteComment DELETE /v2/comments/{comment_id}/complete Mark a Comment as Uncompleted
CommentsApi updateComment PUT /v2/comments/{comment_id} Update a Comment
CustomActionsApi createActionForTeam POST /v2/teams/{team_id}/actions Create a Custom Action
CustomActionsApi deleteAction DELETE /v2/actions/{action_id} Delete a Custom Action
CustomActionsApi getAction GET /v2/actions/{action_id} Get a Custom Action by ID
CustomActionsApi getActionsByAccount GET /v2/accounts/{account_id}/actions Get Custom Actions for an Account or Team
CustomActionsApi getActionsByTeam GET /v2/teams/{team_id}/actions Get Custom Actions for a given Team
CustomActionsApi updateAction PUT /v2/actions/{action_id} Update a Custom Action
DevicesApi authDeviceConfirmDevice GET /v2/auth/token Polling for Device Authorization
DevicesApi authDeviceRefreshToken POST /v2/auth/token Refresh Device Token
DevicesApi authDeviceRevokeToken POST /v2/auth/revoke Revoke Device Authorization
DevicesApi connectDeviceChannel POST /v2/devices/channels Connect a new device channel
DevicesApi deviceAssetCreate POST /v2/devices/assets Create C2C asset
DevicesApi deviceAssetCreateDeprecated POST /v2/assets Create C2C asset
DevicesApi deviceCreateRealtimeUploadParts POST /v2/devices/assets/{asset_id}/realtime_upload/parts Request upload URLs for real-time upload
DevicesApi deviceHeartbeat POST /v2/devices/heartbeat Heartbeat ping
DevicesApi deviceIdentify GET /v2/devices/me Device Information
DevicesApi deviceListAccounts GET /v2/devices/accounts List accounts
DevicesApi deviceListProjects GET /v2/devices/accounts/{account_id}/projects List projects for account
DevicesApi deviceProjectConnect POST /v2/devices/connect Connect device
DevicesApi deviceProjectDisconnect POST /v2/devices/disconnect Disconnect device
DevicesApi deviceRequestCode POST /v2/device/code Request device code
DevicesApi disconnectAllDeviceChannels POST /v2/devices/channels/disconnect Disconnect all device channels
DevicesApi disconnectDeviceChannel POST /v2/devices/channels/{channel_id}/disconnect Disconnect a specific device channel
DevicesApi getMe GET /v2/me Get the current authenticated User
DevicesApi triggerRealtimeLoggingEvent POST /v2/devices/channels/{channel_id}/inputs/{input_index}/trigger Trigger a real-time logging event
NotificationsApi getGroupedNotifications GET /v2/notifications Get Grouped Notifications
PresentationsApi createPresentation POST /v2/assets/{asset_id}/presentations Create a Presentation Link for an asset
PresentationsApi deletePresentation DELETE /v2/presentations/{presentation_id} Delete a Presentation
PresentationsApi getAssetPresentations GET /v2/assets/{asset_id}/presentations Get Presentation Links for a particular asset
PresentationsApi getProjectPresentations GET /v2/projects/{project_id}/presentations Get a paginated list of Presentations
PresentationsApi getUserPresentations GET /v2/presentations Get global presentation links
PresentationsApi showPresentation GET /v2/presentations/{presentation_id} Show a Presentation
PresentationsApi updatePresentation PUT /v2/presentations/{presentation_id} Update a Presentation
PrivateApi getGroupedNotifications GET /v2/notifications Get Grouped Notifications
PrivateApi getSubtitles GET /v2/assets/{asset_id}/subtitles Get the subtitles for an Asset
ProjectsApi addCollaboratorToProject POST /v2/projects/{project_id}/collaborators Add a Collaborator to a Project
ProjectsApi batchCreateCollaborators POST /v2/batch/projects/{project_id}/collaborators Batch create Collaborators and PendingCollaborators within a Project
ProjectsApi batchDeleteCollaborators DELETE /v2/batch/projects/{project_id}/collaborators Batch delete Collaborators and PendingCollaborators for a Project
ProjectsApi createProject POST /v2/teams/{team_id}/projects Create a Project
ProjectsApi deleteProject DELETE /v2/projects/{project_id} Delete Project by ID
ProjectsApi getProject GET /v2/projects/{project_id} Get Project by ID
ProjectsApi getProjectCollaborators GET /v2/projects/{project_id}/collaborators Get Project Collaborators
ProjectsApi getProjectMembership GET /v2/projects/{project_id}/membership Get current User(s) membership for a Project
ProjectsApi getProjectsByTeam GET /v2/teams/{team_id}/projects Get Projects by Team
ProjectsApi updateProject PUT /v2/projects/{project_id} Update a Project
ReviewLinksApi reviewLinkCreate POST /v2/projects/{project_id}/review_links Create a Review Link
ReviewLinksApi reviewLinkDelete DELETE /v2/review_links/{review_link_id} Delete a Review Link
ReviewLinksApi reviewLinkGet GET /v2/review_links/{review_link_id} Get a Review Link
ReviewLinksApi reviewLinkItemCreate POST /v2/review_links/{review_link_id}/assets Add Asset to a Review Link
ReviewLinksApi reviewLinkItemUpdate PUT /v2/review_links/{review_link_id}/assets Update Assets in a Review Link
ReviewLinksApi reviewLinkItemsDelete DELETE /v2/review_links/{review_link_id}/items/shared Remove items from a Review Link
ReviewLinksApi reviewLinkItemsList GET /v2/review_links/{review_link_id}/items/shared Get items in a Review Link
ReviewLinksApi reviewLinkReviewerDelete DELETE /v2/review_links/{review_link_id}/reviewers Remove Reviewers from a Review Link
ReviewLinksApi reviewLinkReviewerInvite POST /v2/review_links/{review_link_id}/reviewers Invite Reviewer to a Review Link
ReviewLinksApi reviewLinkUpdate PUT /v2/review_links/{review_link_id} Update a Review Link
ReviewLinksApi reviewLinksList GET /v2/projects/{project_id}/review_links List Review Links in a project
SystemApi healthCheck GET /health Status check
TeamsApi addTeamMember POST /v2/teams/{team_id}/members Add a Team member
TeamsApi createTeam POST /v2/accounts/{account_id}/teams Create a Team for the given Account
TeamsApi getMembershipByTeam GET /v2/teams/{team_id}/membership Get user membership for team
TeamsApi getTeam GET /v2/teams/{team_id} Get a Team
TeamsApi getTeamMembers GET /v2/teams/{team_id}/members Get Team Members
TeamsApi getTeams GET /v2/teams Get Teams for User
TeamsApi getTeamsByAccount GET /v2/accounts/{account_id}/teams Get all Teams on an Account
UsersApi getMe GET /v2/me Get the current authenticated User
UsersApi getSharedProjects GET /v2/projects/shared Get Projects where User is a Collaborator
WebhooksApi createWebhookForTeam POST /v2/teams/{team_id}/hooks Create team webhook
WebhooksApi deleteWebhook DELETE /v2/hooks/{hook_id} Delete webhook
WebhooksApi getWebhook GET /v2/hooks/{hook_id} Get Webhook by ID
WebhooksApi getWebhooksByAccount GET /v2/accounts/{account_id}/hooks Get Webhooks for Account
WebhooksApi updateWebhook PUT /v2/hooks/{hook_id} Update webhook

Documentation for Models

Documentation for Authorization

Authentication schemes defined for the API:

JWT

  • Type: HTTP Bearer Token authentication (JWT)

DeveloperToken

  • Type: HTTP Bearer Token authentication

OAuth2

  • Type: OAuth
  • Flow: implicit
  • Authorization URL: https://applications.frame.io/oauth2/auth
  • Scopes:
    • presentation.update: modify presentations
    • comment.read: read comments
    • asset.update: modify assets
    • reviewlink.update: modify review links
    • webhook.create: create webhooks
    • account.read: read accounts
    • action.update: modify actions
    • reviewlink.read: read review links
    • presentation.read: read presentations
    • action.create: create actions
    • presentation.create: create presentations
    • auditlog.read: read audit logs
    • team.create: create teams
    • comment.create: create comments
    • team.read: read teams
    • offline: generate refresh tokens
    • reviewlink.delete: delete review links
    • project.update: modify projects
    • project.delete: delete projects
    • webhook.delete: delete webhooks
    • action.delete: delete actions
    • asset.delete: delete assets
    • webhook.read: read webhooks
    • asset.create: create assets
    • comment.delete: delete comments
    • webhook.update: modify webhooks
    • asset.read: read assets
    • comment.update: modify comments
    • project.read: read projects
    • action.read: read actions
    • reviewlink.create: create review links
    • presentation.delete: delete presentations
    • project.create: create projects
    • team.update: modify teams

OAuth2

  • Type: OAuth
  • Flow: accessCode
  • Authorization URL: https://applications.frame.io/oauth2/auth
  • Scopes:
    • presentation.update: modify presentations
    • comment.read: read comments
    • asset.update: modify assets
    • reviewlink.update: modify review links
    • webhook.create: create webhooks
    • account.read: read accounts
    • action.update: modify actions
    • reviewlink.read: read review links
    • presentation.read: read presentations
    • action.create: create actions
    • presentation.create: create presentations
    • auditlog.read: read audit logs
    • team.create: create teams
    • comment.create: create comments
    • team.read: read teams
    • offline: generate refresh tokens
    • reviewlink.delete: delete review links
    • project.update: modify projects
    • project.delete: delete projects
    • webhook.delete: delete webhooks
    • action.delete: delete actions
    • asset.delete: delete assets
    • webhook.read: read webhooks
    • asset.create: create assets
    • comment.delete: delete comments
    • webhook.update: modify webhooks
    • asset.read: read assets
    • comment.update: modify comments
    • project.read: read projects
    • action.read: read actions
    • reviewlink.create: create review links
    • presentation.delete: delete presentations
    • project.create: create projects
    • team.update: modify teams

C2CDeviceAuth

  • Type: OAuth
  • Flow: accessCode
  • Authorization URL: https://api.frame.io/v2/auth/device/code
  • Scopes:
    • offline: Enables refreshing of tokens
    • asset_create: Enables ability to create assets in fixed folder structure

C2COAuth2

  • Type: OAuth
  • Flow: accessCode
  • Authorization URL: https://applications.frame.io/oauth2/auth
  • Scopes:
    • offline: Enables refreshing of tokens
    • asset_create: Enables ability to create assets in fixed folder structure
    • device_connect: Enables ability to connect to project as a device

Author

[email protected]

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages