1.2.0 • Public • Published

avails -- tool for manipulating EMA Avails


avails convert [-i type] [-o type]

avails merge [-i type] [-o type] file1 [file2 ...]

avails diff [-i type] [-o type] file1 file2

avails ids [-i type] [-o type]


avails convert simply transforms avails from one format to another.

avails merge will accept one of more avails in chronological order and merge them into a single avails. Merge will treat avails as state so repeated entities with the same Entry Types will be ignored. A Full Extract followed by a Full Delete will result in no entry for that entity.

avails diff will accept two avails, A and B, and return a new avails containing entries unique to B, without entries that exist in both A and B, and with entries that are only in A as Full Delete entries.

avails ids accepts avails and outputs a list of Alt IDs found.

The following options are available:

  • -i, --input : Specify the format of input file: tsv, json, xlsx. Required. See FORMATS.

  • -o, --output : Specify the format of output file: tsv, json, xlsx. Required. See FORMATS.

  • -h: Display help avails or subcommands.

See BACKGROUND for more information regarding the Avails standard and this tool.


avails conforms to EMA Avails spreadsheet template Version 1.6e2.

avails supports the following formats:

  • Tab-separated values (tsv)
  • Microsoft Excel (xlsx)
  • JSON (json)

The official Avails XML format is not supported.

The TSV format should not supply headers, as the Entity Type field is used to determine that particular line's schema.

The JSON format is an unofficial format used both for representing Avails, and as an intermediary data structure within avails. It has a 1-1 mapping with the columns of the Excel-based standard. Keys (columns) are in snake_case. Values are always strings. See schema for header values and test/mock for examples. Excel was chosen over the XML standard for modeling since most vendors prefer that format.


Content Availability Metadata, or avails, is an Entertainment industry term for information about the time, location and business rules relating to offering a media asset, e.g. a movie or a television show.

avails document the transition between states, e.g. Full Extract, Full Delete, not states themselves, however, by manipulating initial and subsequent avails we can recreate the expected state of content on a given platform. This is the technique utilized by the merge and diff subcommands, and third-party tools that generate initial avails.

It is recommended to persist submitted avails and use avails, together with custom or third-party tools, to easily create new avails, or determine state of content on third-party platforms.


You can use avails as a CLI or a Node.JS module.

as CLI:

npm install -g avails
avails convert -i json -o xlsx <movies.json >movies.xlsx

as module:

// npm install avails
const Avails = require('@pivotshare/avails');
const obj = Avails.fromTSVLine('SomeFilmStudio\tEN\tUS\tMovie');


emavalidator, Content Availability Metadata, Sending Avails

Package Sidebar


npm i @pivotshare/avails

Weekly Downloads






Last publish


  • kaiserken
  • crumblord
  • jfujita
  • hgpa