@boomstream/mcp 0.1.1 → 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md ADDED
@@ -0,0 +1,141 @@
1
+ # Changelog
2
+
3
+ All notable changes to `@boomstream/mcp` are documented here.
4
+
5
+ The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6
+
7
+ ## [Unreleased]
8
+
9
+ ## [0.2.1] - 2026-06-01
10
+
11
+ ### Fixed
12
+
13
+ - **CI: npm-publish auth token** now written via `NPM_CONFIG_USERCONFIG=$(mktemp)` instead of
14
+ `export "npm_config_//.../:_authToken=..."` which failed in alpine `sh` (invalid variable
15
+ name chars `/` and `:`). v0.2.0 was tagged in git but never published to npm due to this
16
+ bug; v0.2.1 is the first published 0.2.x release.
17
+
18
+ ## [0.2.0] - 2026-06-01
19
+
20
+ ### Added
21
+
22
+ - **CHANGELOG.md** added to the repository, documenting versions 0.1.0–0.1.2
23
+ with full entries. CI tarball now includes CHANGELOG. ([BOO-64])
24
+
25
+ ### Changed
26
+
27
+ - **api-client: switched to POST + `Content-Type: application/json` for all
28
+ tools.** Previously the api-client used GET with query-string parameters for
29
+ most methods and POST for a small subset. The Boomstream API supports
30
+ `POST + JSON body` universally («Режим 2»). All tools now use POST; the GET
31
+ branch and `URLSearchParams` are removed entirely. Closes root cause of
32
+ [BOO-52] / [BOO-56] (the `RequestURI` redaction is retained as
33
+ defence-in-depth). ([BOO-67])
34
+ - **apikey removed from URL.** `apikey` is now sent in the JSON request body
35
+ rather than the URL query string, eliminating it from proxy access-logs,
36
+ browser history, and server `RequestURI` echo fields.
37
+ - **Array parameters now sent as real JSON arrays.** Previously serialised as
38
+ repeated query-string keys (`code[0]=A&code[1]=B`); now sent as
39
+ `{"code":["A","B"]}` in the JSON body.
40
+ - **`format=json` body param removed.** Not needed when the request carries
41
+ `Content-Type: application/json`; the Boomstream API infers the response
42
+ format from the `Content-Type` header.
43
+ - **`httpMethod` removed from `schemas/boomstream.json`.** The field was used
44
+ only by the GET/POST dispatch logic, which no longer exists.
45
+ - **README: `BOOMSTREAM_TEST_API_KEY` wording clarified** and `hwdmedia.documents`
46
+ database reference removed from docs. ([BOO-50])
47
+
48
+ ## [0.1.2] - 2026-05-31
49
+
50
+ ### Security
51
+
52
+ - **apikey leak via `RequestURI` scrubbed.** The Boomstream API echoes the full
53
+ query string (including `apikey=…`) back inside `RequestURI` on error
54
+ responses. The MCP client previously surfaced this field verbatim in tool
55
+ results. The api-client now drops `RequestURI` from parsed responses and
56
+ redacts `apikey`/`token`/`signature` from any error message before it reaches
57
+ the model. ([BOO-52], [BOO-56])
58
+ - **Tool-result content redaction.** A defence-in-depth pass also scrubs
59
+ `apikey`, `token`, and `signature` query parameters from any string the
60
+ server returns to the client — even if the upstream API surfaces them in a
61
+ new field. Covered by `tests/apikey-leak.test.ts`.
62
+
63
+ ### Fixed
64
+
65
+ - Error paths in `api-client.ts` no longer pass the raw `err` object to `pino`
66
+ alongside an apikey-containing URL — the error is reshaped into sanitized
67
+ scalars and the URL is filtered through the redactor before logging.
68
+
69
+ ## [0.1.1] - 2026-05-30
70
+
71
+ ### Added
72
+
73
+ - **CI auto-publish on `v*` tags.** Pushing a tag matching `v\d+.\d+.\d+(-…)?`
74
+ to `boomstream-ai/boomstream-mcp` now triggers the `npm-publish` GitLab CI
75
+ job, which builds and runs `pnpm publish --access public` against the npm
76
+ registry using a protected, masked `NPM_TOKEN`. Tag-pattern `v*` is a
77
+ protected tag (Maintainer+ push only). ([BOO-23])
78
+ - **Self-hosted GitLab runner** registered for `boomstream-ai/boomstream-mcp`
79
+ so the publish job can reach the npm registry. ([BOO-41])
80
+ - README expanded with Available-tools table generator (`pnpm
81
+ build-readme-tools`), `claude_desktop_config.json` example, and end-to-end
82
+ smoke cycle for `media → ppv` flows. ([BOO-18])
83
+
84
+ ### Changed
85
+
86
+ - **pnpm pinned to 10.34.1** via `packageManager` in `package.json` to match
87
+ the Node 20 runtime used in CI and Docker. ([BOO-48])
88
+ - `.gitignore` now excludes `.npmrc` everywhere in the worktree to prevent
89
+ accidental token commits during local dev. ([BOO-22])
90
+ - Polished `transports/stdio.ts` help text, CI rules guard against fork
91
+ pipelines, and added `CODEOWNERS` for security-sensitive files. ([BOO-17])
92
+
93
+ ## [0.1.0] - 2026-05-29
94
+
95
+ ### Added
96
+
97
+ - **Initial stdio release.** Manual `npm publish @boomstream/mcp@0.1.0`
98
+ performed by the Release Engineer following the CSO publish recipe
99
+ (env-file-floor `.npmrc` via `NPM_CONFIG_USERCONFIG=$(mktemp)`,
100
+ `--access public`). ([BOO-16])
101
+ - **101 tools auto-generated** from the Boomstream API documentation corpus
102
+ (`hwdmedia.documents`, RU `language_id=1`) covering 17 sections: media,
103
+ live, ppv, conference, folder, playlist, stats, chat, screenshot,
104
+ subtitles, timecodes, webhooks, project, record-live, live-ipcamera,
105
+ player-api, general. Tool naming follows
106
+ `boomstream_<section>_<method>` snake_case convention. ([BOO-9])
107
+ - **MCP core (Slice 3).** `src/core/server.ts` implements `tools/list` and
108
+ `tools/call` handlers, `src/core/schema.ts` loads
109
+ `schemas/boomstream.json` once at boot, `src/core/api-client.ts` is the
110
+ fetch wrapper (`format=json`, `ver=1.2` default, exponential-backoff retry
111
+ on 5xx, 30 s timeout), `src/core/auth.ts` reads
112
+ `BOOMSTREAM_API_KEY` from env (Phase A). `src/tools/registry.ts` is the
113
+ single generic handler that dispatches every tool through one
114
+ zod-validated path. ([BOO-11])
115
+ - **stdio transport (Slice 4).** `src/transports/stdio.ts` is the
116
+ `boomstream-mcp` bin entry point, wired through
117
+ `StdioServerTransport`. The package ships as a public scoped npm package
118
+ with `bin: "dist/transports/stdio.js"`, a post-build shebang/chmod step,
119
+ and a CLI surface (`--help`, `--version`, `stdio` subcommand). ([BOO-12])
120
+
121
+ [Unreleased]: https://gitlab.boomstream.com/boomstream-ai/boomstream-mcp/-/compare/v0.2.1...HEAD
122
+ [0.2.1]: https://gitlab.boomstream.com/boomstream-ai/boomstream-mcp/-/compare/v0.2.0...v0.2.1
123
+ [0.2.0]: https://gitlab.boomstream.com/boomstream-ai/boomstream-mcp/-/compare/v0.1.2...v0.2.0
124
+ [0.1.2]: https://gitlab.boomstream.com/boomstream-ai/boomstream-mcp/-/compare/v0.1.1...v0.1.2
125
+ [0.1.1]: https://gitlab.boomstream.com/boomstream-ai/boomstream-mcp/-/compare/v0.1.0...v0.1.1
126
+ [0.1.0]: https://gitlab.boomstream.com/boomstream-ai/boomstream-mcp/-/tags/v0.1.0
127
+ [BOO-9]: https://gitlab.boomstream.com/boomstream-ai/boomstream-paperclip/-/issues
128
+ [BOO-11]: https://gitlab.boomstream.com/boomstream-ai/boomstream-paperclip/-/issues
129
+ [BOO-12]: https://gitlab.boomstream.com/boomstream-ai/boomstream-paperclip/-/issues
130
+ [BOO-16]: https://gitlab.boomstream.com/boomstream-ai/boomstream-paperclip/-/issues
131
+ [BOO-17]: https://gitlab.boomstream.com/boomstream-ai/boomstream-paperclip/-/issues
132
+ [BOO-18]: https://gitlab.boomstream.com/boomstream-ai/boomstream-paperclip/-/issues
133
+ [BOO-22]: https://gitlab.boomstream.com/boomstream-ai/boomstream-paperclip/-/issues
134
+ [BOO-23]: https://gitlab.boomstream.com/boomstream-ai/boomstream-paperclip/-/issues
135
+ [BOO-41]: https://gitlab.boomstream.com/boomstream-ai/boomstream-paperclip/-/issues
136
+ [BOO-48]: https://gitlab.boomstream.com/boomstream-ai/boomstream-paperclip/-/issues
137
+ [BOO-50]: https://gitlab.boomstream.com/boomstream-ai/boomstream-paperclip/-/issues
138
+ [BOO-52]: https://gitlab.boomstream.com/boomstream-ai/boomstream-paperclip/-/issues
139
+ [BOO-56]: https://gitlab.boomstream.com/boomstream-ai/boomstream-paperclip/-/issues
140
+ [BOO-64]: https://gitlab.boomstream.com/boomstream-ai/boomstream-paperclip/-/issues
141
+ [BOO-67]: https://gitlab.boomstream.com/boomstream-ai/boomstream-paperclip/-/issues
package/README.md CHANGED
@@ -2,29 +2,31 @@
2
2
 
3
3
  MCP server (Model Context Protocol) providing **Boomstream API as tools** for LLM agents: Claude Desktop, claude.ai, VS Code MCP extension, and any compatible client.
4
4
 
5
- > **v0.1.0** stdio transport is live. SSE (remote hosting) coming in Phase B; OAuth in Phase C.
5
+ > **Status:** stdio transport is live on npm (`@boomstream/mcp@latest`, currently `0.1.3`). SSE transport (remote hosting at `mcp.boomstream.com`) is the next stage; per-user OAuth comes after that. Release history → [CHANGELOG.md](CHANGELOG.md).
6
6
 
7
7
  ## What it does
8
8
 
9
9
  LLM agents call tools like `boomstream_media_info`, `boomstream_ppv_list_buyers`, `boomstream_live_create` — the server translates them to HTTP calls against `https://boomstream.com/api/`, parses the responses, and returns structured JSON. ~100 tools across 17 API sections: media, live, ppv, conference, folder, playlist, stats, chat, screenshot, subtitles, timecodes, webhooks, project, record-live, live-ipcamera, player-api, general.
10
10
 
11
11
  Transports:
12
- - **stdio** — for Claude Desktop (local child process). ✅ Available in v0.1.0.
13
- - **SSE** — for claude.ai web and remote clients (hosted at `mcp.boomstream.com`). Planned for Phase B.
12
+ - **stdio** — for Claude Desktop (local child process). Shipped.
13
+ - **SSE** — for claude.ai web and remote clients (hosted at `mcp.boomstream.com`). Planned.
14
14
 
15
15
  ## Quick start
16
16
 
17
17
  ```bash
18
- BOOMSTREAM_API_KEY=your-key npx -y @boomstream/mcp stdio
18
+ BOOMSTREAM_API_KEY=your-key npx -y @boomstream/mcp@latest stdio
19
19
  ```
20
20
 
21
21
  Or install globally:
22
22
 
23
23
  ```bash
24
- npm install -g @boomstream/mcp
24
+ npm install -g @boomstream/mcp@latest
25
25
  BOOMSTREAM_API_KEY=your-key boomstream-mcp
26
26
  ```
27
27
 
28
+ `@latest` always resolves to the newest published version. Pin a specific version (e.g. `@boomstream/mcp@0.1.3`) if you need reproducible installs.
29
+
28
30
  ## Available tools
29
31
 
30
32
  <!-- TOOLS:BEGIN -->
@@ -91,7 +93,7 @@ boomstream-mcp --help, -h Show help
91
93
 
92
94
  ## How tool schemas are generated
93
95
 
94
- JSONSchema for each tool is **not hand-written**. The source of truth is the Boomstream API documentation database (`hwdmedia.documents`). The script `scripts/build-schema.mjs` parses the markdown and produces `schemas/boomstream.json` covering all ~100 methods in a single run. The generated file is committed to the repository and shipped in the npm package.
96
+ JSONSchema for each tool is **not hand-written**. The source of truth is the Boomstream API documentation database. The script `scripts/build-schema.mjs` parses the markdown and produces `schemas/boomstream.json` covering all ~100 methods in a single run. The generated file is committed to the repository and shipped in the npm package.
95
97
 
96
98
  ## Development
97
99
 
@@ -108,7 +110,7 @@ pnpm test:smoke # end-to-end smoke cycle (requires BOOMSTREAM_TEST_API_
108
110
  Offline test runs use fixtures in `tests/fixtures/`. To pull a fresh schema from the database, run `pnpm build-schema:db` (requires the `mariadb-mcp` MCP server).
109
111
 
110
112
  To run the smoke cycle you need:
111
- - `BOOMSTREAM_TEST_API_KEY` — a sandbox project API key. Ask the project owner for a sandbox key, or check the team-shared key in the secrets store. *(Exact source pending security review.)*
113
+ - `BOOMSTREAM_TEST_API_KEY` — an API key from a sandbox Boomstream project (create one at https://boomstream.com/ and copy the key from project settings API). Use a **dedicated sandbox project**, not your production project — the smoke cycle creates and deletes test media. Never paste a real production key into your shell history or CI logs.
112
114
  - `BOOMSTREAM_TEST_MEDIA_CODE` — a known media code in that sandbox project.
113
115
 
114
116
  ## Troubleshooting
@@ -145,11 +147,31 @@ Verify your key in Boomstream project settings → API. Keys are project-scoped;
145
147
  BOOMSTREAM_API_KEY=your-key npx -y @boomstream/mcp stdio
146
148
  ```
147
149
 
150
+ ## Releases
151
+
152
+ Full release notes are in [CHANGELOG.md](CHANGELOG.md). Latest highlights:
153
+
154
+ - **0.1.3** — api-client switched to `POST + Content-Type: application/json`
155
+ for all tools; `apikey` now sent in the JSON body (never in the URL).
156
+ Array params sent as real JSON arrays. Closes BOO-52/56 root cause.
157
+ - **0.1.2** — security fix: `apikey` is no longer echoed back through
158
+ `RequestURI` on error responses; tool-result content is additionally
159
+ scrubbed of `apikey`/`token`/`signature` query parameters.
160
+ - **0.1.1** — CI auto-publish on `v*` tags, pnpm pinned to 10.34.1.
161
+ - **0.1.0** — initial stdio release, 101 tools auto-generated from the
162
+ Boomstream API docs corpus.
163
+
164
+ GitLab CI publishes to npm automatically when a maintainer pushes a tag of
165
+ the form `v\d+.\d+.\d+(-…)?` (protected tag, Maintainer+ only). The job
166
+ checks that `package.json` version matches the tag, runs `pnpm build` +
167
+ `pnpm test`, and then `pnpm publish --access public` using a protected
168
+ `NPM_TOKEN`. See `.gitlab-ci.yml`.
169
+
148
170
  ## Roadmap
149
171
 
150
- **Phase B — SSE transport** (`mcp.boomstream.com`): hosted remote server compatible with claude.ai and other SSE-capable MCP clients. No local install required; connect by URL. Coming soon.
172
+ **Stage 2 — SSE transport** (`mcp.boomstream.com`): hosted remote server compatible with claude.ai and other SSE-capable MCP clients. No local install required; connect by URL.
151
173
 
152
- **Phase C — OAuth**: per-user authentication so each Boomstream account holder can connect with their own credentials instead of a shared environment API key. Coming soon.
174
+ **Stage 3 — OAuth**: per-user authentication so each Boomstream account holder can connect with their own credentials instead of a shared environment API key. Depends on Stage 2.
153
175
 
154
176
  ## License
155
177
 
@@ -2,4 +2,5 @@ import type { ToolSchema } from './schema.js';
2
2
  export declare class ApiError extends Error {
3
3
  constructor(message: string);
4
4
  }
5
+ export declare function redactSecrets(value: unknown): unknown;
5
6
  export declare function execute(schema: ToolSchema, args: Record<string, unknown>, apikey: string): Promise<unknown>;
@@ -10,6 +10,29 @@ const BACKOFF_MS = [100, 400, 1600];
10
10
  const MAX_ATTEMPTS = 3;
11
11
  const TIMEOUT_MS = 30_000;
12
12
  const xmlParser = new XMLParser({ ignoreAttributes: false });
13
+ // Patterns covering the query-param secrets the upstream API echoes back in RequestURI.
14
+ const SECRET_PARAMS_RE = /\b(apikey|token|signature)=([^&\s"'<>]+)/gi;
15
+ const AUTH_BEARER_RE = /\bAuthorization:\s*Bearer\s+\S+/gi;
16
+ export function redactSecrets(value) {
17
+ if (typeof value === 'string') {
18
+ return value
19
+ .replace(SECRET_PARAMS_RE, (_, param) => `${param}=REDACTED`)
20
+ .replace(AUTH_BEARER_RE, 'Authorization: Bearer REDACTED');
21
+ }
22
+ if (Array.isArray(value)) {
23
+ return value.map(redactSecrets);
24
+ }
25
+ if (value !== null && typeof value === 'object') {
26
+ const out = {};
27
+ for (const [k, v] of Object.entries(value)) {
28
+ if (k === 'RequestURI')
29
+ continue; // upstream debug echo — useless to LLM, drop outright
30
+ out[k] = redactSecrets(v);
31
+ }
32
+ return out;
33
+ }
34
+ return value;
35
+ }
13
36
  async function parseResponse(response) {
14
37
  const contentType = response.headers.get('content-type') ?? '';
15
38
  const text = await response.text();
@@ -29,10 +52,10 @@ async function parseResponse(response) {
29
52
  typeof parsed === 'object' &&
30
53
  'Status' in parsed &&
31
54
  parsed.Status === 'Failed') {
32
- const message = String(parsed.Message ?? 'API request failed');
33
- throw new ApiError(message);
55
+ const rawMessage = String(parsed.Message ?? 'API request failed');
56
+ throw new ApiError(redactSecrets(rawMessage));
34
57
  }
35
- return parsed;
58
+ return redactSecrets(parsed);
36
59
  }
37
60
  function sleep(ms) {
38
61
  return new Promise((resolve) => setTimeout(resolve, ms));
@@ -40,7 +63,7 @@ function sleep(ms) {
40
63
  export async function execute(schema, args, apikey) {
41
64
  const { _ver, ...restArgs } = args;
42
65
  const ver = typeof _ver === 'string' ? _ver : '1.2';
43
- const baseUrl = `https://boomstream.com${schema.endpoint}`;
66
+ const url = `https://boomstream.com${schema.endpoint}`;
44
67
  let lastError;
45
68
  for (let attempt = 0; attempt < MAX_ATTEMPTS; attempt++) {
46
69
  if (attempt > 0) {
@@ -48,34 +71,12 @@ export async function execute(schema, args, apikey) {
48
71
  }
49
72
  try {
50
73
  const signal = AbortSignal.timeout(TIMEOUT_MS);
51
- let response;
52
- if (schema.httpMethod === 'GET') {
53
- const params = new URLSearchParams();
54
- params.set('format', 'json');
55
- params.set('ver', ver);
56
- params.set('apikey', apikey);
57
- for (const [key, value] of Object.entries(restArgs)) {
58
- if (value === undefined || value === null)
59
- continue;
60
- if (Array.isArray(value)) {
61
- for (const item of value)
62
- params.append(key, String(item));
63
- }
64
- else {
65
- params.set(key, String(value));
66
- }
67
- }
68
- response = await fetch(`${baseUrl}?${params.toString()}`, { signal });
69
- }
70
- else {
71
- const body = { ...restArgs, format: 'json', ver, apikey };
72
- response = await fetch(baseUrl, {
73
- method: 'POST',
74
- headers: { 'Content-Type': 'application/json' },
75
- body: JSON.stringify(body),
76
- signal,
77
- });
78
- }
74
+ const response = await fetch(url, {
75
+ method: 'POST',
76
+ headers: { 'Content-Type': 'application/json' },
77
+ body: JSON.stringify({ apikey, ver, ...restArgs }),
78
+ signal,
79
+ });
79
80
  if (response.status >= 500) {
80
81
  logger.warn({ status: response.status, attempt, tool: schema.name }, 'server error, will retry');
81
82
  lastError = new ApiError(`Server error: HTTP ${response.status}`);
@@ -1 +1 @@
1
- {"version":3,"file":"api-client.js","sourceRoot":"","sources":["../../src/core/api-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"api-client.js","sourceRoot":"","sources":["../../src/core/api-client.ts"],"names":[],"mappings":"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"}
@@ -7,7 +7,8 @@ export interface ToolSchema {
7
7
  required?: string[];
8
8
  };
9
9
  endpoint: string;
10
- httpMethod: 'GET' | 'POST';
10
+ /** @deprecated api-client always uses POST+JSON; field retained for schema compat */
11
+ httpMethod?: 'GET' | 'POST';
11
12
  versions: string[];
12
13
  }
13
14
  export interface JsonSchemaProperty {
@@ -1 +1 @@
1
- {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/core/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AAyBpC,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1D,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,EAAE,+BAA+B,CAAC,CAAC;AAErE,IAAI,MAAM,GAAwB,IAAI,CAAC;AAEvC,MAAM,UAAU,WAAW;IACzB,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC;IAC1B,MAAM,GAAG,GAAG,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IAC9C,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAiB,CAAC;IACzC,OAAO,MAAM,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/core/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AA0BpC,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1D,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,EAAE,+BAA+B,CAAC,CAAC;AAErE,IAAI,MAAM,GAAwB,IAAI,CAAC;AAEvC,MAAM,UAAU,WAAW;IACzB,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC;IAC1B,MAAM,GAAG,GAAG,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IAC9C,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAiB,CAAC;IACzC,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -10,7 +10,8 @@ function getVersion() {
10
10
  const pkg = JSON.parse(readFileSync(resolve(__dirname, '../../package.json'), 'utf8'));
11
11
  return pkg.version;
12
12
  }
13
- catch {
13
+ catch (err) {
14
+ process.stderr.write(`warn: could not read package.json version: ${String(err)}\n`);
14
15
  return 'unknown';
15
16
  }
16
17
  }
@@ -38,15 +39,22 @@ Claude Desktop config:
38
39
 
39
40
  Environment:
40
41
  BOOMSTREAM_API_KEY Your Boomstream API key (required)`.trim();
41
- const [cmd] = process.argv.slice(2);
42
- if (cmd === '--version' || cmd === '-v') {
43
- process.stdout.write(getVersion() + '\n');
42
+ const argv = process.argv.slice(2);
43
+ // Scan all args so flags work regardless of position (e.g. `stdio --help`)
44
+ if (argv.includes('--help') || argv.includes('-h')) {
45
+ process.stdout.write(HELP + '\n');
44
46
  process.exit(0);
45
47
  }
46
- if (cmd === '--help' || cmd === '-h') {
47
- process.stdout.write(HELP + '\n');
48
+ if (argv.includes('--version') || argv.includes('-v')) {
49
+ process.stdout.write(getVersion() + '\n');
48
50
  process.exit(0);
49
51
  }
52
+ const [cmd, ...rest] = argv;
53
+ if (rest.length > 0) {
54
+ process.stderr.write(`Unknown arguments: ${rest.join(' ')}\n`);
55
+ process.stderr.write('Run with --help for usage.\n');
56
+ process.exit(1);
57
+ }
50
58
  if (cmd !== undefined && cmd !== 'stdio') {
51
59
  process.stderr.write(`Unknown command: ${cmd}\n`);
52
60
  process.stderr.write('Run with --help for usage.\n');
@@ -55,10 +63,16 @@ if (cmd !== undefined && cmd !== 'stdio') {
55
63
  if (!process.env.BOOMSTREAM_API_KEY) {
56
64
  process.stderr.write('Error: BOOMSTREAM_API_KEY environment variable is not set.\n' +
57
65
  'Set it to your Boomstream API key and retry.\n' +
58
- 'Example: BOOMSTREAM_API_KEY=your-key npx @boomstream/mcp stdio\n');
66
+ 'Example: BOOMSTREAM_API_KEY=your-key npx -y @boomstream/mcp stdio\n');
59
67
  process.exit(1);
60
68
  }
61
69
  const server = createServer();
62
70
  const transport = new StdioServerTransport();
63
- await server.connect(transport);
71
+ try {
72
+ await server.connect(transport);
73
+ }
74
+ catch (err) {
75
+ process.stderr.write(`Error: failed to start MCP server: ${String(err)}\n`);
76
+ process.exit(1);
77
+ }
64
78
  //# sourceMappingURL=stdio.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"stdio.js","sourceRoot":"","sources":["../../src/transports/stdio.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAE7C,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAE1D,SAAS,UAAU;IACjB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CACpB,YAAY,CAAC,OAAO,CAAC,SAAS,EAAE,oBAAoB,CAAC,EAAE,MAAM,CAAC,CACxC,CAAC;QACzB,OAAO,GAAG,CAAC,OAAO,CAAC;IACrB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,MAAM,IAAI,GAAG;;;;;;;;;;;;;;;;;;;;;;;0DAuB6C,CAAC,IAAI,EAAE,CAAC;AAElE,MAAM,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAEpC,IAAI,GAAG,KAAK,WAAW,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;IACxC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,CAAC;IAC1C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,IAAI,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;IACrC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;IAClC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;IACzC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,oBAAoB,GAAG,IAAI,CAAC,CAAC;IAClD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;IACrD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,CAAC;IACpC,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,8DAA8D;QAC5D,gDAAgD;QAChD,kEAAkE,CACrE,CAAC;IACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,MAAM,MAAM,GAAG,YAAY,EAAE,CAAC;AAC9B,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;AAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC"}
1
+ {"version":3,"file":"stdio.js","sourceRoot":"","sources":["../../src/transports/stdio.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@boomstream/mcp",
3
- "version": "0.1.1",
3
+ "version": "0.2.1",
4
4
  "description": "MCP server providing Boomstream API as tools for LLM agents",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -19,6 +19,7 @@
19
19
  "dist",
20
20
  "schemas",
21
21
  "README.md",
22
+ "CHANGELOG.md",
22
23
  "LICENSE"
23
24
  ],
24
25
  "bin": {
@@ -48,7 +49,6 @@
48
49
  "build-schema:db": "node scripts/build-schema.mjs --from-db",
49
50
  "build-readme-tools": "node scripts/build-readme-tools.mjs",
50
51
  "dev:stdio": "tsx src/transports/stdio.ts",
51
- "dev:sse": "tsx src/transports/sse.ts",
52
52
  "test": "vitest run",
53
53
  "test:watch": "vitest",
54
54
  "test:smoke": "vitest run --dir tests/smoke",
@@ -40,7 +40,6 @@
40
40
  ]
41
41
  },
42
42
  "endpoint": "/api/chat/init",
43
- "httpMethod": "GET",
44
43
  "versions": [
45
44
  "1.0",
46
45
  "1.1",
@@ -86,7 +85,6 @@
86
85
  ]
87
86
  },
88
87
  "endpoint": "/api/chat/info",
89
- "httpMethod": "GET",
90
88
  "versions": [
91
89
  "1.0",
92
90
  "1.1",
@@ -124,7 +122,6 @@
124
122
  ]
125
123
  },
126
124
  "endpoint": "/api/chat/createMessage",
127
- "httpMethod": "GET",
128
125
  "versions": [
129
126
  "1.0",
130
127
  "1.1",
@@ -162,7 +159,6 @@
162
159
  ]
163
160
  },
164
161
  "endpoint": "/api/chat/updateMessage",
165
- "httpMethod": "GET",
166
162
  "versions": [
167
163
  "1.0",
168
164
  "1.1",
@@ -195,7 +191,6 @@
195
191
  ]
196
192
  },
197
193
  "endpoint": "/api/chat/deleteMessage",
198
- "httpMethod": "GET",
199
194
  "versions": [
200
195
  "1.0",
201
196
  "1.1",
@@ -223,7 +218,6 @@
223
218
  ]
224
219
  },
225
220
  "endpoint": "/api/conference/info",
226
- "httpMethod": "GET",
227
221
  "versions": [
228
222
  "1.0",
229
223
  "1.1",
@@ -244,7 +238,6 @@
244
238
  }
245
239
  },
246
240
  "endpoint": "/api/conference/list",
247
- "httpMethod": "GET",
248
241
  "versions": [
249
242
  "1.0",
250
243
  "1.1",
@@ -284,7 +277,6 @@
284
277
  ]
285
278
  },
286
279
  "endpoint": "/api/conference/update",
287
- "httpMethod": "GET",
288
280
  "versions": [
289
281
  "1.0",
290
282
  "1.1",
@@ -337,7 +329,6 @@
337
329
  ]
338
330
  },
339
331
  "endpoint": "/api/conference/invite",
340
- "httpMethod": "GET",
341
332
  "versions": [
342
333
  "1.0",
343
334
  "1.1",
@@ -365,7 +356,6 @@
365
356
  ]
366
357
  },
367
358
  "endpoint": "/api/conference/client/list",
368
- "httpMethod": "GET",
369
359
  "versions": [
370
360
  "1.0",
371
361
  "1.1",
@@ -393,7 +383,6 @@
393
383
  ]
394
384
  },
395
385
  "endpoint": "/api/conference/client/info",
396
- "httpMethod": "GET",
397
386
  "versions": [
398
387
  "1.0",
399
388
  "1.1",
@@ -433,7 +422,6 @@
433
422
  ]
434
423
  },
435
424
  "endpoint": "/api/conference/client/update",
436
- "httpMethod": "GET",
437
425
  "versions": [
438
426
  "1.0",
439
427
  "1.1",
@@ -461,7 +449,6 @@
461
449
  ]
462
450
  },
463
451
  "endpoint": "/api/conference/client/delete",
464
- "httpMethod": "GET",
465
452
  "versions": [
466
453
  "1.0",
467
454
  "1.1",
@@ -489,7 +476,6 @@
489
476
  ]
490
477
  },
491
478
  "endpoint": "/api/conference/delete",
492
- "httpMethod": "GET",
493
479
  "versions": [
494
480
  "1.0",
495
481
  "1.1",
@@ -533,7 +519,6 @@
533
519
  ]
534
520
  },
535
521
  "endpoint": "/api/media/folder",
536
- "httpMethod": "GET",
537
522
  "versions": [
538
523
  "1.0",
539
524
  "1.1",
@@ -565,7 +550,6 @@
565
550
  ]
566
551
  },
567
552
  "endpoint": "/api/media/folder/create",
568
- "httpMethod": "GET",
569
553
  "versions": [
570
554
  "1.0",
571
555
  "1.1",
@@ -598,7 +582,6 @@
598
582
  ]
599
583
  },
600
584
  "endpoint": "/api/media/folder/update",
601
- "httpMethod": "GET",
602
585
  "versions": [
603
586
  "1.0",
604
587
  "1.1",
@@ -626,7 +609,6 @@
626
609
  ]
627
610
  },
628
611
  "endpoint": "/api/media/folder/delete",
629
- "httpMethod": "GET",
630
612
  "versions": [
631
613
  "1.0",
632
614
  "1.1",
@@ -670,7 +652,6 @@
670
652
  ]
671
653
  },
672
654
  "endpoint": "/api/live/folder",
673
- "httpMethod": "GET",
674
655
  "versions": [
675
656
  "1.0",
676
657
  "1.1",
@@ -702,7 +683,6 @@
702
683
  ]
703
684
  },
704
685
  "endpoint": "/api/live/folder/create",
705
- "httpMethod": "GET",
706
686
  "versions": [
707
687
  "1.0",
708
688
  "1.1",
@@ -735,7 +715,6 @@
735
715
  ]
736
716
  },
737
717
  "endpoint": "/api/live/folder/update",
738
- "httpMethod": "GET",
739
718
  "versions": [
740
719
  "1.0",
741
720
  "1.1",
@@ -763,7 +742,6 @@
763
742
  ]
764
743
  },
765
744
  "endpoint": "/api/live/folder/delete",
766
- "httpMethod": "GET",
767
745
  "versions": [
768
746
  "1.0",
769
747
  "1.1",
@@ -807,7 +785,6 @@
807
785
  ]
808
786
  },
809
787
  "endpoint": "/api/materials/folder",
810
- "httpMethod": "GET",
811
788
  "versions": [
812
789
  "1.0",
813
790
  "1.1",
@@ -839,7 +816,6 @@
839
816
  ]
840
817
  },
841
818
  "endpoint": "/api/materials/folder/create",
842
- "httpMethod": "GET",
843
819
  "versions": [
844
820
  "1.0",
845
821
  "1.1",
@@ -872,7 +848,6 @@
872
848
  ]
873
849
  },
874
850
  "endpoint": "/api/materials/folder/update",
875
- "httpMethod": "GET",
876
851
  "versions": [
877
852
  "1.0",
878
853
  "1.1",
@@ -900,7 +875,6 @@
900
875
  ]
901
876
  },
902
877
  "endpoint": "/api/materials/folder/delete",
903
- "httpMethod": "GET",
904
878
  "versions": [
905
879
  "1.0",
906
880
  "1.1",
@@ -921,7 +895,6 @@
921
895
  }
922
896
  },
923
897
  "endpoint": "/api/info",
924
- "httpMethod": "GET",
925
898
  "versions": [
926
899
  "1.0",
927
900
  "1.1",
@@ -949,7 +922,6 @@
949
922
  ]
950
923
  },
951
924
  "endpoint": "/api/live/info",
952
- "httpMethod": "GET",
953
925
  "versions": [
954
926
  "1.0",
955
927
  "1.1",
@@ -970,7 +942,6 @@
970
942
  }
971
943
  },
972
944
  "endpoint": "/api/live/list",
973
- "httpMethod": "GET",
974
945
  "versions": [
975
946
  "1.0",
976
947
  "1.1",
@@ -1047,7 +1018,6 @@
1047
1018
  ]
1048
1019
  },
1049
1020
  "endpoint": "/api/live/camera_create",
1050
- "httpMethod": "GET",
1051
1021
  "versions": [
1052
1022
  "1.0",
1053
1023
  "1.1",
@@ -1115,7 +1085,6 @@
1115
1085
  ]
1116
1086
  },
1117
1087
  "endpoint": "/api/live/camera_update",
1118
- "httpMethod": "GET",
1119
1088
  "versions": [
1120
1089
  "1.0",
1121
1090
  "1.1",
@@ -1148,7 +1117,6 @@
1148
1117
  ]
1149
1118
  },
1150
1119
  "endpoint": "/api/live/record",
1151
- "httpMethod": "GET",
1152
1120
  "versions": [
1153
1121
  "1.0",
1154
1122
  "1.1",
@@ -1181,7 +1149,6 @@
1181
1149
  ]
1182
1150
  },
1183
1151
  "endpoint": "/api/live/camera_toggle",
1184
- "httpMethod": "GET",
1185
1152
  "versions": [
1186
1153
  "1.0",
1187
1154
  "1.1",
@@ -1209,7 +1176,6 @@
1209
1176
  ]
1210
1177
  },
1211
1178
  "endpoint": "/api/live/delete",
1212
- "httpMethod": "GET",
1213
1179
  "versions": [
1214
1180
  "1.0",
1215
1181
  "1.1",
@@ -1237,7 +1203,6 @@
1237
1203
  ]
1238
1204
  },
1239
1205
  "endpoint": "/api/live/info",
1240
- "httpMethod": "GET",
1241
1206
  "versions": [
1242
1207
  "1.0",
1243
1208
  "1.1",
@@ -1258,7 +1223,6 @@
1258
1223
  }
1259
1224
  },
1260
1225
  "endpoint": "/api/live/list",
1261
- "httpMethod": "GET",
1262
1226
  "versions": [
1263
1227
  "1.0",
1264
1228
  "1.1",
@@ -1327,7 +1291,6 @@
1327
1291
  ]
1328
1292
  },
1329
1293
  "endpoint": "/api/live/create",
1330
- "httpMethod": "GET",
1331
1294
  "versions": [
1332
1295
  "1.0",
1333
1296
  "1.1",
@@ -1391,7 +1354,6 @@
1391
1354
  ]
1392
1355
  },
1393
1356
  "endpoint": "/api/live/update",
1394
- "httpMethod": "GET",
1395
1357
  "versions": [
1396
1358
  "1.0",
1397
1359
  "1.1",
@@ -1424,7 +1386,6 @@
1424
1386
  ]
1425
1387
  },
1426
1388
  "endpoint": "/api/live/record",
1427
- "httpMethod": "GET",
1428
1389
  "versions": [
1429
1390
  "1.0",
1430
1391
  "1.1",
@@ -1452,7 +1413,6 @@
1452
1413
  ]
1453
1414
  },
1454
1415
  "endpoint": "/api/live/delete",
1455
- "httpMethod": "GET",
1456
1416
  "versions": [
1457
1417
  "1.0",
1458
1418
  "1.1",
@@ -1507,7 +1467,6 @@
1507
1467
  ]
1508
1468
  },
1509
1469
  "endpoint": "/api/live/restreaming",
1510
- "httpMethod": "GET",
1511
1470
  "versions": [
1512
1471
  "1.0",
1513
1472
  "1.1",
@@ -1538,7 +1497,6 @@
1538
1497
  ]
1539
1498
  },
1540
1499
  "endpoint": "/api/media/bulkinfo",
1541
- "httpMethod": "GET",
1542
1500
  "versions": [
1543
1501
  "1.0",
1544
1502
  "1.1",
@@ -1566,7 +1524,6 @@
1566
1524
  ]
1567
1525
  },
1568
1526
  "endpoint": "/api/media/info",
1569
- "httpMethod": "GET",
1570
1527
  "versions": [
1571
1528
  "1.0",
1572
1529
  "1.1",
@@ -1603,7 +1560,6 @@
1603
1560
  ]
1604
1561
  },
1605
1562
  "endpoint": "/api/media/create",
1606
- "httpMethod": "GET",
1607
1563
  "versions": [
1608
1564
  "1.0",
1609
1565
  "1.1",
@@ -1639,7 +1595,6 @@
1639
1595
  ]
1640
1596
  },
1641
1597
  "endpoint": "/api/media/update",
1642
- "httpMethod": "GET",
1643
1598
  "versions": [
1644
1599
  "1.0",
1645
1600
  "1.1",
@@ -1667,7 +1622,6 @@
1667
1622
  ]
1668
1623
  },
1669
1624
  "endpoint": "/api/media/delete",
1670
- "httpMethod": "GET",
1671
1625
  "versions": [
1672
1626
  "1.0",
1673
1627
  "1.1",
@@ -1699,7 +1653,6 @@
1699
1653
  ]
1700
1654
  },
1701
1655
  "endpoint": "/api/playlist/create",
1702
- "httpMethod": "GET",
1703
1656
  "versions": [
1704
1657
  "1.0",
1705
1658
  "1.1",
@@ -1735,7 +1688,6 @@
1735
1688
  ]
1736
1689
  },
1737
1690
  "endpoint": "/api/playlist/update",
1738
- "httpMethod": "GET",
1739
1691
  "versions": [
1740
1692
  "1.0",
1741
1693
  "1.1",
@@ -1763,7 +1715,6 @@
1763
1715
  ]
1764
1716
  },
1765
1717
  "endpoint": "/api/playlist/delete",
1766
- "httpMethod": "GET",
1767
1718
  "versions": [
1768
1719
  "1.0",
1769
1720
  "1.1",
@@ -1784,7 +1735,6 @@
1784
1735
  }
1785
1736
  },
1786
1737
  "endpoint": "/api/playlist/list",
1787
- "httpMethod": "GET",
1788
1738
  "versions": [
1789
1739
  "1.0",
1790
1740
  "1.1",
@@ -1817,7 +1767,6 @@
1817
1767
  ]
1818
1768
  },
1819
1769
  "endpoint": "/api/playlist/addmedia",
1820
- "httpMethod": "GET",
1821
1770
  "versions": [
1822
1771
  "1.0",
1823
1772
  "1.1",
@@ -1850,7 +1799,6 @@
1850
1799
  ]
1851
1800
  },
1852
1801
  "endpoint": "/api/playlist/deletemedia",
1853
- "httpMethod": "GET",
1854
1802
  "versions": [
1855
1803
  "1.0",
1856
1804
  "1.1",
@@ -1878,7 +1826,6 @@
1878
1826
  ]
1879
1827
  },
1880
1828
  "endpoint": "/api/playlist/listmedia",
1881
- "httpMethod": "GET",
1882
1829
  "versions": [
1883
1830
  "1.0",
1884
1831
  "1.1",
@@ -2015,7 +1962,6 @@
2015
1962
  ]
2016
1963
  },
2017
1964
  "endpoint": "/api/ppv/create",
2018
- "httpMethod": "GET",
2019
1965
  "versions": [
2020
1966
  "1.0",
2021
1967
  "1.1",
@@ -2137,7 +2083,6 @@
2137
2083
  ]
2138
2084
  },
2139
2085
  "endpoint": "/api/ppv/update",
2140
- "httpMethod": "GET",
2141
2086
  "versions": [
2142
2087
  "1.0",
2143
2088
  "1.1",
@@ -2165,7 +2110,6 @@
2165
2110
  ]
2166
2111
  },
2167
2112
  "endpoint": "/api/ppv/delete",
2168
- "httpMethod": "GET",
2169
2113
  "versions": [
2170
2114
  "1.0",
2171
2115
  "1.1",
@@ -2186,7 +2130,6 @@
2186
2130
  }
2187
2131
  },
2188
2132
  "endpoint": "/api/ppv/list",
2189
- "httpMethod": "GET",
2190
2133
  "versions": [
2191
2134
  "1.0",
2192
2135
  "1.1",
@@ -2219,7 +2162,6 @@
2219
2162
  ]
2220
2163
  },
2221
2164
  "endpoint": "/api/ppv/addmedia",
2222
- "httpMethod": "GET",
2223
2165
  "versions": [
2224
2166
  "1.0",
2225
2167
  "1.1",
@@ -2252,7 +2194,6 @@
2252
2194
  ]
2253
2195
  },
2254
2196
  "endpoint": "/api/ppv/deletemedia",
2255
- "httpMethod": "GET",
2256
2197
  "versions": [
2257
2198
  "1.0",
2258
2199
  "1.1",
@@ -2288,7 +2229,6 @@
2288
2229
  ]
2289
2230
  },
2290
2231
  "endpoint": "/api/ppv/listmedia",
2291
- "httpMethod": "GET",
2292
2232
  "versions": [
2293
2233
  "1.0",
2294
2234
  "1.1",
@@ -2360,7 +2300,6 @@
2360
2300
  ]
2361
2301
  },
2362
2302
  "endpoint": "/api/ppv/addbuyer",
2363
- "httpMethod": "GET",
2364
2303
  "versions": [
2365
2304
  "1.0",
2366
2305
  "1.1",
@@ -2411,7 +2350,6 @@
2411
2350
  ]
2412
2351
  },
2413
2352
  "endpoint": "/api/ppv/updatebuyer",
2414
- "httpMethod": "GET",
2415
2353
  "versions": [
2416
2354
  "1.0",
2417
2355
  "1.1",
@@ -2444,7 +2382,6 @@
2444
2382
  ]
2445
2383
  },
2446
2384
  "endpoint": "/api/ppv/deletebuyer",
2447
- "httpMethod": "GET",
2448
2385
  "versions": [
2449
2386
  "1.0",
2450
2387
  "1.1",
@@ -2481,7 +2418,6 @@
2481
2418
  ]
2482
2419
  },
2483
2420
  "endpoint": "/api/ppv/listbuyers",
2484
- "httpMethod": "GET",
2485
2421
  "versions": [
2486
2422
  "1.0",
2487
2423
  "1.1",
@@ -2502,7 +2438,6 @@
2502
2438
  }
2503
2439
  },
2504
2440
  "endpoint": "/api/ppv/contacts",
2505
- "httpMethod": "GET",
2506
2441
  "versions": [
2507
2442
  "1.0",
2508
2443
  "1.1",
@@ -2548,7 +2483,6 @@
2548
2483
  ]
2549
2484
  },
2550
2485
  "endpoint": "/api/ppv/updatecontacts",
2551
- "httpMethod": "GET",
2552
2486
  "versions": [
2553
2487
  "1.0",
2554
2488
  "1.1",
@@ -2581,7 +2515,6 @@
2581
2515
  ]
2582
2516
  },
2583
2517
  "endpoint": "/api/app/create",
2584
- "httpMethod": "GET",
2585
2518
  "versions": [
2586
2519
  "1.0",
2587
2520
  "1.1",
@@ -2609,7 +2542,6 @@
2609
2542
  ]
2610
2543
  },
2611
2544
  "endpoint": "/api/app/info",
2612
- "httpMethod": "GET",
2613
2545
  "versions": [
2614
2546
  "1.0",
2615
2547
  "1.1",
@@ -2637,7 +2569,6 @@
2637
2569
  ]
2638
2570
  },
2639
2571
  "endpoint": "/api/app/list",
2640
- "httpMethod": "GET",
2641
2572
  "versions": [
2642
2573
  "1.0",
2643
2574
  "1.1",
@@ -2670,7 +2601,6 @@
2670
2601
  ]
2671
2602
  },
2672
2603
  "endpoint": "/api/app/update",
2673
- "httpMethod": "GET",
2674
2604
  "versions": [
2675
2605
  "1.0",
2676
2606
  "1.1",
@@ -2703,7 +2633,6 @@
2703
2633
  ]
2704
2634
  },
2705
2635
  "endpoint": "/api/app/delete",
2706
- "httpMethod": "GET",
2707
2636
  "versions": [
2708
2637
  "1.0",
2709
2638
  "1.1",
@@ -2731,7 +2660,6 @@
2731
2660
  ]
2732
2661
  },
2733
2662
  "endpoint": "/api/live/info",
2734
- "httpMethod": "GET",
2735
2663
  "versions": [
2736
2664
  "1.0",
2737
2665
  "1.1",
@@ -2752,7 +2680,6 @@
2752
2680
  }
2753
2681
  },
2754
2682
  "endpoint": "/api/live/list",
2755
- "httpMethod": "GET",
2756
2683
  "versions": [
2757
2684
  "1.0",
2758
2685
  "1.1",
@@ -2800,7 +2727,6 @@
2800
2727
  ]
2801
2728
  },
2802
2729
  "endpoint": "/api/live/createRecordLive",
2803
- "httpMethod": "GET",
2804
2730
  "versions": [
2805
2731
  "1.0",
2806
2732
  "1.1",
@@ -2852,7 +2778,6 @@
2852
2778
  ]
2853
2779
  },
2854
2780
  "endpoint": "/api/live/update",
2855
- "httpMethod": "GET",
2856
2781
  "versions": [
2857
2782
  "1.0",
2858
2783
  "1.1",
@@ -2897,7 +2822,6 @@
2897
2822
  ]
2898
2823
  },
2899
2824
  "endpoint": "/api/live/upcomingLive",
2900
- "httpMethod": "GET",
2901
2825
  "versions": [
2902
2826
  "1.0",
2903
2827
  "1.1",
@@ -2930,7 +2854,6 @@
2930
2854
  ]
2931
2855
  },
2932
2856
  "endpoint": "/api/live/startUpcomingLive",
2933
- "httpMethod": "GET",
2934
2857
  "versions": [
2935
2858
  "1.0",
2936
2859
  "1.1",
@@ -2958,7 +2881,6 @@
2958
2881
  ]
2959
2882
  },
2960
2883
  "endpoint": "/api/live/stopUpcomingLive",
2961
- "httpMethod": "GET",
2962
2884
  "versions": [
2963
2885
  "1.0",
2964
2886
  "1.1",
@@ -2991,7 +2913,6 @@
2991
2913
  ]
2992
2914
  },
2993
2915
  "endpoint": "/api/live/removeUpcomingLive",
2994
- "httpMethod": "GET",
2995
2916
  "versions": [
2996
2917
  "1.0",
2997
2918
  "1.1",
@@ -3019,7 +2940,6 @@
3019
2940
  ]
3020
2941
  },
3021
2942
  "endpoint": "/api/live/delete",
3022
- "httpMethod": "GET",
3023
2943
  "versions": [
3024
2944
  "1.0",
3025
2945
  "1.1",
@@ -3047,7 +2967,6 @@
3047
2967
  ]
3048
2968
  },
3049
2969
  "endpoint": "/api/screenshot/info",
3050
- "httpMethod": "GET",
3051
2970
  "versions": [
3052
2971
  "1.0",
3053
2972
  "1.1",
@@ -3088,7 +3007,6 @@
3088
3007
  ]
3089
3008
  },
3090
3009
  "endpoint": "/api/screenshot/create",
3091
- "httpMethod": "GET",
3092
3010
  "versions": [
3093
3011
  "1.0",
3094
3012
  "1.1",
@@ -3133,7 +3051,6 @@
3133
3051
  ]
3134
3052
  },
3135
3053
  "endpoint": "/api/screenshot/update",
3136
- "httpMethod": "GET",
3137
3054
  "versions": [
3138
3055
  "1.0",
3139
3056
  "1.1",
@@ -3166,7 +3083,6 @@
3166
3083
  ]
3167
3084
  },
3168
3085
  "endpoint": "/api/screenshot/delete",
3169
- "httpMethod": "GET",
3170
3086
  "versions": [
3171
3087
  "1.0",
3172
3088
  "1.1",
@@ -3225,7 +3141,6 @@
3225
3141
  }
3226
3142
  },
3227
3143
  "endpoint": "/api/stats",
3228
- "httpMethod": "GET",
3229
3144
  "versions": [
3230
3145
  "1.0",
3231
3146
  "1.1",
@@ -3283,7 +3198,6 @@
3283
3198
  ]
3284
3199
  },
3285
3200
  "endpoint": "/api/stats",
3286
- "httpMethod": "GET",
3287
3201
  "versions": [
3288
3202
  "1.0",
3289
3203
  "1.1",
@@ -3338,7 +3252,6 @@
3338
3252
  ]
3339
3253
  },
3340
3254
  "endpoint": "/api/ppv/sessions",
3341
- "httpMethod": "GET",
3342
3255
  "versions": [
3343
3256
  "1.0",
3344
3257
  "1.1",
@@ -3371,7 +3284,6 @@
3371
3284
  ]
3372
3285
  },
3373
3286
  "endpoint": "/api/subtitles/enable",
3374
- "httpMethod": "GET",
3375
3287
  "versions": [
3376
3288
  "1.0",
3377
3289
  "1.1",
@@ -3399,7 +3311,6 @@
3399
3311
  ]
3400
3312
  },
3401
3313
  "endpoint": "/api/subtitles/info",
3402
- "httpMethod": "GET",
3403
3314
  "versions": [
3404
3315
  "1.0",
3405
3316
  "1.1",
@@ -3437,7 +3348,6 @@
3437
3348
  ]
3438
3349
  },
3439
3350
  "endpoint": "/api/subtitles/enabledefault",
3440
- "httpMethod": "GET",
3441
3351
  "versions": [
3442
3352
  "1.0",
3443
3353
  "1.1",
@@ -3475,7 +3385,6 @@
3475
3385
  ]
3476
3386
  },
3477
3387
  "endpoint": "/api/subtitles/enableautoplay",
3478
- "httpMethod": "GET",
3479
3388
  "versions": [
3480
3389
  "1.0",
3481
3390
  "1.1",
@@ -3508,7 +3417,6 @@
3508
3417
  ]
3509
3418
  },
3510
3419
  "endpoint": "/api/subtitles/download",
3511
- "httpMethod": "GET",
3512
3420
  "versions": [
3513
3421
  "1.0",
3514
3422
  "1.1",
@@ -3536,7 +3444,6 @@
3536
3444
  ]
3537
3445
  },
3538
3446
  "endpoint": "/api/timecodes/info",
3539
- "httpMethod": "GET",
3540
3447
  "versions": [
3541
3448
  "1.0",
3542
3449
  "1.1",
@@ -3569,7 +3476,6 @@
3569
3476
  ]
3570
3477
  },
3571
3478
  "endpoint": "/api/timecodes/enable",
3572
- "httpMethod": "GET",
3573
3479
  "versions": [
3574
3480
  "1.0",
3575
3481
  "1.1",
@@ -3597,7 +3503,6 @@
3597
3503
  ]
3598
3504
  },
3599
3505
  "endpoint": "/api/timecodes/download",
3600
- "httpMethod": "GET",
3601
3506
  "versions": [
3602
3507
  "1.0",
3603
3508
  "1.1",
@@ -3618,7 +3523,6 @@
3618
3523
  }
3619
3524
  },
3620
3525
  "endpoint": "/api/webhook/list",
3621
- "httpMethod": "GET",
3622
3526
  "versions": [
3623
3527
  "1.0",
3624
3528
  "1.1",
@@ -3646,7 +3550,6 @@
3646
3550
  ]
3647
3551
  },
3648
3552
  "endpoint": "/api/webhook/info",
3649
- "httpMethod": "GET",
3650
3553
  "versions": [
3651
3554
  "1.0",
3652
3555
  "1.1",
@@ -3682,7 +3585,6 @@
3682
3585
  ]
3683
3586
  },
3684
3587
  "endpoint": "/api/webhook/update",
3685
- "httpMethod": "GET",
3686
3588
  "versions": [
3687
3589
  "1.0",
3688
3590
  "1.1",
@@ -3715,7 +3617,6 @@
3715
3617
  ]
3716
3618
  },
3717
3619
  "endpoint": "/api/webhook/create",
3718
- "httpMethod": "GET",
3719
3620
  "versions": [
3720
3621
  "1.0",
3721
3622
  "1.1",
@@ -3743,7 +3644,6 @@
3743
3644
  ]
3744
3645
  },
3745
3646
  "endpoint": "/api/webhook/delete",
3746
- "httpMethod": "GET",
3747
3647
  "versions": [
3748
3648
  "1.0",
3749
3649
  "1.1",
@@ -3764,7 +3664,6 @@
3764
3664
  }
3765
3665
  },
3766
3666
  "endpoint": "/api/webhook/events",
3767
- "httpMethod": "GET",
3768
3667
  "versions": [
3769
3668
  "1.0",
3770
3669
  "1.1",