Releases: bitmovin/cli
Releases · bitmovin/cli
Release list
v0.7.0
Support tickets and organizations come to the CLI: file, read and reply to Bitmovin support tickets, and see every organization your credentials can reach.
npm install -g @bitmovin/cli # or download an installer below
bitmovin support tickets list
bitmovin account organizations listAdded
bitmovin account organizations listshows every visible organization with itstype(ROOT_ORGANIZATION/SUB_ORGANIZATION),parentId, and whether it is the active one, ordering sub-organizations directly under their parent.--type root|suband--parent <org-id>narrow the listing; it takes no--organization, since the endpoint is scoped by the credential rather than byX-Tenant-Org-Id.bitmovin support tickets list | get | create | commentfor Bitmovin support tickets.--organization <org-id>(alias--tenant-org) scopes any of them to a sub-organization viaX-Tenant-Org-Id, andcreatealways sends a bodyorganizationIdmatching that header because the API rejects a mismatch.createandcommentare irreversible: both print the exact payload to stderr — always, including under--json, so a scripted run still records what was filed and against which organization — state that Bitmovin support engineers will see it and that it cannot be withdrawn via the API, and require an explicit confirmation.--yes/--confirmskips the prompt and is required for non-interactive use — without a TTY (or in--jsonmode) the commands refuse to send instead of silently filing a ticket.commentreads the ticket'smodifiedAtand sends it as the API-requiredupdatedStampcollision stamp, so callers never see the misleading1004 … Check your JSON syntaxerror that a missing stamp produces. The ticket's newest comment is shown in the confirmation, so the stamp corresponds to the state the user actually saw.listrejects an--offsetthat is not0or a multiple of--limit(the API silently serves an earlier page otherwise), plus invalid--searchtext, filter values, and--sortexpressions, before making a request. Filter spacing is normalized, since the API splits on,without trimming.gethides attachment download URLs unless--show-secretsis passed — in--jsonoutput too, where theurlfield carries a placeholder — because the URL alone grants access to the file to anyone holding the link. Passing--show-secretsprints an exposure warning to stderr, matchingaccount info. Ticket subjects and comment bodies are stripped of control characters before printing, so customer-supplied text cannot rewrite the rendered conversation or forge the(Bitmovin)agent attribution.- An empty
--organization ""is rejected rather than silently falling back, which would otherwise widen a write from the intended sub-organization to the credential's own organization. --allow-file-accessrequires--category encoding, and--body-fileis capped at 65,536 characters with a head-and-tail preview. The API accepts a mismatched category and silently drops the field, so the check has to be local.
Changed
bitmovin config list organizationsnow derives sub-organizations from theparentIdof the flat organization listing instead of calling the per-organizationsub-organizationsendpoint, which reports1001 An organization with the given id does not existfor organization ids that the listing returns. The JSON keys are unchanged, but rows are now deduplicated and ordered parent-first, so sub-organizations render under their parent instead of flat at top level.--organization(alias--tenant-org) is nowBaseCommand.tenantOrgFlagand is honoured by SDK-backed commands as well as the REST-backed support commands:getClient()takes a tenant-organization override andBaseCommand.getApi()passes it. Previously the flag could only ever work for the support commands, so adding it to any other command would have parsed fine and been silently ignored.- Credential and organization scope for a command is resolved once in
BaseCommand.requestScope()instead of each command threading--api-keyand the organization by hand, so a future credential-affecting base flag is wired up in one place. Tenant resolution moved tolib/tenant.tsas a pure function. - The optional create-ticket fields are declared once in
CREATE_TICKET_FIELDS, which generates both the oclif flags and the API payload mapping. They were previously listed three times (flags, interface, mapping) behind a cast that hid drift, so a field added to two of the three compiled and never reached the API. - The destructive-action policy lives in
confirm.tsasconfirmDestructive()plus a sharedyesFlag, instead of being duplicated in each write command. It returns a distinctunconfirmableoutcome so "the user declined" and "nobody could be asked" keep different exit codes, andencoding jobs delete/stopcan adopt it without inventing a fourth convention. - Fixed
abbreviate(text, n, 0)printing the entire text while labelling it truncated:slice(-0)isslice(0). It was live in the comment confirmation, where a long support reply pushed the "PUBLIC comment" warning off screen — the opposite of what the head-and-tail preview exists for. - The ticket-body bound applies to
--bodyas well as--body-file, and organization listing has a page-count bound so a server that ignoresoffsetfails instead of looping. --sort createdAt:descis uppercased before it is sent; validation accepted it case-insensitively while the API silently ignored the direction.409now explains that the resource changed since it was read (the case the comment collision stamp exists to catch) instead ofAPI error: 409, and network failures and the request timeout are reported in plain language — the timeout deliberately does not promise a retry is safe, since it fires after the request was sent.config list organizationsno longer nests a sub-organization under an unrelated root when its real parent is not visible to the credential; it is listed at top level and labelled.- Terminal sanitization moved to the output boundary:
sanitizeForTerminallives inlib/sanitize.tsandlib/output.tsstrips control characters from every rendered table and key-value cell, so a newly rendered field is safe by default instead of waiting for someone to wrap it. The API's own error text, the confirmation previews, and the attachment line are sanitized at their own write sites, since those bypass the table renderer. - Organizations are paged through in full. The generated SDK's
organizations.list()accepts no query parameters and so returned only the API's default first page — on a larger account, sub-organizations whose parent sat on a later page were rendered as roots, and--parentreported a visible organization as invisible. A short page while the API reports more now fails loudly rather than returning a truncated list. - The
403 Access deniedhint now names the organization the failed request was actually scoped to (including one passed via--organization) and points atbitmovin account organizations list. bitmovin config set <key> ""is refused, and a blank organization already in the config file is treated as "no organization". Stored empty, it looked set inconfig showwhile makingcreatesend anorganizationIdof""with no matchingX-Tenant-Org-Idheader.--limit/--offsetare declared once asBaseCommand.paginationFlags()and shared by every list command, instead of being repeated in each one.- A transport failure is recognised by its cause code rather than by "network" or "socket" appearing in the message, so a genuine
TypeErroris reported with its own message and stack instead of as a connectivity problem.
What's Changed
- Add support ticket and organization commands by @lukaskroepfl in #39
Full Changelog: v0.6.0...v0.7.0
v0.4.0
What's Changed
- Add OAuth login (PKCE) with bearer-auth API calls by @lukaskroepfl in #18
- Add AI assistant skill installation by @strangesource in #17
New Contributors
- @lukaskroepfl made their first contribution in #18
- @strangesource made their first contribution in #17
Full Changelog: v0.3.0...v0.4.0
v0.3.0
What's Changed
- Mask secrets in account info by default by @dweinber in #6
- Resolve API key from env var in config show by @dweinber in #7
- Fix encoding templates validate to support JSON Schema 2020-12 by @dweinber in #4
- Add encoding jobs live command by @dweinber in #9
- Add CI workflow that packs tarballs and installer artifacts by @webzherd in #11
- Draft GitHub Release with installer assets on tag push by @webzherd in #14
New Contributors
Full Changelog: https://github.com/bitmovin/cli/commits/v0.3.0