What's Changed
- Source collected by query parameter by @johnbilt in #183
- Adds the
collected_by_idsquery parameter to Source and Flow listings, mirroring existing functionality in Webhooks
- Adds the
- Make
roleoptional in collections, capture the same information elsewhere by @samdbmg in #225- The use of the collection
roleparameter has been inconsistent and vague. Aneditorial_purposetag with a managed list of recommended values has been specified. In conjunction with the abovecollected_by_idsquery parameter, it is now possible to filter collected Sources/Flows by their purpose in a single request. - See AppNote0025 for more info
- The use of the collection
- Add support for init segments in Flows by @j616 in #167
- Enables the use of formats with initialisation segments, such as fMP4
- See AppNote0024 for more info
- Flow profiles by @johnbilt in #130
- Adds support for the Profile resource, which may be used to populate Flow technical metadata, and to filter Flow listings
- See AppNote0020 for more info
- Add fine-grained auth support to Storage Backends by @j616 in #229
- This has been achieved by adding tags to Storage Backends. These may also be used for other purposes beyond fine-grained auth
- Support specification of presigned/non-presigned URLs on put_urls by @j616 in #222
- Allows clients to select if returned
put_urls should be pre-signed or not - Adds further clarity on authentication methods used by
put_urls andget_urls
- Allows clients to select if returned
include_object_timerangeimprovements by @j616 in #215- Adds
include_object_timerangeoption to webhooks, to match HTTP API - Always return
object_timerangewheninclude_object_timerangeistrue, replacing potentially behaviour whereobject_timerangewould always be omitted if it matched the Flow Segments timerange
- Adds
- Explicitly specify default ordering of segments listing by @j616 in #223
- The ordering of this listing has always been implied by the text of the
reverse_orderquery parameter to be bytimerange. This change makes that explicit.
- The ordering of this listing has always been implied by the text of the
- Specify the sorting of resource listings by @j616 in #224
- Defines the default sorting of all other resource listings, and provides a means for clients to specify the sorting where appropriate
- Tag status review by @j616 in #227
- Revises the status of tags in the tag listing
- Notably, elevates
flow_statusto the core Flow metadata as thestatusattribute
- Add AppNote0022 - Architectures for the transforming of media by @j616 in #181
- Other changes:
Implementation considerations
This section calls out changes implementations may need/want to make. It also calls out behavior which has been clarified where developers should verify their implementations.
Warning
This release significantly re-factors the schemas in the TAMS specification.
Implementations which rely on the schema structures (e.g for automatic generation of libraries and data structures) should carefully review these changes.
Service Considerations
collected_by_idsquery parameter- Add this query parameter to the
/flowsand/sourcesendpoints - Ensure an empty
flow_collected_by_idsorsource_collected_by_idsparameter in webhook configurations filters to Flows/Sources that are not collected by any other Flows/Sources.
- Add this query parameter to the
- Make
roleoptional in collections- Make this attribute optional on Source and Flow collections
- Ensure that the ordering of Source and Flow collections is preserved
- Add support for init segments
- This PR affects multiple shemas and endpoints in the TAMS specification
- See PR #167 for more info
- Flow profiles
- Add the
/service/profilesendpoint tree - Add the
profileattribute to Flows, including populating Flow technical metadata using it - Add the
profile_idquery parameter to/flows - See the diagram in ADR0047 for more information on how Flow schemas have been restructured
- Add the
- Storage Backend tags
- Add tag attributes, and query parameters to Storage Backends
- These tags should be set in deployment configurations
- Add
storage_backend_tagquery parameters to Flow Segment and Object endpoints - If supporting AppNote0016 fine-grained auth, update auth logic to handle
auth_classestag on Storage Backend, and endpoints that serve storage PUT/GET URLs
- Add tag attributes, and query parameters to Storage Backends
- Object instance PUT/GET URLs
- Add support for
presignedparameter inPOST /flows/{flowId}/storagerequest and response body - Ensure
get_urlandput_urlauthentication conforms to clarification in method descriptions forGET /flows/{flowId}/segments,POST /flows/{flowId}/storage, andGET /objects/{objectId}
- Add support for
include_object_timerangeimprovements- Add
include_object_timerangeto webhooks endpoints - Ensure
object_timerangeis always returned wheninclude_object_timerangeis set totrueonGET /flows/{flowId}/segments
- Add
- Resource listing sorting
- Ensure Segments are sorted by
timerangeinGET /flows/{flowId}/segmentsresponses, and sorting correctly takes into account timerange clusivity markers - Ensure default sorting of listings match specification
- Ensure paging headers are all present and correct
reverse_orderandsort_byquery parameters with specificed fallback bahaviours to listing endpoints that provide them per the specification
- Ensure Segments are sorted by
statusFlow parameter- Add
statusto Flow parameters - Add support for
statusquery parameter filter toGET /flows
- Add
- AppNote0022 - Architectures for the transforming of media
- Implementations may consider supporting built in transcode mechanisms, as specified in AppNote0022
- Webhook return codes
- Ensure webhook return codes are handled appropriately
- Tag list values
- Ensure all tag endpoints support list value type correctly
Client Considerations
collected_by_idsquery parameter- Make
roleoptional in collections- Prefer using the
editorial_purposetag overroleto identify collected Source and Flows - Writing Clients should populate the
editorial_purposetag according to AppNote0025 where possible - Clients MUST NOT rely on the existance of
rolein collections - Consider using the sorting of collection items to preserve sorting of Source/Flows in UIs
- Prefer using the
- Add support for init segments
- Flow profiles
- Consider using Profiles to consistently populate Flow metadata
- Consider using the
profile_idquery parameter on/flowsto filter Flows based on the Flow Profile they were created with - See AppNote0020 for more info
- Storage backend tags
- Consider supporting Storage Backend tag filter query parameters on Storage Backend, Flow Segment, and Object endpoints
- Object instance PUT/GET URLs
- Consider using
presignedparameter inPOST /flows/{flowId}/storagerequest to select presigned/non-presigned PUT URLs - Handle
presignedparameter inPOST /flows/{flowId}/storageresponse - Ensure authentication when using
get_urlandput_urlconforms to clarification in method descriptions forGET /flows/{flowId}/segments,POST /flows/{flowId}/storage, andGET /objects/{objectId}
- Consider using
include_object_timerangeimprovements- Consider using
include_object_timerangeparameter onflows/segments_addedwebhooks - Clients may now assume
object_timerangewill always be returned wheninclude_object_timerangeis set totrueonGET /flows/{flowId}/segments
- Consider using
- Resource listing sorting
- Consider using
sort_byquery parameter to specify sorting of listings, on endpoints where it is available
- Consider using
statusFlow parameter- Replace usage of the
flow_statustag with the Flowstatusparameter - Consider maintaining the deprecated
flow_statustag as a fallback
- Replace usage of the
- AppNote0022 - Architectures for the transforming of media
- Write Client implementations may consider supporting the
trigger_transcodetag, as specified in AppNote0022 - Transform/transcode Clients may consider conforming to the architectures specified in AppNote0022
- Write Client implementations may consider supporting the
generationFlow parameter- Ensure
generationis set appropriately per the advice in the spec
- Ensure
- Webhook return codes
- Ensure webhook clients set HTTP return codes appropriately
Full Changelog: 8.1...8.2