A. An animator uploads a draft into a specific watch folder. Currently, I get a web hook trigger via the normal Dropbox API and I update our task tracker in AirTable with the new file. This alerts various people that there is a new draft that needs to be reviewed. I'd like to then automatically dump this file into Replay via the API and get the direct link to it so the people in Air Table can click the auto-populated link to go view the file.
B. After reviewing the file, say the project lead approves it. Right now they'd click approved in Replay AND AirTable which is redundant. I'd like to be able to access the status in Replay and either get or set the status so I can sync it with Air Table.
The methods this would require would be:
POST file into Replay with the ability to specify project, folder, and if it's new or an up version of an existing file, ideally specify the Dropbox location of the file so it can be transferred over super fast just like add file from dropbox in the GUI.
GET link for Replay file with the ability to specify if it's an internal or external link (just like clicking the share button in Replay)
GET status of specific replay file (Needs Review, Edits Requested, Approved) either via polling or webhook
POST set status of specific Replay file
Additionally it would be helpful to be able to:
Read comments
Post comments
Archive projects
Create projects
Create folders
List Project
List folders
List files
I can see that the current API is kind of touching the Replay ecosystem so hopefully it wouldn't be too hard to implement some of these methods. When I list namespaces in the current API I see the namespaces for a bunch of Replay Projects. If it was created in a similar manner to the v2 paper API, a lot of these functions could be buried in existing methods.
Overall this would enable so many powerful workflows and take a lot of pressure off the development team if third-party developers could write integrations and workflows to solve the niche needs that users have. We use AirTable but someone recently requested Monday.com integration. I doubt you want to write an integration for all of these tools at this point. An API seems like the easiest place to start to empower users with maximum capabilities.
","body@stringLength":"2783","rawBody":" We use Airtable to track our content creation projects. A lot of our workflow is automated but Replay doesn't have this capability. Here is an example case of what I'd like to do most of the time:
A. An animator uploads a draft into a specific watch folder. Currently, I get a web hook trigger via the normal Dropbox API and I update our task tracker in AirTable with the new file. This alerts various people that there is a new draft that needs to be reviewed. I'd like to then automatically dump this file into Replay via the API and get the direct link to it so the people in Air Table can click the auto-populated link to go view the file.
B. After reviewing the file, say the project lead approves it. Right now they'd click approved in Replay AND AirTable which is redundant. I'd like to be able to access the status in Replay and either get or set the status so I can sync it with Air Table.
The methods this would require would be:
POST file into Replay with the ability to specify project, folder, and if it's new or an up version of an existing file, ideally specify the Dropbox location of the file so it can be transferred over super fast just like add file from dropbox in the GUI.
GET link for Replay file with the ability to specify if it's an internal or external link (just like clicking the share button in Replay)
GET status of specific replay file (Needs Review, Edits Requested, Approved) either via polling or webhook
POST set status of specific Replay file
Additionally it would be helpful to be able to:
Read comments
Post comments
Archive projects
Create projects
Create folders
List Project
List folders
List files
I can see that the current API is kind of touching the Replay ecosystem so hopefully it wouldn't be too hard to implement some of these methods. When I list namespaces in the current API I see the namespaces for a bunch of Replay Projects. If it was created in a similar manner to the v2 paper API, a lot of these functions could be buried in existing methods.
Overall this would enable so many powerful workflows and take a lot of pressure off the development team if third-party developers could write integrations and workflows to solve the niche needs that users have. We use AirTable but someone recently requested Monday.com integration. I doubt you want to write an integration for all of these tools at this point. An API seems like the easiest place to start to empower users with maximum capabilities.
","author":{"__ref":"User:user:619703"},"isEscalated":null,"postTime":"2023-06-22T11:47:00.012-07:00","solution":false,"customFields":[],"attachments":{"__typename":"AttachmentConnection","edges":[],"pageInfo":{"__typename":"PageInfo","hasNextPage":false,"endCursor":null,"hasPreviousPage":false,"startCursor":null}},"kudosSumWeight":0,"repliesCount":1,"images":{"__typename":"AssociatedImageConnection","edges":[],"totalCount":0,"pageInfo":{"__typename":"PageInfo","hasNextPage":false,"endCursor":null,"hasPreviousPage":false,"startCursor":null}},"timeToRead":2,"currentRevision":{"__ref":"Revision:revision:693749_1"},"latestVersion":null,"metrics":{"__typename":"MessageMetrics","views":2553},"visibilityScope":"PUBLIC","placeholder":false,"originalMessageForPlaceholder":null,"messagePolicies":{"__typename":"MessagePolicies","canModerateSpamMessage":{"__typename":"PolicyResult","failureReason":{"__typename":"FailureReason","message":"error.lithium.policies.feature.moderation_spam.action.moderate_entity.allowed.accessDenied","key":"error.lithium.policies.feature.moderation_spam.action.moderate_entity.allowed.accessDenied","args":[]}}}},"Revision:revision:693752_1":{"__typename":"Revision","id":"revision:693752_1","lastEditTime":"2023-06-22T11:47:43.382-07:00"},"QueryVariables:ReplyList:message:693752:1":{"__typename":"QueryVariables","id":"ReplyList:message:693752:1","value":{"id":"message:693752","first":10,"sorts":{"postTime":{"direction":"ASC"}},"repliesFirst":3,"repliesFirstDepthThree":1,"repliesSorts":{"postTime":{"direction":"ASC"}},"useAvatar":true,"useAuthorLogin":true,"useAuthorRank":true,"useBody":true,"useKudosCount":true,"useTimeToRead":false,"useMedia":false,"useReadOnlyIcon":false,"useRepliesCount":true,"useSearchSnippet":false,"useAcceptedSolutionButton":true,"useSolvedBadge":false,"useAttachments":false,"attachmentsFirst":5,"useTags":false,"useNodeAncestors":false,"useUserHoverCard":false,"useNodeHoverCard":false,"useModerationStatus":true,"usePreviewSubjectModal":false,"useMessageStatus":true}},"ROOT_MUTATION":{"__typename":"Mutation"},"CachedAsset:text:en_US-shared/client/components/users/UserAvatar-1741624997000":{"__typename":"CachedAsset","id":"text:en_US-shared/client/components/users/UserAvatar-1741624997000","value":{"altText":"{login}'s avatar","altTextGeneric":"User's avatar"},"localOverride":false},"CachedAsset:text:en_US-shared/client/components/ranks/UserRankLabel-1741624997000":{"__typename":"CachedAsset","id":"text:en_US-shared/client/components/ranks/UserRankLabel-1741624997000","value":{"altTitle":"Icon for {rankName} rank"},"localOverride":false},"CachedAsset:text:en_US-components/messages/AcceptedSolutionButton-1741624997000":{"__typename":"CachedAsset","id":"text:en_US-components/messages/AcceptedSolutionButton-1741624997000","value":{"accept":"Mark as Solution","accepted":"Marked as Solution","errorHeader":"Error!","errorAdd":"There was an error marking as solution.","errorRemove":"There was an error unmarking as solution.","solved":"Solved","topicAlreadySolvedErrorTitle":"Solution Already Exists","topicAlreadySolvedErrorDesc":"Refresh the browser to view the existing solution"},"localOverride":false},"CachedAsset:text:en_US-components/messages/ThreadedReplyList-1741624997000":{"__typename":"CachedAsset","id":"text:en_US-components/messages/ThreadedReplyList-1741624997000","value":{"title":"{count, plural, one{# Reply} other{# Replies}}","title@board:BLOG":"{count, plural, one{# Comment} other{# Comments}}","title@board:TKB":"{count, plural, one{# Comment} other{# Comments}}","title@board:IDEA":"{count, plural, one{# Comment} other{# Comments}}","title@board:OCCASION":"{count, plural, one{# Comment} other{# Comments}}","noRepliesTitle":"No Replies","noRepliesTitle@board:BLOG":"No Comments","noRepliesTitle@board:TKB":"No Comments","noRepliesTitle@board:IDEA":"No Comments","noRepliesTitle@board:OCCASION":"No Comments","noRepliesDescription":"Be the first to reply","noRepliesDescription@board:BLOG":"Be the first to comment","noRepliesDescription@board:TKB":"Be the first to comment","noRepliesDescription@board:IDEA":"Be the first to comment","noRepliesDescription@board:OCCASION":"Be the first to comment","messageReadOnlyAlert:BLOG":"Comments have been turned off for this post","messageReadOnlyAlert:TKB":"Comments have been turned off for this article","messageReadOnlyAlert:IDEA":"Comments have been turned off for this idea","messageReadOnlyAlert:FORUM":"Replies have been turned off for this discussion","messageReadOnlyAlert:OCCASION":"Comments have been turned off for this event"},"localOverride":false},"CachedAsset:text:en_US-shared/client/components/nodes/NodeAvatar-1741624997000":{"__typename":"CachedAsset","id":"text:en_US-shared/client/components/nodes/NodeAvatar-1741624997000","value":{"altTitle":"Node avatar for {nodeTitle}"},"localOverride":false},"CachedAsset:text:en_US-shared/client/components/nodes/NodeDescription-1741624997000":{"__typename":"CachedAsset","id":"text:en_US-shared/client/components/nodes/NodeDescription-1741624997000","value":{"description":"{description}"},"localOverride":false},"CachedAsset:text:en_US-components/nodes/NodeTopicsCount-1741624997000":{"__typename":"CachedAsset","id":"text:en_US-components/nodes/NodeTopicsCount-1741624997000","value":{"topicCount":"{count}","topicCountWithNeutralLabel@board:OCCASION":"{count, plural, one{# Event} other{# Events}}","topicCountWithNeutralLabel":"{count, plural, one{# Post} other{# Posts}}","topicCount@board:FORUM":"{count, plural, one{# Post} other{# Posts}}","topicCount@board:BLOG":"{count, plural, one{# Post} other{# Posts}}","topicCount@board:CONTEST":"{count, plural, one{# Entry} other{# Entries}}","topicCount@board:GROUP":"{count, plural, one{# Topic} other{# Topics}}","topicCount@board:IDEA":"{count, plural, one{# Idea} other{# Ideas}}","topicCount@board:QANDA":"{count, plural, one{# Question} other{# Questions}}","topicCount@board:TKB":"{count, plural, one{# Article} other{# Articles}}","topicCount@board:OCCASION":"{count, plural, one{# Event} other{# Events}}","title":"{count, plural,one { Post} other{ Posts}}"},"localOverride":false},"CachedAsset:text:en_US-components/nodes/NodeLatestActivityTime-1741624997000":{"__typename":"CachedAsset","id":"text:en_US-components/nodes/NodeLatestActivityTime-1741624997000","value":{"title":"Latest Activity: {latestActivityTime}","updatedAt":"Updated {latestActivityTime}","noActivity":"No activity yet"},"localOverride":false},"CachedAsset:text:en_US-components/nodes/NodeFollowersCount-1741624997000":{"__typename":"CachedAsset","id":"text:en_US-components/nodes/NodeFollowersCount-1741624997000","value":{"followersCount":"{count} Following"},"localOverride":false},"CachedAsset:text:en_US-shared/client/components/nodes/NodeIcon-1741624997000":{"__typename":"CachedAsset","id":"text:en_US-shared/client/components/nodes/NodeIcon-1741624997000","value":{"contentType":"Content Type {style, select, FORUM {Forum} BLOG {Blog} TKB {Knowledge Base} IDEA {Ideas} OCCASION {Events} other {}} icon"},"localOverride":false},"Revision:revision:693749_1":{"__typename":"Revision","id":"revision:693749_1","lastEditTime":"2023-06-22T11:47:00.012-07:00"},"CachedAsset:text:en_US-components/tags/TagView/TagViewChip-1741624997000":{"__typename":"CachedAsset","id":"text:en_US-components/tags/TagView/TagViewChip-1741624997000","value":{"tagLabelName":"Tag name {tagName}"},"localOverride":false}}}},"page":"/forums/ForumMessagePage/ForumMessagePage","query":{"boardId":"101000042","messageSubject":"replay-api","messageId":"690600","replyId":"693752"},"buildId":"k2ra3WbQxEm0ebgjo41Oz","runtimeConfig":{"buildInformationVisible":false,"logLevelApp":"info","logLevelMetrics":"info","openTelemetryClientEnabled":false,"openTelemetryConfigName":"dropbox","openTelemetryServiceVersion":"25.2.0","openTelemetryUniverse":"prod","openTelemetryCollector":"http://localhost:4318","openTelemetryRouteChangeAllowedTime":"5000","apolloDevToolsEnabled":false,"inboxMuteWipFeatureEnabled":false},"isFallback":false,"isExperimentalCompile":false,"dynamicIds":["./components/seo/QAPageSchema/QAPageSchema.tsx","./components/community/Navbar/NavbarWidget.tsx","./components/community/Breadcrumb/BreadcrumbWidget.tsx","./components/customComponent/CustomComponent/CustomComponent.tsx","./components/messages/TopicWithThreadedReplyListWidget/TopicWithThreadedReplyListWidget.tsx","./components/nodes/NodeActionButtonWidget/NodeActionButtonWidget.tsx","./components/nodes/NodeInformationWidget/NodeInformationWidget.tsx","./components/messages/RelatedContentWidget/RelatedContentWidget.tsx","./components/messages/MessageListForNodeByRecentActivityWidget/MessageListForNodeByRecentActivityWidget.tsx","./components/messages/MessageView/MessageViewStandard/MessageViewStandard.tsx","./components/customComponent/CustomComponentContent/HtmlContent.tsx","./components/nodes/NodeView/NodeView.tsx","./components/nodes/NodeView/NodeViewCard/NodeViewCard.tsx","../shared/client/components/common/List/UnstyledList/UnstyledList.tsx","./components/messages/MessageView/MessageView.tsx","./components/messages/MessageView/MessageViewInline/MessageViewInline.tsx","../shared/client/components/common/Pager/PagerLoadMore/PagerLoadMore.tsx","./components/customComponent/CustomComponentContent/TemplateContent.tsx","./components/customComponent/CustomComponentContent/CustomComponentScripts.tsx","../shared/client/components/common/List/UnwrappedList/UnwrappedList.tsx","./components/tags/TagView/TagView.tsx","./components/tags/TagView/TagViewChip/TagViewChip.tsx"],"appGip":true,"scriptLoader":[]}