@clawhub-justoneapi-256daef3f1
Call GET /api/facebook/search-post/v1 for Facebook Post Search through JustOneAPI with keyword.
---
name: Facebook Post Search API
description: Call GET /api/facebook/search-post/v1 for Facebook Post Search through JustOneAPI with keyword.
author: JustOneAPI
homepage: https://api.justoneapi.com
metadata: {"openclaw":{"homepage":"https://api.justoneapi.com","primaryEnv":"JUST_ONE_API_TOKEN","requires":{"bins":["node"],"env":["JUST_ONE_API_TOKEN"]},"skillKey":"justoneapi_facebook_search_post"}}
---
# Facebook Post Search
Use this focused JustOneAPI skill for post Search in Facebook. It targets `GET /api/facebook/search-post/v1`. Required non-token inputs are `keyword`. OpenAPI describes it as: Get Facebook post Search data, including matched results, metadata, and ranking signals, for discovering relevant public posts for specific keywords and analyzing engagement and reach of public content on facebook.
## Endpoint Scope
- Platform key: `facebook`
- Endpoint key: `search-post`
- Platform family: Facebook
- Skill slug: `justoneapi-facebook-search-post`
| Operation | Version | Method | Path | OpenAPI summary |
| --- | --- | --- | --- | --- |
| `searchFacebookPostsV1` | `v1` | `GET` | `/api/facebook/search-post/v1` | Post Search |
## Inputs
| Parameter | In | Required by | Optional by | Type | Notes |
| --- | --- | --- | --- | --- | --- |
| `cursor` | `query` | n/a | all | `string` | Pagination cursor for fetching the next set of results |
| `endDate` | `query` | n/a | all | `string` | End date for the search range (inclusive), formatted as yyyy-MM-dd |
| `keyword` | `query` | all | n/a | `string` | Keyword to search for in public posts. Supports basic text matching |
| `startDate` | `query` | n/a | all | `string` | Start date for the search range (inclusive), formatted as yyyy-MM-dd |
Request body: none documented; send parameters through path or query arguments.
## Version Choice
Use `searchFacebookPostsV1` for the documented `v1` endpoint. There are no alternate versions grouped in this skill.
## Run This Endpoint
Supported operation IDs in this skill: `searchFacebookPostsV1`.
```bash
node {baseDir}/bin/run.mjs --operation "searchFacebookPostsV1" --token "$JUST_ONE_API_TOKEN" --params-json '{"keyword":"<keyword>"}'
```
Ask for any missing required parameter before calling the helper. Keep user-provided IDs, cursors, keywords, and filters unchanged.
## Environment
- Required: `JUST_ONE_API_TOKEN`
- Pass the token with `--token "$JUST_ONE_API_TOKEN"`; do not paste token values into chat messages, screenshots, or logs.
- Get a token from [Just One API Dashboard](https://dashboard.justoneapi.com/en/login?utm_source=clawhub.ai&utm_medium=referral&utm_campaign=justoneapi_facebook_search_post&utm_content=project_link).
- Authentication details: [Just One API Usage Guide](https://docs.justoneapi.com/en/?utm_source=clawhub.ai&utm_medium=referral&utm_campaign=justoneapi_facebook_search_post&utm_content=project_link).
## Output Focus
- State the operation ID and endpoint path used, for example `searchFacebookPostsV1` on `/api/facebook/search-post/v1`.
- Echo the required lookup scope (`keyword`) before summarizing results.
- Prioritize fields that support this endpoint purpose: Get Facebook post Search data, including matched results, metadata, and ranking signals, for discovering relevant public posts for specific keywords and analyzing engagement and reach of public content on facebook.
- Return raw JSON only after the short, endpoint-specific summary.
- If the backend errors, include the backend payload and the exact operation ID.
FILE:bin/run.mjs
#!/usr/bin/env node
const manifest = {
"baseUrl": "https://api.justoneapi.com",
"description": "Call GET /api/facebook/search-post/v1 for Facebook Post Search through JustOneAPI with keyword.",
"displayName": "Facebook Post Search",
"openapi": "3.1.0",
"platformKey": "facebook",
"primaryTag": "Facebook",
"skillName": "justoneapi_facebook_search_post",
"slug": "justoneapi-facebook-search-post",
"sourceTitle": "OpenAPI definition",
"operations": [
{
"description": "Get Facebook post Search data, including matched results, metadata, and ranking signals, for discovering relevant public posts for specific keywords and analyzing engagement and reach of public content on facebook.",
"method": "GET",
"operationId": "searchFacebookPostsV1",
"parameters": [
{
"defaultValue": null,
"description": "User security token for API access authentication.",
"enumValues": [],
"location": "query",
"name": "token",
"required": true,
"schemaType": "string"
},
{
"defaultValue": null,
"description": "Keyword to search for in public posts. Supports basic text matching.",
"enumValues": [],
"location": "query",
"name": "keyword",
"required": true,
"schemaType": "string"
},
{
"defaultValue": null,
"description": "Start date for the search range (inclusive), formatted as yyyy-MM-dd.",
"enumValues": [],
"location": "query",
"name": "startDate",
"required": false,
"schemaType": "string"
},
{
"defaultValue": null,
"description": "End date for the search range (inclusive), formatted as yyyy-MM-dd.",
"enumValues": [],
"location": "query",
"name": "endDate",
"required": false,
"schemaType": "string"
},
{
"defaultValue": "",
"description": "Pagination cursor for fetching the next set of results.",
"enumValues": [],
"location": "query",
"name": "cursor",
"required": false,
"schemaType": "string"
}
],
"path": "/api/facebook/search-post/v1",
"requestBody": null,
"responses": [
{
"description": "OK",
"statusCode": "200"
}
],
"summary": "Post Search",
"tags": [
"Facebook"
]
}
],
"endpointPath": "search-post",
"skillType": "interface"
};
const args = parseArgs(process.argv.slice(2));
if (!args.operation) {
fail("Missing required --operation argument.");
}
const operation = manifest.operations.find((item) => item.operationId === args.operation);
if (!operation) {
fail(`Unknown operation "args.operation".`, { availableOperations: manifest.operations.map((item) => item.operationId) });
}
const params = parseParams(args.paramsJson);
applyDefaults(operation, params);
injectToken(operation, params, args.token);
validateRequired(operation, params);
const baseUrl = manifest.baseUrl;
const url = new URL(operation.path, ensureBaseUrl(baseUrl));
applyPathParams(operation, params, url);
applyQueryParams(operation, params, url);
const requestInit = {
headers: {
"accept": "application/json",
},
method: operation.method,
};
if (operation.requestBody && params.body !== undefined) {
requestInit.body = JSON.stringify(params.body);
requestInit.headers["content-type"] = operation.requestBody.contentType || "application/json";
}
let response;
try {
response = await fetch(url, requestInit);
} catch (error) {
fail("Network request failed.", {
cause: error instanceof Error ? error.message : String(error),
operationId: operation.operationId,
});
}
const rawBody = await response.text();
let parsedBody;
try {
parsedBody = rawBody ? JSON.parse(rawBody) : null;
} catch (error) {
if (!response.ok) {
fail("Backend returned a non-JSON error response.", {
body: rawBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
fail("Backend returned invalid JSON.", {
body: rawBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
if (!response.ok) {
fail("Backend request failed.", {
body: parsedBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
process.stdout.write(`JSON.stringify(parsedBody, null, 2)\n`);
function parseArgs(argv) {
const parsed = { operation: null, paramsJson: "{}", token: null };
for (let index = 0; index < argv.length; index += 1) {
const flag = argv[index];
const value = argv[index + 1];
if (flag === "--operation") {
parsed.operation = value;
index += 1;
continue;
}
if (flag === "--params-json") {
parsed.paramsJson = value;
index += 1;
continue;
}
if (flag === "--token") {
parsed.token = value;
index += 1;
continue;
}
fail(`Unknown argument "flag".`);
}
return parsed;
}
function parseParams(input) {
try {
const parsed = JSON.parse(input || "{}");
if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) {
fail("--params-json must decode to a JSON object.");
}
return parsed;
} catch (error) {
fail("Failed to parse --params-json.", {
cause: error instanceof Error ? error.message : String(error),
});
}
}
function applyDefaults(operation, params) {
for (const parameter of operation.parameters) {
if (params[parameter.name] === undefined && parameter.defaultValue !== null) {
params[parameter.name] = parameter.defaultValue;
}
}
}
function injectToken(operation, params, cliToken) {
const tokenParam = operation.parameters.find((parameter) => parameter.name === "token");
if (!tokenParam || params.token !== undefined) {
return;
}
if (!cliToken) {
fail("--token is required for this operation.", {
operationId: operation.operationId,
});
}
params.token = cliToken;
}
function validateRequired(operation, params) {
const missing = [];
for (const parameter of operation.parameters) {
if (parameter.required && params[parameter.name] === undefined) {
missing.push(parameter.name);
}
}
if (operation.requestBody?.required && params.body === undefined) {
missing.push("body");
}
if (missing.length) {
fail("Missing required parameters.", {
missing,
operationId: operation.operationId,
});
}
}
function applyPathParams(operation, params, url) {
let pathname = url.pathname;
for (const parameter of operation.parameters.filter((item) => item.location === "path")) {
const value = params[parameter.name];
if (value === undefined) {
continue;
}
pathname = pathname.replace(`{parameter.name}`, encodeURIComponent(String(value)));
}
url.pathname = pathname;
}
function applyQueryParams(operation, params, url) {
for (const parameter of operation.parameters.filter((item) => item.location === "query")) {
const value = params[parameter.name];
if (value === undefined) {
continue;
}
appendValue(url.searchParams, parameter.name, value);
}
}
function appendValue(searchParams, name, value) {
if (Array.isArray(value)) {
for (const item of value) {
appendValue(searchParams, name, item);
}
return;
}
if (value && typeof value === "object") {
searchParams.append(name, JSON.stringify(value));
return;
}
searchParams.append(name, String(value));
}
function ensureBaseUrl(value) {
return value.endsWith("/") ? value : `value/`;
}
function fail(message, details = null) {
const payload = { message };
if (details) {
payload.details = details;
}
process.stderr.write(`JSON.stringify(payload, null, 2)\n`);
process.exit(1);
}
FILE:generated/operations.json
{
"baseUrl": "https://api.justoneapi.com",
"description": "Call GET /api/facebook/search-post/v1 for Facebook Post Search through JustOneAPI with keyword.",
"displayName": "Facebook Post Search",
"endpointPath": "search-post",
"openapi": "3.1.0",
"operations": [
{
"description": "Get Facebook post Search data, including matched results, metadata, and ranking signals, for discovering relevant public posts for specific keywords and analyzing engagement and reach of public content on facebook.",
"method": "GET",
"operationId": "searchFacebookPostsV1",
"parameters": [
{
"defaultValue": null,
"description": "User security token for API access authentication.",
"enumValues": [],
"location": "query",
"name": "token",
"required": true,
"schemaType": "string"
},
{
"defaultValue": null,
"description": "Keyword to search for in public posts. Supports basic text matching.",
"enumValues": [],
"location": "query",
"name": "keyword",
"required": true,
"schemaType": "string"
},
{
"defaultValue": null,
"description": "Start date for the search range (inclusive), formatted as yyyy-MM-dd.",
"enumValues": [],
"location": "query",
"name": "startDate",
"required": false,
"schemaType": "string"
},
{
"defaultValue": null,
"description": "End date for the search range (inclusive), formatted as yyyy-MM-dd.",
"enumValues": [],
"location": "query",
"name": "endDate",
"required": false,
"schemaType": "string"
},
{
"defaultValue": "",
"description": "Pagination cursor for fetching the next set of results.",
"enumValues": [],
"location": "query",
"name": "cursor",
"required": false,
"schemaType": "string"
}
],
"path": "/api/facebook/search-post/v1",
"requestBody": null,
"responses": [
{
"description": "OK",
"statusCode": "200"
}
],
"summary": "Post Search",
"tags": [
"Facebook"
]
}
],
"platformKey": "facebook",
"primaryTag": "Facebook",
"skillName": "justoneapi_facebook_search_post",
"skillType": "interface",
"slug": "justoneapi-facebook-search-post",
"sourceTitle": "OpenAPI definition"
}
FILE:generated/operations.md
# Facebook Post Search operations
Generated from JustOneAPI OpenAPI for platform key `facebook`.
Endpoint group: `search-post`.
## `searchFacebookPostsV1`
- Method: `GET`
- Path: `/api/facebook/search-post/v1`
- Summary: Post Search
- Description: Get Facebook post Search data, including matched results, metadata, and ranking signals, for discovering relevant public posts for specific keywords and analyzing engagement and reach of public content on facebook.
- Tags: `Facebook`
### Parameters
| Name | In | Required | Type | Default | Description |
| --- | --- | --- | --- | --- | --- |
| `token` | `query` | yes | `string` | n/a | User security token for API access authentication. |
| `keyword` | `query` | yes | `string` | n/a | Keyword to search for in public posts. Supports basic text matching. |
| `startDate` | `query` | no | `string` | n/a | Start date for the search range (inclusive), formatted as yyyy-MM-dd. |
| `endDate` | `query` | no | `string` | n/a | End date for the search range (inclusive), formatted as yyyy-MM-dd. |
| `cursor` | `query` | no | `string` | n/a | Pagination cursor for fetching the next set of results. |
### Request body
No request body.
### Responses
- `200`: OK
Call GET /api/facebook/get-profile-posts/v1 for Facebook Get Profile Posts through JustOneAPI with profileId.
---
name: Facebook Get Profile Posts API
description: Call GET /api/facebook/get-profile-posts/v1 for Facebook Get Profile Posts through JustOneAPI with profileId.
author: JustOneAPI
homepage: https://api.justoneapi.com
metadata: {"openclaw":{"homepage":"https://api.justoneapi.com","primaryEnv":"JUST_ONE_API_TOKEN","requires":{"bins":["node"],"env":["JUST_ONE_API_TOKEN"]},"skillKey":"justoneapi_facebook_get_profile_posts"}}
---
# Facebook Get Profile Posts
Use this focused JustOneAPI skill for get Profile Posts in Facebook. It targets `GET /api/facebook/get-profile-posts/v1`. Required non-token inputs are `profileId`. OpenAPI describes it as: Get public posts from a specific Facebook profile using its profile ID.
## Endpoint Scope
- Platform key: `facebook`
- Endpoint key: `get-profile-posts`
- Platform family: Facebook
- Skill slug: `justoneapi-facebook-get-profile-posts`
| Operation | Version | Method | Path | OpenAPI summary |
| --- | --- | --- | --- | --- |
| `getProfilePostsV1` | `v1` | `GET` | `/api/facebook/get-profile-posts/v1` | Get Profile Posts |
## Inputs
| Parameter | In | Required by | Optional by | Type | Notes |
| --- | --- | --- | --- | --- | --- |
| `cursor` | `query` | n/a | all | `string` | Pagination cursor for fetching the next set of results |
| `profileId` | `query` | all | n/a | `string` | The unique Facebook profile ID |
Request body: none documented; send parameters through path or query arguments.
## Version Choice
Use `getProfilePostsV1` for the documented `v1` endpoint. There are no alternate versions grouped in this skill.
## Run This Endpoint
Supported operation IDs in this skill: `getProfilePostsV1`.
```bash
node {baseDir}/bin/run.mjs --operation "getProfilePostsV1" --token "$JUST_ONE_API_TOKEN" --params-json '{"profileId":"<profileId>"}'
```
Ask for any missing required parameter before calling the helper. Keep user-provided IDs, cursors, keywords, and filters unchanged.
## Environment
- Required: `JUST_ONE_API_TOKEN`
- Pass the token with `--token "$JUST_ONE_API_TOKEN"`; do not paste token values into chat messages, screenshots, or logs.
- Get a token from [Just One API Dashboard](https://dashboard.justoneapi.com/en/login?utm_source=clawhub.ai&utm_medium=referral&utm_campaign=justoneapi_facebook_get_profile_posts&utm_content=project_link).
- Authentication details: [Just One API Usage Guide](https://docs.justoneapi.com/en/?utm_source=clawhub.ai&utm_medium=referral&utm_campaign=justoneapi_facebook_get_profile_posts&utm_content=project_link).
## Output Focus
- State the operation ID and endpoint path used, for example `getProfilePostsV1` on `/api/facebook/get-profile-posts/v1`.
- Echo the required lookup scope (`profileId`) before summarizing results.
- Prioritize fields that support this endpoint purpose: Get public posts from a specific Facebook profile using its profile ID.
- Return raw JSON only after the short, endpoint-specific summary.
- If the backend errors, include the backend payload and the exact operation ID.
FILE:bin/run.mjs
#!/usr/bin/env node
const manifest = {
"baseUrl": "https://api.justoneapi.com",
"description": "Call GET /api/facebook/get-profile-posts/v1 for Facebook Get Profile Posts through JustOneAPI with profileId.",
"displayName": "Facebook Get Profile Posts",
"openapi": "3.1.0",
"platformKey": "facebook",
"primaryTag": "Facebook",
"skillName": "justoneapi_facebook_get_profile_posts",
"slug": "justoneapi-facebook-get-profile-posts",
"sourceTitle": "OpenAPI definition",
"operations": [
{
"description": "Get public posts from a specific Facebook profile using its profile ID.",
"method": "GET",
"operationId": "getProfilePostsV1",
"parameters": [
{
"defaultValue": null,
"description": "User security token for API access authentication.",
"enumValues": [],
"location": "query",
"name": "token",
"required": true,
"schemaType": "string"
},
{
"defaultValue": null,
"description": "The unique Facebook profile ID.",
"enumValues": [],
"location": "query",
"name": "profileId",
"required": true,
"schemaType": "string"
},
{
"defaultValue": "",
"description": "Pagination cursor for fetching the next set of results.",
"enumValues": [],
"location": "query",
"name": "cursor",
"required": false,
"schemaType": "string"
}
],
"path": "/api/facebook/get-profile-posts/v1",
"requestBody": null,
"responses": [
{
"description": "OK",
"statusCode": "200"
}
],
"summary": "Get Profile Posts",
"tags": [
"Facebook"
]
}
],
"endpointPath": "get-profile-posts",
"skillType": "interface"
};
const args = parseArgs(process.argv.slice(2));
if (!args.operation) {
fail("Missing required --operation argument.");
}
const operation = manifest.operations.find((item) => item.operationId === args.operation);
if (!operation) {
fail(`Unknown operation "args.operation".`, { availableOperations: manifest.operations.map((item) => item.operationId) });
}
const params = parseParams(args.paramsJson);
applyDefaults(operation, params);
injectToken(operation, params, args.token);
validateRequired(operation, params);
const baseUrl = manifest.baseUrl;
const url = new URL(operation.path, ensureBaseUrl(baseUrl));
applyPathParams(operation, params, url);
applyQueryParams(operation, params, url);
const requestInit = {
headers: {
"accept": "application/json",
},
method: operation.method,
};
if (operation.requestBody && params.body !== undefined) {
requestInit.body = JSON.stringify(params.body);
requestInit.headers["content-type"] = operation.requestBody.contentType || "application/json";
}
let response;
try {
response = await fetch(url, requestInit);
} catch (error) {
fail("Network request failed.", {
cause: error instanceof Error ? error.message : String(error),
operationId: operation.operationId,
});
}
const rawBody = await response.text();
let parsedBody;
try {
parsedBody = rawBody ? JSON.parse(rawBody) : null;
} catch (error) {
if (!response.ok) {
fail("Backend returned a non-JSON error response.", {
body: rawBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
fail("Backend returned invalid JSON.", {
body: rawBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
if (!response.ok) {
fail("Backend request failed.", {
body: parsedBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
process.stdout.write(`JSON.stringify(parsedBody, null, 2)\n`);
function parseArgs(argv) {
const parsed = { operation: null, paramsJson: "{}", token: null };
for (let index = 0; index < argv.length; index += 1) {
const flag = argv[index];
const value = argv[index + 1];
if (flag === "--operation") {
parsed.operation = value;
index += 1;
continue;
}
if (flag === "--params-json") {
parsed.paramsJson = value;
index += 1;
continue;
}
if (flag === "--token") {
parsed.token = value;
index += 1;
continue;
}
fail(`Unknown argument "flag".`);
}
return parsed;
}
function parseParams(input) {
try {
const parsed = JSON.parse(input || "{}");
if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) {
fail("--params-json must decode to a JSON object.");
}
return parsed;
} catch (error) {
fail("Failed to parse --params-json.", {
cause: error instanceof Error ? error.message : String(error),
});
}
}
function applyDefaults(operation, params) {
for (const parameter of operation.parameters) {
if (params[parameter.name] === undefined && parameter.defaultValue !== null) {
params[parameter.name] = parameter.defaultValue;
}
}
}
function injectToken(operation, params, cliToken) {
const tokenParam = operation.parameters.find((parameter) => parameter.name === "token");
if (!tokenParam || params.token !== undefined) {
return;
}
if (!cliToken) {
fail("--token is required for this operation.", {
operationId: operation.operationId,
});
}
params.token = cliToken;
}
function validateRequired(operation, params) {
const missing = [];
for (const parameter of operation.parameters) {
if (parameter.required && params[parameter.name] === undefined) {
missing.push(parameter.name);
}
}
if (operation.requestBody?.required && params.body === undefined) {
missing.push("body");
}
if (missing.length) {
fail("Missing required parameters.", {
missing,
operationId: operation.operationId,
});
}
}
function applyPathParams(operation, params, url) {
let pathname = url.pathname;
for (const parameter of operation.parameters.filter((item) => item.location === "path")) {
const value = params[parameter.name];
if (value === undefined) {
continue;
}
pathname = pathname.replace(`{parameter.name}`, encodeURIComponent(String(value)));
}
url.pathname = pathname;
}
function applyQueryParams(operation, params, url) {
for (const parameter of operation.parameters.filter((item) => item.location === "query")) {
const value = params[parameter.name];
if (value === undefined) {
continue;
}
appendValue(url.searchParams, parameter.name, value);
}
}
function appendValue(searchParams, name, value) {
if (Array.isArray(value)) {
for (const item of value) {
appendValue(searchParams, name, item);
}
return;
}
if (value && typeof value === "object") {
searchParams.append(name, JSON.stringify(value));
return;
}
searchParams.append(name, String(value));
}
function ensureBaseUrl(value) {
return value.endsWith("/") ? value : `value/`;
}
function fail(message, details = null) {
const payload = { message };
if (details) {
payload.details = details;
}
process.stderr.write(`JSON.stringify(payload, null, 2)\n`);
process.exit(1);
}
FILE:generated/operations.json
{
"baseUrl": "https://api.justoneapi.com",
"description": "Call GET /api/facebook/get-profile-posts/v1 for Facebook Get Profile Posts through JustOneAPI with profileId.",
"displayName": "Facebook Get Profile Posts",
"endpointPath": "get-profile-posts",
"openapi": "3.1.0",
"operations": [
{
"description": "Get public posts from a specific Facebook profile using its profile ID.",
"method": "GET",
"operationId": "getProfilePostsV1",
"parameters": [
{
"defaultValue": null,
"description": "User security token for API access authentication.",
"enumValues": [],
"location": "query",
"name": "token",
"required": true,
"schemaType": "string"
},
{
"defaultValue": null,
"description": "The unique Facebook profile ID.",
"enumValues": [],
"location": "query",
"name": "profileId",
"required": true,
"schemaType": "string"
},
{
"defaultValue": "",
"description": "Pagination cursor for fetching the next set of results.",
"enumValues": [],
"location": "query",
"name": "cursor",
"required": false,
"schemaType": "string"
}
],
"path": "/api/facebook/get-profile-posts/v1",
"requestBody": null,
"responses": [
{
"description": "OK",
"statusCode": "200"
}
],
"summary": "Get Profile Posts",
"tags": [
"Facebook"
]
}
],
"platformKey": "facebook",
"primaryTag": "Facebook",
"skillName": "justoneapi_facebook_get_profile_posts",
"skillType": "interface",
"slug": "justoneapi-facebook-get-profile-posts",
"sourceTitle": "OpenAPI definition"
}
FILE:generated/operations.md
# Facebook Get Profile Posts operations
Generated from JustOneAPI OpenAPI for platform key `facebook`.
Endpoint group: `get-profile-posts`.
## `getProfilePostsV1`
- Method: `GET`
- Path: `/api/facebook/get-profile-posts/v1`
- Summary: Get Profile Posts
- Description: Get public posts from a specific Facebook profile using its profile ID.
- Tags: `Facebook`
### Parameters
| Name | In | Required | Type | Default | Description |
| --- | --- | --- | --- | --- | --- |
| `token` | `query` | yes | `string` | n/a | User security token for API access authentication. |
| `profileId` | `query` | yes | `string` | n/a | The unique Facebook profile ID. |
| `cursor` | `query` | no | `string` | n/a | Pagination cursor for fetching the next set of results. |
### Request body
No request body.
### Responses
- `200`: OK
Call GET /api/facebook/get-profile-id/v1 for Facebook Get Profile ID through JustOneAPI with url.
---
name: Facebook Get Profile ID API
description: Call GET /api/facebook/get-profile-id/v1 for Facebook Get Profile ID through JustOneAPI with url.
author: JustOneAPI
homepage: https://api.justoneapi.com
metadata: {"openclaw":{"homepage":"https://api.justoneapi.com","primaryEnv":"JUST_ONE_API_TOKEN","requires":{"bins":["node"],"env":["JUST_ONE_API_TOKEN"]},"skillKey":"justoneapi_facebook_get_profile_id"}}
---
# Facebook Get Profile ID
Use this focused JustOneAPI skill for get Profile ID in Facebook. It targets `GET /api/facebook/get-profile-id/v1`. Required non-token inputs are `url`. OpenAPI describes it as: Retrieve the unique Facebook profile ID from a given profile URL.
## Endpoint Scope
- Platform key: `facebook`
- Endpoint key: `get-profile-id`
- Platform family: Facebook
- Skill slug: `justoneapi-facebook-get-profile-id`
| Operation | Version | Method | Path | OpenAPI summary |
| --- | --- | --- | --- | --- |
| `getProfileIdV1` | `v1` | `GET` | `/api/facebook/get-profile-id/v1` | Get Profile ID |
## Inputs
| Parameter | In | Required by | Optional by | Type | Notes |
| --- | --- | --- | --- | --- | --- |
| `url` | `query` | all | n/a | `string` | The path part of the Facebook profile URL. Do not include `https://www.facebook.com`. Example: `/people/To-Bite/pfbid021XLeDjjZjsoWse1H43VEgb3i1uCLTpBvXSvrnL2n118YPtMF5AZkBrZobhWWdHTHl/` |
Request body: none documented; send parameters through path or query arguments.
## Version Choice
Use `getProfileIdV1` for the documented `v1` endpoint. There are no alternate versions grouped in this skill.
## Run This Endpoint
Supported operation IDs in this skill: `getProfileIdV1`.
```bash
node {baseDir}/bin/run.mjs --operation "getProfileIdV1" --token "$JUST_ONE_API_TOKEN" --params-json '{"url":"<url>"}'
```
Ask for any missing required parameter before calling the helper. Keep user-provided IDs, cursors, keywords, and filters unchanged.
## Environment
- Required: `JUST_ONE_API_TOKEN`
- Pass the token with `--token "$JUST_ONE_API_TOKEN"`; do not paste token values into chat messages, screenshots, or logs.
- Get a token from [Just One API Dashboard](https://dashboard.justoneapi.com/en/login?utm_source=clawhub.ai&utm_medium=referral&utm_campaign=justoneapi_facebook_get_profile_id&utm_content=project_link).
- Authentication details: [Just One API Usage Guide](https://docs.justoneapi.com/en/?utm_source=clawhub.ai&utm_medium=referral&utm_campaign=justoneapi_facebook_get_profile_id&utm_content=project_link).
## Output Focus
- State the operation ID and endpoint path used, for example `getProfileIdV1` on `/api/facebook/get-profile-id/v1`.
- Echo the required lookup scope (`url`) before summarizing results.
- Prioritize fields that support this endpoint purpose: Retrieve the unique Facebook profile ID from a given profile URL.
- Return raw JSON only after the short, endpoint-specific summary.
- If the backend errors, include the backend payload and the exact operation ID.
FILE:bin/run.mjs
#!/usr/bin/env node
const manifest = {
"baseUrl": "https://api.justoneapi.com",
"description": "Call GET /api/facebook/get-profile-id/v1 for Facebook Get Profile ID through JustOneAPI with url.",
"displayName": "Facebook Get Profile ID",
"openapi": "3.1.0",
"platformKey": "facebook",
"primaryTag": "Facebook",
"skillName": "justoneapi_facebook_get_profile_id",
"slug": "justoneapi-facebook-get-profile-id",
"sourceTitle": "OpenAPI definition",
"operations": [
{
"description": "Retrieve the unique Facebook profile ID from a given profile URL.",
"method": "GET",
"operationId": "getProfileIdV1",
"parameters": [
{
"defaultValue": null,
"description": "User security token for API access authentication.",
"enumValues": [],
"location": "query",
"name": "token",
"required": true,
"schemaType": "string"
},
{
"defaultValue": null,
"description": "The path part of the Facebook profile URL. Do not include `https://www.facebook.com`. Example: `/people/To-Bite/pfbid021XLeDjjZjsoWse1H43VEgb3i1uCLTpBvXSvrnL2n118YPtMF5AZkBrZobhWWdHTHl/`",
"enumValues": [],
"location": "query",
"name": "url",
"required": true,
"schemaType": "string"
}
],
"path": "/api/facebook/get-profile-id/v1",
"requestBody": null,
"responses": [
{
"description": "OK",
"statusCode": "200"
}
],
"summary": "Get Profile ID",
"tags": [
"Facebook"
]
}
],
"endpointPath": "get-profile-id",
"skillType": "interface"
};
const args = parseArgs(process.argv.slice(2));
if (!args.operation) {
fail("Missing required --operation argument.");
}
const operation = manifest.operations.find((item) => item.operationId === args.operation);
if (!operation) {
fail(`Unknown operation "args.operation".`, { availableOperations: manifest.operations.map((item) => item.operationId) });
}
const params = parseParams(args.paramsJson);
applyDefaults(operation, params);
injectToken(operation, params, args.token);
validateRequired(operation, params);
const baseUrl = manifest.baseUrl;
const url = new URL(operation.path, ensureBaseUrl(baseUrl));
applyPathParams(operation, params, url);
applyQueryParams(operation, params, url);
const requestInit = {
headers: {
"accept": "application/json",
},
method: operation.method,
};
if (operation.requestBody && params.body !== undefined) {
requestInit.body = JSON.stringify(params.body);
requestInit.headers["content-type"] = operation.requestBody.contentType || "application/json";
}
let response;
try {
response = await fetch(url, requestInit);
} catch (error) {
fail("Network request failed.", {
cause: error instanceof Error ? error.message : String(error),
operationId: operation.operationId,
});
}
const rawBody = await response.text();
let parsedBody;
try {
parsedBody = rawBody ? JSON.parse(rawBody) : null;
} catch (error) {
if (!response.ok) {
fail("Backend returned a non-JSON error response.", {
body: rawBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
fail("Backend returned invalid JSON.", {
body: rawBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
if (!response.ok) {
fail("Backend request failed.", {
body: parsedBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
process.stdout.write(`JSON.stringify(parsedBody, null, 2)\n`);
function parseArgs(argv) {
const parsed = { operation: null, paramsJson: "{}", token: null };
for (let index = 0; index < argv.length; index += 1) {
const flag = argv[index];
const value = argv[index + 1];
if (flag === "--operation") {
parsed.operation = value;
index += 1;
continue;
}
if (flag === "--params-json") {
parsed.paramsJson = value;
index += 1;
continue;
}
if (flag === "--token") {
parsed.token = value;
index += 1;
continue;
}
fail(`Unknown argument "flag".`);
}
return parsed;
}
function parseParams(input) {
try {
const parsed = JSON.parse(input || "{}");
if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) {
fail("--params-json must decode to a JSON object.");
}
return parsed;
} catch (error) {
fail("Failed to parse --params-json.", {
cause: error instanceof Error ? error.message : String(error),
});
}
}
function applyDefaults(operation, params) {
for (const parameter of operation.parameters) {
if (params[parameter.name] === undefined && parameter.defaultValue !== null) {
params[parameter.name] = parameter.defaultValue;
}
}
}
function injectToken(operation, params, cliToken) {
const tokenParam = operation.parameters.find((parameter) => parameter.name === "token");
if (!tokenParam || params.token !== undefined) {
return;
}
if (!cliToken) {
fail("--token is required for this operation.", {
operationId: operation.operationId,
});
}
params.token = cliToken;
}
function validateRequired(operation, params) {
const missing = [];
for (const parameter of operation.parameters) {
if (parameter.required && params[parameter.name] === undefined) {
missing.push(parameter.name);
}
}
if (operation.requestBody?.required && params.body === undefined) {
missing.push("body");
}
if (missing.length) {
fail("Missing required parameters.", {
missing,
operationId: operation.operationId,
});
}
}
function applyPathParams(operation, params, url) {
let pathname = url.pathname;
for (const parameter of operation.parameters.filter((item) => item.location === "path")) {
const value = params[parameter.name];
if (value === undefined) {
continue;
}
pathname = pathname.replace(`{parameter.name}`, encodeURIComponent(String(value)));
}
url.pathname = pathname;
}
function applyQueryParams(operation, params, url) {
for (const parameter of operation.parameters.filter((item) => item.location === "query")) {
const value = params[parameter.name];
if (value === undefined) {
continue;
}
appendValue(url.searchParams, parameter.name, value);
}
}
function appendValue(searchParams, name, value) {
if (Array.isArray(value)) {
for (const item of value) {
appendValue(searchParams, name, item);
}
return;
}
if (value && typeof value === "object") {
searchParams.append(name, JSON.stringify(value));
return;
}
searchParams.append(name, String(value));
}
function ensureBaseUrl(value) {
return value.endsWith("/") ? value : `value/`;
}
function fail(message, details = null) {
const payload = { message };
if (details) {
payload.details = details;
}
process.stderr.write(`JSON.stringify(payload, null, 2)\n`);
process.exit(1);
}
FILE:generated/operations.json
{
"baseUrl": "https://api.justoneapi.com",
"description": "Call GET /api/facebook/get-profile-id/v1 for Facebook Get Profile ID through JustOneAPI with url.",
"displayName": "Facebook Get Profile ID",
"endpointPath": "get-profile-id",
"openapi": "3.1.0",
"operations": [
{
"description": "Retrieve the unique Facebook profile ID from a given profile URL.",
"method": "GET",
"operationId": "getProfileIdV1",
"parameters": [
{
"defaultValue": null,
"description": "User security token for API access authentication.",
"enumValues": [],
"location": "query",
"name": "token",
"required": true,
"schemaType": "string"
},
{
"defaultValue": null,
"description": "The path part of the Facebook profile URL. Do not include `https://www.facebook.com`. Example: `/people/To-Bite/pfbid021XLeDjjZjsoWse1H43VEgb3i1uCLTpBvXSvrnL2n118YPtMF5AZkBrZobhWWdHTHl/`",
"enumValues": [],
"location": "query",
"name": "url",
"required": true,
"schemaType": "string"
}
],
"path": "/api/facebook/get-profile-id/v1",
"requestBody": null,
"responses": [
{
"description": "OK",
"statusCode": "200"
}
],
"summary": "Get Profile ID",
"tags": [
"Facebook"
]
}
],
"platformKey": "facebook",
"primaryTag": "Facebook",
"skillName": "justoneapi_facebook_get_profile_id",
"skillType": "interface",
"slug": "justoneapi-facebook-get-profile-id",
"sourceTitle": "OpenAPI definition"
}
FILE:generated/operations.md
# Facebook Get Profile ID operations
Generated from JustOneAPI OpenAPI for platform key `facebook`.
Endpoint group: `get-profile-id`.
## `getProfileIdV1`
- Method: `GET`
- Path: `/api/facebook/get-profile-id/v1`
- Summary: Get Profile ID
- Description: Retrieve the unique Facebook profile ID from a given profile URL.
- Tags: `Facebook`
### Parameters
| Name | In | Required | Type | Default | Description |
| --- | --- | --- | --- | --- | --- |
| `token` | `query` | yes | `string` | n/a | User security token for API access authentication. |
| `url` | `query` | yes | `string` | n/a | The path part of the Facebook profile URL. Do not include `https://www.facebook.com`. Example: `/people/To-Bite/pfbid021XLeDjjZjsoWse1H43VEgb3i1uCLTpBvXSvrnL2n118YPtMF5AZkBrZobhWWdHTHl/` |
### Request body
No request body.
### Responses
- `200`: OK
Call GET /api/douyin-xingtu/search-kol-simple/v1 for Douyin Creator Marketplace (Xingtu) KOL Keyword Search through JustOneAPI with keyword, page, and platfo...
---
name: Douyin Creator Marketplace (Xingtu) KOL Keyword Search API
description: Call GET /api/douyin-xingtu/search-kol-simple/v1 for Douyin Creator Marketplace (Xingtu) KOL Keyword Search through JustOneAPI with keyword, page, and platformSource.
author: JustOneAPI
homepage: https://api.justoneapi.com
metadata: {"openclaw":{"homepage":"https://api.justoneapi.com","primaryEnv":"JUST_ONE_API_TOKEN","requires":{"bins":["node"],"env":["JUST_ONE_API_TOKEN"]},"skillKey":"justoneapi_douyin_xingtu_search_kol_simple"}}
---
# Douyin Creator Marketplace (Xingtu) KOL Keyword Search
Use this focused JustOneAPI skill for kOL Keyword Search in Douyin Creator Marketplace (Xingtu). It targets `GET /api/douyin-xingtu/search-kol-simple/v1`. Required non-token inputs are `keyword`, `page`, and `platformSource`. OpenAPI describes it as: Get Douyin Creator Marketplace (Xingtu) kOL Keyword Search data, including matching creators and discovery data, for creator sourcing and shortlist building.
## Endpoint Scope
- Platform key: `douyin-xingtu`
- Endpoint key: `search-kol-simple`
- Platform family: Douyin Creator Marketplace (Xingtu)
- Skill slug: `justoneapi-douyin-xingtu-search-kol-simple`
| Operation | Version | Method | Path | OpenAPI summary |
| --- | --- | --- | --- | --- |
| `searchKolSimpleV1` | `v1` | `GET` | `/api/douyin-xingtu/search-kol-simple/v1` | KOL Keyword Search |
## Inputs
| Parameter | In | Required by | Optional by | Type | Notes |
| --- | --- | --- | --- | --- | --- |
| `acceptCache` | `query` | n/a | all | `boolean` | Enable cache |
| `keyword` | `query` | all | n/a | `string` | Search keywords |
| `page` | `query` | all | n/a | `integer` | Page number |
| `platformSource` | `query` | all | n/a | `string` | Platform source. Available Values: - `_1`: Douyin - `_2`: Toutiao - `_3`: Xigua |
| `platformSource` enum | values | n/a | n/a | n/a | `_1`, `_2`, `_3` |
Request body: none documented; send parameters through path or query arguments.
## Version Choice
Use `searchKolSimpleV1` for the documented `v1` endpoint. There are no alternate versions grouped in this skill.
## Run This Endpoint
Supported operation IDs in this skill: `searchKolSimpleV1`.
```bash
node {baseDir}/bin/run.mjs --operation "searchKolSimpleV1" --token "$JUST_ONE_API_TOKEN" --params-json '{"keyword":"<keyword>","platformSource":"_1","page":1}'
```
Ask for any missing required parameter before calling the helper. Keep user-provided IDs, cursors, keywords, and filters unchanged.
## Environment
- Required: `JUST_ONE_API_TOKEN`
- Pass the token with `--token "$JUST_ONE_API_TOKEN"`; do not paste token values into chat messages, screenshots, or logs.
- Get a token from [Just One API Dashboard](https://dashboard.justoneapi.com/en/login?utm_source=clawhub.ai&utm_medium=referral&utm_campaign=justoneapi_douyin_xingtu_search_kol_simple&utm_content=project_link).
- Authentication details: [Just One API Usage Guide](https://docs.justoneapi.com/en/?utm_source=clawhub.ai&utm_medium=referral&utm_campaign=justoneapi_douyin_xingtu_search_kol_simple&utm_content=project_link).
## Output Focus
- State the operation ID and endpoint path used, for example `searchKolSimpleV1` on `/api/douyin-xingtu/search-kol-simple/v1`.
- Echo the required lookup scope (`keyword`, `page`, and `platformSource`) before summarizing results.
- Prioritize fields that support this endpoint purpose: Get Douyin Creator Marketplace (Xingtu) kOL Keyword Search data, including matching creators and discovery data, for creator sourcing and shortlist building.
- Return raw JSON only after the short, endpoint-specific summary.
- If the backend errors, include the backend payload and the exact operation ID.
FILE:bin/run.mjs
#!/usr/bin/env node
const manifest = {
"baseUrl": "https://api.justoneapi.com",
"description": "Call GET /api/douyin-xingtu/search-kol-simple/v1 for Douyin Creator Marketplace (Xingtu) KOL Keyword Search through JustOneAPI with keyword, page, and platformSource.",
"displayName": "Douyin Creator Marketplace (Xingtu) KOL Keyword Search",
"openapi": "3.1.0",
"platformKey": "douyin-xingtu",
"primaryTag": "Douyin Creator Marketplace (Xingtu)",
"skillName": "justoneapi_douyin_xingtu_search_kol_simple",
"slug": "justoneapi-douyin-xingtu-search-kol-simple",
"sourceTitle": "OpenAPI definition",
"operations": [
{
"description": "Get Douyin Creator Marketplace (Xingtu) kOL Keyword Search data, including matching creators and discovery data, for creator sourcing and shortlist building.",
"method": "GET",
"operationId": "searchKolSimpleV1",
"parameters": [
{
"defaultValue": null,
"description": "User authentication token.",
"enumValues": [],
"location": "query",
"name": "token",
"required": true,
"schemaType": "string"
},
{
"defaultValue": null,
"description": "Search keywords.",
"enumValues": [],
"location": "query",
"name": "keyword",
"required": true,
"schemaType": "string"
},
{
"defaultValue": null,
"description": "Platform source.\n\nAvailable Values:\n- `_1`: Douyin\n- `_2`: Toutiao\n- `_3`: Xigua",
"enumValues": [
"_1",
"_2",
"_3"
],
"location": "query",
"name": "platformSource",
"required": true,
"schemaType": "string"
},
{
"defaultValue": null,
"description": "Page number.",
"enumValues": [],
"location": "query",
"name": "page",
"required": true,
"schemaType": "integer"
},
{
"defaultValue": false,
"description": "Enable cache.",
"enumValues": [],
"location": "query",
"name": "acceptCache",
"required": false,
"schemaType": "boolean"
}
],
"path": "/api/douyin-xingtu/search-kol-simple/v1",
"requestBody": null,
"responses": [
{
"description": "OK",
"statusCode": "200"
}
],
"summary": "KOL Keyword Search",
"tags": [
"Douyin Creator Marketplace (Xingtu)"
]
}
],
"endpointPath": "search-kol-simple",
"skillType": "interface"
};
const args = parseArgs(process.argv.slice(2));
if (!args.operation) {
fail("Missing required --operation argument.");
}
const operation = manifest.operations.find((item) => item.operationId === args.operation);
if (!operation) {
fail(`Unknown operation "args.operation".`, { availableOperations: manifest.operations.map((item) => item.operationId) });
}
const params = parseParams(args.paramsJson);
applyDefaults(operation, params);
injectToken(operation, params, args.token);
validateRequired(operation, params);
const baseUrl = manifest.baseUrl;
const url = new URL(operation.path, ensureBaseUrl(baseUrl));
applyPathParams(operation, params, url);
applyQueryParams(operation, params, url);
const requestInit = {
headers: {
"accept": "application/json",
},
method: operation.method,
};
if (operation.requestBody && params.body !== undefined) {
requestInit.body = JSON.stringify(params.body);
requestInit.headers["content-type"] = operation.requestBody.contentType || "application/json";
}
let response;
try {
response = await fetch(url, requestInit);
} catch (error) {
fail("Network request failed.", {
cause: error instanceof Error ? error.message : String(error),
operationId: operation.operationId,
});
}
const rawBody = await response.text();
let parsedBody;
try {
parsedBody = rawBody ? JSON.parse(rawBody) : null;
} catch (error) {
if (!response.ok) {
fail("Backend returned a non-JSON error response.", {
body: rawBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
fail("Backend returned invalid JSON.", {
body: rawBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
if (!response.ok) {
fail("Backend request failed.", {
body: parsedBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
process.stdout.write(`JSON.stringify(parsedBody, null, 2)\n`);
function parseArgs(argv) {
const parsed = { operation: null, paramsJson: "{}", token: null };
for (let index = 0; index < argv.length; index += 1) {
const flag = argv[index];
const value = argv[index + 1];
if (flag === "--operation") {
parsed.operation = value;
index += 1;
continue;
}
if (flag === "--params-json") {
parsed.paramsJson = value;
index += 1;
continue;
}
if (flag === "--token") {
parsed.token = value;
index += 1;
continue;
}
fail(`Unknown argument "flag".`);
}
return parsed;
}
function parseParams(input) {
try {
const parsed = JSON.parse(input || "{}");
if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) {
fail("--params-json must decode to a JSON object.");
}
return parsed;
} catch (error) {
fail("Failed to parse --params-json.", {
cause: error instanceof Error ? error.message : String(error),
});
}
}
function applyDefaults(operation, params) {
for (const parameter of operation.parameters) {
if (params[parameter.name] === undefined && parameter.defaultValue !== null) {
params[parameter.name] = parameter.defaultValue;
}
}
}
function injectToken(operation, params, cliToken) {
const tokenParam = operation.parameters.find((parameter) => parameter.name === "token");
if (!tokenParam || params.token !== undefined) {
return;
}
if (!cliToken) {
fail("--token is required for this operation.", {
operationId: operation.operationId,
});
}
params.token = cliToken;
}
function validateRequired(operation, params) {
const missing = [];
for (const parameter of operation.parameters) {
if (parameter.required && params[parameter.name] === undefined) {
missing.push(parameter.name);
}
}
if (operation.requestBody?.required && params.body === undefined) {
missing.push("body");
}
if (missing.length) {
fail("Missing required parameters.", {
missing,
operationId: operation.operationId,
});
}
}
function applyPathParams(operation, params, url) {
let pathname = url.pathname;
for (const parameter of operation.parameters.filter((item) => item.location === "path")) {
const value = params[parameter.name];
if (value === undefined) {
continue;
}
pathname = pathname.replace(`{parameter.name}`, encodeURIComponent(String(value)));
}
url.pathname = pathname;
}
function applyQueryParams(operation, params, url) {
for (const parameter of operation.parameters.filter((item) => item.location === "query")) {
const value = params[parameter.name];
if (value === undefined) {
continue;
}
appendValue(url.searchParams, parameter.name, value);
}
}
function appendValue(searchParams, name, value) {
if (Array.isArray(value)) {
for (const item of value) {
appendValue(searchParams, name, item);
}
return;
}
if (value && typeof value === "object") {
searchParams.append(name, JSON.stringify(value));
return;
}
searchParams.append(name, String(value));
}
function ensureBaseUrl(value) {
return value.endsWith("/") ? value : `value/`;
}
function fail(message, details = null) {
const payload = { message };
if (details) {
payload.details = details;
}
process.stderr.write(`JSON.stringify(payload, null, 2)\n`);
process.exit(1);
}
FILE:generated/operations.json
{
"baseUrl": "https://api.justoneapi.com",
"description": "Call GET /api/douyin-xingtu/search-kol-simple/v1 for Douyin Creator Marketplace (Xingtu) KOL Keyword Search through JustOneAPI with keyword, page, and platformSource.",
"displayName": "Douyin Creator Marketplace (Xingtu) KOL Keyword Search",
"endpointPath": "search-kol-simple",
"openapi": "3.1.0",
"operations": [
{
"description": "Get Douyin Creator Marketplace (Xingtu) kOL Keyword Search data, including matching creators and discovery data, for creator sourcing and shortlist building.",
"method": "GET",
"operationId": "searchKolSimpleV1",
"parameters": [
{
"defaultValue": null,
"description": "User authentication token.",
"enumValues": [],
"location": "query",
"name": "token",
"required": true,
"schemaType": "string"
},
{
"defaultValue": null,
"description": "Search keywords.",
"enumValues": [],
"location": "query",
"name": "keyword",
"required": true,
"schemaType": "string"
},
{
"defaultValue": null,
"description": "Platform source.\n\nAvailable Values:\n- `_1`: Douyin\n- `_2`: Toutiao\n- `_3`: Xigua",
"enumValues": [
"_1",
"_2",
"_3"
],
"location": "query",
"name": "platformSource",
"required": true,
"schemaType": "string"
},
{
"defaultValue": null,
"description": "Page number.",
"enumValues": [],
"location": "query",
"name": "page",
"required": true,
"schemaType": "integer"
},
{
"defaultValue": false,
"description": "Enable cache.",
"enumValues": [],
"location": "query",
"name": "acceptCache",
"required": false,
"schemaType": "boolean"
}
],
"path": "/api/douyin-xingtu/search-kol-simple/v1",
"requestBody": null,
"responses": [
{
"description": "OK",
"statusCode": "200"
}
],
"summary": "KOL Keyword Search",
"tags": [
"Douyin Creator Marketplace (Xingtu)"
]
}
],
"platformKey": "douyin-xingtu",
"primaryTag": "Douyin Creator Marketplace (Xingtu)",
"skillName": "justoneapi_douyin_xingtu_search_kol_simple",
"skillType": "interface",
"slug": "justoneapi-douyin-xingtu-search-kol-simple",
"sourceTitle": "OpenAPI definition"
}
FILE:generated/operations.md
# Douyin Creator Marketplace (Xingtu) KOL Keyword Search operations
Generated from JustOneAPI OpenAPI for platform key `douyin-xingtu`.
Endpoint group: `search-kol-simple`.
## `searchKolSimpleV1`
- Method: `GET`
- Path: `/api/douyin-xingtu/search-kol-simple/v1`
- Summary: KOL Keyword Search
- Description: Get Douyin Creator Marketplace (Xingtu) kOL Keyword Search data, including matching creators and discovery data, for creator sourcing and shortlist building.
- Tags: `Douyin Creator Marketplace (Xingtu)`
### Parameters
| Name | In | Required | Type | Default | Description |
| --- | --- | --- | --- | --- | --- |
| `token` | `query` | yes | `string` | n/a | User authentication token. |
| `keyword` | `query` | yes | `string` | n/a | Search keywords. |
| `platformSource` | `query` | yes | `string` | n/a | Platform source.
Available Values:
- `_1`: Douyin
- `_2`: Toutiao
- `_3`: Xigua |
| enum | values | no | n/a | n/a | `_1`, `_2`, `_3` |
| `page` | `query` | yes | `integer` | n/a | Page number. |
| `acceptCache` | `query` | no | `boolean` | `false` | Enable cache. |
### Request body
No request body.
### Responses
- `200`: OK
Call GET /api/douyin-xingtu/gw/api/gsearch/search_for_author_square/v1 for Douyin Creator Marketplace (Xingtu) Creator Search through JustOneAPI.
---
name: Douyin Creator Marketplace (Xingtu) Creator Search API
description: Call GET /api/douyin-xingtu/gw/api/gsearch/search_for_author_square/v1 for Douyin Creator Marketplace (Xingtu) Creator Search through JustOneAPI.
author: JustOneAPI
homepage: https://api.justoneapi.com
metadata: {"openclaw":{"homepage":"https://api.justoneapi.com","primaryEnv":"JUST_ONE_API_TOKEN","requires":{"bins":["node"],"env":["JUST_ONE_API_TOKEN"]},"skillKey":"justoneapi_douyin_xingtu_gw_api_gsearch_search_for_author_square"}}
---
# Douyin Creator Marketplace (Xingtu) Creator Search
Use this focused JustOneAPI skill for creator Search in Douyin Creator Marketplace (Xingtu). It targets `GET /api/douyin-xingtu/gw/api/gsearch/search_for_author_square/v1`. It has no required non-token parameters. OpenAPI describes it as: Get Douyin Creator Marketplace (Xingtu) creator Search data, including filters, returning profile, and audience, for discovery, comparison, and shortlist building.
## Endpoint Scope
- Platform key: `douyin-xingtu`
- Endpoint key: `gw/api/gsearch/search_for_author_square`
- Platform family: Douyin Creator Marketplace (Xingtu)
- Skill slug: `justoneapi-douyin-xingtu-gw-api-gsearch-search-for-author-square`
| Operation | Version | Method | Path | OpenAPI summary |
| --- | --- | --- | --- | --- |
| `gwApiGsearchSearchForAuthorSquareV1` | `v1` | `GET` | `/api/douyin-xingtu/gw/api/gsearch/search_for_author_square/v1` | Creator Search |
## Inputs
| Parameter | In | Required by | Optional by | Type | Notes |
| --- | --- | --- | --- | --- | --- |
| `contentTag` | `query` | n/a | all | `string` | Content tag filter |
| `followerRange` | `query` | n/a | all | `string` | Follower range (e.g., 10-100) |
| `keyword` | `query` | n/a | all | `string` | Search keyword |
| `kolPriceRange` | `query` | n/a | all | `string` | KOL price range (e.g., 10000-50000) |
| `kolPriceType` | `query` | n/a | all | `string` | KOL price type. Available Values: - `视频1_20s`: Video 1-20s - `视频21_60s`: Video 21-60s - `视频60s以上`: Video > 60s - `定制短剧单集`: Mini-drama episode - `千次自然播放量`: CPM naturally - `短直种草视频`: Short-live seeding video - `短直预热视频`: Short-live warm-up video - `短直明星种草`: Celebrity short-live seeding - `短直明星预热`: Celebrity short-live warm-up - `明星视频`: Celebrity video - `合集视频`: Collection video - `抖音短视频共创_主投稿达人`: Douyin short video co-creation - main creator - `抖音短视频共创_参与达人`: Douyin short video co-creation - participant |
| `kolPriceType` enum | values | n/a | n/a | n/a | `千次自然播放量`, `合集视频`, `定制短剧单集`, `抖音短视频共创_主投稿达人`, `抖音短视频共创_参与达人`, `明星视频`, `短直明星种草`, `短直明星预热`, `短直种草视频`, `短直预热视频`, `视频1_20s`, `视频21_60s`, `视频60s以上` |
| `page` | `query` | n/a | all | `integer` | Page number for pagination |
| `searchType` | `query` | n/a | all | `string` | Search criteria type. Available Values: - `NICKNAME`: By Nickname - `CONTENT`: By Content |
| `searchType` enum | values | n/a | n/a | n/a | `CONTENT`, `NICKNAME` |
Request body: none documented; send parameters through path or query arguments.
## Version Choice
Use `gwApiGsearchSearchForAuthorSquareV1` for the documented `v1` endpoint. There are no alternate versions grouped in this skill.
## Run This Endpoint
Supported operation IDs in this skill: `gwApiGsearchSearchForAuthorSquareV1`.
```bash
node {baseDir}/bin/run.mjs --operation "gwApiGsearchSearchForAuthorSquareV1" --token "$JUST_ONE_API_TOKEN" --params-json '{"key":"value"}'
```
Ask for any missing required parameter before calling the helper. Keep user-provided IDs, cursors, keywords, and filters unchanged.
## Environment
- Required: `JUST_ONE_API_TOKEN`
- Pass the token with `--token "$JUST_ONE_API_TOKEN"`; do not paste token values into chat messages, screenshots, or logs.
- Get a token from [Just One API Dashboard](https://dashboard.justoneapi.com/en/login?utm_source=clawhub.ai&utm_medium=referral&utm_campaign=justoneapi_douyin_xingtu_gw_api_gsearch_search_for_author_square&utm_content=project_link).
- Authentication details: [Just One API Usage Guide](https://docs.justoneapi.com/en/?utm_source=clawhub.ai&utm_medium=referral&utm_campaign=justoneapi_douyin_xingtu_gw_api_gsearch_search_for_author_square&utm_content=project_link).
## Output Focus
- State the operation ID and endpoint path used, for example `gwApiGsearchSearchForAuthorSquareV1` on `/api/douyin-xingtu/gw/api/gsearch/search_for_author_square/v1`.
- Prioritize fields that support this endpoint purpose: Get Douyin Creator Marketplace (Xingtu) creator Search data, including filters, returning profile, and audience, for discovery, comparison, and shortlist building.
- Return raw JSON only after the short, endpoint-specific summary.
- If the backend errors, include the backend payload and the exact operation ID.
FILE:bin/run.mjs
#!/usr/bin/env node
const manifest = {
"baseUrl": "https://api.justoneapi.com",
"description": "Call GET /api/douyin-xingtu/gw/api/gsearch/search_for_author_square/v1 for Douyin Creator Marketplace (Xingtu) Creator Search through JustOneAPI.",
"displayName": "Douyin Creator Marketplace (Xingtu) Creator Search",
"openapi": "3.1.0",
"platformKey": "douyin-xingtu",
"primaryTag": "Douyin Creator Marketplace (Xingtu)",
"skillName": "justoneapi_douyin_xingtu_gw_api_gsearch_search_for_author_square",
"slug": "justoneapi-douyin-xingtu-gw-api-gsearch-search-for-author-square",
"sourceTitle": "OpenAPI definition",
"operations": [
{
"description": "Get Douyin Creator Marketplace (Xingtu) creator Search data, including filters, returning profile, and audience, for discovery, comparison, and shortlist building.",
"method": "GET",
"operationId": "gwApiGsearchSearchForAuthorSquareV1",
"parameters": [
{
"defaultValue": null,
"description": "User authentication token.",
"enumValues": [],
"location": "query",
"name": "token",
"required": true,
"schemaType": "string"
},
{
"defaultValue": "",
"description": "Search keyword.",
"enumValues": [],
"location": "query",
"name": "keyword",
"required": false,
"schemaType": "string"
},
{
"defaultValue": 1,
"description": "Page number for pagination.",
"enumValues": [],
"location": "query",
"name": "page",
"required": false,
"schemaType": "integer"
},
{
"defaultValue": "NICKNAME",
"description": "Search criteria type.\n\nAvailable Values:\n- `NICKNAME`: By Nickname\n- `CONTENT`: By Content",
"enumValues": [
"NICKNAME",
"CONTENT"
],
"location": "query",
"name": "searchType",
"required": false,
"schemaType": "string"
},
{
"defaultValue": null,
"description": "Follower range (e.g., 10-100).",
"enumValues": [],
"location": "query",
"name": "followerRange",
"required": false,
"schemaType": "string"
},
{
"defaultValue": null,
"description": "KOL price type.\n\nAvailable Values:\n- `视频1_20s`: Video 1-20s\n- `视频21_60s`: Video 21-60s\n- `视频60s以上`: Video > 60s\n- `定制短剧单集`: Mini-drama episode\n- `千次自然播放量`: CPM naturally\n- `短直种草视频`: Short-live seeding video\n- `短直预热视频`: Short-live warm-up video\n- `短直明星种草`: Celebrity short-live seeding\n- `短直明星预热`: Celebrity short-live warm-up\n- `明星视频`: Celebrity video\n- `合集视频`: Collection video\n- `抖音短视频共创_主投稿达人`: Douyin short video co-creation - main creator\n- `抖音短视频共创_参与达人`: Douyin short video co-creation - participant",
"enumValues": [
"视频1_20s",
"视频21_60s",
"视频60s以上",
"定制短剧单集",
"千次自然播放量",
"短直种草视频",
"短直预热视频",
"短直明星种草",
"短直明星预热",
"明星视频",
"合集视频",
"抖音短视频共创_主投稿达人",
"抖音短视频共创_参与达人"
],
"location": "query",
"name": "kolPriceType",
"required": false,
"schemaType": "string"
},
{
"defaultValue": null,
"description": "KOL price range (e.g., 10000-50000).",
"enumValues": [],
"location": "query",
"name": "kolPriceRange",
"required": false,
"schemaType": "string"
},
{
"defaultValue": null,
"description": "Content tag filter.",
"enumValues": [],
"location": "query",
"name": "contentTag",
"required": false,
"schemaType": "string"
}
],
"path": "/api/douyin-xingtu/gw/api/gsearch/search_for_author_square/v1",
"requestBody": null,
"responses": [
{
"description": "OK",
"statusCode": "200"
}
],
"summary": "Creator Search",
"tags": [
"Douyin Creator Marketplace (Xingtu)"
]
}
],
"endpointPath": "gw/api/gsearch/search_for_author_square",
"skillType": "interface"
};
const args = parseArgs(process.argv.slice(2));
if (!args.operation) {
fail("Missing required --operation argument.");
}
const operation = manifest.operations.find((item) => item.operationId === args.operation);
if (!operation) {
fail(`Unknown operation "args.operation".`, { availableOperations: manifest.operations.map((item) => item.operationId) });
}
const params = parseParams(args.paramsJson);
applyDefaults(operation, params);
injectToken(operation, params, args.token);
validateRequired(operation, params);
const baseUrl = manifest.baseUrl;
const url = new URL(operation.path, ensureBaseUrl(baseUrl));
applyPathParams(operation, params, url);
applyQueryParams(operation, params, url);
const requestInit = {
headers: {
"accept": "application/json",
},
method: operation.method,
};
if (operation.requestBody && params.body !== undefined) {
requestInit.body = JSON.stringify(params.body);
requestInit.headers["content-type"] = operation.requestBody.contentType || "application/json";
}
let response;
try {
response = await fetch(url, requestInit);
} catch (error) {
fail("Network request failed.", {
cause: error instanceof Error ? error.message : String(error),
operationId: operation.operationId,
});
}
const rawBody = await response.text();
let parsedBody;
try {
parsedBody = rawBody ? JSON.parse(rawBody) : null;
} catch (error) {
if (!response.ok) {
fail("Backend returned a non-JSON error response.", {
body: rawBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
fail("Backend returned invalid JSON.", {
body: rawBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
if (!response.ok) {
fail("Backend request failed.", {
body: parsedBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
process.stdout.write(`JSON.stringify(parsedBody, null, 2)\n`);
function parseArgs(argv) {
const parsed = { operation: null, paramsJson: "{}", token: null };
for (let index = 0; index < argv.length; index += 1) {
const flag = argv[index];
const value = argv[index + 1];
if (flag === "--operation") {
parsed.operation = value;
index += 1;
continue;
}
if (flag === "--params-json") {
parsed.paramsJson = value;
index += 1;
continue;
}
if (flag === "--token") {
parsed.token = value;
index += 1;
continue;
}
fail(`Unknown argument "flag".`);
}
return parsed;
}
function parseParams(input) {
try {
const parsed = JSON.parse(input || "{}");
if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) {
fail("--params-json must decode to a JSON object.");
}
return parsed;
} catch (error) {
fail("Failed to parse --params-json.", {
cause: error instanceof Error ? error.message : String(error),
});
}
}
function applyDefaults(operation, params) {
for (const parameter of operation.parameters) {
if (params[parameter.name] === undefined && parameter.defaultValue !== null) {
params[parameter.name] = parameter.defaultValue;
}
}
}
function injectToken(operation, params, cliToken) {
const tokenParam = operation.parameters.find((parameter) => parameter.name === "token");
if (!tokenParam || params.token !== undefined) {
return;
}
if (!cliToken) {
fail("--token is required for this operation.", {
operationId: operation.operationId,
});
}
params.token = cliToken;
}
function validateRequired(operation, params) {
const missing = [];
for (const parameter of operation.parameters) {
if (parameter.required && params[parameter.name] === undefined) {
missing.push(parameter.name);
}
}
if (operation.requestBody?.required && params.body === undefined) {
missing.push("body");
}
if (missing.length) {
fail("Missing required parameters.", {
missing,
operationId: operation.operationId,
});
}
}
function applyPathParams(operation, params, url) {
let pathname = url.pathname;
for (const parameter of operation.parameters.filter((item) => item.location === "path")) {
const value = params[parameter.name];
if (value === undefined) {
continue;
}
pathname = pathname.replace(`{parameter.name}`, encodeURIComponent(String(value)));
}
url.pathname = pathname;
}
function applyQueryParams(operation, params, url) {
for (const parameter of operation.parameters.filter((item) => item.location === "query")) {
const value = params[parameter.name];
if (value === undefined) {
continue;
}
appendValue(url.searchParams, parameter.name, value);
}
}
function appendValue(searchParams, name, value) {
if (Array.isArray(value)) {
for (const item of value) {
appendValue(searchParams, name, item);
}
return;
}
if (value && typeof value === "object") {
searchParams.append(name, JSON.stringify(value));
return;
}
searchParams.append(name, String(value));
}
function ensureBaseUrl(value) {
return value.endsWith("/") ? value : `value/`;
}
function fail(message, details = null) {
const payload = { message };
if (details) {
payload.details = details;
}
process.stderr.write(`JSON.stringify(payload, null, 2)\n`);
process.exit(1);
}
FILE:generated/operations.json
{
"baseUrl": "https://api.justoneapi.com",
"description": "Call GET /api/douyin-xingtu/gw/api/gsearch/search_for_author_square/v1 for Douyin Creator Marketplace (Xingtu) Creator Search through JustOneAPI.",
"displayName": "Douyin Creator Marketplace (Xingtu) Creator Search",
"endpointPath": "gw/api/gsearch/search_for_author_square",
"openapi": "3.1.0",
"operations": [
{
"description": "Get Douyin Creator Marketplace (Xingtu) creator Search data, including filters, returning profile, and audience, for discovery, comparison, and shortlist building.",
"method": "GET",
"operationId": "gwApiGsearchSearchForAuthorSquareV1",
"parameters": [
{
"defaultValue": null,
"description": "User authentication token.",
"enumValues": [],
"location": "query",
"name": "token",
"required": true,
"schemaType": "string"
},
{
"defaultValue": "",
"description": "Search keyword.",
"enumValues": [],
"location": "query",
"name": "keyword",
"required": false,
"schemaType": "string"
},
{
"defaultValue": 1,
"description": "Page number for pagination.",
"enumValues": [],
"location": "query",
"name": "page",
"required": false,
"schemaType": "integer"
},
{
"defaultValue": "NICKNAME",
"description": "Search criteria type.\n\nAvailable Values:\n- `NICKNAME`: By Nickname\n- `CONTENT`: By Content",
"enumValues": [
"NICKNAME",
"CONTENT"
],
"location": "query",
"name": "searchType",
"required": false,
"schemaType": "string"
},
{
"defaultValue": null,
"description": "Follower range (e.g., 10-100).",
"enumValues": [],
"location": "query",
"name": "followerRange",
"required": false,
"schemaType": "string"
},
{
"defaultValue": null,
"description": "KOL price type.\n\nAvailable Values:\n- `视频1_20s`: Video 1-20s\n- `视频21_60s`: Video 21-60s\n- `视频60s以上`: Video > 60s\n- `定制短剧单集`: Mini-drama episode\n- `千次自然播放量`: CPM naturally\n- `短直种草视频`: Short-live seeding video\n- `短直预热视频`: Short-live warm-up video\n- `短直明星种草`: Celebrity short-live seeding\n- `短直明星预热`: Celebrity short-live warm-up\n- `明星视频`: Celebrity video\n- `合集视频`: Collection video\n- `抖音短视频共创_主投稿达人`: Douyin short video co-creation - main creator\n- `抖音短视频共创_参与达人`: Douyin short video co-creation - participant",
"enumValues": [
"视频1_20s",
"视频21_60s",
"视频60s以上",
"定制短剧单集",
"千次自然播放量",
"短直种草视频",
"短直预热视频",
"短直明星种草",
"短直明星预热",
"明星视频",
"合集视频",
"抖音短视频共创_主投稿达人",
"抖音短视频共创_参与达人"
],
"location": "query",
"name": "kolPriceType",
"required": false,
"schemaType": "string"
},
{
"defaultValue": null,
"description": "KOL price range (e.g., 10000-50000).",
"enumValues": [],
"location": "query",
"name": "kolPriceRange",
"required": false,
"schemaType": "string"
},
{
"defaultValue": null,
"description": "Content tag filter.",
"enumValues": [],
"location": "query",
"name": "contentTag",
"required": false,
"schemaType": "string"
}
],
"path": "/api/douyin-xingtu/gw/api/gsearch/search_for_author_square/v1",
"requestBody": null,
"responses": [
{
"description": "OK",
"statusCode": "200"
}
],
"summary": "Creator Search",
"tags": [
"Douyin Creator Marketplace (Xingtu)"
]
}
],
"platformKey": "douyin-xingtu",
"primaryTag": "Douyin Creator Marketplace (Xingtu)",
"skillName": "justoneapi_douyin_xingtu_gw_api_gsearch_search_for_author_square",
"skillType": "interface",
"slug": "justoneapi-douyin-xingtu-gw-api-gsearch-search-for-author-square",
"sourceTitle": "OpenAPI definition"
}
FILE:generated/operations.md
# Douyin Creator Marketplace (Xingtu) Creator Search operations
Generated from JustOneAPI OpenAPI for platform key `douyin-xingtu`.
Endpoint group: `gw/api/gsearch/search_for_author_square`.
## `gwApiGsearchSearchForAuthorSquareV1`
- Method: `GET`
- Path: `/api/douyin-xingtu/gw/api/gsearch/search_for_author_square/v1`
- Summary: Creator Search
- Description: Get Douyin Creator Marketplace (Xingtu) creator Search data, including filters, returning profile, and audience, for discovery, comparison, and shortlist building.
- Tags: `Douyin Creator Marketplace (Xingtu)`
### Parameters
| Name | In | Required | Type | Default | Description |
| --- | --- | --- | --- | --- | --- |
| `token` | `query` | yes | `string` | n/a | User authentication token. |
| `keyword` | `query` | no | `string` | n/a | Search keyword. |
| `page` | `query` | no | `integer` | `1` | Page number for pagination. |
| `searchType` | `query` | no | `string` | `NICKNAME` | Search criteria type.
Available Values:
- `NICKNAME`: By Nickname
- `CONTENT`: By Content |
| enum | values | no | n/a | n/a | `NICKNAME`, `CONTENT` |
| `followerRange` | `query` | no | `string` | n/a | Follower range (e.g., 10-100). |
| `kolPriceType` | `query` | no | `string` | n/a | KOL price type.
Available Values:
- `视频1_20s`: Video 1-20s
- `视频21_60s`: Video 21-60s
- `视频60s以上`: Video > 60s
- `定制短剧单集`: Mini-drama episode
- `千次自然播放量`: CPM naturally
- `短直种草视频`: Short-live seeding video
- `短直预热视频`: Short-live warm-up video
- `短直明星种草`: Celebrity short-live seeding
- `短直明星预热`: Celebrity short-live warm-up
- `明星视频`: Celebrity video
- `合集视频`: Collection video
- `抖音短视频共创_主投稿达人`: Douyin short video co-creation - main creator
- `抖音短视频共创_参与达人`: Douyin short video co-creation - participant |
| enum | values | no | n/a | n/a | `视频1_20s`, `视频21_60s`, `视频60s以上`, `定制短剧单集`, `千次自然播放量`, `短直种草视频`, `短直预热视频`, `短直明星种草`, `短直明星预热`, `明星视频`, `合集视频`, `抖音短视频共创_主投稿达人`, `抖音短视频共创_参与达人` |
| `kolPriceRange` | `query` | no | `string` | n/a | KOL price range (e.g., 10000-50000). |
| `contentTag` | `query` | no | `string` | n/a | Content tag filter. |
### Request body
No request body.
### Responses
- `200`: OK
Call GET /api/douyin-xingtu/gw/api/gauthor/get_author_content_hot_keywords/v1 for Douyin Creator Marketplace (Xingtu) KOL Content Keyword Analysis through Ju...
---
name: Douyin Creator Marketplace (Xingtu) KOL Content Keyword Analysis API
description: Call GET /api/douyin-xingtu/gw/api/gauthor/get_author_content_hot_keywords/v1 for Douyin Creator Marketplace (Xingtu) KOL Content Keyword Analysis through JustOneAPI with oAuthorId.
author: JustOneAPI
homepage: https://api.justoneapi.com
metadata: {"openclaw":{"homepage":"https://api.justoneapi.com","primaryEnv":"JUST_ONE_API_TOKEN","requires":{"bins":["node"],"env":["JUST_ONE_API_TOKEN"]},"skillKey":"justoneapi_douyin_xingtu_gw_api_gauthor_get_author_content_hot_keywords"}}
---
# Douyin Creator Marketplace (Xingtu) KOL Content Keyword Analysis
Use this focused JustOneAPI skill for kOL Content Keyword Analysis in Douyin Creator Marketplace (Xingtu). It targets `GET /api/douyin-xingtu/gw/api/gauthor/get_author_content_hot_keywords/v1`. Required non-token inputs are `oAuthorId`. OpenAPI describes it as: Get Douyin Creator Marketplace (Xingtu) kOL Content Keyword Analysis data, including core metrics, trend signals, and performance indicators, for content theme analysis and creator positioning research.
## Endpoint Scope
- Platform key: `douyin-xingtu`
- Endpoint key: `gw/api/gauthor/get_author_content_hot_keywords`
- Platform family: Douyin Creator Marketplace (Xingtu)
- Skill slug: `justoneapi-douyin-xingtu-gw-api-gauthor-get-author-content-hot-keywords`
| Operation | Version | Method | Path | OpenAPI summary |
| --- | --- | --- | --- | --- |
| `gwApiGauthorGetAuthorContentHotKeywordsV1` | `v1` | `GET` | `/api/douyin-xingtu/gw/api/gauthor/get_author_content_hot_keywords/v1` | KOL Content Keyword Analysis |
## Inputs
| Parameter | In | Required by | Optional by | Type | Notes |
| --- | --- | --- | --- | --- | --- |
| `oAuthorId` | `query` | all | n/a | `string` | Author's unique ID |
Request body: none documented; send parameters through path or query arguments.
## Version Choice
Use `gwApiGauthorGetAuthorContentHotKeywordsV1` for the documented `v1` endpoint. There are no alternate versions grouped in this skill.
## Run This Endpoint
Supported operation IDs in this skill: `gwApiGauthorGetAuthorContentHotKeywordsV1`.
```bash
node {baseDir}/bin/run.mjs --operation "gwApiGauthorGetAuthorContentHotKeywordsV1" --token "$JUST_ONE_API_TOKEN" --params-json '{"oAuthorId":"<oAuthorId>"}'
```
Ask for any missing required parameter before calling the helper. Keep user-provided IDs, cursors, keywords, and filters unchanged.
## Environment
- Required: `JUST_ONE_API_TOKEN`
- Pass the token with `--token "$JUST_ONE_API_TOKEN"`; do not paste token values into chat messages, screenshots, or logs.
- Get a token from [Just One API Dashboard](https://dashboard.justoneapi.com/en/login?utm_source=clawhub.ai&utm_medium=referral&utm_campaign=justoneapi_douyin_xingtu_gw_api_gauthor_get_author_content_hot_keywords&utm_content=project_link).
- Authentication details: [Just One API Usage Guide](https://docs.justoneapi.com/en/?utm_source=clawhub.ai&utm_medium=referral&utm_campaign=justoneapi_douyin_xingtu_gw_api_gauthor_get_author_content_hot_keywords&utm_content=project_link).
## Output Focus
- State the operation ID and endpoint path used, for example `gwApiGauthorGetAuthorContentHotKeywordsV1` on `/api/douyin-xingtu/gw/api/gauthor/get_author_content_hot_keywords/v1`.
- Echo the required lookup scope (`oAuthorId`) before summarizing results.
- Prioritize fields that support this endpoint purpose: Get Douyin Creator Marketplace (Xingtu) kOL Content Keyword Analysis data, including core metrics, trend signals, and performance indicators, for content theme analysis and creator positioning research.
- Return raw JSON only after the short, endpoint-specific summary.
- If the backend errors, include the backend payload and the exact operation ID.
FILE:bin/run.mjs
#!/usr/bin/env node
const manifest = {
"baseUrl": "https://api.justoneapi.com",
"description": "Call GET /api/douyin-xingtu/gw/api/gauthor/get_author_content_hot_keywords/v1 for Douyin Creator Marketplace (Xingtu) KOL Content Keyword Analysis through JustOneAPI with oAuthorId.",
"displayName": "Douyin Creator Marketplace (Xingtu) KOL Content Keyword Analysis",
"openapi": "3.1.0",
"platformKey": "douyin-xingtu",
"primaryTag": "Douyin Creator Marketplace (Xingtu)",
"skillName": "justoneapi_douyin_xingtu_gw_api_gauthor_get_author_content_hot_keywords",
"slug": "justoneapi-douyin-xingtu-gw-api-gauthor-get-author-content-hot-keywords",
"sourceTitle": "OpenAPI definition",
"operations": [
{
"description": "Get Douyin Creator Marketplace (Xingtu) kOL Content Keyword Analysis data, including core metrics, trend signals, and performance indicators, for content theme analysis and creator positioning research.",
"method": "GET",
"operationId": "gwApiGauthorGetAuthorContentHotKeywordsV1",
"parameters": [
{
"defaultValue": null,
"description": "User authentication token.",
"enumValues": [],
"location": "query",
"name": "token",
"required": true,
"schemaType": "string"
},
{
"defaultValue": null,
"description": "Author's unique ID.",
"enumValues": [],
"location": "query",
"name": "oAuthorId",
"required": true,
"schemaType": "string"
}
],
"path": "/api/douyin-xingtu/gw/api/gauthor/get_author_content_hot_keywords/v1",
"requestBody": null,
"responses": [
{
"description": "OK",
"statusCode": "200"
}
],
"summary": "KOL Content Keyword Analysis",
"tags": [
"Douyin Creator Marketplace (Xingtu)"
]
}
],
"endpointPath": "gw/api/gauthor/get_author_content_hot_keywords",
"skillType": "interface"
};
const args = parseArgs(process.argv.slice(2));
if (!args.operation) {
fail("Missing required --operation argument.");
}
const operation = manifest.operations.find((item) => item.operationId === args.operation);
if (!operation) {
fail(`Unknown operation "args.operation".`, { availableOperations: manifest.operations.map((item) => item.operationId) });
}
const params = parseParams(args.paramsJson);
applyDefaults(operation, params);
injectToken(operation, params, args.token);
validateRequired(operation, params);
const baseUrl = manifest.baseUrl;
const url = new URL(operation.path, ensureBaseUrl(baseUrl));
applyPathParams(operation, params, url);
applyQueryParams(operation, params, url);
const requestInit = {
headers: {
"accept": "application/json",
},
method: operation.method,
};
if (operation.requestBody && params.body !== undefined) {
requestInit.body = JSON.stringify(params.body);
requestInit.headers["content-type"] = operation.requestBody.contentType || "application/json";
}
let response;
try {
response = await fetch(url, requestInit);
} catch (error) {
fail("Network request failed.", {
cause: error instanceof Error ? error.message : String(error),
operationId: operation.operationId,
});
}
const rawBody = await response.text();
let parsedBody;
try {
parsedBody = rawBody ? JSON.parse(rawBody) : null;
} catch (error) {
if (!response.ok) {
fail("Backend returned a non-JSON error response.", {
body: rawBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
fail("Backend returned invalid JSON.", {
body: rawBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
if (!response.ok) {
fail("Backend request failed.", {
body: parsedBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
process.stdout.write(`JSON.stringify(parsedBody, null, 2)\n`);
function parseArgs(argv) {
const parsed = { operation: null, paramsJson: "{}", token: null };
for (let index = 0; index < argv.length; index += 1) {
const flag = argv[index];
const value = argv[index + 1];
if (flag === "--operation") {
parsed.operation = value;
index += 1;
continue;
}
if (flag === "--params-json") {
parsed.paramsJson = value;
index += 1;
continue;
}
if (flag === "--token") {
parsed.token = value;
index += 1;
continue;
}
fail(`Unknown argument "flag".`);
}
return parsed;
}
function parseParams(input) {
try {
const parsed = JSON.parse(input || "{}");
if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) {
fail("--params-json must decode to a JSON object.");
}
return parsed;
} catch (error) {
fail("Failed to parse --params-json.", {
cause: error instanceof Error ? error.message : String(error),
});
}
}
function applyDefaults(operation, params) {
for (const parameter of operation.parameters) {
if (params[parameter.name] === undefined && parameter.defaultValue !== null) {
params[parameter.name] = parameter.defaultValue;
}
}
}
function injectToken(operation, params, cliToken) {
const tokenParam = operation.parameters.find((parameter) => parameter.name === "token");
if (!tokenParam || params.token !== undefined) {
return;
}
if (!cliToken) {
fail("--token is required for this operation.", {
operationId: operation.operationId,
});
}
params.token = cliToken;
}
function validateRequired(operation, params) {
const missing = [];
for (const parameter of operation.parameters) {
if (parameter.required && params[parameter.name] === undefined) {
missing.push(parameter.name);
}
}
if (operation.requestBody?.required && params.body === undefined) {
missing.push("body");
}
if (missing.length) {
fail("Missing required parameters.", {
missing,
operationId: operation.operationId,
});
}
}
function applyPathParams(operation, params, url) {
let pathname = url.pathname;
for (const parameter of operation.parameters.filter((item) => item.location === "path")) {
const value = params[parameter.name];
if (value === undefined) {
continue;
}
pathname = pathname.replace(`{parameter.name}`, encodeURIComponent(String(value)));
}
url.pathname = pathname;
}
function applyQueryParams(operation, params, url) {
for (const parameter of operation.parameters.filter((item) => item.location === "query")) {
const value = params[parameter.name];
if (value === undefined) {
continue;
}
appendValue(url.searchParams, parameter.name, value);
}
}
function appendValue(searchParams, name, value) {
if (Array.isArray(value)) {
for (const item of value) {
appendValue(searchParams, name, item);
}
return;
}
if (value && typeof value === "object") {
searchParams.append(name, JSON.stringify(value));
return;
}
searchParams.append(name, String(value));
}
function ensureBaseUrl(value) {
return value.endsWith("/") ? value : `value/`;
}
function fail(message, details = null) {
const payload = { message };
if (details) {
payload.details = details;
}
process.stderr.write(`JSON.stringify(payload, null, 2)\n`);
process.exit(1);
}
FILE:generated/operations.json
{
"baseUrl": "https://api.justoneapi.com",
"description": "Call GET /api/douyin-xingtu/gw/api/gauthor/get_author_content_hot_keywords/v1 for Douyin Creator Marketplace (Xingtu) KOL Content Keyword Analysis through JustOneAPI with oAuthorId.",
"displayName": "Douyin Creator Marketplace (Xingtu) KOL Content Keyword Analysis",
"endpointPath": "gw/api/gauthor/get_author_content_hot_keywords",
"openapi": "3.1.0",
"operations": [
{
"description": "Get Douyin Creator Marketplace (Xingtu) kOL Content Keyword Analysis data, including core metrics, trend signals, and performance indicators, for content theme analysis and creator positioning research.",
"method": "GET",
"operationId": "gwApiGauthorGetAuthorContentHotKeywordsV1",
"parameters": [
{
"defaultValue": null,
"description": "User authentication token.",
"enumValues": [],
"location": "query",
"name": "token",
"required": true,
"schemaType": "string"
},
{
"defaultValue": null,
"description": "Author's unique ID.",
"enumValues": [],
"location": "query",
"name": "oAuthorId",
"required": true,
"schemaType": "string"
}
],
"path": "/api/douyin-xingtu/gw/api/gauthor/get_author_content_hot_keywords/v1",
"requestBody": null,
"responses": [
{
"description": "OK",
"statusCode": "200"
}
],
"summary": "KOL Content Keyword Analysis",
"tags": [
"Douyin Creator Marketplace (Xingtu)"
]
}
],
"platformKey": "douyin-xingtu",
"primaryTag": "Douyin Creator Marketplace (Xingtu)",
"skillName": "justoneapi_douyin_xingtu_gw_api_gauthor_get_author_content_hot_keywords",
"skillType": "interface",
"slug": "justoneapi-douyin-xingtu-gw-api-gauthor-get-author-content-hot-keywords",
"sourceTitle": "OpenAPI definition"
}
FILE:generated/operations.md
# Douyin Creator Marketplace (Xingtu) KOL Content Keyword Analysis operations
Generated from JustOneAPI OpenAPI for platform key `douyin-xingtu`.
Endpoint group: `gw/api/gauthor/get_author_content_hot_keywords`.
## `gwApiGauthorGetAuthorContentHotKeywordsV1`
- Method: `GET`
- Path: `/api/douyin-xingtu/gw/api/gauthor/get_author_content_hot_keywords/v1`
- Summary: KOL Content Keyword Analysis
- Description: Get Douyin Creator Marketplace (Xingtu) kOL Content Keyword Analysis data, including core metrics, trend signals, and performance indicators, for content theme analysis and creator positioning research.
- Tags: `Douyin Creator Marketplace (Xingtu)`
### Parameters
| Name | In | Required | Type | Default | Description |
| --- | --- | --- | --- | --- | --- |
| `token` | `query` | yes | `string` | n/a | User authentication token. |
| `oAuthorId` | `query` | yes | `string` | n/a | Author's unique ID. |
### Request body
No request body.
### Responses
- `200`: OK
Call GET /api/douyin-xingtu/gw/api/data_sp/item_report_trend/v1 for Douyin Creator Marketplace (Xingtu) Item Report Trends through JustOneAPI with itemId.
---
name: Douyin Creator Marketplace (Xingtu) Item Report Trends API
description: Call GET /api/douyin-xingtu/gw/api/data_sp/item_report_trend/v1 for Douyin Creator Marketplace (Xingtu) Item Report Trends through JustOneAPI with itemId.
author: JustOneAPI
homepage: https://api.justoneapi.com
metadata: {"openclaw":{"homepage":"https://api.justoneapi.com","primaryEnv":"JUST_ONE_API_TOKEN","requires":{"bins":["node"],"env":["JUST_ONE_API_TOKEN"]},"skillKey":"justoneapi_douyin_xingtu_gw_api_data_sp_item_report_trend"}}
---
# Douyin Creator Marketplace (Xingtu) Item Report Trends
Use this focused JustOneAPI skill for item Report Trends in Douyin Creator Marketplace (Xingtu). It targets `GET /api/douyin-xingtu/gw/api/data_sp/item_report_trend/v1`. Required non-token inputs are `itemId`. OpenAPI describes it as: Get Douyin Creator Marketplace (Xingtu) item Report Trend data, including time-based changes in item performance metrics, for creator evaluation, campaign planning, and marketplace research.
## Endpoint Scope
- Platform key: `douyin-xingtu`
- Endpoint key: `gw/api/data_sp/item_report_trend`
- Platform family: Douyin Creator Marketplace (Xingtu)
- Skill slug: `justoneapi-douyin-xingtu-gw-api-data-sp-item-report-trend`
| Operation | Version | Method | Path | OpenAPI summary |
| --- | --- | --- | --- | --- |
| `gwApiDataSpItemReportTrendV1` | `v1` | `GET` | `/api/douyin-xingtu/gw/api/data_sp/item_report_trend/v1` | Item Report Trends |
## Inputs
| Parameter | In | Required by | Optional by | Type | Notes |
| --- | --- | --- | --- | --- | --- |
| `itemId` | `query` | all | n/a | `string` | Item's unique ID |
Request body: none documented; send parameters through path or query arguments.
## Version Choice
Use `gwApiDataSpItemReportTrendV1` for the documented `v1` endpoint. There are no alternate versions grouped in this skill.
## Run This Endpoint
Supported operation IDs in this skill: `gwApiDataSpItemReportTrendV1`.
```bash
node {baseDir}/bin/run.mjs --operation "gwApiDataSpItemReportTrendV1" --token "$JUST_ONE_API_TOKEN" --params-json '{"itemId":"<itemId>"}'
```
Ask for any missing required parameter before calling the helper. Keep user-provided IDs, cursors, keywords, and filters unchanged.
## Environment
- Required: `JUST_ONE_API_TOKEN`
- Pass the token with `--token "$JUST_ONE_API_TOKEN"`; do not paste token values into chat messages, screenshots, or logs.
- Get a token from [Just One API Dashboard](https://dashboard.justoneapi.com/en/login?utm_source=clawhub.ai&utm_medium=referral&utm_campaign=justoneapi_douyin_xingtu_gw_api_data_sp_item_report_trend&utm_content=project_link).
- Authentication details: [Just One API Usage Guide](https://docs.justoneapi.com/en/?utm_source=clawhub.ai&utm_medium=referral&utm_campaign=justoneapi_douyin_xingtu_gw_api_data_sp_item_report_trend&utm_content=project_link).
## Output Focus
- State the operation ID and endpoint path used, for example `gwApiDataSpItemReportTrendV1` on `/api/douyin-xingtu/gw/api/data_sp/item_report_trend/v1`.
- Echo the required lookup scope (`itemId`) before summarizing results.
- Prioritize fields that support this endpoint purpose: Get Douyin Creator Marketplace (Xingtu) item Report Trend data, including time-based changes in item performance metrics, for creator evaluation, campaign planning, and marketplace research.
- Return raw JSON only after the short, endpoint-specific summary.
- If the backend errors, include the backend payload and the exact operation ID.
FILE:bin/run.mjs
#!/usr/bin/env node
const manifest = {
"baseUrl": "https://api.justoneapi.com",
"description": "Call GET /api/douyin-xingtu/gw/api/data_sp/item_report_trend/v1 for Douyin Creator Marketplace (Xingtu) Item Report Trends through JustOneAPI with itemId.",
"displayName": "Douyin Creator Marketplace (Xingtu) Item Report Trends",
"openapi": "3.1.0",
"platformKey": "douyin-xingtu",
"primaryTag": "Douyin Creator Marketplace (Xingtu)",
"skillName": "justoneapi_douyin_xingtu_gw_api_data_sp_item_report_trend",
"slug": "justoneapi-douyin-xingtu-gw-api-data-sp-item-report-trend",
"sourceTitle": "OpenAPI definition",
"operations": [
{
"description": "Get Douyin Creator Marketplace (Xingtu) item Report Trend data, including time-based changes in item performance metrics, for creator evaluation, campaign planning, and marketplace research.",
"method": "GET",
"operationId": "gwApiDataSpItemReportTrendV1",
"parameters": [
{
"defaultValue": null,
"description": "User authentication token.",
"enumValues": [],
"location": "query",
"name": "token",
"required": true,
"schemaType": "string"
},
{
"defaultValue": null,
"description": "Item's unique ID.",
"enumValues": [],
"location": "query",
"name": "itemId",
"required": true,
"schemaType": "string"
}
],
"path": "/api/douyin-xingtu/gw/api/data_sp/item_report_trend/v1",
"requestBody": null,
"responses": [
{
"description": "OK",
"statusCode": "200"
}
],
"summary": "Item Report Trends",
"tags": [
"Douyin Creator Marketplace (Xingtu)"
]
}
],
"endpointPath": "gw/api/data_sp/item_report_trend",
"skillType": "interface"
};
const args = parseArgs(process.argv.slice(2));
if (!args.operation) {
fail("Missing required --operation argument.");
}
const operation = manifest.operations.find((item) => item.operationId === args.operation);
if (!operation) {
fail(`Unknown operation "args.operation".`, { availableOperations: manifest.operations.map((item) => item.operationId) });
}
const params = parseParams(args.paramsJson);
applyDefaults(operation, params);
injectToken(operation, params, args.token);
validateRequired(operation, params);
const baseUrl = manifest.baseUrl;
const url = new URL(operation.path, ensureBaseUrl(baseUrl));
applyPathParams(operation, params, url);
applyQueryParams(operation, params, url);
const requestInit = {
headers: {
"accept": "application/json",
},
method: operation.method,
};
if (operation.requestBody && params.body !== undefined) {
requestInit.body = JSON.stringify(params.body);
requestInit.headers["content-type"] = operation.requestBody.contentType || "application/json";
}
let response;
try {
response = await fetch(url, requestInit);
} catch (error) {
fail("Network request failed.", {
cause: error instanceof Error ? error.message : String(error),
operationId: operation.operationId,
});
}
const rawBody = await response.text();
let parsedBody;
try {
parsedBody = rawBody ? JSON.parse(rawBody) : null;
} catch (error) {
if (!response.ok) {
fail("Backend returned a non-JSON error response.", {
body: rawBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
fail("Backend returned invalid JSON.", {
body: rawBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
if (!response.ok) {
fail("Backend request failed.", {
body: parsedBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
process.stdout.write(`JSON.stringify(parsedBody, null, 2)\n`);
function parseArgs(argv) {
const parsed = { operation: null, paramsJson: "{}", token: null };
for (let index = 0; index < argv.length; index += 1) {
const flag = argv[index];
const value = argv[index + 1];
if (flag === "--operation") {
parsed.operation = value;
index += 1;
continue;
}
if (flag === "--params-json") {
parsed.paramsJson = value;
index += 1;
continue;
}
if (flag === "--token") {
parsed.token = value;
index += 1;
continue;
}
fail(`Unknown argument "flag".`);
}
return parsed;
}
function parseParams(input) {
try {
const parsed = JSON.parse(input || "{}");
if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) {
fail("--params-json must decode to a JSON object.");
}
return parsed;
} catch (error) {
fail("Failed to parse --params-json.", {
cause: error instanceof Error ? error.message : String(error),
});
}
}
function applyDefaults(operation, params) {
for (const parameter of operation.parameters) {
if (params[parameter.name] === undefined && parameter.defaultValue !== null) {
params[parameter.name] = parameter.defaultValue;
}
}
}
function injectToken(operation, params, cliToken) {
const tokenParam = operation.parameters.find((parameter) => parameter.name === "token");
if (!tokenParam || params.token !== undefined) {
return;
}
if (!cliToken) {
fail("--token is required for this operation.", {
operationId: operation.operationId,
});
}
params.token = cliToken;
}
function validateRequired(operation, params) {
const missing = [];
for (const parameter of operation.parameters) {
if (parameter.required && params[parameter.name] === undefined) {
missing.push(parameter.name);
}
}
if (operation.requestBody?.required && params.body === undefined) {
missing.push("body");
}
if (missing.length) {
fail("Missing required parameters.", {
missing,
operationId: operation.operationId,
});
}
}
function applyPathParams(operation, params, url) {
let pathname = url.pathname;
for (const parameter of operation.parameters.filter((item) => item.location === "path")) {
const value = params[parameter.name];
if (value === undefined) {
continue;
}
pathname = pathname.replace(`{parameter.name}`, encodeURIComponent(String(value)));
}
url.pathname = pathname;
}
function applyQueryParams(operation, params, url) {
for (const parameter of operation.parameters.filter((item) => item.location === "query")) {
const value = params[parameter.name];
if (value === undefined) {
continue;
}
appendValue(url.searchParams, parameter.name, value);
}
}
function appendValue(searchParams, name, value) {
if (Array.isArray(value)) {
for (const item of value) {
appendValue(searchParams, name, item);
}
return;
}
if (value && typeof value === "object") {
searchParams.append(name, JSON.stringify(value));
return;
}
searchParams.append(name, String(value));
}
function ensureBaseUrl(value) {
return value.endsWith("/") ? value : `value/`;
}
function fail(message, details = null) {
const payload = { message };
if (details) {
payload.details = details;
}
process.stderr.write(`JSON.stringify(payload, null, 2)\n`);
process.exit(1);
}
FILE:generated/operations.json
{
"baseUrl": "https://api.justoneapi.com",
"description": "Call GET /api/douyin-xingtu/gw/api/data_sp/item_report_trend/v1 for Douyin Creator Marketplace (Xingtu) Item Report Trends through JustOneAPI with itemId.",
"displayName": "Douyin Creator Marketplace (Xingtu) Item Report Trends",
"endpointPath": "gw/api/data_sp/item_report_trend",
"openapi": "3.1.0",
"operations": [
{
"description": "Get Douyin Creator Marketplace (Xingtu) item Report Trend data, including time-based changes in item performance metrics, for creator evaluation, campaign planning, and marketplace research.",
"method": "GET",
"operationId": "gwApiDataSpItemReportTrendV1",
"parameters": [
{
"defaultValue": null,
"description": "User authentication token.",
"enumValues": [],
"location": "query",
"name": "token",
"required": true,
"schemaType": "string"
},
{
"defaultValue": null,
"description": "Item's unique ID.",
"enumValues": [],
"location": "query",
"name": "itemId",
"required": true,
"schemaType": "string"
}
],
"path": "/api/douyin-xingtu/gw/api/data_sp/item_report_trend/v1",
"requestBody": null,
"responses": [
{
"description": "OK",
"statusCode": "200"
}
],
"summary": "Item Report Trends",
"tags": [
"Douyin Creator Marketplace (Xingtu)"
]
}
],
"platformKey": "douyin-xingtu",
"primaryTag": "Douyin Creator Marketplace (Xingtu)",
"skillName": "justoneapi_douyin_xingtu_gw_api_data_sp_item_report_trend",
"skillType": "interface",
"slug": "justoneapi-douyin-xingtu-gw-api-data-sp-item-report-trend",
"sourceTitle": "OpenAPI definition"
}
FILE:generated/operations.md
# Douyin Creator Marketplace (Xingtu) Item Report Trends operations
Generated from JustOneAPI OpenAPI for platform key `douyin-xingtu`.
Endpoint group: `gw/api/data_sp/item_report_trend`.
## `gwApiDataSpItemReportTrendV1`
- Method: `GET`
- Path: `/api/douyin-xingtu/gw/api/data_sp/item_report_trend/v1`
- Summary: Item Report Trends
- Description: Get Douyin Creator Marketplace (Xingtu) item Report Trend data, including time-based changes in item performance metrics, for creator evaluation, campaign planning, and marketplace research.
- Tags: `Douyin Creator Marketplace (Xingtu)`
### Parameters
| Name | In | Required | Type | Default | Description |
| --- | --- | --- | --- | --- | --- |
| `token` | `query` | yes | `string` | n/a | User authentication token. |
| `itemId` | `query` | yes | `string` | n/a | Item's unique ID. |
### Request body
No request body.
### Responses
- `200`: OK
Call GET /api/douyin-xingtu/gw/api/data_sp/item_report_th_analysis/v1 for Douyin Creator Marketplace (Xingtu) Item Report Analysis through JustOneAPI with it...
---
name: Douyin Creator Marketplace (Xingtu) Item Report Analysis API
description: Call GET /api/douyin-xingtu/gw/api/data_sp/item_report_th_analysis/v1 for Douyin Creator Marketplace (Xingtu) Item Report Analysis through JustOneAPI with itemId.
author: JustOneAPI
homepage: https://api.justoneapi.com
metadata: {"openclaw":{"homepage":"https://api.justoneapi.com","primaryEnv":"JUST_ONE_API_TOKEN","requires":{"bins":["node"],"env":["JUST_ONE_API_TOKEN"]},"skillKey":"justoneapi_douyin_xingtu_gw_api_data_sp_item_report_th_analysis"}}
---
# Douyin Creator Marketplace (Xingtu) Item Report Analysis
Use this focused JustOneAPI skill for item Report Analysis in Douyin Creator Marketplace (Xingtu). It targets `GET /api/douyin-xingtu/gw/api/data_sp/item_report_th_analysis/v1`. Required non-token inputs are `itemId`. OpenAPI describes it as: Get Douyin Creator Marketplace (Xingtu) item Report Analysis data, including performance interpretation, for creator evaluation, campaign planning, and marketplace research.
## Endpoint Scope
- Platform key: `douyin-xingtu`
- Endpoint key: `gw/api/data_sp/item_report_th_analysis`
- Platform family: Douyin Creator Marketplace (Xingtu)
- Skill slug: `justoneapi-douyin-xingtu-gw-api-data-sp-item-report-th-analysis`
| Operation | Version | Method | Path | OpenAPI summary |
| --- | --- | --- | --- | --- |
| `gwApiDataSpItemReportThAnalysisV1` | `v1` | `GET` | `/api/douyin-xingtu/gw/api/data_sp/item_report_th_analysis/v1` | Item Report Analysis |
## Inputs
| Parameter | In | Required by | Optional by | Type | Notes |
| --- | --- | --- | --- | --- | --- |
| `itemId` | `query` | all | n/a | `string` | Item's unique ID |
Request body: none documented; send parameters through path or query arguments.
## Version Choice
Use `gwApiDataSpItemReportThAnalysisV1` for the documented `v1` endpoint. There are no alternate versions grouped in this skill.
## Run This Endpoint
Supported operation IDs in this skill: `gwApiDataSpItemReportThAnalysisV1`.
```bash
node {baseDir}/bin/run.mjs --operation "gwApiDataSpItemReportThAnalysisV1" --token "$JUST_ONE_API_TOKEN" --params-json '{"itemId":"<itemId>"}'
```
Ask for any missing required parameter before calling the helper. Keep user-provided IDs, cursors, keywords, and filters unchanged.
## Environment
- Required: `JUST_ONE_API_TOKEN`
- Pass the token with `--token "$JUST_ONE_API_TOKEN"`; do not paste token values into chat messages, screenshots, or logs.
- Get a token from [Just One API Dashboard](https://dashboard.justoneapi.com/en/login?utm_source=clawhub.ai&utm_medium=referral&utm_campaign=justoneapi_douyin_xingtu_gw_api_data_sp_item_report_th_analysis&utm_content=project_link).
- Authentication details: [Just One API Usage Guide](https://docs.justoneapi.com/en/?utm_source=clawhub.ai&utm_medium=referral&utm_campaign=justoneapi_douyin_xingtu_gw_api_data_sp_item_report_th_analysis&utm_content=project_link).
## Output Focus
- State the operation ID and endpoint path used, for example `gwApiDataSpItemReportThAnalysisV1` on `/api/douyin-xingtu/gw/api/data_sp/item_report_th_analysis/v1`.
- Echo the required lookup scope (`itemId`) before summarizing results.
- Prioritize fields that support this endpoint purpose: Get Douyin Creator Marketplace (Xingtu) item Report Analysis data, including performance interpretation, for creator evaluation, campaign planning, and marketplace research.
- Return raw JSON only after the short, endpoint-specific summary.
- If the backend errors, include the backend payload and the exact operation ID.
FILE:bin/run.mjs
#!/usr/bin/env node
const manifest = {
"baseUrl": "https://api.justoneapi.com",
"description": "Call GET /api/douyin-xingtu/gw/api/data_sp/item_report_th_analysis/v1 for Douyin Creator Marketplace (Xingtu) Item Report Analysis through JustOneAPI with itemId.",
"displayName": "Douyin Creator Marketplace (Xingtu) Item Report Analysis",
"openapi": "3.1.0",
"platformKey": "douyin-xingtu",
"primaryTag": "Douyin Creator Marketplace (Xingtu)",
"skillName": "justoneapi_douyin_xingtu_gw_api_data_sp_item_report_th_analysis",
"slug": "justoneapi-douyin-xingtu-gw-api-data-sp-item-report-th-analysis",
"sourceTitle": "OpenAPI definition",
"operations": [
{
"description": "Get Douyin Creator Marketplace (Xingtu) item Report Analysis data, including performance interpretation, for creator evaluation, campaign planning, and marketplace research.",
"method": "GET",
"operationId": "gwApiDataSpItemReportThAnalysisV1",
"parameters": [
{
"defaultValue": null,
"description": "User authentication token.",
"enumValues": [],
"location": "query",
"name": "token",
"required": true,
"schemaType": "string"
},
{
"defaultValue": null,
"description": "Item's unique ID.",
"enumValues": [],
"location": "query",
"name": "itemId",
"required": true,
"schemaType": "string"
}
],
"path": "/api/douyin-xingtu/gw/api/data_sp/item_report_th_analysis/v1",
"requestBody": null,
"responses": [
{
"description": "OK",
"statusCode": "200"
}
],
"summary": "Item Report Analysis",
"tags": [
"Douyin Creator Marketplace (Xingtu)"
]
}
],
"endpointPath": "gw/api/data_sp/item_report_th_analysis",
"skillType": "interface"
};
const args = parseArgs(process.argv.slice(2));
if (!args.operation) {
fail("Missing required --operation argument.");
}
const operation = manifest.operations.find((item) => item.operationId === args.operation);
if (!operation) {
fail(`Unknown operation "args.operation".`, { availableOperations: manifest.operations.map((item) => item.operationId) });
}
const params = parseParams(args.paramsJson);
applyDefaults(operation, params);
injectToken(operation, params, args.token);
validateRequired(operation, params);
const baseUrl = manifest.baseUrl;
const url = new URL(operation.path, ensureBaseUrl(baseUrl));
applyPathParams(operation, params, url);
applyQueryParams(operation, params, url);
const requestInit = {
headers: {
"accept": "application/json",
},
method: operation.method,
};
if (operation.requestBody && params.body !== undefined) {
requestInit.body = JSON.stringify(params.body);
requestInit.headers["content-type"] = operation.requestBody.contentType || "application/json";
}
let response;
try {
response = await fetch(url, requestInit);
} catch (error) {
fail("Network request failed.", {
cause: error instanceof Error ? error.message : String(error),
operationId: operation.operationId,
});
}
const rawBody = await response.text();
let parsedBody;
try {
parsedBody = rawBody ? JSON.parse(rawBody) : null;
} catch (error) {
if (!response.ok) {
fail("Backend returned a non-JSON error response.", {
body: rawBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
fail("Backend returned invalid JSON.", {
body: rawBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
if (!response.ok) {
fail("Backend request failed.", {
body: parsedBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
process.stdout.write(`JSON.stringify(parsedBody, null, 2)\n`);
function parseArgs(argv) {
const parsed = { operation: null, paramsJson: "{}", token: null };
for (let index = 0; index < argv.length; index += 1) {
const flag = argv[index];
const value = argv[index + 1];
if (flag === "--operation") {
parsed.operation = value;
index += 1;
continue;
}
if (flag === "--params-json") {
parsed.paramsJson = value;
index += 1;
continue;
}
if (flag === "--token") {
parsed.token = value;
index += 1;
continue;
}
fail(`Unknown argument "flag".`);
}
return parsed;
}
function parseParams(input) {
try {
const parsed = JSON.parse(input || "{}");
if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) {
fail("--params-json must decode to a JSON object.");
}
return parsed;
} catch (error) {
fail("Failed to parse --params-json.", {
cause: error instanceof Error ? error.message : String(error),
});
}
}
function applyDefaults(operation, params) {
for (const parameter of operation.parameters) {
if (params[parameter.name] === undefined && parameter.defaultValue !== null) {
params[parameter.name] = parameter.defaultValue;
}
}
}
function injectToken(operation, params, cliToken) {
const tokenParam = operation.parameters.find((parameter) => parameter.name === "token");
if (!tokenParam || params.token !== undefined) {
return;
}
if (!cliToken) {
fail("--token is required for this operation.", {
operationId: operation.operationId,
});
}
params.token = cliToken;
}
function validateRequired(operation, params) {
const missing = [];
for (const parameter of operation.parameters) {
if (parameter.required && params[parameter.name] === undefined) {
missing.push(parameter.name);
}
}
if (operation.requestBody?.required && params.body === undefined) {
missing.push("body");
}
if (missing.length) {
fail("Missing required parameters.", {
missing,
operationId: operation.operationId,
});
}
}
function applyPathParams(operation, params, url) {
let pathname = url.pathname;
for (const parameter of operation.parameters.filter((item) => item.location === "path")) {
const value = params[parameter.name];
if (value === undefined) {
continue;
}
pathname = pathname.replace(`{parameter.name}`, encodeURIComponent(String(value)));
}
url.pathname = pathname;
}
function applyQueryParams(operation, params, url) {
for (const parameter of operation.parameters.filter((item) => item.location === "query")) {
const value = params[parameter.name];
if (value === undefined) {
continue;
}
appendValue(url.searchParams, parameter.name, value);
}
}
function appendValue(searchParams, name, value) {
if (Array.isArray(value)) {
for (const item of value) {
appendValue(searchParams, name, item);
}
return;
}
if (value && typeof value === "object") {
searchParams.append(name, JSON.stringify(value));
return;
}
searchParams.append(name, String(value));
}
function ensureBaseUrl(value) {
return value.endsWith("/") ? value : `value/`;
}
function fail(message, details = null) {
const payload = { message };
if (details) {
payload.details = details;
}
process.stderr.write(`JSON.stringify(payload, null, 2)\n`);
process.exit(1);
}
FILE:generated/operations.json
{
"baseUrl": "https://api.justoneapi.com",
"description": "Call GET /api/douyin-xingtu/gw/api/data_sp/item_report_th_analysis/v1 for Douyin Creator Marketplace (Xingtu) Item Report Analysis through JustOneAPI with itemId.",
"displayName": "Douyin Creator Marketplace (Xingtu) Item Report Analysis",
"endpointPath": "gw/api/data_sp/item_report_th_analysis",
"openapi": "3.1.0",
"operations": [
{
"description": "Get Douyin Creator Marketplace (Xingtu) item Report Analysis data, including performance interpretation, for creator evaluation, campaign planning, and marketplace research.",
"method": "GET",
"operationId": "gwApiDataSpItemReportThAnalysisV1",
"parameters": [
{
"defaultValue": null,
"description": "User authentication token.",
"enumValues": [],
"location": "query",
"name": "token",
"required": true,
"schemaType": "string"
},
{
"defaultValue": null,
"description": "Item's unique ID.",
"enumValues": [],
"location": "query",
"name": "itemId",
"required": true,
"schemaType": "string"
}
],
"path": "/api/douyin-xingtu/gw/api/data_sp/item_report_th_analysis/v1",
"requestBody": null,
"responses": [
{
"description": "OK",
"statusCode": "200"
}
],
"summary": "Item Report Analysis",
"tags": [
"Douyin Creator Marketplace (Xingtu)"
]
}
],
"platformKey": "douyin-xingtu",
"primaryTag": "Douyin Creator Marketplace (Xingtu)",
"skillName": "justoneapi_douyin_xingtu_gw_api_data_sp_item_report_th_analysis",
"skillType": "interface",
"slug": "justoneapi-douyin-xingtu-gw-api-data-sp-item-report-th-analysis",
"sourceTitle": "OpenAPI definition"
}
FILE:generated/operations.md
# Douyin Creator Marketplace (Xingtu) Item Report Analysis operations
Generated from JustOneAPI OpenAPI for platform key `douyin-xingtu`.
Endpoint group: `gw/api/data_sp/item_report_th_analysis`.
## `gwApiDataSpItemReportThAnalysisV1`
- Method: `GET`
- Path: `/api/douyin-xingtu/gw/api/data_sp/item_report_th_analysis/v1`
- Summary: Item Report Analysis
- Description: Get Douyin Creator Marketplace (Xingtu) item Report Analysis data, including performance interpretation, for creator evaluation, campaign planning, and marketplace research.
- Tags: `Douyin Creator Marketplace (Xingtu)`
### Parameters
| Name | In | Required | Type | Default | Description |
| --- | --- | --- | --- | --- | --- |
| `token` | `query` | yes | `string` | n/a | User authentication token. |
| `itemId` | `query` | yes | `string` | n/a | Item's unique ID. |
### Request body
No request body.
### Responses
- `200`: OK
Call GET /api/douyin-xingtu/gw/api/data_sp/item_report_detail/v1 for Douyin Creator Marketplace (Xingtu) Item Report Details through JustOneAPI with itemId.
---
name: Douyin Creator Marketplace (Xingtu) Item Report Details API
description: Call GET /api/douyin-xingtu/gw/api/data_sp/item_report_detail/v1 for Douyin Creator Marketplace (Xingtu) Item Report Details through JustOneAPI with itemId.
author: JustOneAPI
homepage: https://api.justoneapi.com
metadata: {"openclaw":{"homepage":"https://api.justoneapi.com","primaryEnv":"JUST_ONE_API_TOKEN","requires":{"bins":["node"],"env":["JUST_ONE_API_TOKEN"]},"skillKey":"justoneapi_douyin_xingtu_gw_api_data_sp_item_report_detail"}}
---
# Douyin Creator Marketplace (Xingtu) Item Report Details
Use this focused JustOneAPI skill for item Report Details in Douyin Creator Marketplace (Xingtu). It targets `GET /api/douyin-xingtu/gw/api/data_sp/item_report_detail/v1`. Required non-token inputs are `itemId`. OpenAPI describes it as: Get Douyin Creator Marketplace (Xingtu) item Report Details data, including key metrics and report fields used, for item performance analysis.
## Endpoint Scope
- Platform key: `douyin-xingtu`
- Endpoint key: `gw/api/data_sp/item_report_detail`
- Platform family: Douyin Creator Marketplace (Xingtu)
- Skill slug: `justoneapi-douyin-xingtu-gw-api-data-sp-item-report-detail`
| Operation | Version | Method | Path | OpenAPI summary |
| --- | --- | --- | --- | --- |
| `gwApiDataSpItemReportDetailV1` | `v1` | `GET` | `/api/douyin-xingtu/gw/api/data_sp/item_report_detail/v1` | Item Report Details |
## Inputs
| Parameter | In | Required by | Optional by | Type | Notes |
| --- | --- | --- | --- | --- | --- |
| `itemId` | `query` | all | n/a | `string` | Item's unique ID |
Request body: none documented; send parameters through path or query arguments.
## Version Choice
Use `gwApiDataSpItemReportDetailV1` for the documented `v1` endpoint. There are no alternate versions grouped in this skill.
## Run This Endpoint
Supported operation IDs in this skill: `gwApiDataSpItemReportDetailV1`.
```bash
node {baseDir}/bin/run.mjs --operation "gwApiDataSpItemReportDetailV1" --token "$JUST_ONE_API_TOKEN" --params-json '{"itemId":"<itemId>"}'
```
Ask for any missing required parameter before calling the helper. Keep user-provided IDs, cursors, keywords, and filters unchanged.
## Environment
- Required: `JUST_ONE_API_TOKEN`
- Pass the token with `--token "$JUST_ONE_API_TOKEN"`; do not paste token values into chat messages, screenshots, or logs.
- Get a token from [Just One API Dashboard](https://dashboard.justoneapi.com/en/login?utm_source=clawhub.ai&utm_medium=referral&utm_campaign=justoneapi_douyin_xingtu_gw_api_data_sp_item_report_detail&utm_content=project_link).
- Authentication details: [Just One API Usage Guide](https://docs.justoneapi.com/en/?utm_source=clawhub.ai&utm_medium=referral&utm_campaign=justoneapi_douyin_xingtu_gw_api_data_sp_item_report_detail&utm_content=project_link).
## Output Focus
- State the operation ID and endpoint path used, for example `gwApiDataSpItemReportDetailV1` on `/api/douyin-xingtu/gw/api/data_sp/item_report_detail/v1`.
- Echo the required lookup scope (`itemId`) before summarizing results.
- Prioritize fields that support this endpoint purpose: Get Douyin Creator Marketplace (Xingtu) item Report Details data, including key metrics and report fields used, for item performance analysis.
- Return raw JSON only after the short, endpoint-specific summary.
- If the backend errors, include the backend payload and the exact operation ID.
FILE:bin/run.mjs
#!/usr/bin/env node
const manifest = {
"baseUrl": "https://api.justoneapi.com",
"description": "Call GET /api/douyin-xingtu/gw/api/data_sp/item_report_detail/v1 for Douyin Creator Marketplace (Xingtu) Item Report Details through JustOneAPI with itemId.",
"displayName": "Douyin Creator Marketplace (Xingtu) Item Report Details",
"openapi": "3.1.0",
"platformKey": "douyin-xingtu",
"primaryTag": "Douyin Creator Marketplace (Xingtu)",
"skillName": "justoneapi_douyin_xingtu_gw_api_data_sp_item_report_detail",
"slug": "justoneapi-douyin-xingtu-gw-api-data-sp-item-report-detail",
"sourceTitle": "OpenAPI definition",
"operations": [
{
"description": "Get Douyin Creator Marketplace (Xingtu) item Report Details data, including key metrics and report fields used, for item performance analysis.",
"method": "GET",
"operationId": "gwApiDataSpItemReportDetailV1",
"parameters": [
{
"defaultValue": null,
"description": "User authentication token.",
"enumValues": [],
"location": "query",
"name": "token",
"required": true,
"schemaType": "string"
},
{
"defaultValue": null,
"description": "Item's unique ID.",
"enumValues": [],
"location": "query",
"name": "itemId",
"required": true,
"schemaType": "string"
}
],
"path": "/api/douyin-xingtu/gw/api/data_sp/item_report_detail/v1",
"requestBody": null,
"responses": [
{
"description": "OK",
"statusCode": "200"
}
],
"summary": "Item Report Details",
"tags": [
"Douyin Creator Marketplace (Xingtu)"
]
}
],
"endpointPath": "gw/api/data_sp/item_report_detail",
"skillType": "interface"
};
const args = parseArgs(process.argv.slice(2));
if (!args.operation) {
fail("Missing required --operation argument.");
}
const operation = manifest.operations.find((item) => item.operationId === args.operation);
if (!operation) {
fail(`Unknown operation "args.operation".`, { availableOperations: manifest.operations.map((item) => item.operationId) });
}
const params = parseParams(args.paramsJson);
applyDefaults(operation, params);
injectToken(operation, params, args.token);
validateRequired(operation, params);
const baseUrl = manifest.baseUrl;
const url = new URL(operation.path, ensureBaseUrl(baseUrl));
applyPathParams(operation, params, url);
applyQueryParams(operation, params, url);
const requestInit = {
headers: {
"accept": "application/json",
},
method: operation.method,
};
if (operation.requestBody && params.body !== undefined) {
requestInit.body = JSON.stringify(params.body);
requestInit.headers["content-type"] = operation.requestBody.contentType || "application/json";
}
let response;
try {
response = await fetch(url, requestInit);
} catch (error) {
fail("Network request failed.", {
cause: error instanceof Error ? error.message : String(error),
operationId: operation.operationId,
});
}
const rawBody = await response.text();
let parsedBody;
try {
parsedBody = rawBody ? JSON.parse(rawBody) : null;
} catch (error) {
if (!response.ok) {
fail("Backend returned a non-JSON error response.", {
body: rawBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
fail("Backend returned invalid JSON.", {
body: rawBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
if (!response.ok) {
fail("Backend request failed.", {
body: parsedBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
process.stdout.write(`JSON.stringify(parsedBody, null, 2)\n`);
function parseArgs(argv) {
const parsed = { operation: null, paramsJson: "{}", token: null };
for (let index = 0; index < argv.length; index += 1) {
const flag = argv[index];
const value = argv[index + 1];
if (flag === "--operation") {
parsed.operation = value;
index += 1;
continue;
}
if (flag === "--params-json") {
parsed.paramsJson = value;
index += 1;
continue;
}
if (flag === "--token") {
parsed.token = value;
index += 1;
continue;
}
fail(`Unknown argument "flag".`);
}
return parsed;
}
function parseParams(input) {
try {
const parsed = JSON.parse(input || "{}");
if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) {
fail("--params-json must decode to a JSON object.");
}
return parsed;
} catch (error) {
fail("Failed to parse --params-json.", {
cause: error instanceof Error ? error.message : String(error),
});
}
}
function applyDefaults(operation, params) {
for (const parameter of operation.parameters) {
if (params[parameter.name] === undefined && parameter.defaultValue !== null) {
params[parameter.name] = parameter.defaultValue;
}
}
}
function injectToken(operation, params, cliToken) {
const tokenParam = operation.parameters.find((parameter) => parameter.name === "token");
if (!tokenParam || params.token !== undefined) {
return;
}
if (!cliToken) {
fail("--token is required for this operation.", {
operationId: operation.operationId,
});
}
params.token = cliToken;
}
function validateRequired(operation, params) {
const missing = [];
for (const parameter of operation.parameters) {
if (parameter.required && params[parameter.name] === undefined) {
missing.push(parameter.name);
}
}
if (operation.requestBody?.required && params.body === undefined) {
missing.push("body");
}
if (missing.length) {
fail("Missing required parameters.", {
missing,
operationId: operation.operationId,
});
}
}
function applyPathParams(operation, params, url) {
let pathname = url.pathname;
for (const parameter of operation.parameters.filter((item) => item.location === "path")) {
const value = params[parameter.name];
if (value === undefined) {
continue;
}
pathname = pathname.replace(`{parameter.name}`, encodeURIComponent(String(value)));
}
url.pathname = pathname;
}
function applyQueryParams(operation, params, url) {
for (const parameter of operation.parameters.filter((item) => item.location === "query")) {
const value = params[parameter.name];
if (value === undefined) {
continue;
}
appendValue(url.searchParams, parameter.name, value);
}
}
function appendValue(searchParams, name, value) {
if (Array.isArray(value)) {
for (const item of value) {
appendValue(searchParams, name, item);
}
return;
}
if (value && typeof value === "object") {
searchParams.append(name, JSON.stringify(value));
return;
}
searchParams.append(name, String(value));
}
function ensureBaseUrl(value) {
return value.endsWith("/") ? value : `value/`;
}
function fail(message, details = null) {
const payload = { message };
if (details) {
payload.details = details;
}
process.stderr.write(`JSON.stringify(payload, null, 2)\n`);
process.exit(1);
}
FILE:generated/operations.json
{
"baseUrl": "https://api.justoneapi.com",
"description": "Call GET /api/douyin-xingtu/gw/api/data_sp/item_report_detail/v1 for Douyin Creator Marketplace (Xingtu) Item Report Details through JustOneAPI with itemId.",
"displayName": "Douyin Creator Marketplace (Xingtu) Item Report Details",
"endpointPath": "gw/api/data_sp/item_report_detail",
"openapi": "3.1.0",
"operations": [
{
"description": "Get Douyin Creator Marketplace (Xingtu) item Report Details data, including key metrics and report fields used, for item performance analysis.",
"method": "GET",
"operationId": "gwApiDataSpItemReportDetailV1",
"parameters": [
{
"defaultValue": null,
"description": "User authentication token.",
"enumValues": [],
"location": "query",
"name": "token",
"required": true,
"schemaType": "string"
},
{
"defaultValue": null,
"description": "Item's unique ID.",
"enumValues": [],
"location": "query",
"name": "itemId",
"required": true,
"schemaType": "string"
}
],
"path": "/api/douyin-xingtu/gw/api/data_sp/item_report_detail/v1",
"requestBody": null,
"responses": [
{
"description": "OK",
"statusCode": "200"
}
],
"summary": "Item Report Details",
"tags": [
"Douyin Creator Marketplace (Xingtu)"
]
}
],
"platformKey": "douyin-xingtu",
"primaryTag": "Douyin Creator Marketplace (Xingtu)",
"skillName": "justoneapi_douyin_xingtu_gw_api_data_sp_item_report_detail",
"skillType": "interface",
"slug": "justoneapi-douyin-xingtu-gw-api-data-sp-item-report-detail",
"sourceTitle": "OpenAPI definition"
}
FILE:generated/operations.md
# Douyin Creator Marketplace (Xingtu) Item Report Details operations
Generated from JustOneAPI OpenAPI for platform key `douyin-xingtu`.
Endpoint group: `gw/api/data_sp/item_report_detail`.
## `gwApiDataSpItemReportDetailV1`
- Method: `GET`
- Path: `/api/douyin-xingtu/gw/api/data_sp/item_report_detail/v1`
- Summary: Item Report Details
- Description: Get Douyin Creator Marketplace (Xingtu) item Report Details data, including key metrics and report fields used, for item performance analysis.
- Tags: `Douyin Creator Marketplace (Xingtu)`
### Parameters
| Name | In | Required | Type | Default | Description |
| --- | --- | --- | --- | --- | --- |
| `token` | `query` | yes | `string` | n/a | User authentication token. |
| `itemId` | `query` | yes | `string` | n/a | Item's unique ID. |
### Request body
No request body.
### Responses
- `200`: OK
Call GET /api/douyin-xingtu/gw/api/data_sp/get_author_spread_info/v1 for Douyin Creator Marketplace (Xingtu) Spread Metrics through JustOneAPI with oAuthorId.
---
name: Douyin Creator Marketplace (Xingtu) Spread Metrics API
description: Call GET /api/douyin-xingtu/gw/api/data_sp/get_author_spread_info/v1 for Douyin Creator Marketplace (Xingtu) Spread Metrics through JustOneAPI with oAuthorId.
author: JustOneAPI
homepage: https://api.justoneapi.com
metadata: {"openclaw":{"homepage":"https://api.justoneapi.com","primaryEnv":"JUST_ONE_API_TOKEN","requires":{"bins":["node"],"env":["JUST_ONE_API_TOKEN"]},"skillKey":"justoneapi_douyin_xingtu_gw_api_data_sp_get_author_spread_info"}}
---
# Douyin Creator Marketplace (Xingtu) Spread Metrics
Use this focused JustOneAPI skill for spread Metrics in Douyin Creator Marketplace (Xingtu). It targets `GET /api/douyin-xingtu/gw/api/data_sp/get_author_spread_info/v1`. Required non-token inputs are `oAuthorId`. OpenAPI describes it as: Get Douyin Creator Marketplace (Xingtu) spread metrics data, including exposure, spread, and related performance indicators, for creator evaluation, campaign planning, and marketplace research.
## Endpoint Scope
- Platform key: `douyin-xingtu`
- Endpoint key: `gw/api/data_sp/get_author_spread_info`
- Platform family: Douyin Creator Marketplace (Xingtu)
- Skill slug: `justoneapi-douyin-xingtu-gw-api-data-sp-get-author-spread-info`
| Operation | Version | Method | Path | OpenAPI summary |
| --- | --- | --- | --- | --- |
| `gwApiDataSpGetAuthorSpreadInfoV1` | `v1` | `GET` | `/api/douyin-xingtu/gw/api/data_sp/get_author_spread_info/v1` | Spread Metrics |
## Inputs
| Parameter | In | Required by | Optional by | Type | Notes |
| --- | --- | --- | --- | --- | --- |
| `flowType` | `query` | n/a | all | `string` | Flow type filter. Available Values: - `EXCLUDE`: Exclude - `INCLUDE`: Include |
| `flowType` enum | values | n/a | n/a | n/a | `EXCLUDE`, `INCLUDE` |
| `oAuthorId` | `query` | all | n/a | `string` | Author's unique ID |
| `onlyAssign` | `query` | n/a | all | `boolean` | Whether to only include assigned videos |
| `platform` | `query` | n/a | all | `string` | Platform type. Available Values: - `SHORT_VIDEO`: Short video - `LIVE_STREAMING`: Live streaming - `PICTURE_TEXT`: Picture and text - `SHORT_DRAMA`: Short drama |
| `platform` enum | values | n/a | n/a | n/a | `LIVE_STREAMING`, `PICTURE_TEXT`, `SHORT_DRAMA`, `SHORT_VIDEO` |
| `range` | `query` | n/a | all | `string` | Time range. Available Values: - `DAY_30`: Last 30 days - `DAY_90`: Last 90 days |
| `range` enum | values | n/a | n/a | n/a | `DAY_30`, `DAY_90` |
| `type` | `query` | n/a | all | `string` | Video type. Available Values: - `PERSONAL_VIDEO`: Personal video - `XINTU_VIDEO`: Xingtu video |
| `type` enum | values | n/a | n/a | n/a | `PERSONAL_VIDEO`, `XINTU_VIDEO` |
Request body: none documented; send parameters through path or query arguments.
## Version Choice
Use `gwApiDataSpGetAuthorSpreadInfoV1` for the documented `v1` endpoint. There are no alternate versions grouped in this skill.
## Run This Endpoint
Supported operation IDs in this skill: `gwApiDataSpGetAuthorSpreadInfoV1`.
```bash
node {baseDir}/bin/run.mjs --operation "gwApiDataSpGetAuthorSpreadInfoV1" --token "$JUST_ONE_API_TOKEN" --params-json '{"oAuthorId":"<oAuthorId>"}'
```
Ask for any missing required parameter before calling the helper. Keep user-provided IDs, cursors, keywords, and filters unchanged.
## Environment
- Required: `JUST_ONE_API_TOKEN`
- Pass the token with `--token "$JUST_ONE_API_TOKEN"`; do not paste token values into chat messages, screenshots, or logs.
- Get a token from [Just One API Dashboard](https://dashboard.justoneapi.com/en/login?utm_source=clawhub.ai&utm_medium=referral&utm_campaign=justoneapi_douyin_xingtu_gw_api_data_sp_get_author_spread_info&utm_content=project_link).
- Authentication details: [Just One API Usage Guide](https://docs.justoneapi.com/en/?utm_source=clawhub.ai&utm_medium=referral&utm_campaign=justoneapi_douyin_xingtu_gw_api_data_sp_get_author_spread_info&utm_content=project_link).
## Output Focus
- State the operation ID and endpoint path used, for example `gwApiDataSpGetAuthorSpreadInfoV1` on `/api/douyin-xingtu/gw/api/data_sp/get_author_spread_info/v1`.
- Echo the required lookup scope (`oAuthorId`) before summarizing results.
- Prioritize fields that support this endpoint purpose: Get Douyin Creator Marketplace (Xingtu) spread metrics data, including exposure, spread, and related performance indicators, for creator evaluation, campaign planning, and marketplace research.
- Return raw JSON only after the short, endpoint-specific summary.
- If the backend errors, include the backend payload and the exact operation ID.
FILE:bin/run.mjs
#!/usr/bin/env node
const manifest = {
"baseUrl": "https://api.justoneapi.com",
"description": "Call GET /api/douyin-xingtu/gw/api/data_sp/get_author_spread_info/v1 for Douyin Creator Marketplace (Xingtu) Spread Metrics through JustOneAPI with oAuthorId.",
"displayName": "Douyin Creator Marketplace (Xingtu) Spread Metrics",
"openapi": "3.1.0",
"platformKey": "douyin-xingtu",
"primaryTag": "Douyin Creator Marketplace (Xingtu)",
"skillName": "justoneapi_douyin_xingtu_gw_api_data_sp_get_author_spread_info",
"slug": "justoneapi-douyin-xingtu-gw-api-data-sp-get-author-spread-info",
"sourceTitle": "OpenAPI definition",
"operations": [
{
"description": "Get Douyin Creator Marketplace (Xingtu) spread metrics data, including exposure, spread, and related performance indicators, for creator evaluation, campaign planning, and marketplace research.",
"method": "GET",
"operationId": "gwApiDataSpGetAuthorSpreadInfoV1",
"parameters": [
{
"defaultValue": null,
"description": "User authentication token.",
"enumValues": [],
"location": "query",
"name": "token",
"required": true,
"schemaType": "string"
},
{
"defaultValue": null,
"description": "Author's unique ID.",
"enumValues": [],
"location": "query",
"name": "oAuthorId",
"required": true,
"schemaType": "string"
},
{
"defaultValue": "SHORT_VIDEO",
"description": "Platform type.\n\nAvailable Values:\n- `SHORT_VIDEO`: Short video\n- `LIVE_STREAMING`: Live streaming\n- `PICTURE_TEXT`: Picture and text\n- `SHORT_DRAMA`: Short drama",
"enumValues": [
"SHORT_VIDEO",
"LIVE_STREAMING",
"PICTURE_TEXT",
"SHORT_DRAMA"
],
"location": "query",
"name": "platform",
"required": false,
"schemaType": "string"
},
{
"defaultValue": "DAY_30",
"description": "Time range.\n\nAvailable Values:\n- `DAY_30`: Last 30 days\n- `DAY_90`: Last 90 days",
"enumValues": [
"DAY_30",
"DAY_90"
],
"location": "query",
"name": "range",
"required": false,
"schemaType": "string"
},
{
"defaultValue": "PERSONAL_VIDEO",
"description": "Video type.\n\nAvailable Values:\n- `PERSONAL_VIDEO`: Personal video\n- `XINTU_VIDEO`: Xingtu video",
"enumValues": [
"PERSONAL_VIDEO",
"XINTU_VIDEO"
],
"location": "query",
"name": "type",
"required": false,
"schemaType": "string"
},
{
"defaultValue": false,
"description": "Whether to only include assigned videos.",
"enumValues": [],
"location": "query",
"name": "onlyAssign",
"required": false,
"schemaType": "boolean"
},
{
"defaultValue": "EXCLUDE",
"description": "Flow type filter.\n\nAvailable Values:\n- `EXCLUDE`: Exclude\n- `INCLUDE`: Include",
"enumValues": [
"EXCLUDE",
"INCLUDE"
],
"location": "query",
"name": "flowType",
"required": false,
"schemaType": "string"
}
],
"path": "/api/douyin-xingtu/gw/api/data_sp/get_author_spread_info/v1",
"requestBody": null,
"responses": [
{
"description": "OK",
"statusCode": "200"
}
],
"summary": "Spread Metrics",
"tags": [
"Douyin Creator Marketplace (Xingtu)"
]
}
],
"endpointPath": "gw/api/data_sp/get_author_spread_info",
"skillType": "interface"
};
const args = parseArgs(process.argv.slice(2));
if (!args.operation) {
fail("Missing required --operation argument.");
}
const operation = manifest.operations.find((item) => item.operationId === args.operation);
if (!operation) {
fail(`Unknown operation "args.operation".`, { availableOperations: manifest.operations.map((item) => item.operationId) });
}
const params = parseParams(args.paramsJson);
applyDefaults(operation, params);
injectToken(operation, params, args.token);
validateRequired(operation, params);
const baseUrl = manifest.baseUrl;
const url = new URL(operation.path, ensureBaseUrl(baseUrl));
applyPathParams(operation, params, url);
applyQueryParams(operation, params, url);
const requestInit = {
headers: {
"accept": "application/json",
},
method: operation.method,
};
if (operation.requestBody && params.body !== undefined) {
requestInit.body = JSON.stringify(params.body);
requestInit.headers["content-type"] = operation.requestBody.contentType || "application/json";
}
let response;
try {
response = await fetch(url, requestInit);
} catch (error) {
fail("Network request failed.", {
cause: error instanceof Error ? error.message : String(error),
operationId: operation.operationId,
});
}
const rawBody = await response.text();
let parsedBody;
try {
parsedBody = rawBody ? JSON.parse(rawBody) : null;
} catch (error) {
if (!response.ok) {
fail("Backend returned a non-JSON error response.", {
body: rawBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
fail("Backend returned invalid JSON.", {
body: rawBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
if (!response.ok) {
fail("Backend request failed.", {
body: parsedBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
process.stdout.write(`JSON.stringify(parsedBody, null, 2)\n`);
function parseArgs(argv) {
const parsed = { operation: null, paramsJson: "{}", token: null };
for (let index = 0; index < argv.length; index += 1) {
const flag = argv[index];
const value = argv[index + 1];
if (flag === "--operation") {
parsed.operation = value;
index += 1;
continue;
}
if (flag === "--params-json") {
parsed.paramsJson = value;
index += 1;
continue;
}
if (flag === "--token") {
parsed.token = value;
index += 1;
continue;
}
fail(`Unknown argument "flag".`);
}
return parsed;
}
function parseParams(input) {
try {
const parsed = JSON.parse(input || "{}");
if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) {
fail("--params-json must decode to a JSON object.");
}
return parsed;
} catch (error) {
fail("Failed to parse --params-json.", {
cause: error instanceof Error ? error.message : String(error),
});
}
}
function applyDefaults(operation, params) {
for (const parameter of operation.parameters) {
if (params[parameter.name] === undefined && parameter.defaultValue !== null) {
params[parameter.name] = parameter.defaultValue;
}
}
}
function injectToken(operation, params, cliToken) {
const tokenParam = operation.parameters.find((parameter) => parameter.name === "token");
if (!tokenParam || params.token !== undefined) {
return;
}
if (!cliToken) {
fail("--token is required for this operation.", {
operationId: operation.operationId,
});
}
params.token = cliToken;
}
function validateRequired(operation, params) {
const missing = [];
for (const parameter of operation.parameters) {
if (parameter.required && params[parameter.name] === undefined) {
missing.push(parameter.name);
}
}
if (operation.requestBody?.required && params.body === undefined) {
missing.push("body");
}
if (missing.length) {
fail("Missing required parameters.", {
missing,
operationId: operation.operationId,
});
}
}
function applyPathParams(operation, params, url) {
let pathname = url.pathname;
for (const parameter of operation.parameters.filter((item) => item.location === "path")) {
const value = params[parameter.name];
if (value === undefined) {
continue;
}
pathname = pathname.replace(`{parameter.name}`, encodeURIComponent(String(value)));
}
url.pathname = pathname;
}
function applyQueryParams(operation, params, url) {
for (const parameter of operation.parameters.filter((item) => item.location === "query")) {
const value = params[parameter.name];
if (value === undefined) {
continue;
}
appendValue(url.searchParams, parameter.name, value);
}
}
function appendValue(searchParams, name, value) {
if (Array.isArray(value)) {
for (const item of value) {
appendValue(searchParams, name, item);
}
return;
}
if (value && typeof value === "object") {
searchParams.append(name, JSON.stringify(value));
return;
}
searchParams.append(name, String(value));
}
function ensureBaseUrl(value) {
return value.endsWith("/") ? value : `value/`;
}
function fail(message, details = null) {
const payload = { message };
if (details) {
payload.details = details;
}
process.stderr.write(`JSON.stringify(payload, null, 2)\n`);
process.exit(1);
}
FILE:generated/operations.json
{
"baseUrl": "https://api.justoneapi.com",
"description": "Call GET /api/douyin-xingtu/gw/api/data_sp/get_author_spread_info/v1 for Douyin Creator Marketplace (Xingtu) Spread Metrics through JustOneAPI with oAuthorId.",
"displayName": "Douyin Creator Marketplace (Xingtu) Spread Metrics",
"endpointPath": "gw/api/data_sp/get_author_spread_info",
"openapi": "3.1.0",
"operations": [
{
"description": "Get Douyin Creator Marketplace (Xingtu) spread metrics data, including exposure, spread, and related performance indicators, for creator evaluation, campaign planning, and marketplace research.",
"method": "GET",
"operationId": "gwApiDataSpGetAuthorSpreadInfoV1",
"parameters": [
{
"defaultValue": null,
"description": "User authentication token.",
"enumValues": [],
"location": "query",
"name": "token",
"required": true,
"schemaType": "string"
},
{
"defaultValue": null,
"description": "Author's unique ID.",
"enumValues": [],
"location": "query",
"name": "oAuthorId",
"required": true,
"schemaType": "string"
},
{
"defaultValue": "SHORT_VIDEO",
"description": "Platform type.\n\nAvailable Values:\n- `SHORT_VIDEO`: Short video\n- `LIVE_STREAMING`: Live streaming\n- `PICTURE_TEXT`: Picture and text\n- `SHORT_DRAMA`: Short drama",
"enumValues": [
"SHORT_VIDEO",
"LIVE_STREAMING",
"PICTURE_TEXT",
"SHORT_DRAMA"
],
"location": "query",
"name": "platform",
"required": false,
"schemaType": "string"
},
{
"defaultValue": "DAY_30",
"description": "Time range.\n\nAvailable Values:\n- `DAY_30`: Last 30 days\n- `DAY_90`: Last 90 days",
"enumValues": [
"DAY_30",
"DAY_90"
],
"location": "query",
"name": "range",
"required": false,
"schemaType": "string"
},
{
"defaultValue": "PERSONAL_VIDEO",
"description": "Video type.\n\nAvailable Values:\n- `PERSONAL_VIDEO`: Personal video\n- `XINTU_VIDEO`: Xingtu video",
"enumValues": [
"PERSONAL_VIDEO",
"XINTU_VIDEO"
],
"location": "query",
"name": "type",
"required": false,
"schemaType": "string"
},
{
"defaultValue": false,
"description": "Whether to only include assigned videos.",
"enumValues": [],
"location": "query",
"name": "onlyAssign",
"required": false,
"schemaType": "boolean"
},
{
"defaultValue": "EXCLUDE",
"description": "Flow type filter.\n\nAvailable Values:\n- `EXCLUDE`: Exclude\n- `INCLUDE`: Include",
"enumValues": [
"EXCLUDE",
"INCLUDE"
],
"location": "query",
"name": "flowType",
"required": false,
"schemaType": "string"
}
],
"path": "/api/douyin-xingtu/gw/api/data_sp/get_author_spread_info/v1",
"requestBody": null,
"responses": [
{
"description": "OK",
"statusCode": "200"
}
],
"summary": "Spread Metrics",
"tags": [
"Douyin Creator Marketplace (Xingtu)"
]
}
],
"platformKey": "douyin-xingtu",
"primaryTag": "Douyin Creator Marketplace (Xingtu)",
"skillName": "justoneapi_douyin_xingtu_gw_api_data_sp_get_author_spread_info",
"skillType": "interface",
"slug": "justoneapi-douyin-xingtu-gw-api-data-sp-get-author-spread-info",
"sourceTitle": "OpenAPI definition"
}
FILE:generated/operations.md
# Douyin Creator Marketplace (Xingtu) Spread Metrics operations
Generated from JustOneAPI OpenAPI for platform key `douyin-xingtu`.
Endpoint group: `gw/api/data_sp/get_author_spread_info`.
## `gwApiDataSpGetAuthorSpreadInfoV1`
- Method: `GET`
- Path: `/api/douyin-xingtu/gw/api/data_sp/get_author_spread_info/v1`
- Summary: Spread Metrics
- Description: Get Douyin Creator Marketplace (Xingtu) spread metrics data, including exposure, spread, and related performance indicators, for creator evaluation, campaign planning, and marketplace research.
- Tags: `Douyin Creator Marketplace (Xingtu)`
### Parameters
| Name | In | Required | Type | Default | Description |
| --- | --- | --- | --- | --- | --- |
| `token` | `query` | yes | `string` | n/a | User authentication token. |
| `oAuthorId` | `query` | yes | `string` | n/a | Author's unique ID. |
| `platform` | `query` | no | `string` | `SHORT_VIDEO` | Platform type.
Available Values:
- `SHORT_VIDEO`: Short video
- `LIVE_STREAMING`: Live streaming
- `PICTURE_TEXT`: Picture and text
- `SHORT_DRAMA`: Short drama |
| enum | values | no | n/a | n/a | `SHORT_VIDEO`, `LIVE_STREAMING`, `PICTURE_TEXT`, `SHORT_DRAMA` |
| `range` | `query` | no | `string` | `DAY_30` | Time range.
Available Values:
- `DAY_30`: Last 30 days
- `DAY_90`: Last 90 days |
| enum | values | no | n/a | n/a | `DAY_30`, `DAY_90` |
| `type` | `query` | no | `string` | `PERSONAL_VIDEO` | Video type.
Available Values:
- `PERSONAL_VIDEO`: Personal video
- `XINTU_VIDEO`: Xingtu video |
| enum | values | no | n/a | n/a | `PERSONAL_VIDEO`, `XINTU_VIDEO` |
| `onlyAssign` | `query` | no | `boolean` | `false` | Whether to only include assigned videos. |
| `flowType` | `query` | no | `string` | `EXCLUDE` | Flow type filter.
Available Values:
- `EXCLUDE`: Exclude
- `INCLUDE`: Include |
| enum | values | no | n/a | n/a | `EXCLUDE`, `INCLUDE` |
### Request body
No request body.
### Responses
- `200`: OK
Call GET /api/douyin-xingtu/gw/api/data_sp/get_author_link_info/v1 for Douyin Creator Marketplace (Xingtu) Creator Link Metrics through JustOneAPI with oAuth...
---
name: Douyin Creator Marketplace (Xingtu) Creator Link Metrics API
description: Call GET /api/douyin-xingtu/gw/api/data_sp/get_author_link_info/v1 for Douyin Creator Marketplace (Xingtu) Creator Link Metrics through JustOneAPI with oAuthorId.
author: JustOneAPI
homepage: https://api.justoneapi.com
metadata: {"openclaw":{"homepage":"https://api.justoneapi.com","primaryEnv":"JUST_ONE_API_TOKEN","requires":{"bins":["node"],"env":["JUST_ONE_API_TOKEN"]},"skillKey":"justoneapi_douyin_xingtu_gw_api_data_sp_get_author_link_info"}}
---
# Douyin Creator Marketplace (Xingtu) Creator Link Metrics
Use this focused JustOneAPI skill for creator Link Metrics in Douyin Creator Marketplace (Xingtu). It targets `GET /api/douyin-xingtu/gw/api/data_sp/get_author_link_info/v1`. Required non-token inputs are `oAuthorId`. OpenAPI describes it as: Get Douyin Creator Marketplace (Xingtu) creator Link Metrics data, including creator ranking, traffic structure, and related performance indicators, for creator evaluation, campaign planning, and marketplace research.
## Endpoint Scope
- Platform key: `douyin-xingtu`
- Endpoint key: `gw/api/data_sp/get_author_link_info`
- Platform family: Douyin Creator Marketplace (Xingtu)
- Skill slug: `justoneapi-douyin-xingtu-gw-api-data-sp-get-author-link-info`
| Operation | Version | Method | Path | OpenAPI summary |
| --- | --- | --- | --- | --- |
| `gwApiDataSpGetAuthorLinkInfoV1` | `v1` | `GET` | `/api/douyin-xingtu/gw/api/data_sp/get_author_link_info/v1` | Creator Link Metrics |
## Inputs
| Parameter | In | Required by | Optional by | Type | Notes |
| --- | --- | --- | --- | --- | --- |
| `industryTag` | `query` | n/a | all | `string` | Industry tag. Available Values: - `ALL`: All - `ELECTRONICS_AND_APPLIANCES`: Electronics and Appliances - `FOOD_AND_BEVERAGE`: Food and Beverage - `CLOTHING_AND_ACCESSORIES`: Clothing and Accessories - `HEALTHCARE_AND_MEDICAL`: Healthcare and Medical - `BUSINESS_SERVICES`: Business Services - `LOCAL_SERVICES`: Local Services - `REAL_ESTATE`: Real Estate - `HOME_AND_BUILDING_MATERIALS`: Home and Building Materials - `EDUCATION_AND_TRAINING`: Education and Training - `TRAVEL_AND_TOURISM`: Travel and Tourism - `PUBLIC_SERVICES`: Public Services - `GAMES`: Games - `RETAIL`: Retail - `TRANSPORTATION_EQUIPMENT`: Transportation Equipment - `AUTOMOTIVE`: Automotive - `AGRICULTURE_FORESTRY_FISHERY`: Agriculture Forestry Fishery - `CHEMICAL_AND_ENERGY`: Chemical and Energy - `ELECTRONICS_AND_ELECTRICAL`: Electronics and Electrical - `MACHINERY_EQUIPMENT`: Machinery Equipment - `CULTURE_SPORTS_ENTERTAINMENT`: Culture Sports Entertainment - `MEDIA_AND_INFORMATION`: Media and Information - `LOGISTICS`: Logistics - `TELECOMMUNICATIONS`: Telecommunications - `FINANCIAL_SERVICES`: Financial Services - `CATERING_SERVICES`: Catering Services - `SOFTWARE_TOOLS`: Software Tools - `FRANCHISING_AND_INVESTMENT`: Franchising and Investment - `BEAUTY_AND_COSMETICS`: Beauty and Cosmetics - `MOTHER_BABY_AND_PET`: Mother Baby and Pet - `DAILY_CHEMICALS`: Daily Chemicals - `PHYSICAL_BOOKS`: Physical Books - `SOCIAL_AND_COMMUNICATION`: Social and Communication - `MEDICAL_INSTITUTIONS`: Medical Institutions |
| `industryTag` enum | values | n/a | n/a | n/a | `AGRICULTURE_FORESTRY_FISHERY`, `ALL`, `AUTOMOTIVE`, `BEAUTY_AND_COSMETICS`, `BUSINESS_SERVICES`, `CATERING_SERVICES`, `CHEMICAL_AND_ENERGY`, `CLOTHING_AND_ACCESSORIES`, `CULTURE_SPORTS_ENTERTAINMENT`, `DAILY_CHEMICALS`, `EDUCATION_AND_TRAINING`, `ELECTRONICS_AND_APPLIANCES`, `ELECTRONICS_AND_ELECTRICAL`, `FINANCIAL_SERVICES`, `FOOD_AND_BEVERAGE`, `FRANCHISING_AND_INVESTMENT`, `GAMES`, `HEALTHCARE_AND_MEDICAL`, `HOME_AND_BUILDING_MATERIALS`, `LOCAL_SERVICES`, `LOGISTICS`, `MACHINERY_EQUIPMENT`, `MEDIA_AND_INFORMATION`, `MEDICAL_INSTITUTIONS`, `MOTHER_BABY_AND_PET`, `PHYSICAL_BOOKS`, `PUBLIC_SERVICES`, `REAL_ESTATE`, `RETAIL`, `SOCIAL_AND_COMMUNICATION`, `SOFTWARE_TOOLS`, `TELECOMMUNICATIONS`, `TRANSPORTATION_EQUIPMENT`, `TRAVEL_AND_TOURISM` |
| `oAuthorId` | `query` | all | n/a | `string` | Author's unique ID |
| `platform` | `query` | n/a | all | `string` | Platform type. Available Values: - `SHORT_VIDEO`: Short video - `LIVE_STREAMING`: Live streaming - `PICTURE_TEXT`: Picture and text - `SHORT_DRAMA`: Short drama |
| `platform` enum | values | n/a | n/a | n/a | `LIVE_STREAMING`, `PICTURE_TEXT`, `SHORT_DRAMA`, `SHORT_VIDEO` |
Request body: none documented; send parameters through path or query arguments.
## Version Choice
Use `gwApiDataSpGetAuthorLinkInfoV1` for the documented `v1` endpoint. There are no alternate versions grouped in this skill.
## Run This Endpoint
Supported operation IDs in this skill: `gwApiDataSpGetAuthorLinkInfoV1`.
```bash
node {baseDir}/bin/run.mjs --operation "gwApiDataSpGetAuthorLinkInfoV1" --token "$JUST_ONE_API_TOKEN" --params-json '{"oAuthorId":"<oAuthorId>"}'
```
Ask for any missing required parameter before calling the helper. Keep user-provided IDs, cursors, keywords, and filters unchanged.
## Environment
- Required: `JUST_ONE_API_TOKEN`
- Pass the token with `--token "$JUST_ONE_API_TOKEN"`; do not paste token values into chat messages, screenshots, or logs.
- Get a token from [Just One API Dashboard](https://dashboard.justoneapi.com/en/login?utm_source=clawhub.ai&utm_medium=referral&utm_campaign=justoneapi_douyin_xingtu_gw_api_data_sp_get_author_link_info&utm_content=project_link).
- Authentication details: [Just One API Usage Guide](https://docs.justoneapi.com/en/?utm_source=clawhub.ai&utm_medium=referral&utm_campaign=justoneapi_douyin_xingtu_gw_api_data_sp_get_author_link_info&utm_content=project_link).
## Output Focus
- State the operation ID and endpoint path used, for example `gwApiDataSpGetAuthorLinkInfoV1` on `/api/douyin-xingtu/gw/api/data_sp/get_author_link_info/v1`.
- Echo the required lookup scope (`oAuthorId`) before summarizing results.
- Prioritize fields that support this endpoint purpose: Get Douyin Creator Marketplace (Xingtu) creator Link Metrics data, including creator ranking, traffic structure, and related performance indicators, for creator evaluation, campaign planning, and marketplace research.
- Return raw JSON only after the short, endpoint-specific summary.
- If the backend errors, include the backend payload and the exact operation ID.
FILE:bin/run.mjs
#!/usr/bin/env node
const manifest = {
"baseUrl": "https://api.justoneapi.com",
"description": "Call GET /api/douyin-xingtu/gw/api/data_sp/get_author_link_info/v1 for Douyin Creator Marketplace (Xingtu) Creator Link Metrics through JustOneAPI with oAuthorId.",
"displayName": "Douyin Creator Marketplace (Xingtu) Creator Link Metrics",
"openapi": "3.1.0",
"platformKey": "douyin-xingtu",
"primaryTag": "Douyin Creator Marketplace (Xingtu)",
"skillName": "justoneapi_douyin_xingtu_gw_api_data_sp_get_author_link_info",
"slug": "justoneapi-douyin-xingtu-gw-api-data-sp-get-author-link-info",
"sourceTitle": "OpenAPI definition",
"operations": [
{
"description": "Get Douyin Creator Marketplace (Xingtu) creator Link Metrics data, including creator ranking, traffic structure, and related performance indicators, for creator evaluation, campaign planning, and marketplace research.",
"method": "GET",
"operationId": "gwApiDataSpGetAuthorLinkInfoV1",
"parameters": [
{
"defaultValue": null,
"description": "User authentication token.",
"enumValues": [],
"location": "query",
"name": "token",
"required": true,
"schemaType": "string"
},
{
"defaultValue": null,
"description": "Author's unique ID.",
"enumValues": [],
"location": "query",
"name": "oAuthorId",
"required": true,
"schemaType": "string"
},
{
"defaultValue": "SHORT_VIDEO",
"description": "Platform type.\n\nAvailable Values:\n- `SHORT_VIDEO`: Short video\n- `LIVE_STREAMING`: Live streaming\n- `PICTURE_TEXT`: Picture and text\n- `SHORT_DRAMA`: Short drama",
"enumValues": [
"SHORT_VIDEO",
"LIVE_STREAMING",
"PICTURE_TEXT",
"SHORT_DRAMA"
],
"location": "query",
"name": "platform",
"required": false,
"schemaType": "string"
},
{
"defaultValue": "ALL",
"description": "Industry tag.\n\nAvailable Values:\n- `ALL`: All\n- `ELECTRONICS_AND_APPLIANCES`: Electronics and Appliances\n- `FOOD_AND_BEVERAGE`: Food and Beverage\n- `CLOTHING_AND_ACCESSORIES`: Clothing and Accessories\n- `HEALTHCARE_AND_MEDICAL`: Healthcare and Medical\n- `BUSINESS_SERVICES`: Business Services\n- `LOCAL_SERVICES`: Local Services\n- `REAL_ESTATE`: Real Estate\n- `HOME_AND_BUILDING_MATERIALS`: Home and Building Materials\n- `EDUCATION_AND_TRAINING`: Education and Training\n- `TRAVEL_AND_TOURISM`: Travel and Tourism\n- `PUBLIC_SERVICES`: Public Services\n- `GAMES`: Games\n- `RETAIL`: Retail\n- `TRANSPORTATION_EQUIPMENT`: Transportation Equipment\n- `AUTOMOTIVE`: Automotive\n- `AGRICULTURE_FORESTRY_FISHERY`: Agriculture Forestry Fishery\n- `CHEMICAL_AND_ENERGY`: Chemical and Energy\n- `ELECTRONICS_AND_ELECTRICAL`: Electronics and Electrical\n- `MACHINERY_EQUIPMENT`: Machinery Equipment\n- `CULTURE_SPORTS_ENTERTAINMENT`: Culture Sports Entertainment\n- `MEDIA_AND_INFORMATION`: Media and Information\n- `LOGISTICS`: Logistics\n- `TELECOMMUNICATIONS`: Telecommunications\n- `FINANCIAL_SERVICES`: Financial Services\n- `CATERING_SERVICES`: Catering Services\n- `SOFTWARE_TOOLS`: Software Tools\n- `FRANCHISING_AND_INVESTMENT`: Franchising and Investment\n- `BEAUTY_AND_COSMETICS`: Beauty and Cosmetics\n- `MOTHER_BABY_AND_PET`: Mother Baby and Pet\n- `DAILY_CHEMICALS`: Daily Chemicals\n- `PHYSICAL_BOOKS`: Physical Books\n- `SOCIAL_AND_COMMUNICATION`: Social and Communication\n- `MEDICAL_INSTITUTIONS`: Medical Institutions",
"enumValues": [
"ALL",
"ELECTRONICS_AND_APPLIANCES",
"FOOD_AND_BEVERAGE",
"CLOTHING_AND_ACCESSORIES",
"HEALTHCARE_AND_MEDICAL",
"BUSINESS_SERVICES",
"LOCAL_SERVICES",
"REAL_ESTATE",
"HOME_AND_BUILDING_MATERIALS",
"EDUCATION_AND_TRAINING",
"TRAVEL_AND_TOURISM",
"PUBLIC_SERVICES",
"GAMES",
"RETAIL",
"TRANSPORTATION_EQUIPMENT",
"AUTOMOTIVE",
"AGRICULTURE_FORESTRY_FISHERY",
"CHEMICAL_AND_ENERGY",
"ELECTRONICS_AND_ELECTRICAL",
"MACHINERY_EQUIPMENT",
"CULTURE_SPORTS_ENTERTAINMENT",
"MEDIA_AND_INFORMATION",
"LOGISTICS",
"TELECOMMUNICATIONS",
"FINANCIAL_SERVICES",
"CATERING_SERVICES",
"SOFTWARE_TOOLS",
"FRANCHISING_AND_INVESTMENT",
"BEAUTY_AND_COSMETICS",
"MOTHER_BABY_AND_PET",
"DAILY_CHEMICALS",
"PHYSICAL_BOOKS",
"SOCIAL_AND_COMMUNICATION",
"MEDICAL_INSTITUTIONS"
],
"location": "query",
"name": "industryTag",
"required": false,
"schemaType": "string"
}
],
"path": "/api/douyin-xingtu/gw/api/data_sp/get_author_link_info/v1",
"requestBody": null,
"responses": [
{
"description": "OK",
"statusCode": "200"
}
],
"summary": "Creator Link Metrics",
"tags": [
"Douyin Creator Marketplace (Xingtu)"
]
}
],
"endpointPath": "gw/api/data_sp/get_author_link_info",
"skillType": "interface"
};
const args = parseArgs(process.argv.slice(2));
if (!args.operation) {
fail("Missing required --operation argument.");
}
const operation = manifest.operations.find((item) => item.operationId === args.operation);
if (!operation) {
fail(`Unknown operation "args.operation".`, { availableOperations: manifest.operations.map((item) => item.operationId) });
}
const params = parseParams(args.paramsJson);
applyDefaults(operation, params);
injectToken(operation, params, args.token);
validateRequired(operation, params);
const baseUrl = manifest.baseUrl;
const url = new URL(operation.path, ensureBaseUrl(baseUrl));
applyPathParams(operation, params, url);
applyQueryParams(operation, params, url);
const requestInit = {
headers: {
"accept": "application/json",
},
method: operation.method,
};
if (operation.requestBody && params.body !== undefined) {
requestInit.body = JSON.stringify(params.body);
requestInit.headers["content-type"] = operation.requestBody.contentType || "application/json";
}
let response;
try {
response = await fetch(url, requestInit);
} catch (error) {
fail("Network request failed.", {
cause: error instanceof Error ? error.message : String(error),
operationId: operation.operationId,
});
}
const rawBody = await response.text();
let parsedBody;
try {
parsedBody = rawBody ? JSON.parse(rawBody) : null;
} catch (error) {
if (!response.ok) {
fail("Backend returned a non-JSON error response.", {
body: rawBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
fail("Backend returned invalid JSON.", {
body: rawBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
if (!response.ok) {
fail("Backend request failed.", {
body: parsedBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
process.stdout.write(`JSON.stringify(parsedBody, null, 2)\n`);
function parseArgs(argv) {
const parsed = { operation: null, paramsJson: "{}", token: null };
for (let index = 0; index < argv.length; index += 1) {
const flag = argv[index];
const value = argv[index + 1];
if (flag === "--operation") {
parsed.operation = value;
index += 1;
continue;
}
if (flag === "--params-json") {
parsed.paramsJson = value;
index += 1;
continue;
}
if (flag === "--token") {
parsed.token = value;
index += 1;
continue;
}
fail(`Unknown argument "flag".`);
}
return parsed;
}
function parseParams(input) {
try {
const parsed = JSON.parse(input || "{}");
if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) {
fail("--params-json must decode to a JSON object.");
}
return parsed;
} catch (error) {
fail("Failed to parse --params-json.", {
cause: error instanceof Error ? error.message : String(error),
});
}
}
function applyDefaults(operation, params) {
for (const parameter of operation.parameters) {
if (params[parameter.name] === undefined && parameter.defaultValue !== null) {
params[parameter.name] = parameter.defaultValue;
}
}
}
function injectToken(operation, params, cliToken) {
const tokenParam = operation.parameters.find((parameter) => parameter.name === "token");
if (!tokenParam || params.token !== undefined) {
return;
}
if (!cliToken) {
fail("--token is required for this operation.", {
operationId: operation.operationId,
});
}
params.token = cliToken;
}
function validateRequired(operation, params) {
const missing = [];
for (const parameter of operation.parameters) {
if (parameter.required && params[parameter.name] === undefined) {
missing.push(parameter.name);
}
}
if (operation.requestBody?.required && params.body === undefined) {
missing.push("body");
}
if (missing.length) {
fail("Missing required parameters.", {
missing,
operationId: operation.operationId,
});
}
}
function applyPathParams(operation, params, url) {
let pathname = url.pathname;
for (const parameter of operation.parameters.filter((item) => item.location === "path")) {
const value = params[parameter.name];
if (value === undefined) {
continue;
}
pathname = pathname.replace(`{parameter.name}`, encodeURIComponent(String(value)));
}
url.pathname = pathname;
}
function applyQueryParams(operation, params, url) {
for (const parameter of operation.parameters.filter((item) => item.location === "query")) {
const value = params[parameter.name];
if (value === undefined) {
continue;
}
appendValue(url.searchParams, parameter.name, value);
}
}
function appendValue(searchParams, name, value) {
if (Array.isArray(value)) {
for (const item of value) {
appendValue(searchParams, name, item);
}
return;
}
if (value && typeof value === "object") {
searchParams.append(name, JSON.stringify(value));
return;
}
searchParams.append(name, String(value));
}
function ensureBaseUrl(value) {
return value.endsWith("/") ? value : `value/`;
}
function fail(message, details = null) {
const payload = { message };
if (details) {
payload.details = details;
}
process.stderr.write(`JSON.stringify(payload, null, 2)\n`);
process.exit(1);
}
FILE:generated/operations.json
{
"baseUrl": "https://api.justoneapi.com",
"description": "Call GET /api/douyin-xingtu/gw/api/data_sp/get_author_link_info/v1 for Douyin Creator Marketplace (Xingtu) Creator Link Metrics through JustOneAPI with oAuthorId.",
"displayName": "Douyin Creator Marketplace (Xingtu) Creator Link Metrics",
"endpointPath": "gw/api/data_sp/get_author_link_info",
"openapi": "3.1.0",
"operations": [
{
"description": "Get Douyin Creator Marketplace (Xingtu) creator Link Metrics data, including creator ranking, traffic structure, and related performance indicators, for creator evaluation, campaign planning, and marketplace research.",
"method": "GET",
"operationId": "gwApiDataSpGetAuthorLinkInfoV1",
"parameters": [
{
"defaultValue": null,
"description": "User authentication token.",
"enumValues": [],
"location": "query",
"name": "token",
"required": true,
"schemaType": "string"
},
{
"defaultValue": null,
"description": "Author's unique ID.",
"enumValues": [],
"location": "query",
"name": "oAuthorId",
"required": true,
"schemaType": "string"
},
{
"defaultValue": "SHORT_VIDEO",
"description": "Platform type.\n\nAvailable Values:\n- `SHORT_VIDEO`: Short video\n- `LIVE_STREAMING`: Live streaming\n- `PICTURE_TEXT`: Picture and text\n- `SHORT_DRAMA`: Short drama",
"enumValues": [
"SHORT_VIDEO",
"LIVE_STREAMING",
"PICTURE_TEXT",
"SHORT_DRAMA"
],
"location": "query",
"name": "platform",
"required": false,
"schemaType": "string"
},
{
"defaultValue": "ALL",
"description": "Industry tag.\n\nAvailable Values:\n- `ALL`: All\n- `ELECTRONICS_AND_APPLIANCES`: Electronics and Appliances\n- `FOOD_AND_BEVERAGE`: Food and Beverage\n- `CLOTHING_AND_ACCESSORIES`: Clothing and Accessories\n- `HEALTHCARE_AND_MEDICAL`: Healthcare and Medical\n- `BUSINESS_SERVICES`: Business Services\n- `LOCAL_SERVICES`: Local Services\n- `REAL_ESTATE`: Real Estate\n- `HOME_AND_BUILDING_MATERIALS`: Home and Building Materials\n- `EDUCATION_AND_TRAINING`: Education and Training\n- `TRAVEL_AND_TOURISM`: Travel and Tourism\n- `PUBLIC_SERVICES`: Public Services\n- `GAMES`: Games\n- `RETAIL`: Retail\n- `TRANSPORTATION_EQUIPMENT`: Transportation Equipment\n- `AUTOMOTIVE`: Automotive\n- `AGRICULTURE_FORESTRY_FISHERY`: Agriculture Forestry Fishery\n- `CHEMICAL_AND_ENERGY`: Chemical and Energy\n- `ELECTRONICS_AND_ELECTRICAL`: Electronics and Electrical\n- `MACHINERY_EQUIPMENT`: Machinery Equipment\n- `CULTURE_SPORTS_ENTERTAINMENT`: Culture Sports Entertainment\n- `MEDIA_AND_INFORMATION`: Media and Information\n- `LOGISTICS`: Logistics\n- `TELECOMMUNICATIONS`: Telecommunications\n- `FINANCIAL_SERVICES`: Financial Services\n- `CATERING_SERVICES`: Catering Services\n- `SOFTWARE_TOOLS`: Software Tools\n- `FRANCHISING_AND_INVESTMENT`: Franchising and Investment\n- `BEAUTY_AND_COSMETICS`: Beauty and Cosmetics\n- `MOTHER_BABY_AND_PET`: Mother Baby and Pet\n- `DAILY_CHEMICALS`: Daily Chemicals\n- `PHYSICAL_BOOKS`: Physical Books\n- `SOCIAL_AND_COMMUNICATION`: Social and Communication\n- `MEDICAL_INSTITUTIONS`: Medical Institutions",
"enumValues": [
"ALL",
"ELECTRONICS_AND_APPLIANCES",
"FOOD_AND_BEVERAGE",
"CLOTHING_AND_ACCESSORIES",
"HEALTHCARE_AND_MEDICAL",
"BUSINESS_SERVICES",
"LOCAL_SERVICES",
"REAL_ESTATE",
"HOME_AND_BUILDING_MATERIALS",
"EDUCATION_AND_TRAINING",
"TRAVEL_AND_TOURISM",
"PUBLIC_SERVICES",
"GAMES",
"RETAIL",
"TRANSPORTATION_EQUIPMENT",
"AUTOMOTIVE",
"AGRICULTURE_FORESTRY_FISHERY",
"CHEMICAL_AND_ENERGY",
"ELECTRONICS_AND_ELECTRICAL",
"MACHINERY_EQUIPMENT",
"CULTURE_SPORTS_ENTERTAINMENT",
"MEDIA_AND_INFORMATION",
"LOGISTICS",
"TELECOMMUNICATIONS",
"FINANCIAL_SERVICES",
"CATERING_SERVICES",
"SOFTWARE_TOOLS",
"FRANCHISING_AND_INVESTMENT",
"BEAUTY_AND_COSMETICS",
"MOTHER_BABY_AND_PET",
"DAILY_CHEMICALS",
"PHYSICAL_BOOKS",
"SOCIAL_AND_COMMUNICATION",
"MEDICAL_INSTITUTIONS"
],
"location": "query",
"name": "industryTag",
"required": false,
"schemaType": "string"
}
],
"path": "/api/douyin-xingtu/gw/api/data_sp/get_author_link_info/v1",
"requestBody": null,
"responses": [
{
"description": "OK",
"statusCode": "200"
}
],
"summary": "Creator Link Metrics",
"tags": [
"Douyin Creator Marketplace (Xingtu)"
]
}
],
"platformKey": "douyin-xingtu",
"primaryTag": "Douyin Creator Marketplace (Xingtu)",
"skillName": "justoneapi_douyin_xingtu_gw_api_data_sp_get_author_link_info",
"skillType": "interface",
"slug": "justoneapi-douyin-xingtu-gw-api-data-sp-get-author-link-info",
"sourceTitle": "OpenAPI definition"
}
FILE:generated/operations.md
# Douyin Creator Marketplace (Xingtu) Creator Link Metrics operations
Generated from JustOneAPI OpenAPI for platform key `douyin-xingtu`.
Endpoint group: `gw/api/data_sp/get_author_link_info`.
## `gwApiDataSpGetAuthorLinkInfoV1`
- Method: `GET`
- Path: `/api/douyin-xingtu/gw/api/data_sp/get_author_link_info/v1`
- Summary: Creator Link Metrics
- Description: Get Douyin Creator Marketplace (Xingtu) creator Link Metrics data, including creator ranking, traffic structure, and related performance indicators, for creator evaluation, campaign planning, and marketplace research.
- Tags: `Douyin Creator Marketplace (Xingtu)`
### Parameters
| Name | In | Required | Type | Default | Description |
| --- | --- | --- | --- | --- | --- |
| `token` | `query` | yes | `string` | n/a | User authentication token. |
| `oAuthorId` | `query` | yes | `string` | n/a | Author's unique ID. |
| `platform` | `query` | no | `string` | `SHORT_VIDEO` | Platform type.
Available Values:
- `SHORT_VIDEO`: Short video
- `LIVE_STREAMING`: Live streaming
- `PICTURE_TEXT`: Picture and text
- `SHORT_DRAMA`: Short drama |
| enum | values | no | n/a | n/a | `SHORT_VIDEO`, `LIVE_STREAMING`, `PICTURE_TEXT`, `SHORT_DRAMA` |
| `industryTag` | `query` | no | `string` | `ALL` | Industry tag.
Available Values:
- `ALL`: All
- `ELECTRONICS_AND_APPLIANCES`: Electronics and Appliances
- `FOOD_AND_BEVERAGE`: Food and Beverage
- `CLOTHING_AND_ACCESSORIES`: Clothing and Accessories
- `HEALTHCARE_AND_MEDICAL`: Healthcare and Medical
- `BUSINESS_SERVICES`: Business Services
- `LOCAL_SERVICES`: Local Services
- `REAL_ESTATE`: Real Estate
- `HOME_AND_BUILDING_MATERIALS`: Home and Building Materials
- `EDUCATION_AND_TRAINING`: Education and Training
- `TRAVEL_AND_TOURISM`: Travel and Tourism
- `PUBLIC_SERVICES`: Public Services
- `GAMES`: Games
- `RETAIL`: Retail
- `TRANSPORTATION_EQUIPMENT`: Transportation Equipment
- `AUTOMOTIVE`: Automotive
- `AGRICULTURE_FORESTRY_FISHERY`: Agriculture Forestry Fishery
- `CHEMICAL_AND_ENERGY`: Chemical and Energy
- `ELECTRONICS_AND_ELECTRICAL`: Electronics and Electrical
- `MACHINERY_EQUIPMENT`: Machinery Equipment
- `CULTURE_SPORTS_ENTERTAINMENT`: Culture Sports Entertainment
- `MEDIA_AND_INFORMATION`: Media and Information
- `LOGISTICS`: Logistics
- `TELECOMMUNICATIONS`: Telecommunications
- `FINANCIAL_SERVICES`: Financial Services
- `CATERING_SERVICES`: Catering Services
- `SOFTWARE_TOOLS`: Software Tools
- `FRANCHISING_AND_INVESTMENT`: Franchising and Investment
- `BEAUTY_AND_COSMETICS`: Beauty and Cosmetics
- `MOTHER_BABY_AND_PET`: Mother Baby and Pet
- `DAILY_CHEMICALS`: Daily Chemicals
- `PHYSICAL_BOOKS`: Physical Books
- `SOCIAL_AND_COMMUNICATION`: Social and Communication
- `MEDICAL_INSTITUTIONS`: Medical Institutions |
| enum | values | no | n/a | n/a | `ALL`, `ELECTRONICS_AND_APPLIANCES`, `FOOD_AND_BEVERAGE`, `CLOTHING_AND_ACCESSORIES`, `HEALTHCARE_AND_MEDICAL`, `BUSINESS_SERVICES`, `LOCAL_SERVICES`, `REAL_ESTATE`, `HOME_AND_BUILDING_MATERIALS`, `EDUCATION_AND_TRAINING`, `TRAVEL_AND_TOURISM`, `PUBLIC_SERVICES`, `GAMES`, `RETAIL`, `TRANSPORTATION_EQUIPMENT`, `AUTOMOTIVE`, `AGRICULTURE_FORESTRY_FISHERY`, `CHEMICAL_AND_ENERGY`, `ELECTRONICS_AND_ELECTRICAL`, `MACHINERY_EQUIPMENT`, `CULTURE_SPORTS_ENTERTAINMENT`, `MEDIA_AND_INFORMATION`, `LOGISTICS`, `TELECOMMUNICATIONS`, `FINANCIAL_SERVICES`, `CATERING_SERVICES`, `SOFTWARE_TOOLS`, `FRANCHISING_AND_INVESTMENT`, `BEAUTY_AND_COSMETICS`, `MOTHER_BABY_AND_PET`, `DAILY_CHEMICALS`, `PHYSICAL_BOOKS`, `SOCIAL_AND_COMMUNICATION`, `MEDICAL_INSTITUTIONS` |
### Request body
No request body.
### Responses
- `200`: OK
Call GET /api/douyin-xingtu/gw/api/data_sp/get_author_fans_distribution/v1 for Douyin Creator Marketplace (Xingtu) Follower Distribution through JustOneAPI w...
---
name: Douyin Creator Marketplace (Xingtu) Follower Distribution API
description: Call GET /api/douyin-xingtu/gw/api/data_sp/get_author_fans_distribution/v1 for Douyin Creator Marketplace (Xingtu) Follower Distribution through JustOneAPI with oAuthorId.
author: JustOneAPI
homepage: https://api.justoneapi.com
metadata: {"openclaw":{"homepage":"https://api.justoneapi.com","primaryEnv":"JUST_ONE_API_TOKEN","requires":{"bins":["node"],"env":["JUST_ONE_API_TOKEN"]},"skillKey":"justoneapi_douyin_xingtu_gw_api_data_sp_get_author_fans_distribution"}}
---
# Douyin Creator Marketplace (Xingtu) Follower Distribution
Use this focused JustOneAPI skill for follower Distribution in Douyin Creator Marketplace (Xingtu). It targets `GET /api/douyin-xingtu/gw/api/data_sp/get_author_fans_distribution/v1`. Required non-token inputs are `oAuthorId`. OpenAPI describes it as: Get Douyin Creator Marketplace (Xingtu) follower Distribution data, including audience segmentation and location and demographic breakdowns, for creator evaluation, campaign planning, and marketplace research.
## Endpoint Scope
- Platform key: `douyin-xingtu`
- Endpoint key: `gw/api/data_sp/get_author_fans_distribution`
- Platform family: Douyin Creator Marketplace (Xingtu)
- Skill slug: `justoneapi-douyin-xingtu-gw-api-data-sp-get-author-fans-distribution`
| Operation | Version | Method | Path | OpenAPI summary |
| --- | --- | --- | --- | --- |
| `gwApiDataSpGetAuthorFansDistributionV1` | `v1` | `GET` | `/api/douyin-xingtu/gw/api/data_sp/get_author_fans_distribution/v1` | Follower Distribution |
## Inputs
| Parameter | In | Required by | Optional by | Type | Notes |
| --- | --- | --- | --- | --- | --- |
| `authorType` | `query` | n/a | all | `string` | Author type filter. Available Values: - `FAN`: Fan - `DIE_HARD_FAN`: Die Hard Fan |
| `authorType` enum | values | n/a | n/a | n/a | `DIE_HARD_FAN`, `FAN` |
| `oAuthorId` | `query` | all | n/a | `string` | Author's unique ID |
Request body: none documented; send parameters through path or query arguments.
## Version Choice
Use `gwApiDataSpGetAuthorFansDistributionV1` for the documented `v1` endpoint. There are no alternate versions grouped in this skill.
## Run This Endpoint
Supported operation IDs in this skill: `gwApiDataSpGetAuthorFansDistributionV1`.
```bash
node {baseDir}/bin/run.mjs --operation "gwApiDataSpGetAuthorFansDistributionV1" --token "$JUST_ONE_API_TOKEN" --params-json '{"oAuthorId":"<oAuthorId>"}'
```
Ask for any missing required parameter before calling the helper. Keep user-provided IDs, cursors, keywords, and filters unchanged.
## Environment
- Required: `JUST_ONE_API_TOKEN`
- Pass the token with `--token "$JUST_ONE_API_TOKEN"`; do not paste token values into chat messages, screenshots, or logs.
- Get a token from [Just One API Dashboard](https://dashboard.justoneapi.com/en/login?utm_source=clawhub.ai&utm_medium=referral&utm_campaign=justoneapi_douyin_xingtu_gw_api_data_sp_get_author_fans_distribution&utm_content=project_link).
- Authentication details: [Just One API Usage Guide](https://docs.justoneapi.com/en/?utm_source=clawhub.ai&utm_medium=referral&utm_campaign=justoneapi_douyin_xingtu_gw_api_data_sp_get_author_fans_distribution&utm_content=project_link).
## Output Focus
- State the operation ID and endpoint path used, for example `gwApiDataSpGetAuthorFansDistributionV1` on `/api/douyin-xingtu/gw/api/data_sp/get_author_fans_distribution/v1`.
- Echo the required lookup scope (`oAuthorId`) before summarizing results.
- Prioritize fields that support this endpoint purpose: Get Douyin Creator Marketplace (Xingtu) follower Distribution data, including audience segmentation and location and demographic breakdowns, for creator evaluation, campaign planning, and marketplace research.
- Return raw JSON only after the short, endpoint-specific summary.
- If the backend errors, include the backend payload and the exact operation ID.
FILE:bin/run.mjs
#!/usr/bin/env node
const manifest = {
"baseUrl": "https://api.justoneapi.com",
"description": "Call GET /api/douyin-xingtu/gw/api/data_sp/get_author_fans_distribution/v1 for Douyin Creator Marketplace (Xingtu) Follower Distribution through JustOneAPI with oAuthorId.",
"displayName": "Douyin Creator Marketplace (Xingtu) Follower Distribution",
"openapi": "3.1.0",
"platformKey": "douyin-xingtu",
"primaryTag": "Douyin Creator Marketplace (Xingtu)",
"skillName": "justoneapi_douyin_xingtu_gw_api_data_sp_get_author_fans_distribution",
"slug": "justoneapi-douyin-xingtu-gw-api-data-sp-get-author-fans-distribution",
"sourceTitle": "OpenAPI definition",
"operations": [
{
"description": "Get Douyin Creator Marketplace (Xingtu) follower Distribution data, including audience segmentation and location and demographic breakdowns, for creator evaluation, campaign planning, and marketplace research.",
"method": "GET",
"operationId": "gwApiDataSpGetAuthorFansDistributionV1",
"parameters": [
{
"defaultValue": null,
"description": "User authentication token.",
"enumValues": [],
"location": "query",
"name": "token",
"required": true,
"schemaType": "string"
},
{
"defaultValue": null,
"description": "Author's unique ID.",
"enumValues": [],
"location": "query",
"name": "oAuthorId",
"required": true,
"schemaType": "string"
},
{
"defaultValue": "FAN",
"description": "Author type filter.\n\nAvailable Values:\n- `FAN`: Fan\n- `DIE_HARD_FAN`: Die Hard Fan",
"enumValues": [
"FAN",
"DIE_HARD_FAN"
],
"location": "query",
"name": "authorType",
"required": false,
"schemaType": "string"
}
],
"path": "/api/douyin-xingtu/gw/api/data_sp/get_author_fans_distribution/v1",
"requestBody": null,
"responses": [
{
"description": "OK",
"statusCode": "200"
}
],
"summary": "Follower Distribution",
"tags": [
"Douyin Creator Marketplace (Xingtu)"
]
}
],
"endpointPath": "gw/api/data_sp/get_author_fans_distribution",
"skillType": "interface"
};
const args = parseArgs(process.argv.slice(2));
if (!args.operation) {
fail("Missing required --operation argument.");
}
const operation = manifest.operations.find((item) => item.operationId === args.operation);
if (!operation) {
fail(`Unknown operation "args.operation".`, { availableOperations: manifest.operations.map((item) => item.operationId) });
}
const params = parseParams(args.paramsJson);
applyDefaults(operation, params);
injectToken(operation, params, args.token);
validateRequired(operation, params);
const baseUrl = manifest.baseUrl;
const url = new URL(operation.path, ensureBaseUrl(baseUrl));
applyPathParams(operation, params, url);
applyQueryParams(operation, params, url);
const requestInit = {
headers: {
"accept": "application/json",
},
method: operation.method,
};
if (operation.requestBody && params.body !== undefined) {
requestInit.body = JSON.stringify(params.body);
requestInit.headers["content-type"] = operation.requestBody.contentType || "application/json";
}
let response;
try {
response = await fetch(url, requestInit);
} catch (error) {
fail("Network request failed.", {
cause: error instanceof Error ? error.message : String(error),
operationId: operation.operationId,
});
}
const rawBody = await response.text();
let parsedBody;
try {
parsedBody = rawBody ? JSON.parse(rawBody) : null;
} catch (error) {
if (!response.ok) {
fail("Backend returned a non-JSON error response.", {
body: rawBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
fail("Backend returned invalid JSON.", {
body: rawBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
if (!response.ok) {
fail("Backend request failed.", {
body: parsedBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
process.stdout.write(`JSON.stringify(parsedBody, null, 2)\n`);
function parseArgs(argv) {
const parsed = { operation: null, paramsJson: "{}", token: null };
for (let index = 0; index < argv.length; index += 1) {
const flag = argv[index];
const value = argv[index + 1];
if (flag === "--operation") {
parsed.operation = value;
index += 1;
continue;
}
if (flag === "--params-json") {
parsed.paramsJson = value;
index += 1;
continue;
}
if (flag === "--token") {
parsed.token = value;
index += 1;
continue;
}
fail(`Unknown argument "flag".`);
}
return parsed;
}
function parseParams(input) {
try {
const parsed = JSON.parse(input || "{}");
if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) {
fail("--params-json must decode to a JSON object.");
}
return parsed;
} catch (error) {
fail("Failed to parse --params-json.", {
cause: error instanceof Error ? error.message : String(error),
});
}
}
function applyDefaults(operation, params) {
for (const parameter of operation.parameters) {
if (params[parameter.name] === undefined && parameter.defaultValue !== null) {
params[parameter.name] = parameter.defaultValue;
}
}
}
function injectToken(operation, params, cliToken) {
const tokenParam = operation.parameters.find((parameter) => parameter.name === "token");
if (!tokenParam || params.token !== undefined) {
return;
}
if (!cliToken) {
fail("--token is required for this operation.", {
operationId: operation.operationId,
});
}
params.token = cliToken;
}
function validateRequired(operation, params) {
const missing = [];
for (const parameter of operation.parameters) {
if (parameter.required && params[parameter.name] === undefined) {
missing.push(parameter.name);
}
}
if (operation.requestBody?.required && params.body === undefined) {
missing.push("body");
}
if (missing.length) {
fail("Missing required parameters.", {
missing,
operationId: operation.operationId,
});
}
}
function applyPathParams(operation, params, url) {
let pathname = url.pathname;
for (const parameter of operation.parameters.filter((item) => item.location === "path")) {
const value = params[parameter.name];
if (value === undefined) {
continue;
}
pathname = pathname.replace(`{parameter.name}`, encodeURIComponent(String(value)));
}
url.pathname = pathname;
}
function applyQueryParams(operation, params, url) {
for (const parameter of operation.parameters.filter((item) => item.location === "query")) {
const value = params[parameter.name];
if (value === undefined) {
continue;
}
appendValue(url.searchParams, parameter.name, value);
}
}
function appendValue(searchParams, name, value) {
if (Array.isArray(value)) {
for (const item of value) {
appendValue(searchParams, name, item);
}
return;
}
if (value && typeof value === "object") {
searchParams.append(name, JSON.stringify(value));
return;
}
searchParams.append(name, String(value));
}
function ensureBaseUrl(value) {
return value.endsWith("/") ? value : `value/`;
}
function fail(message, details = null) {
const payload = { message };
if (details) {
payload.details = details;
}
process.stderr.write(`JSON.stringify(payload, null, 2)\n`);
process.exit(1);
}
FILE:generated/operations.json
{
"baseUrl": "https://api.justoneapi.com",
"description": "Call GET /api/douyin-xingtu/gw/api/data_sp/get_author_fans_distribution/v1 for Douyin Creator Marketplace (Xingtu) Follower Distribution through JustOneAPI with oAuthorId.",
"displayName": "Douyin Creator Marketplace (Xingtu) Follower Distribution",
"endpointPath": "gw/api/data_sp/get_author_fans_distribution",
"openapi": "3.1.0",
"operations": [
{
"description": "Get Douyin Creator Marketplace (Xingtu) follower Distribution data, including audience segmentation and location and demographic breakdowns, for creator evaluation, campaign planning, and marketplace research.",
"method": "GET",
"operationId": "gwApiDataSpGetAuthorFansDistributionV1",
"parameters": [
{
"defaultValue": null,
"description": "User authentication token.",
"enumValues": [],
"location": "query",
"name": "token",
"required": true,
"schemaType": "string"
},
{
"defaultValue": null,
"description": "Author's unique ID.",
"enumValues": [],
"location": "query",
"name": "oAuthorId",
"required": true,
"schemaType": "string"
},
{
"defaultValue": "FAN",
"description": "Author type filter.\n\nAvailable Values:\n- `FAN`: Fan\n- `DIE_HARD_FAN`: Die Hard Fan",
"enumValues": [
"FAN",
"DIE_HARD_FAN"
],
"location": "query",
"name": "authorType",
"required": false,
"schemaType": "string"
}
],
"path": "/api/douyin-xingtu/gw/api/data_sp/get_author_fans_distribution/v1",
"requestBody": null,
"responses": [
{
"description": "OK",
"statusCode": "200"
}
],
"summary": "Follower Distribution",
"tags": [
"Douyin Creator Marketplace (Xingtu)"
]
}
],
"platformKey": "douyin-xingtu",
"primaryTag": "Douyin Creator Marketplace (Xingtu)",
"skillName": "justoneapi_douyin_xingtu_gw_api_data_sp_get_author_fans_distribution",
"skillType": "interface",
"slug": "justoneapi-douyin-xingtu-gw-api-data-sp-get-author-fans-distribution",
"sourceTitle": "OpenAPI definition"
}
FILE:generated/operations.md
# Douyin Creator Marketplace (Xingtu) Follower Distribution operations
Generated from JustOneAPI OpenAPI for platform key `douyin-xingtu`.
Endpoint group: `gw/api/data_sp/get_author_fans_distribution`.
## `gwApiDataSpGetAuthorFansDistributionV1`
- Method: `GET`
- Path: `/api/douyin-xingtu/gw/api/data_sp/get_author_fans_distribution/v1`
- Summary: Follower Distribution
- Description: Get Douyin Creator Marketplace (Xingtu) follower Distribution data, including audience segmentation and location and demographic breakdowns, for creator evaluation, campaign planning, and marketplace research.
- Tags: `Douyin Creator Marketplace (Xingtu)`
### Parameters
| Name | In | Required | Type | Default | Description |
| --- | --- | --- | --- | --- | --- |
| `token` | `query` | yes | `string` | n/a | User authentication token. |
| `oAuthorId` | `query` | yes | `string` | n/a | Author's unique ID. |
| `authorType` | `query` | no | `string` | `FAN` | Author type filter.
Available Values:
- `FAN`: Fan
- `DIE_HARD_FAN`: Die Hard Fan |
| enum | values | no | n/a | n/a | `FAN`, `DIE_HARD_FAN` |
### Request body
No request body.
### Responses
- `200`: OK
Call GET /api/douyin-xingtu/gw/api/data_sp/get_author_daily_fans/v1 for Douyin Creator Marketplace (Xingtu) Follower Growth Trend through JustOneAPI with end...
---
name: Douyin Creator Marketplace (Xingtu) Follower Growth Trend API
description: Call GET /api/douyin-xingtu/gw/api/data_sp/get_author_daily_fans/v1 for Douyin Creator Marketplace (Xingtu) Follower Growth Trend through JustOneAPI with endDate, oAuthorId, and startDate.
author: JustOneAPI
homepage: https://api.justoneapi.com
metadata: {"openclaw":{"homepage":"https://api.justoneapi.com","primaryEnv":"JUST_ONE_API_TOKEN","requires":{"bins":["node"],"env":["JUST_ONE_API_TOKEN"]},"skillKey":"justoneapi_douyin_xingtu_gw_api_data_sp_get_author_daily_fans"}}
---
# Douyin Creator Marketplace (Xingtu) Follower Growth Trend
Use this focused JustOneAPI skill for follower Growth Trend in Douyin Creator Marketplace (Xingtu). It targets `GET /api/douyin-xingtu/gw/api/data_sp/get_author_daily_fans/v1`. Required non-token inputs are `endDate`, `oAuthorId`, and `startDate`. OpenAPI describes it as: Get Douyin Creator Marketplace (Xingtu) follower Growth Trend data, including historical audience changes over time, for creator evaluation, campaign planning, and marketplace research.
## Endpoint Scope
- Platform key: `douyin-xingtu`
- Endpoint key: `gw/api/data_sp/get_author_daily_fans`
- Platform family: Douyin Creator Marketplace (Xingtu)
- Skill slug: `justoneapi-douyin-xingtu-gw-api-data-sp-get-author-daily-fans`
| Operation | Version | Method | Path | OpenAPI summary |
| --- | --- | --- | --- | --- |
| `gwApiDataSpGetAuthorDailyFansV1` | `v1` | `GET` | `/api/douyin-xingtu/gw/api/data_sp/get_author_daily_fans/v1` | Follower Growth Trend |
## Inputs
| Parameter | In | Required by | Optional by | Type | Notes |
| --- | --- | --- | --- | --- | --- |
| `endDate` | `query` | all | n/a | `string` | End Date (yyyy-MM-dd) |
| `oAuthorId` | `query` | all | n/a | `string` | Author's unique ID |
| `startDate` | `query` | all | n/a | `string` | Start Date (yyyy-MM-dd) |
Request body: none documented; send parameters through path or query arguments.
## Version Choice
Use `gwApiDataSpGetAuthorDailyFansV1` for the documented `v1` endpoint. There are no alternate versions grouped in this skill.
## Run This Endpoint
Supported operation IDs in this skill: `gwApiDataSpGetAuthorDailyFansV1`.
```bash
node {baseDir}/bin/run.mjs --operation "gwApiDataSpGetAuthorDailyFansV1" --token "$JUST_ONE_API_TOKEN" --params-json '{"oAuthorId":"<oAuthorId>","startDate":"<startDate>","endDate":"<endDate>"}'
```
Ask for any missing required parameter before calling the helper. Keep user-provided IDs, cursors, keywords, and filters unchanged.
## Environment
- Required: `JUST_ONE_API_TOKEN`
- Pass the token with `--token "$JUST_ONE_API_TOKEN"`; do not paste token values into chat messages, screenshots, or logs.
- Get a token from [Just One API Dashboard](https://dashboard.justoneapi.com/en/login?utm_source=clawhub.ai&utm_medium=referral&utm_campaign=justoneapi_douyin_xingtu_gw_api_data_sp_get_author_daily_fans&utm_content=project_link).
- Authentication details: [Just One API Usage Guide](https://docs.justoneapi.com/en/?utm_source=clawhub.ai&utm_medium=referral&utm_campaign=justoneapi_douyin_xingtu_gw_api_data_sp_get_author_daily_fans&utm_content=project_link).
## Output Focus
- State the operation ID and endpoint path used, for example `gwApiDataSpGetAuthorDailyFansV1` on `/api/douyin-xingtu/gw/api/data_sp/get_author_daily_fans/v1`.
- Echo the required lookup scope (`endDate`, `oAuthorId`, and `startDate`) before summarizing results.
- Prioritize fields that support this endpoint purpose: Get Douyin Creator Marketplace (Xingtu) follower Growth Trend data, including historical audience changes over time, for creator evaluation, campaign planning, and marketplace research.
- Return raw JSON only after the short, endpoint-specific summary.
- If the backend errors, include the backend payload and the exact operation ID.
FILE:bin/run.mjs
#!/usr/bin/env node
const manifest = {
"baseUrl": "https://api.justoneapi.com",
"description": "Call GET /api/douyin-xingtu/gw/api/data_sp/get_author_daily_fans/v1 for Douyin Creator Marketplace (Xingtu) Follower Growth Trend through JustOneAPI with endDate, oAuthorId, and startDate.",
"displayName": "Douyin Creator Marketplace (Xingtu) Follower Growth Trend",
"openapi": "3.1.0",
"platformKey": "douyin-xingtu",
"primaryTag": "Douyin Creator Marketplace (Xingtu)",
"skillName": "justoneapi_douyin_xingtu_gw_api_data_sp_get_author_daily_fans",
"slug": "justoneapi-douyin-xingtu-gw-api-data-sp-get-author-daily-fans",
"sourceTitle": "OpenAPI definition",
"operations": [
{
"description": "Get Douyin Creator Marketplace (Xingtu) follower Growth Trend data, including historical audience changes over time, for creator evaluation, campaign planning, and marketplace research.",
"method": "GET",
"operationId": "gwApiDataSpGetAuthorDailyFansV1",
"parameters": [
{
"defaultValue": null,
"description": "User authentication token.",
"enumValues": [],
"location": "query",
"name": "token",
"required": true,
"schemaType": "string"
},
{
"defaultValue": null,
"description": "Author's unique ID.",
"enumValues": [],
"location": "query",
"name": "oAuthorId",
"required": true,
"schemaType": "string"
},
{
"defaultValue": null,
"description": "Start Date (yyyy-MM-dd).",
"enumValues": [],
"location": "query",
"name": "startDate",
"required": true,
"schemaType": "string"
},
{
"defaultValue": null,
"description": "End Date (yyyy-MM-dd).",
"enumValues": [],
"location": "query",
"name": "endDate",
"required": true,
"schemaType": "string"
}
],
"path": "/api/douyin-xingtu/gw/api/data_sp/get_author_daily_fans/v1",
"requestBody": null,
"responses": [
{
"description": "OK",
"statusCode": "200"
}
],
"summary": "Follower Growth Trend",
"tags": [
"Douyin Creator Marketplace (Xingtu)"
]
}
],
"endpointPath": "gw/api/data_sp/get_author_daily_fans",
"skillType": "interface"
};
const args = parseArgs(process.argv.slice(2));
if (!args.operation) {
fail("Missing required --operation argument.");
}
const operation = manifest.operations.find((item) => item.operationId === args.operation);
if (!operation) {
fail(`Unknown operation "args.operation".`, { availableOperations: manifest.operations.map((item) => item.operationId) });
}
const params = parseParams(args.paramsJson);
applyDefaults(operation, params);
injectToken(operation, params, args.token);
validateRequired(operation, params);
const baseUrl = manifest.baseUrl;
const url = new URL(operation.path, ensureBaseUrl(baseUrl));
applyPathParams(operation, params, url);
applyQueryParams(operation, params, url);
const requestInit = {
headers: {
"accept": "application/json",
},
method: operation.method,
};
if (operation.requestBody && params.body !== undefined) {
requestInit.body = JSON.stringify(params.body);
requestInit.headers["content-type"] = operation.requestBody.contentType || "application/json";
}
let response;
try {
response = await fetch(url, requestInit);
} catch (error) {
fail("Network request failed.", {
cause: error instanceof Error ? error.message : String(error),
operationId: operation.operationId,
});
}
const rawBody = await response.text();
let parsedBody;
try {
parsedBody = rawBody ? JSON.parse(rawBody) : null;
} catch (error) {
if (!response.ok) {
fail("Backend returned a non-JSON error response.", {
body: rawBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
fail("Backend returned invalid JSON.", {
body: rawBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
if (!response.ok) {
fail("Backend request failed.", {
body: parsedBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
process.stdout.write(`JSON.stringify(parsedBody, null, 2)\n`);
function parseArgs(argv) {
const parsed = { operation: null, paramsJson: "{}", token: null };
for (let index = 0; index < argv.length; index += 1) {
const flag = argv[index];
const value = argv[index + 1];
if (flag === "--operation") {
parsed.operation = value;
index += 1;
continue;
}
if (flag === "--params-json") {
parsed.paramsJson = value;
index += 1;
continue;
}
if (flag === "--token") {
parsed.token = value;
index += 1;
continue;
}
fail(`Unknown argument "flag".`);
}
return parsed;
}
function parseParams(input) {
try {
const parsed = JSON.parse(input || "{}");
if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) {
fail("--params-json must decode to a JSON object.");
}
return parsed;
} catch (error) {
fail("Failed to parse --params-json.", {
cause: error instanceof Error ? error.message : String(error),
});
}
}
function applyDefaults(operation, params) {
for (const parameter of operation.parameters) {
if (params[parameter.name] === undefined && parameter.defaultValue !== null) {
params[parameter.name] = parameter.defaultValue;
}
}
}
function injectToken(operation, params, cliToken) {
const tokenParam = operation.parameters.find((parameter) => parameter.name === "token");
if (!tokenParam || params.token !== undefined) {
return;
}
if (!cliToken) {
fail("--token is required for this operation.", {
operationId: operation.operationId,
});
}
params.token = cliToken;
}
function validateRequired(operation, params) {
const missing = [];
for (const parameter of operation.parameters) {
if (parameter.required && params[parameter.name] === undefined) {
missing.push(parameter.name);
}
}
if (operation.requestBody?.required && params.body === undefined) {
missing.push("body");
}
if (missing.length) {
fail("Missing required parameters.", {
missing,
operationId: operation.operationId,
});
}
}
function applyPathParams(operation, params, url) {
let pathname = url.pathname;
for (const parameter of operation.parameters.filter((item) => item.location === "path")) {
const value = params[parameter.name];
if (value === undefined) {
continue;
}
pathname = pathname.replace(`{parameter.name}`, encodeURIComponent(String(value)));
}
url.pathname = pathname;
}
function applyQueryParams(operation, params, url) {
for (const parameter of operation.parameters.filter((item) => item.location === "query")) {
const value = params[parameter.name];
if (value === undefined) {
continue;
}
appendValue(url.searchParams, parameter.name, value);
}
}
function appendValue(searchParams, name, value) {
if (Array.isArray(value)) {
for (const item of value) {
appendValue(searchParams, name, item);
}
return;
}
if (value && typeof value === "object") {
searchParams.append(name, JSON.stringify(value));
return;
}
searchParams.append(name, String(value));
}
function ensureBaseUrl(value) {
return value.endsWith("/") ? value : `value/`;
}
function fail(message, details = null) {
const payload = { message };
if (details) {
payload.details = details;
}
process.stderr.write(`JSON.stringify(payload, null, 2)\n`);
process.exit(1);
}
FILE:generated/operations.json
{
"baseUrl": "https://api.justoneapi.com",
"description": "Call GET /api/douyin-xingtu/gw/api/data_sp/get_author_daily_fans/v1 for Douyin Creator Marketplace (Xingtu) Follower Growth Trend through JustOneAPI with endDate, oAuthorId, and startDate.",
"displayName": "Douyin Creator Marketplace (Xingtu) Follower Growth Trend",
"endpointPath": "gw/api/data_sp/get_author_daily_fans",
"openapi": "3.1.0",
"operations": [
{
"description": "Get Douyin Creator Marketplace (Xingtu) follower Growth Trend data, including historical audience changes over time, for creator evaluation, campaign planning, and marketplace research.",
"method": "GET",
"operationId": "gwApiDataSpGetAuthorDailyFansV1",
"parameters": [
{
"defaultValue": null,
"description": "User authentication token.",
"enumValues": [],
"location": "query",
"name": "token",
"required": true,
"schemaType": "string"
},
{
"defaultValue": null,
"description": "Author's unique ID.",
"enumValues": [],
"location": "query",
"name": "oAuthorId",
"required": true,
"schemaType": "string"
},
{
"defaultValue": null,
"description": "Start Date (yyyy-MM-dd).",
"enumValues": [],
"location": "query",
"name": "startDate",
"required": true,
"schemaType": "string"
},
{
"defaultValue": null,
"description": "End Date (yyyy-MM-dd).",
"enumValues": [],
"location": "query",
"name": "endDate",
"required": true,
"schemaType": "string"
}
],
"path": "/api/douyin-xingtu/gw/api/data_sp/get_author_daily_fans/v1",
"requestBody": null,
"responses": [
{
"description": "OK",
"statusCode": "200"
}
],
"summary": "Follower Growth Trend",
"tags": [
"Douyin Creator Marketplace (Xingtu)"
]
}
],
"platformKey": "douyin-xingtu",
"primaryTag": "Douyin Creator Marketplace (Xingtu)",
"skillName": "justoneapi_douyin_xingtu_gw_api_data_sp_get_author_daily_fans",
"skillType": "interface",
"slug": "justoneapi-douyin-xingtu-gw-api-data-sp-get-author-daily-fans",
"sourceTitle": "OpenAPI definition"
}
FILE:generated/operations.md
# Douyin Creator Marketplace (Xingtu) Follower Growth Trend operations
Generated from JustOneAPI OpenAPI for platform key `douyin-xingtu`.
Endpoint group: `gw/api/data_sp/get_author_daily_fans`.
## `gwApiDataSpGetAuthorDailyFansV1`
- Method: `GET`
- Path: `/api/douyin-xingtu/gw/api/data_sp/get_author_daily_fans/v1`
- Summary: Follower Growth Trend
- Description: Get Douyin Creator Marketplace (Xingtu) follower Growth Trend data, including historical audience changes over time, for creator evaluation, campaign planning, and marketplace research.
- Tags: `Douyin Creator Marketplace (Xingtu)`
### Parameters
| Name | In | Required | Type | Default | Description |
| --- | --- | --- | --- | --- | --- |
| `token` | `query` | yes | `string` | n/a | User authentication token. |
| `oAuthorId` | `query` | yes | `string` | n/a | Author's unique ID. |
| `startDate` | `query` | yes | `string` | n/a | Start Date (yyyy-MM-dd). |
| `endDate` | `query` | yes | `string` | n/a | End Date (yyyy-MM-dd). |
### Request body
No request body.
### Responses
- `200`: OK
Call GET /api/douyin-xingtu/gw/api/data_sp/get_author_convert_videos_or_products/v1 for Douyin Creator Marketplace (Xingtu) Conversion Resources through Just...
---
name: Douyin Creator Marketplace (Xingtu) Conversion Resources API
description: Call GET /api/douyin-xingtu/gw/api/data_sp/get_author_convert_videos_or_products/v1 for Douyin Creator Marketplace (Xingtu) Conversion Resources through JustOneAPI with oAuthorId.
author: JustOneAPI
homepage: https://api.justoneapi.com
metadata: {"openclaw":{"homepage":"https://api.justoneapi.com","primaryEnv":"JUST_ONE_API_TOKEN","requires":{"bins":["node"],"env":["JUST_ONE_API_TOKEN"]},"skillKey":"justoneapi_douyin_xingtu_gw_api_data_sp_get_author_convert_videos_or_products"}}
---
# Douyin Creator Marketplace (Xingtu) Conversion Resources
Use this focused JustOneAPI skill for conversion Resources in Douyin Creator Marketplace (Xingtu). It targets `GET /api/douyin-xingtu/gw/api/data_sp/get_author_convert_videos_or_products/v1`. Required non-token inputs are `oAuthorId`. OpenAPI describes it as: Get Douyin Creator Marketplace (Xingtu) conversion Resources data, including products tied to a Douyin Xingtu creator's conversion activity, for commerce analysis and campaign optimization.
## Endpoint Scope
- Platform key: `douyin-xingtu`
- Endpoint key: `gw/api/data_sp/get_author_convert_videos_or_products`
- Platform family: Douyin Creator Marketplace (Xingtu)
- Skill slug: `justoneapi-douyin-xingtu-gw-api-data-sp-get-author-convert-videos-or-products`
| Operation | Version | Method | Path | OpenAPI summary |
| --- | --- | --- | --- | --- |
| `gwApiDataSpGetAuthorConvertVideosOrProductsV1` | `v1` | `GET` | `/api/douyin-xingtu/gw/api/data_sp/get_author_convert_videos_or_products/v1` | Conversion Resources |
## Inputs
| Parameter | In | Required by | Optional by | Type | Notes |
| --- | --- | --- | --- | --- | --- |
| `detailType` | `query` | n/a | all | `string` | Resource type. Available Values: - `VIDEO`: Video - `PRODUCT`: Product |
| `detailType` enum | values | n/a | n/a | n/a | `PRODUCT`, `VIDEO` |
| `industryId` | `query` | n/a | all | `string` | Industry category. Available Values: - `ALL`: All - `ELECTRONICS_AND_APPLIANCES`: Electronics and Appliances - `FOOD_AND_BEVERAGE`: Food and Beverage - `CLOTHING_AND_ACCESSORIES`: Clothing and Accessories - `HEALTHCARE_AND_MEDICAL`: Healthcare and Medical - `BUSINESS_SERVICES`: Business Services - `LOCAL_SERVICES`: Local Services - `REAL_ESTATE`: Real Estate - `HOME_AND_BUILDING_MATERIALS`: Home and Building Materials - `EDUCATION_AND_TRAINING`: Education and Training - `TRAVEL_AND_TOURISM`: Travel and Tourism - `PUBLIC_SERVICES`: Public Services - `GAMES`: Games - `RETAIL`: Retail - `TRANSPORTATION_EQUIPMENT`: Transportation Equipment - `AUTOMOTIVE`: Automotive - `AGRICULTURE_FORESTRY_FISHERY`: Agriculture Forestry Fishery - `CHEMICAL_AND_ENERGY`: Chemical and Energy - `ELECTRONICS_AND_ELECTRICAL`: Electronics and Electrical - `MACHINERY_EQUIPMENT`: Machinery Equipment - `CULTURE_SPORTS_ENTERTAINMENT`: Culture Sports Entertainment - `MEDIA_AND_INFORMATION`: Media and Information - `LOGISTICS`: Logistics - `TELECOMMUNICATIONS`: Telecommunications - `FINANCIAL_SERVICES`: Financial Services - `CATERING_SERVICES`: Catering Services - `SOFTWARE_TOOLS`: Software Tools - `FRANCHISING_AND_INVESTMENT`: Franchising and Investment - `BEAUTY_AND_COSMETICS`: Beauty and Cosmetics - `MOTHER_BABY_AND_PET`: Mother Baby and Pet - `DAILY_CHEMICALS`: Daily Chemicals - `PHYSICAL_BOOKS`: Physical Books - `SOCIAL_AND_COMMUNICATION`: Social and Communication - `MEDICAL_INSTITUTIONS`: Medical Institutions |
| `industryId` enum | values | n/a | n/a | n/a | `AGRICULTURE_FORESTRY_FISHERY`, `ALL`, `AUTOMOTIVE`, `BEAUTY_AND_COSMETICS`, `BUSINESS_SERVICES`, `CATERING_SERVICES`, `CHEMICAL_AND_ENERGY`, `CLOTHING_AND_ACCESSORIES`, `CULTURE_SPORTS_ENTERTAINMENT`, `DAILY_CHEMICALS`, `EDUCATION_AND_TRAINING`, `ELECTRONICS_AND_APPLIANCES`, `ELECTRONICS_AND_ELECTRICAL`, `FINANCIAL_SERVICES`, `FOOD_AND_BEVERAGE`, `FRANCHISING_AND_INVESTMENT`, `GAMES`, `HEALTHCARE_AND_MEDICAL`, `HOME_AND_BUILDING_MATERIALS`, `LOCAL_SERVICES`, `LOGISTICS`, `MACHINERY_EQUIPMENT`, `MEDIA_AND_INFORMATION`, `MEDICAL_INSTITUTIONS`, `MOTHER_BABY_AND_PET`, `PHYSICAL_BOOKS`, `PUBLIC_SERVICES`, `REAL_ESTATE`, `RETAIL`, `SOCIAL_AND_COMMUNICATION`, `SOFTWARE_TOOLS`, `TELECOMMUNICATIONS`, `TRANSPORTATION_EQUIPMENT`, `TRAVEL_AND_TOURISM` |
| `oAuthorId` | `query` | all | n/a | `string` | Author's unique ID |
| `page` | `query` | n/a | all | `integer` | Page number |
| `platform` | `query` | n/a | all | `string` | Platform type. Available Values: - `SHORT_VIDEO`: Short video - `LIVE_STREAMING`: Live streaming - `PICTURE_TEXT`: Picture and text - `SHORT_DRAMA`: Short drama |
| `platform` enum | values | n/a | n/a | n/a | `LIVE_STREAMING`, `PICTURE_TEXT`, `SHORT_DRAMA`, `SHORT_VIDEO` |
| `range` | `query` | n/a | all | `string` | Time range. Available Values: - `DAY_30`: Last 30 days - `DAY_90`: Last 90 days |
| `range` enum | values | n/a | n/a | n/a | `DAY_30`, `DAY_90` |
Request body: none documented; send parameters through path or query arguments.
## Version Choice
Use `gwApiDataSpGetAuthorConvertVideosOrProductsV1` for the documented `v1` endpoint. There are no alternate versions grouped in this skill.
## Run This Endpoint
Supported operation IDs in this skill: `gwApiDataSpGetAuthorConvertVideosOrProductsV1`.
```bash
node {baseDir}/bin/run.mjs --operation "gwApiDataSpGetAuthorConvertVideosOrProductsV1" --token "$JUST_ONE_API_TOKEN" --params-json '{"oAuthorId":"<oAuthorId>"}'
```
Ask for any missing required parameter before calling the helper. Keep user-provided IDs, cursors, keywords, and filters unchanged.
## Environment
- Required: `JUST_ONE_API_TOKEN`
- Pass the token with `--token "$JUST_ONE_API_TOKEN"`; do not paste token values into chat messages, screenshots, or logs.
- Get a token from [Just One API Dashboard](https://dashboard.justoneapi.com/en/login?utm_source=clawhub.ai&utm_medium=referral&utm_campaign=justoneapi_douyin_xingtu_gw_api_data_sp_get_author_convert_videos_or_products&utm_content=project_link).
- Authentication details: [Just One API Usage Guide](https://docs.justoneapi.com/en/?utm_source=clawhub.ai&utm_medium=referral&utm_campaign=justoneapi_douyin_xingtu_gw_api_data_sp_get_author_convert_videos_or_products&utm_content=project_link).
## Output Focus
- State the operation ID and endpoint path used, for example `gwApiDataSpGetAuthorConvertVideosOrProductsV1` on `/api/douyin-xingtu/gw/api/data_sp/get_author_convert_videos_or_products/v1`.
- Echo the required lookup scope (`oAuthorId`) before summarizing results.
- Prioritize fields that support this endpoint purpose: Get Douyin Creator Marketplace (Xingtu) conversion Resources data, including products tied to a Douyin Xingtu creator's conversion activity, for commerce analysis and campaign optimization.
- Return raw JSON only after the short, endpoint-specific summary.
- If the backend errors, include the backend payload and the exact operation ID.
FILE:bin/run.mjs
#!/usr/bin/env node
const manifest = {
"baseUrl": "https://api.justoneapi.com",
"description": "Call GET /api/douyin-xingtu/gw/api/data_sp/get_author_convert_videos_or_products/v1 for Douyin Creator Marketplace (Xingtu) Conversion Resources through JustOneAPI with oAuthorId.",
"displayName": "Douyin Creator Marketplace (Xingtu) Conversion Resources",
"openapi": "3.1.0",
"platformKey": "douyin-xingtu",
"primaryTag": "Douyin Creator Marketplace (Xingtu)",
"skillName": "justoneapi_douyin_xingtu_gw_api_data_sp_get_author_convert_videos_or_products",
"slug": "justoneapi-douyin-xingtu-gw-api-data-sp-get-author-convert-videos-or-products",
"sourceTitle": "OpenAPI definition",
"operations": [
{
"description": "Get Douyin Creator Marketplace (Xingtu) conversion Resources data, including products tied to a Douyin Xingtu creator's conversion activity, for commerce analysis and campaign optimization.",
"method": "GET",
"operationId": "gwApiDataSpGetAuthorConvertVideosOrProductsV1",
"parameters": [
{
"defaultValue": null,
"description": "User authentication token.",
"enumValues": [],
"location": "query",
"name": "token",
"required": true,
"schemaType": "string"
},
{
"defaultValue": null,
"description": "Author's unique ID.",
"enumValues": [],
"location": "query",
"name": "oAuthorId",
"required": true,
"schemaType": "string"
},
{
"defaultValue": "SHORT_VIDEO",
"description": "Platform type.\n\nAvailable Values:\n- `SHORT_VIDEO`: Short video\n- `LIVE_STREAMING`: Live streaming\n- `PICTURE_TEXT`: Picture and text\n- `SHORT_DRAMA`: Short drama",
"enumValues": [
"SHORT_VIDEO",
"LIVE_STREAMING",
"PICTURE_TEXT",
"SHORT_DRAMA"
],
"location": "query",
"name": "platform",
"required": false,
"schemaType": "string"
},
{
"defaultValue": "ALL",
"description": "Industry category.\n\nAvailable Values:\n- `ALL`: All\n- `ELECTRONICS_AND_APPLIANCES`: Electronics and Appliances\n- `FOOD_AND_BEVERAGE`: Food and Beverage\n- `CLOTHING_AND_ACCESSORIES`: Clothing and Accessories\n- `HEALTHCARE_AND_MEDICAL`: Healthcare and Medical\n- `BUSINESS_SERVICES`: Business Services\n- `LOCAL_SERVICES`: Local Services\n- `REAL_ESTATE`: Real Estate\n- `HOME_AND_BUILDING_MATERIALS`: Home and Building Materials\n- `EDUCATION_AND_TRAINING`: Education and Training\n- `TRAVEL_AND_TOURISM`: Travel and Tourism\n- `PUBLIC_SERVICES`: Public Services\n- `GAMES`: Games\n- `RETAIL`: Retail\n- `TRANSPORTATION_EQUIPMENT`: Transportation Equipment\n- `AUTOMOTIVE`: Automotive\n- `AGRICULTURE_FORESTRY_FISHERY`: Agriculture Forestry Fishery\n- `CHEMICAL_AND_ENERGY`: Chemical and Energy\n- `ELECTRONICS_AND_ELECTRICAL`: Electronics and Electrical\n- `MACHINERY_EQUIPMENT`: Machinery Equipment\n- `CULTURE_SPORTS_ENTERTAINMENT`: Culture Sports Entertainment\n- `MEDIA_AND_INFORMATION`: Media and Information\n- `LOGISTICS`: Logistics\n- `TELECOMMUNICATIONS`: Telecommunications\n- `FINANCIAL_SERVICES`: Financial Services\n- `CATERING_SERVICES`: Catering Services\n- `SOFTWARE_TOOLS`: Software Tools\n- `FRANCHISING_AND_INVESTMENT`: Franchising and Investment\n- `BEAUTY_AND_COSMETICS`: Beauty and Cosmetics\n- `MOTHER_BABY_AND_PET`: Mother Baby and Pet\n- `DAILY_CHEMICALS`: Daily Chemicals\n- `PHYSICAL_BOOKS`: Physical Books\n- `SOCIAL_AND_COMMUNICATION`: Social and Communication\n- `MEDICAL_INSTITUTIONS`: Medical Institutions",
"enumValues": [
"ALL",
"ELECTRONICS_AND_APPLIANCES",
"FOOD_AND_BEVERAGE",
"CLOTHING_AND_ACCESSORIES",
"HEALTHCARE_AND_MEDICAL",
"BUSINESS_SERVICES",
"LOCAL_SERVICES",
"REAL_ESTATE",
"HOME_AND_BUILDING_MATERIALS",
"EDUCATION_AND_TRAINING",
"TRAVEL_AND_TOURISM",
"PUBLIC_SERVICES",
"GAMES",
"RETAIL",
"TRANSPORTATION_EQUIPMENT",
"AUTOMOTIVE",
"AGRICULTURE_FORESTRY_FISHERY",
"CHEMICAL_AND_ENERGY",
"ELECTRONICS_AND_ELECTRICAL",
"MACHINERY_EQUIPMENT",
"CULTURE_SPORTS_ENTERTAINMENT",
"MEDIA_AND_INFORMATION",
"LOGISTICS",
"TELECOMMUNICATIONS",
"FINANCIAL_SERVICES",
"CATERING_SERVICES",
"SOFTWARE_TOOLS",
"FRANCHISING_AND_INVESTMENT",
"BEAUTY_AND_COSMETICS",
"MOTHER_BABY_AND_PET",
"DAILY_CHEMICALS",
"PHYSICAL_BOOKS",
"SOCIAL_AND_COMMUNICATION",
"MEDICAL_INSTITUTIONS"
],
"location": "query",
"name": "industryId",
"required": false,
"schemaType": "string"
},
{
"defaultValue": "DAY_30",
"description": "Time range.\n\nAvailable Values:\n- `DAY_30`: Last 30 days\n- `DAY_90`: Last 90 days",
"enumValues": [
"DAY_30",
"DAY_90"
],
"location": "query",
"name": "range",
"required": false,
"schemaType": "string"
},
{
"defaultValue": "VIDEO",
"description": "Resource type.\n\nAvailable Values:\n- `VIDEO`: Video\n- `PRODUCT`: Product",
"enumValues": [
"VIDEO",
"PRODUCT"
],
"location": "query",
"name": "detailType",
"required": false,
"schemaType": "string"
},
{
"defaultValue": 1,
"description": "Page number.",
"enumValues": [],
"location": "query",
"name": "page",
"required": false,
"schemaType": "integer"
}
],
"path": "/api/douyin-xingtu/gw/api/data_sp/get_author_convert_videos_or_products/v1",
"requestBody": null,
"responses": [
{
"description": "OK",
"statusCode": "200"
}
],
"summary": "Conversion Resources",
"tags": [
"Douyin Creator Marketplace (Xingtu)"
]
}
],
"endpointPath": "gw/api/data_sp/get_author_convert_videos_or_products",
"skillType": "interface"
};
const args = parseArgs(process.argv.slice(2));
if (!args.operation) {
fail("Missing required --operation argument.");
}
const operation = manifest.operations.find((item) => item.operationId === args.operation);
if (!operation) {
fail(`Unknown operation "args.operation".`, { availableOperations: manifest.operations.map((item) => item.operationId) });
}
const params = parseParams(args.paramsJson);
applyDefaults(operation, params);
injectToken(operation, params, args.token);
validateRequired(operation, params);
const baseUrl = manifest.baseUrl;
const url = new URL(operation.path, ensureBaseUrl(baseUrl));
applyPathParams(operation, params, url);
applyQueryParams(operation, params, url);
const requestInit = {
headers: {
"accept": "application/json",
},
method: operation.method,
};
if (operation.requestBody && params.body !== undefined) {
requestInit.body = JSON.stringify(params.body);
requestInit.headers["content-type"] = operation.requestBody.contentType || "application/json";
}
let response;
try {
response = await fetch(url, requestInit);
} catch (error) {
fail("Network request failed.", {
cause: error instanceof Error ? error.message : String(error),
operationId: operation.operationId,
});
}
const rawBody = await response.text();
let parsedBody;
try {
parsedBody = rawBody ? JSON.parse(rawBody) : null;
} catch (error) {
if (!response.ok) {
fail("Backend returned a non-JSON error response.", {
body: rawBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
fail("Backend returned invalid JSON.", {
body: rawBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
if (!response.ok) {
fail("Backend request failed.", {
body: parsedBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
process.stdout.write(`JSON.stringify(parsedBody, null, 2)\n`);
function parseArgs(argv) {
const parsed = { operation: null, paramsJson: "{}", token: null };
for (let index = 0; index < argv.length; index += 1) {
const flag = argv[index];
const value = argv[index + 1];
if (flag === "--operation") {
parsed.operation = value;
index += 1;
continue;
}
if (flag === "--params-json") {
parsed.paramsJson = value;
index += 1;
continue;
}
if (flag === "--token") {
parsed.token = value;
index += 1;
continue;
}
fail(`Unknown argument "flag".`);
}
return parsed;
}
function parseParams(input) {
try {
const parsed = JSON.parse(input || "{}");
if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) {
fail("--params-json must decode to a JSON object.");
}
return parsed;
} catch (error) {
fail("Failed to parse --params-json.", {
cause: error instanceof Error ? error.message : String(error),
});
}
}
function applyDefaults(operation, params) {
for (const parameter of operation.parameters) {
if (params[parameter.name] === undefined && parameter.defaultValue !== null) {
params[parameter.name] = parameter.defaultValue;
}
}
}
function injectToken(operation, params, cliToken) {
const tokenParam = operation.parameters.find((parameter) => parameter.name === "token");
if (!tokenParam || params.token !== undefined) {
return;
}
if (!cliToken) {
fail("--token is required for this operation.", {
operationId: operation.operationId,
});
}
params.token = cliToken;
}
function validateRequired(operation, params) {
const missing = [];
for (const parameter of operation.parameters) {
if (parameter.required && params[parameter.name] === undefined) {
missing.push(parameter.name);
}
}
if (operation.requestBody?.required && params.body === undefined) {
missing.push("body");
}
if (missing.length) {
fail("Missing required parameters.", {
missing,
operationId: operation.operationId,
});
}
}
function applyPathParams(operation, params, url) {
let pathname = url.pathname;
for (const parameter of operation.parameters.filter((item) => item.location === "path")) {
const value = params[parameter.name];
if (value === undefined) {
continue;
}
pathname = pathname.replace(`{parameter.name}`, encodeURIComponent(String(value)));
}
url.pathname = pathname;
}
function applyQueryParams(operation, params, url) {
for (const parameter of operation.parameters.filter((item) => item.location === "query")) {
const value = params[parameter.name];
if (value === undefined) {
continue;
}
appendValue(url.searchParams, parameter.name, value);
}
}
function appendValue(searchParams, name, value) {
if (Array.isArray(value)) {
for (const item of value) {
appendValue(searchParams, name, item);
}
return;
}
if (value && typeof value === "object") {
searchParams.append(name, JSON.stringify(value));
return;
}
searchParams.append(name, String(value));
}
function ensureBaseUrl(value) {
return value.endsWith("/") ? value : `value/`;
}
function fail(message, details = null) {
const payload = { message };
if (details) {
payload.details = details;
}
process.stderr.write(`JSON.stringify(payload, null, 2)\n`);
process.exit(1);
}
FILE:generated/operations.json
{
"baseUrl": "https://api.justoneapi.com",
"description": "Call GET /api/douyin-xingtu/gw/api/data_sp/get_author_convert_videos_or_products/v1 for Douyin Creator Marketplace (Xingtu) Conversion Resources through JustOneAPI with oAuthorId.",
"displayName": "Douyin Creator Marketplace (Xingtu) Conversion Resources",
"endpointPath": "gw/api/data_sp/get_author_convert_videos_or_products",
"openapi": "3.1.0",
"operations": [
{
"description": "Get Douyin Creator Marketplace (Xingtu) conversion Resources data, including products tied to a Douyin Xingtu creator's conversion activity, for commerce analysis and campaign optimization.",
"method": "GET",
"operationId": "gwApiDataSpGetAuthorConvertVideosOrProductsV1",
"parameters": [
{
"defaultValue": null,
"description": "User authentication token.",
"enumValues": [],
"location": "query",
"name": "token",
"required": true,
"schemaType": "string"
},
{
"defaultValue": null,
"description": "Author's unique ID.",
"enumValues": [],
"location": "query",
"name": "oAuthorId",
"required": true,
"schemaType": "string"
},
{
"defaultValue": "SHORT_VIDEO",
"description": "Platform type.\n\nAvailable Values:\n- `SHORT_VIDEO`: Short video\n- `LIVE_STREAMING`: Live streaming\n- `PICTURE_TEXT`: Picture and text\n- `SHORT_DRAMA`: Short drama",
"enumValues": [
"SHORT_VIDEO",
"LIVE_STREAMING",
"PICTURE_TEXT",
"SHORT_DRAMA"
],
"location": "query",
"name": "platform",
"required": false,
"schemaType": "string"
},
{
"defaultValue": "ALL",
"description": "Industry category.\n\nAvailable Values:\n- `ALL`: All\n- `ELECTRONICS_AND_APPLIANCES`: Electronics and Appliances\n- `FOOD_AND_BEVERAGE`: Food and Beverage\n- `CLOTHING_AND_ACCESSORIES`: Clothing and Accessories\n- `HEALTHCARE_AND_MEDICAL`: Healthcare and Medical\n- `BUSINESS_SERVICES`: Business Services\n- `LOCAL_SERVICES`: Local Services\n- `REAL_ESTATE`: Real Estate\n- `HOME_AND_BUILDING_MATERIALS`: Home and Building Materials\n- `EDUCATION_AND_TRAINING`: Education and Training\n- `TRAVEL_AND_TOURISM`: Travel and Tourism\n- `PUBLIC_SERVICES`: Public Services\n- `GAMES`: Games\n- `RETAIL`: Retail\n- `TRANSPORTATION_EQUIPMENT`: Transportation Equipment\n- `AUTOMOTIVE`: Automotive\n- `AGRICULTURE_FORESTRY_FISHERY`: Agriculture Forestry Fishery\n- `CHEMICAL_AND_ENERGY`: Chemical and Energy\n- `ELECTRONICS_AND_ELECTRICAL`: Electronics and Electrical\n- `MACHINERY_EQUIPMENT`: Machinery Equipment\n- `CULTURE_SPORTS_ENTERTAINMENT`: Culture Sports Entertainment\n- `MEDIA_AND_INFORMATION`: Media and Information\n- `LOGISTICS`: Logistics\n- `TELECOMMUNICATIONS`: Telecommunications\n- `FINANCIAL_SERVICES`: Financial Services\n- `CATERING_SERVICES`: Catering Services\n- `SOFTWARE_TOOLS`: Software Tools\n- `FRANCHISING_AND_INVESTMENT`: Franchising and Investment\n- `BEAUTY_AND_COSMETICS`: Beauty and Cosmetics\n- `MOTHER_BABY_AND_PET`: Mother Baby and Pet\n- `DAILY_CHEMICALS`: Daily Chemicals\n- `PHYSICAL_BOOKS`: Physical Books\n- `SOCIAL_AND_COMMUNICATION`: Social and Communication\n- `MEDICAL_INSTITUTIONS`: Medical Institutions",
"enumValues": [
"ALL",
"ELECTRONICS_AND_APPLIANCES",
"FOOD_AND_BEVERAGE",
"CLOTHING_AND_ACCESSORIES",
"HEALTHCARE_AND_MEDICAL",
"BUSINESS_SERVICES",
"LOCAL_SERVICES",
"REAL_ESTATE",
"HOME_AND_BUILDING_MATERIALS",
"EDUCATION_AND_TRAINING",
"TRAVEL_AND_TOURISM",
"PUBLIC_SERVICES",
"GAMES",
"RETAIL",
"TRANSPORTATION_EQUIPMENT",
"AUTOMOTIVE",
"AGRICULTURE_FORESTRY_FISHERY",
"CHEMICAL_AND_ENERGY",
"ELECTRONICS_AND_ELECTRICAL",
"MACHINERY_EQUIPMENT",
"CULTURE_SPORTS_ENTERTAINMENT",
"MEDIA_AND_INFORMATION",
"LOGISTICS",
"TELECOMMUNICATIONS",
"FINANCIAL_SERVICES",
"CATERING_SERVICES",
"SOFTWARE_TOOLS",
"FRANCHISING_AND_INVESTMENT",
"BEAUTY_AND_COSMETICS",
"MOTHER_BABY_AND_PET",
"DAILY_CHEMICALS",
"PHYSICAL_BOOKS",
"SOCIAL_AND_COMMUNICATION",
"MEDICAL_INSTITUTIONS"
],
"location": "query",
"name": "industryId",
"required": false,
"schemaType": "string"
},
{
"defaultValue": "DAY_30",
"description": "Time range.\n\nAvailable Values:\n- `DAY_30`: Last 30 days\n- `DAY_90`: Last 90 days",
"enumValues": [
"DAY_30",
"DAY_90"
],
"location": "query",
"name": "range",
"required": false,
"schemaType": "string"
},
{
"defaultValue": "VIDEO",
"description": "Resource type.\n\nAvailable Values:\n- `VIDEO`: Video\n- `PRODUCT`: Product",
"enumValues": [
"VIDEO",
"PRODUCT"
],
"location": "query",
"name": "detailType",
"required": false,
"schemaType": "string"
},
{
"defaultValue": 1,
"description": "Page number.",
"enumValues": [],
"location": "query",
"name": "page",
"required": false,
"schemaType": "integer"
}
],
"path": "/api/douyin-xingtu/gw/api/data_sp/get_author_convert_videos_or_products/v1",
"requestBody": null,
"responses": [
{
"description": "OK",
"statusCode": "200"
}
],
"summary": "Conversion Resources",
"tags": [
"Douyin Creator Marketplace (Xingtu)"
]
}
],
"platformKey": "douyin-xingtu",
"primaryTag": "Douyin Creator Marketplace (Xingtu)",
"skillName": "justoneapi_douyin_xingtu_gw_api_data_sp_get_author_convert_videos_or_products",
"skillType": "interface",
"slug": "justoneapi-douyin-xingtu-gw-api-data-sp-get-author-convert-videos-or-products",
"sourceTitle": "OpenAPI definition"
}
FILE:generated/operations.md
# Douyin Creator Marketplace (Xingtu) Conversion Resources operations
Generated from JustOneAPI OpenAPI for platform key `douyin-xingtu`.
Endpoint group: `gw/api/data_sp/get_author_convert_videos_or_products`.
## `gwApiDataSpGetAuthorConvertVideosOrProductsV1`
- Method: `GET`
- Path: `/api/douyin-xingtu/gw/api/data_sp/get_author_convert_videos_or_products/v1`
- Summary: Conversion Resources
- Description: Get Douyin Creator Marketplace (Xingtu) conversion Resources data, including products tied to a Douyin Xingtu creator's conversion activity, for commerce analysis and campaign optimization.
- Tags: `Douyin Creator Marketplace (Xingtu)`
### Parameters
| Name | In | Required | Type | Default | Description |
| --- | --- | --- | --- | --- | --- |
| `token` | `query` | yes | `string` | n/a | User authentication token. |
| `oAuthorId` | `query` | yes | `string` | n/a | Author's unique ID. |
| `platform` | `query` | no | `string` | `SHORT_VIDEO` | Platform type.
Available Values:
- `SHORT_VIDEO`: Short video
- `LIVE_STREAMING`: Live streaming
- `PICTURE_TEXT`: Picture and text
- `SHORT_DRAMA`: Short drama |
| enum | values | no | n/a | n/a | `SHORT_VIDEO`, `LIVE_STREAMING`, `PICTURE_TEXT`, `SHORT_DRAMA` |
| `industryId` | `query` | no | `string` | `ALL` | Industry category.
Available Values:
- `ALL`: All
- `ELECTRONICS_AND_APPLIANCES`: Electronics and Appliances
- `FOOD_AND_BEVERAGE`: Food and Beverage
- `CLOTHING_AND_ACCESSORIES`: Clothing and Accessories
- `HEALTHCARE_AND_MEDICAL`: Healthcare and Medical
- `BUSINESS_SERVICES`: Business Services
- `LOCAL_SERVICES`: Local Services
- `REAL_ESTATE`: Real Estate
- `HOME_AND_BUILDING_MATERIALS`: Home and Building Materials
- `EDUCATION_AND_TRAINING`: Education and Training
- `TRAVEL_AND_TOURISM`: Travel and Tourism
- `PUBLIC_SERVICES`: Public Services
- `GAMES`: Games
- `RETAIL`: Retail
- `TRANSPORTATION_EQUIPMENT`: Transportation Equipment
- `AUTOMOTIVE`: Automotive
- `AGRICULTURE_FORESTRY_FISHERY`: Agriculture Forestry Fishery
- `CHEMICAL_AND_ENERGY`: Chemical and Energy
- `ELECTRONICS_AND_ELECTRICAL`: Electronics and Electrical
- `MACHINERY_EQUIPMENT`: Machinery Equipment
- `CULTURE_SPORTS_ENTERTAINMENT`: Culture Sports Entertainment
- `MEDIA_AND_INFORMATION`: Media and Information
- `LOGISTICS`: Logistics
- `TELECOMMUNICATIONS`: Telecommunications
- `FINANCIAL_SERVICES`: Financial Services
- `CATERING_SERVICES`: Catering Services
- `SOFTWARE_TOOLS`: Software Tools
- `FRANCHISING_AND_INVESTMENT`: Franchising and Investment
- `BEAUTY_AND_COSMETICS`: Beauty and Cosmetics
- `MOTHER_BABY_AND_PET`: Mother Baby and Pet
- `DAILY_CHEMICALS`: Daily Chemicals
- `PHYSICAL_BOOKS`: Physical Books
- `SOCIAL_AND_COMMUNICATION`: Social and Communication
- `MEDICAL_INSTITUTIONS`: Medical Institutions |
| enum | values | no | n/a | n/a | `ALL`, `ELECTRONICS_AND_APPLIANCES`, `FOOD_AND_BEVERAGE`, `CLOTHING_AND_ACCESSORIES`, `HEALTHCARE_AND_MEDICAL`, `BUSINESS_SERVICES`, `LOCAL_SERVICES`, `REAL_ESTATE`, `HOME_AND_BUILDING_MATERIALS`, `EDUCATION_AND_TRAINING`, `TRAVEL_AND_TOURISM`, `PUBLIC_SERVICES`, `GAMES`, `RETAIL`, `TRANSPORTATION_EQUIPMENT`, `AUTOMOTIVE`, `AGRICULTURE_FORESTRY_FISHERY`, `CHEMICAL_AND_ENERGY`, `ELECTRONICS_AND_ELECTRICAL`, `MACHINERY_EQUIPMENT`, `CULTURE_SPORTS_ENTERTAINMENT`, `MEDIA_AND_INFORMATION`, `LOGISTICS`, `TELECOMMUNICATIONS`, `FINANCIAL_SERVICES`, `CATERING_SERVICES`, `SOFTWARE_TOOLS`, `FRANCHISING_AND_INVESTMENT`, `BEAUTY_AND_COSMETICS`, `MOTHER_BABY_AND_PET`, `DAILY_CHEMICALS`, `PHYSICAL_BOOKS`, `SOCIAL_AND_COMMUNICATION`, `MEDICAL_INSTITUTIONS` |
| `range` | `query` | no | `string` | `DAY_30` | Time range.
Available Values:
- `DAY_30`: Last 30 days
- `DAY_90`: Last 90 days |
| enum | values | no | n/a | n/a | `DAY_30`, `DAY_90` |
| `detailType` | `query` | no | `string` | `VIDEO` | Resource type.
Available Values:
- `VIDEO`: Video
- `PRODUCT`: Product |
| enum | values | no | n/a | n/a | `VIDEO`, `PRODUCT` |
| `page` | `query` | no | `integer` | `1` | Page number. |
### Request body
No request body.
### Responses
- `200`: OK
Call GET /api/douyin-xingtu/gw/api/data_sp/get_author_convert_ability/v1 for Douyin Creator Marketplace (Xingtu) Conversion Analysis through JustOneAPI with...
---
name: Douyin Creator Marketplace (Xingtu) Conversion Analysis API
description: Call GET /api/douyin-xingtu/gw/api/data_sp/get_author_convert_ability/v1 for Douyin Creator Marketplace (Xingtu) Conversion Analysis through JustOneAPI with oAuthorId.
author: JustOneAPI
homepage: https://api.justoneapi.com
metadata: {"openclaw":{"homepage":"https://api.justoneapi.com","primaryEnv":"JUST_ONE_API_TOKEN","requires":{"bins":["node"],"env":["JUST_ONE_API_TOKEN"]},"skillKey":"justoneapi_douyin_xingtu_gw_api_data_sp_get_author_convert_ability"}}
---
# Douyin Creator Marketplace (Xingtu) Conversion Analysis
Use this focused JustOneAPI skill for conversion Analysis in Douyin Creator Marketplace (Xingtu). It targets `GET /api/douyin-xingtu/gw/api/data_sp/get_author_convert_ability/v1`. Required non-token inputs are `oAuthorId`. OpenAPI describes it as: Get Douyin Creator Marketplace (Xingtu) conversion Analysis data, including conversion efficiency and commercial performance indicators, for creator evaluation, campaign planning, and marketplace research.
## Endpoint Scope
- Platform key: `douyin-xingtu`
- Endpoint key: `gw/api/data_sp/get_author_convert_ability`
- Platform family: Douyin Creator Marketplace (Xingtu)
- Skill slug: `justoneapi-douyin-xingtu-gw-api-data-sp-get-author-convert-ability`
| Operation | Version | Method | Path | OpenAPI summary |
| --- | --- | --- | --- | --- |
| `gwApiDataSpGetAuthorConvertAbilityV1` | `v1` | `GET` | `/api/douyin-xingtu/gw/api/data_sp/get_author_convert_ability/v1` | Conversion Analysis |
## Inputs
| Parameter | In | Required by | Optional by | Type | Notes |
| --- | --- | --- | --- | --- | --- |
| `oAuthorId` | `query` | all | n/a | `string` | Author's unique ID |
| `platform` | `query` | n/a | all | `string` | Platform type. Available Values: - `SHORT_VIDEO`: Short video - `LIVE_STREAMING`: Live streaming - `PICTURE_TEXT`: Picture and text - `SHORT_DRAMA`: Short drama |
| `platform` enum | values | n/a | n/a | n/a | `LIVE_STREAMING`, `PICTURE_TEXT`, `SHORT_DRAMA`, `SHORT_VIDEO` |
| `range` | `query` | n/a | all | `string` | Time range. Available Values: - `DAY_30`: Last 30 days - `DAY_90`: Last 90 days |
| `range` enum | values | n/a | n/a | n/a | `DAY_30`, `DAY_90` |
Request body: none documented; send parameters through path or query arguments.
## Version Choice
Use `gwApiDataSpGetAuthorConvertAbilityV1` for the documented `v1` endpoint. There are no alternate versions grouped in this skill.
## Run This Endpoint
Supported operation IDs in this skill: `gwApiDataSpGetAuthorConvertAbilityV1`.
```bash
node {baseDir}/bin/run.mjs --operation "gwApiDataSpGetAuthorConvertAbilityV1" --token "$JUST_ONE_API_TOKEN" --params-json '{"oAuthorId":"<oAuthorId>"}'
```
Ask for any missing required parameter before calling the helper. Keep user-provided IDs, cursors, keywords, and filters unchanged.
## Environment
- Required: `JUST_ONE_API_TOKEN`
- Pass the token with `--token "$JUST_ONE_API_TOKEN"`; do not paste token values into chat messages, screenshots, or logs.
- Get a token from [Just One API Dashboard](https://dashboard.justoneapi.com/en/login?utm_source=clawhub.ai&utm_medium=referral&utm_campaign=justoneapi_douyin_xingtu_gw_api_data_sp_get_author_convert_ability&utm_content=project_link).
- Authentication details: [Just One API Usage Guide](https://docs.justoneapi.com/en/?utm_source=clawhub.ai&utm_medium=referral&utm_campaign=justoneapi_douyin_xingtu_gw_api_data_sp_get_author_convert_ability&utm_content=project_link).
## Output Focus
- State the operation ID and endpoint path used, for example `gwApiDataSpGetAuthorConvertAbilityV1` on `/api/douyin-xingtu/gw/api/data_sp/get_author_convert_ability/v1`.
- Echo the required lookup scope (`oAuthorId`) before summarizing results.
- Prioritize fields that support this endpoint purpose: Get Douyin Creator Marketplace (Xingtu) conversion Analysis data, including conversion efficiency and commercial performance indicators, for creator evaluation, campaign planning, and marketplace research.
- Return raw JSON only after the short, endpoint-specific summary.
- If the backend errors, include the backend payload and the exact operation ID.
FILE:bin/run.mjs
#!/usr/bin/env node
const manifest = {
"baseUrl": "https://api.justoneapi.com",
"description": "Call GET /api/douyin-xingtu/gw/api/data_sp/get_author_convert_ability/v1 for Douyin Creator Marketplace (Xingtu) Conversion Analysis through JustOneAPI with oAuthorId.",
"displayName": "Douyin Creator Marketplace (Xingtu) Conversion Analysis",
"openapi": "3.1.0",
"platformKey": "douyin-xingtu",
"primaryTag": "Douyin Creator Marketplace (Xingtu)",
"skillName": "justoneapi_douyin_xingtu_gw_api_data_sp_get_author_convert_ability",
"slug": "justoneapi-douyin-xingtu-gw-api-data-sp-get-author-convert-ability",
"sourceTitle": "OpenAPI definition",
"operations": [
{
"description": "Get Douyin Creator Marketplace (Xingtu) conversion Analysis data, including conversion efficiency and commercial performance indicators, for creator evaluation, campaign planning, and marketplace research.",
"method": "GET",
"operationId": "gwApiDataSpGetAuthorConvertAbilityV1",
"parameters": [
{
"defaultValue": null,
"description": "User authentication token.",
"enumValues": [],
"location": "query",
"name": "token",
"required": true,
"schemaType": "string"
},
{
"defaultValue": null,
"description": "Author's unique ID.",
"enumValues": [],
"location": "query",
"name": "oAuthorId",
"required": true,
"schemaType": "string"
},
{
"defaultValue": "SHORT_VIDEO",
"description": "Platform type.\n\nAvailable Values:\n- `SHORT_VIDEO`: Short video\n- `LIVE_STREAMING`: Live streaming\n- `PICTURE_TEXT`: Picture and text\n- `SHORT_DRAMA`: Short drama",
"enumValues": [
"SHORT_VIDEO",
"LIVE_STREAMING",
"PICTURE_TEXT",
"SHORT_DRAMA"
],
"location": "query",
"name": "platform",
"required": false,
"schemaType": "string"
},
{
"defaultValue": "DAY_30",
"description": "Time range.\n\nAvailable Values:\n- `DAY_30`: Last 30 days\n- `DAY_90`: Last 90 days",
"enumValues": [
"DAY_30",
"DAY_90"
],
"location": "query",
"name": "range",
"required": false,
"schemaType": "string"
}
],
"path": "/api/douyin-xingtu/gw/api/data_sp/get_author_convert_ability/v1",
"requestBody": null,
"responses": [
{
"description": "OK",
"statusCode": "200"
}
],
"summary": "Conversion Analysis",
"tags": [
"Douyin Creator Marketplace (Xingtu)"
]
}
],
"endpointPath": "gw/api/data_sp/get_author_convert_ability",
"skillType": "interface"
};
const args = parseArgs(process.argv.slice(2));
if (!args.operation) {
fail("Missing required --operation argument.");
}
const operation = manifest.operations.find((item) => item.operationId === args.operation);
if (!operation) {
fail(`Unknown operation "args.operation".`, { availableOperations: manifest.operations.map((item) => item.operationId) });
}
const params = parseParams(args.paramsJson);
applyDefaults(operation, params);
injectToken(operation, params, args.token);
validateRequired(operation, params);
const baseUrl = manifest.baseUrl;
const url = new URL(operation.path, ensureBaseUrl(baseUrl));
applyPathParams(operation, params, url);
applyQueryParams(operation, params, url);
const requestInit = {
headers: {
"accept": "application/json",
},
method: operation.method,
};
if (operation.requestBody && params.body !== undefined) {
requestInit.body = JSON.stringify(params.body);
requestInit.headers["content-type"] = operation.requestBody.contentType || "application/json";
}
let response;
try {
response = await fetch(url, requestInit);
} catch (error) {
fail("Network request failed.", {
cause: error instanceof Error ? error.message : String(error),
operationId: operation.operationId,
});
}
const rawBody = await response.text();
let parsedBody;
try {
parsedBody = rawBody ? JSON.parse(rawBody) : null;
} catch (error) {
if (!response.ok) {
fail("Backend returned a non-JSON error response.", {
body: rawBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
fail("Backend returned invalid JSON.", {
body: rawBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
if (!response.ok) {
fail("Backend request failed.", {
body: parsedBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
process.stdout.write(`JSON.stringify(parsedBody, null, 2)\n`);
function parseArgs(argv) {
const parsed = { operation: null, paramsJson: "{}", token: null };
for (let index = 0; index < argv.length; index += 1) {
const flag = argv[index];
const value = argv[index + 1];
if (flag === "--operation") {
parsed.operation = value;
index += 1;
continue;
}
if (flag === "--params-json") {
parsed.paramsJson = value;
index += 1;
continue;
}
if (flag === "--token") {
parsed.token = value;
index += 1;
continue;
}
fail(`Unknown argument "flag".`);
}
return parsed;
}
function parseParams(input) {
try {
const parsed = JSON.parse(input || "{}");
if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) {
fail("--params-json must decode to a JSON object.");
}
return parsed;
} catch (error) {
fail("Failed to parse --params-json.", {
cause: error instanceof Error ? error.message : String(error),
});
}
}
function applyDefaults(operation, params) {
for (const parameter of operation.parameters) {
if (params[parameter.name] === undefined && parameter.defaultValue !== null) {
params[parameter.name] = parameter.defaultValue;
}
}
}
function injectToken(operation, params, cliToken) {
const tokenParam = operation.parameters.find((parameter) => parameter.name === "token");
if (!tokenParam || params.token !== undefined) {
return;
}
if (!cliToken) {
fail("--token is required for this operation.", {
operationId: operation.operationId,
});
}
params.token = cliToken;
}
function validateRequired(operation, params) {
const missing = [];
for (const parameter of operation.parameters) {
if (parameter.required && params[parameter.name] === undefined) {
missing.push(parameter.name);
}
}
if (operation.requestBody?.required && params.body === undefined) {
missing.push("body");
}
if (missing.length) {
fail("Missing required parameters.", {
missing,
operationId: operation.operationId,
});
}
}
function applyPathParams(operation, params, url) {
let pathname = url.pathname;
for (const parameter of operation.parameters.filter((item) => item.location === "path")) {
const value = params[parameter.name];
if (value === undefined) {
continue;
}
pathname = pathname.replace(`{parameter.name}`, encodeURIComponent(String(value)));
}
url.pathname = pathname;
}
function applyQueryParams(operation, params, url) {
for (const parameter of operation.parameters.filter((item) => item.location === "query")) {
const value = params[parameter.name];
if (value === undefined) {
continue;
}
appendValue(url.searchParams, parameter.name, value);
}
}
function appendValue(searchParams, name, value) {
if (Array.isArray(value)) {
for (const item of value) {
appendValue(searchParams, name, item);
}
return;
}
if (value && typeof value === "object") {
searchParams.append(name, JSON.stringify(value));
return;
}
searchParams.append(name, String(value));
}
function ensureBaseUrl(value) {
return value.endsWith("/") ? value : `value/`;
}
function fail(message, details = null) {
const payload = { message };
if (details) {
payload.details = details;
}
process.stderr.write(`JSON.stringify(payload, null, 2)\n`);
process.exit(1);
}
FILE:generated/operations.json
{
"baseUrl": "https://api.justoneapi.com",
"description": "Call GET /api/douyin-xingtu/gw/api/data_sp/get_author_convert_ability/v1 for Douyin Creator Marketplace (Xingtu) Conversion Analysis through JustOneAPI with oAuthorId.",
"displayName": "Douyin Creator Marketplace (Xingtu) Conversion Analysis",
"endpointPath": "gw/api/data_sp/get_author_convert_ability",
"openapi": "3.1.0",
"operations": [
{
"description": "Get Douyin Creator Marketplace (Xingtu) conversion Analysis data, including conversion efficiency and commercial performance indicators, for creator evaluation, campaign planning, and marketplace research.",
"method": "GET",
"operationId": "gwApiDataSpGetAuthorConvertAbilityV1",
"parameters": [
{
"defaultValue": null,
"description": "User authentication token.",
"enumValues": [],
"location": "query",
"name": "token",
"required": true,
"schemaType": "string"
},
{
"defaultValue": null,
"description": "Author's unique ID.",
"enumValues": [],
"location": "query",
"name": "oAuthorId",
"required": true,
"schemaType": "string"
},
{
"defaultValue": "SHORT_VIDEO",
"description": "Platform type.\n\nAvailable Values:\n- `SHORT_VIDEO`: Short video\n- `LIVE_STREAMING`: Live streaming\n- `PICTURE_TEXT`: Picture and text\n- `SHORT_DRAMA`: Short drama",
"enumValues": [
"SHORT_VIDEO",
"LIVE_STREAMING",
"PICTURE_TEXT",
"SHORT_DRAMA"
],
"location": "query",
"name": "platform",
"required": false,
"schemaType": "string"
},
{
"defaultValue": "DAY_30",
"description": "Time range.\n\nAvailable Values:\n- `DAY_30`: Last 30 days\n- `DAY_90`: Last 90 days",
"enumValues": [
"DAY_30",
"DAY_90"
],
"location": "query",
"name": "range",
"required": false,
"schemaType": "string"
}
],
"path": "/api/douyin-xingtu/gw/api/data_sp/get_author_convert_ability/v1",
"requestBody": null,
"responses": [
{
"description": "OK",
"statusCode": "200"
}
],
"summary": "Conversion Analysis",
"tags": [
"Douyin Creator Marketplace (Xingtu)"
]
}
],
"platformKey": "douyin-xingtu",
"primaryTag": "Douyin Creator Marketplace (Xingtu)",
"skillName": "justoneapi_douyin_xingtu_gw_api_data_sp_get_author_convert_ability",
"skillType": "interface",
"slug": "justoneapi-douyin-xingtu-gw-api-data-sp-get-author-convert-ability",
"sourceTitle": "OpenAPI definition"
}
FILE:generated/operations.md
# Douyin Creator Marketplace (Xingtu) Conversion Analysis operations
Generated from JustOneAPI OpenAPI for platform key `douyin-xingtu`.
Endpoint group: `gw/api/data_sp/get_author_convert_ability`.
## `gwApiDataSpGetAuthorConvertAbilityV1`
- Method: `GET`
- Path: `/api/douyin-xingtu/gw/api/data_sp/get_author_convert_ability/v1`
- Summary: Conversion Analysis
- Description: Get Douyin Creator Marketplace (Xingtu) conversion Analysis data, including conversion efficiency and commercial performance indicators, for creator evaluation, campaign planning, and marketplace research.
- Tags: `Douyin Creator Marketplace (Xingtu)`
### Parameters
| Name | In | Required | Type | Default | Description |
| --- | --- | --- | --- | --- | --- |
| `token` | `query` | yes | `string` | n/a | User authentication token. |
| `oAuthorId` | `query` | yes | `string` | n/a | Author's unique ID. |
| `platform` | `query` | no | `string` | `SHORT_VIDEO` | Platform type.
Available Values:
- `SHORT_VIDEO`: Short video
- `LIVE_STREAMING`: Live streaming
- `PICTURE_TEXT`: Picture and text
- `SHORT_DRAMA`: Short drama |
| enum | values | no | n/a | n/a | `SHORT_VIDEO`, `LIVE_STREAMING`, `PICTURE_TEXT`, `SHORT_DRAMA` |
| `range` | `query` | no | `string` | `DAY_30` | Time range.
Available Values:
- `DAY_30`: Last 30 days
- `DAY_90`: Last 90 days |
| enum | values | no | n/a | n/a | `DAY_30`, `DAY_90` |
### Request body
No request body.
### Responses
- `200`: OK
Call GET /api/douyin-xingtu/gw/api/data_sp/check_author_display/v1 for Douyin Creator Marketplace (Xingtu) Creator Visibility Status through JustOneAPI with...
---
name: Douyin Creator Marketplace (Xingtu) Creator Visibility Status API
description: Call GET /api/douyin-xingtu/gw/api/data_sp/check_author_display/v1 for Douyin Creator Marketplace (Xingtu) Creator Visibility Status through JustOneAPI with oAuthorId.
author: JustOneAPI
homepage: https://api.justoneapi.com
metadata: {"openclaw":{"homepage":"https://api.justoneapi.com","primaryEnv":"JUST_ONE_API_TOKEN","requires":{"bins":["node"],"env":["JUST_ONE_API_TOKEN"]},"skillKey":"justoneapi_douyin_xingtu_gw_api_data_sp_check_author_display"}}
---
# Douyin Creator Marketplace (Xingtu) Creator Visibility Status
Use this focused JustOneAPI skill for creator Visibility Status in Douyin Creator Marketplace (Xingtu). It targets `GET /api/douyin-xingtu/gw/api/data_sp/check_author_display/v1`. Required non-token inputs are `oAuthorId`. OpenAPI describes it as: Get Douyin Creator Marketplace (Xingtu) creator Visibility Status data, including availability status, discovery eligibility, and campaign display signals, for creator evaluation, campaign planning, and marketplace research.
## Endpoint Scope
- Platform key: `douyin-xingtu`
- Endpoint key: `gw/api/data_sp/check_author_display`
- Platform family: Douyin Creator Marketplace (Xingtu)
- Skill slug: `justoneapi-douyin-xingtu-gw-api-data-sp-check-author-display`
| Operation | Version | Method | Path | OpenAPI summary |
| --- | --- | --- | --- | --- |
| `gwApiDataSpCheckAuthorDisplayV1` | `v1` | `GET` | `/api/douyin-xingtu/gw/api/data_sp/check_author_display/v1` | Creator Visibility Status |
## Inputs
| Parameter | In | Required by | Optional by | Type | Notes |
| --- | --- | --- | --- | --- | --- |
| `oAuthorId` | `query` | all | n/a | `string` | Author's unique ID |
| `platform` | `query` | n/a | all | `string` | Platform type. Available Values: - `SHORT_VIDEO`: Short video - `LIVE_STREAMING`: Live streaming - `PICTURE_TEXT`: Picture and text - `SHORT_DRAMA`: Short drama |
| `platform` enum | values | n/a | n/a | n/a | `LIVE_STREAMING`, `PICTURE_TEXT`, `SHORT_DRAMA`, `SHORT_VIDEO` |
Request body: none documented; send parameters through path or query arguments.
## Version Choice
Use `gwApiDataSpCheckAuthorDisplayV1` for the documented `v1` endpoint. There are no alternate versions grouped in this skill.
## Run This Endpoint
Supported operation IDs in this skill: `gwApiDataSpCheckAuthorDisplayV1`.
```bash
node {baseDir}/bin/run.mjs --operation "gwApiDataSpCheckAuthorDisplayV1" --token "$JUST_ONE_API_TOKEN" --params-json '{"oAuthorId":"<oAuthorId>"}'
```
Ask for any missing required parameter before calling the helper. Keep user-provided IDs, cursors, keywords, and filters unchanged.
## Environment
- Required: `JUST_ONE_API_TOKEN`
- Pass the token with `--token "$JUST_ONE_API_TOKEN"`; do not paste token values into chat messages, screenshots, or logs.
- Get a token from [Just One API Dashboard](https://dashboard.justoneapi.com/en/login?utm_source=clawhub.ai&utm_medium=referral&utm_campaign=justoneapi_douyin_xingtu_gw_api_data_sp_check_author_display&utm_content=project_link).
- Authentication details: [Just One API Usage Guide](https://docs.justoneapi.com/en/?utm_source=clawhub.ai&utm_medium=referral&utm_campaign=justoneapi_douyin_xingtu_gw_api_data_sp_check_author_display&utm_content=project_link).
## Output Focus
- State the operation ID and endpoint path used, for example `gwApiDataSpCheckAuthorDisplayV1` on `/api/douyin-xingtu/gw/api/data_sp/check_author_display/v1`.
- Echo the required lookup scope (`oAuthorId`) before summarizing results.
- Prioritize fields that support this endpoint purpose: Get Douyin Creator Marketplace (Xingtu) creator Visibility Status data, including availability status, discovery eligibility, and campaign display signals, for creator evaluation, campaign planning, and marketplace research.
- Return raw JSON only after the short, endpoint-specific summary.
- If the backend errors, include the backend payload and the exact operation ID.
FILE:bin/run.mjs
#!/usr/bin/env node
const manifest = {
"baseUrl": "https://api.justoneapi.com",
"description": "Call GET /api/douyin-xingtu/gw/api/data_sp/check_author_display/v1 for Douyin Creator Marketplace (Xingtu) Creator Visibility Status through JustOneAPI with oAuthorId.",
"displayName": "Douyin Creator Marketplace (Xingtu) Creator Visibility Status",
"openapi": "3.1.0",
"platformKey": "douyin-xingtu",
"primaryTag": "Douyin Creator Marketplace (Xingtu)",
"skillName": "justoneapi_douyin_xingtu_gw_api_data_sp_check_author_display",
"slug": "justoneapi-douyin-xingtu-gw-api-data-sp-check-author-display",
"sourceTitle": "OpenAPI definition",
"operations": [
{
"description": "Get Douyin Creator Marketplace (Xingtu) creator Visibility Status data, including availability status, discovery eligibility, and campaign display signals, for creator evaluation, campaign planning, and marketplace research.",
"method": "GET",
"operationId": "gwApiDataSpCheckAuthorDisplayV1",
"parameters": [
{
"defaultValue": null,
"description": "User authentication token.",
"enumValues": [],
"location": "query",
"name": "token",
"required": true,
"schemaType": "string"
},
{
"defaultValue": null,
"description": "Author's unique ID.",
"enumValues": [],
"location": "query",
"name": "oAuthorId",
"required": true,
"schemaType": "string"
},
{
"defaultValue": "SHORT_VIDEO",
"description": "Platform type.\n\nAvailable Values:\n- `SHORT_VIDEO`: Short video\n- `LIVE_STREAMING`: Live streaming\n- `PICTURE_TEXT`: Picture and text\n- `SHORT_DRAMA`: Short drama",
"enumValues": [
"SHORT_VIDEO",
"LIVE_STREAMING",
"PICTURE_TEXT",
"SHORT_DRAMA"
],
"location": "query",
"name": "platform",
"required": false,
"schemaType": "string"
}
],
"path": "/api/douyin-xingtu/gw/api/data_sp/check_author_display/v1",
"requestBody": null,
"responses": [
{
"description": "OK",
"statusCode": "200"
}
],
"summary": "Creator Visibility Status",
"tags": [
"Douyin Creator Marketplace (Xingtu)"
]
}
],
"endpointPath": "gw/api/data_sp/check_author_display",
"skillType": "interface"
};
const args = parseArgs(process.argv.slice(2));
if (!args.operation) {
fail("Missing required --operation argument.");
}
const operation = manifest.operations.find((item) => item.operationId === args.operation);
if (!operation) {
fail(`Unknown operation "args.operation".`, { availableOperations: manifest.operations.map((item) => item.operationId) });
}
const params = parseParams(args.paramsJson);
applyDefaults(operation, params);
injectToken(operation, params, args.token);
validateRequired(operation, params);
const baseUrl = manifest.baseUrl;
const url = new URL(operation.path, ensureBaseUrl(baseUrl));
applyPathParams(operation, params, url);
applyQueryParams(operation, params, url);
const requestInit = {
headers: {
"accept": "application/json",
},
method: operation.method,
};
if (operation.requestBody && params.body !== undefined) {
requestInit.body = JSON.stringify(params.body);
requestInit.headers["content-type"] = operation.requestBody.contentType || "application/json";
}
let response;
try {
response = await fetch(url, requestInit);
} catch (error) {
fail("Network request failed.", {
cause: error instanceof Error ? error.message : String(error),
operationId: operation.operationId,
});
}
const rawBody = await response.text();
let parsedBody;
try {
parsedBody = rawBody ? JSON.parse(rawBody) : null;
} catch (error) {
if (!response.ok) {
fail("Backend returned a non-JSON error response.", {
body: rawBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
fail("Backend returned invalid JSON.", {
body: rawBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
if (!response.ok) {
fail("Backend request failed.", {
body: parsedBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
process.stdout.write(`JSON.stringify(parsedBody, null, 2)\n`);
function parseArgs(argv) {
const parsed = { operation: null, paramsJson: "{}", token: null };
for (let index = 0; index < argv.length; index += 1) {
const flag = argv[index];
const value = argv[index + 1];
if (flag === "--operation") {
parsed.operation = value;
index += 1;
continue;
}
if (flag === "--params-json") {
parsed.paramsJson = value;
index += 1;
continue;
}
if (flag === "--token") {
parsed.token = value;
index += 1;
continue;
}
fail(`Unknown argument "flag".`);
}
return parsed;
}
function parseParams(input) {
try {
const parsed = JSON.parse(input || "{}");
if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) {
fail("--params-json must decode to a JSON object.");
}
return parsed;
} catch (error) {
fail("Failed to parse --params-json.", {
cause: error instanceof Error ? error.message : String(error),
});
}
}
function applyDefaults(operation, params) {
for (const parameter of operation.parameters) {
if (params[parameter.name] === undefined && parameter.defaultValue !== null) {
params[parameter.name] = parameter.defaultValue;
}
}
}
function injectToken(operation, params, cliToken) {
const tokenParam = operation.parameters.find((parameter) => parameter.name === "token");
if (!tokenParam || params.token !== undefined) {
return;
}
if (!cliToken) {
fail("--token is required for this operation.", {
operationId: operation.operationId,
});
}
params.token = cliToken;
}
function validateRequired(operation, params) {
const missing = [];
for (const parameter of operation.parameters) {
if (parameter.required && params[parameter.name] === undefined) {
missing.push(parameter.name);
}
}
if (operation.requestBody?.required && params.body === undefined) {
missing.push("body");
}
if (missing.length) {
fail("Missing required parameters.", {
missing,
operationId: operation.operationId,
});
}
}
function applyPathParams(operation, params, url) {
let pathname = url.pathname;
for (const parameter of operation.parameters.filter((item) => item.location === "path")) {
const value = params[parameter.name];
if (value === undefined) {
continue;
}
pathname = pathname.replace(`{parameter.name}`, encodeURIComponent(String(value)));
}
url.pathname = pathname;
}
function applyQueryParams(operation, params, url) {
for (const parameter of operation.parameters.filter((item) => item.location === "query")) {
const value = params[parameter.name];
if (value === undefined) {
continue;
}
appendValue(url.searchParams, parameter.name, value);
}
}
function appendValue(searchParams, name, value) {
if (Array.isArray(value)) {
for (const item of value) {
appendValue(searchParams, name, item);
}
return;
}
if (value && typeof value === "object") {
searchParams.append(name, JSON.stringify(value));
return;
}
searchParams.append(name, String(value));
}
function ensureBaseUrl(value) {
return value.endsWith("/") ? value : `value/`;
}
function fail(message, details = null) {
const payload = { message };
if (details) {
payload.details = details;
}
process.stderr.write(`JSON.stringify(payload, null, 2)\n`);
process.exit(1);
}
FILE:generated/operations.json
{
"baseUrl": "https://api.justoneapi.com",
"description": "Call GET /api/douyin-xingtu/gw/api/data_sp/check_author_display/v1 for Douyin Creator Marketplace (Xingtu) Creator Visibility Status through JustOneAPI with oAuthorId.",
"displayName": "Douyin Creator Marketplace (Xingtu) Creator Visibility Status",
"endpointPath": "gw/api/data_sp/check_author_display",
"openapi": "3.1.0",
"operations": [
{
"description": "Get Douyin Creator Marketplace (Xingtu) creator Visibility Status data, including availability status, discovery eligibility, and campaign display signals, for creator evaluation, campaign planning, and marketplace research.",
"method": "GET",
"operationId": "gwApiDataSpCheckAuthorDisplayV1",
"parameters": [
{
"defaultValue": null,
"description": "User authentication token.",
"enumValues": [],
"location": "query",
"name": "token",
"required": true,
"schemaType": "string"
},
{
"defaultValue": null,
"description": "Author's unique ID.",
"enumValues": [],
"location": "query",
"name": "oAuthorId",
"required": true,
"schemaType": "string"
},
{
"defaultValue": "SHORT_VIDEO",
"description": "Platform type.\n\nAvailable Values:\n- `SHORT_VIDEO`: Short video\n- `LIVE_STREAMING`: Live streaming\n- `PICTURE_TEXT`: Picture and text\n- `SHORT_DRAMA`: Short drama",
"enumValues": [
"SHORT_VIDEO",
"LIVE_STREAMING",
"PICTURE_TEXT",
"SHORT_DRAMA"
],
"location": "query",
"name": "platform",
"required": false,
"schemaType": "string"
}
],
"path": "/api/douyin-xingtu/gw/api/data_sp/check_author_display/v1",
"requestBody": null,
"responses": [
{
"description": "OK",
"statusCode": "200"
}
],
"summary": "Creator Visibility Status",
"tags": [
"Douyin Creator Marketplace (Xingtu)"
]
}
],
"platformKey": "douyin-xingtu",
"primaryTag": "Douyin Creator Marketplace (Xingtu)",
"skillName": "justoneapi_douyin_xingtu_gw_api_data_sp_check_author_display",
"skillType": "interface",
"slug": "justoneapi-douyin-xingtu-gw-api-data-sp-check-author-display",
"sourceTitle": "OpenAPI definition"
}
FILE:generated/operations.md
# Douyin Creator Marketplace (Xingtu) Creator Visibility Status operations
Generated from JustOneAPI OpenAPI for platform key `douyin-xingtu`.
Endpoint group: `gw/api/data_sp/check_author_display`.
## `gwApiDataSpCheckAuthorDisplayV1`
- Method: `GET`
- Path: `/api/douyin-xingtu/gw/api/data_sp/check_author_display/v1`
- Summary: Creator Visibility Status
- Description: Get Douyin Creator Marketplace (Xingtu) creator Visibility Status data, including availability status, discovery eligibility, and campaign display signals, for creator evaluation, campaign planning, and marketplace research.
- Tags: `Douyin Creator Marketplace (Xingtu)`
### Parameters
| Name | In | Required | Type | Default | Description |
| --- | --- | --- | --- | --- | --- |
| `token` | `query` | yes | `string` | n/a | User authentication token. |
| `oAuthorId` | `query` | yes | `string` | n/a | Author's unique ID. |
| `platform` | `query` | no | `string` | `SHORT_VIDEO` | Platform type.
Available Values:
- `SHORT_VIDEO`: Short video
- `LIVE_STREAMING`: Live streaming
- `PICTURE_TEXT`: Picture and text
- `SHORT_DRAMA`: Short drama |
| enum | values | no | n/a | n/a | `SHORT_VIDEO`, `LIVE_STREAMING`, `PICTURE_TEXT`, `SHORT_DRAMA` |
### Request body
No request body.
### Responses
- `200`: OK
Call GET /api/douyin-xingtu/gw/api/data_sp/author_video_distribution/v1 for Douyin Creator Marketplace (Xingtu) Video Distribution through JustOneAPI with oA...
---
name: Douyin Creator Marketplace (Xingtu) Video Distribution API
description: Call GET /api/douyin-xingtu/gw/api/data_sp/author_video_distribution/v1 for Douyin Creator Marketplace (Xingtu) Video Distribution through JustOneAPI with oAuthorId.
author: JustOneAPI
homepage: https://api.justoneapi.com
metadata: {"openclaw":{"homepage":"https://api.justoneapi.com","primaryEnv":"JUST_ONE_API_TOKEN","requires":{"bins":["node"],"env":["JUST_ONE_API_TOKEN"]},"skillKey":"justoneapi_douyin_xingtu_gw_api_data_sp_author_video_distribution"}}
---
# Douyin Creator Marketplace (Xingtu) Video Distribution
Use this focused JustOneAPI skill for video Distribution in Douyin Creator Marketplace (Xingtu). It targets `GET /api/douyin-xingtu/gw/api/data_sp/author_video_distribution/v1`. Required non-token inputs are `oAuthorId`. OpenAPI describes it as: Get Douyin Creator Marketplace (Xingtu) video Distribution data, including content performance breakdowns across published videos, for creator evaluation, campaign planning, and marketplace research.
## Endpoint Scope
- Platform key: `douyin-xingtu`
- Endpoint key: `gw/api/data_sp/author_video_distribution`
- Platform family: Douyin Creator Marketplace (Xingtu)
- Skill slug: `justoneapi-douyin-xingtu-gw-api-data-sp-author-video-distribution`
| Operation | Version | Method | Path | OpenAPI summary |
| --- | --- | --- | --- | --- |
| `gwApiDataSpAuthorVideoDistributionV1` | `v1` | `GET` | `/api/douyin-xingtu/gw/api/data_sp/author_video_distribution/v1` | Video Distribution |
## Inputs
| Parameter | In | Required by | Optional by | Type | Notes |
| --- | --- | --- | --- | --- | --- |
| `oAuthorId` | `query` | all | n/a | `string` | Author's unique ID |
| `platform` | `query` | n/a | all | `string` | Platform type. Available Values: - `SHORT_VIDEO`: Short video - `LIVE_STREAMING`: Live streaming - `PICTURE_TEXT`: Picture and text - `SHORT_DRAMA`: Short drama |
| `platform` enum | values | n/a | n/a | n/a | `LIVE_STREAMING`, `PICTURE_TEXT`, `SHORT_DRAMA`, `SHORT_VIDEO` |
Request body: none documented; send parameters through path or query arguments.
## Version Choice
Use `gwApiDataSpAuthorVideoDistributionV1` for the documented `v1` endpoint. There are no alternate versions grouped in this skill.
## Run This Endpoint
Supported operation IDs in this skill: `gwApiDataSpAuthorVideoDistributionV1`.
```bash
node {baseDir}/bin/run.mjs --operation "gwApiDataSpAuthorVideoDistributionV1" --token "$JUST_ONE_API_TOKEN" --params-json '{"oAuthorId":"<oAuthorId>"}'
```
Ask for any missing required parameter before calling the helper. Keep user-provided IDs, cursors, keywords, and filters unchanged.
## Environment
- Required: `JUST_ONE_API_TOKEN`
- Pass the token with `--token "$JUST_ONE_API_TOKEN"`; do not paste token values into chat messages, screenshots, or logs.
- Get a token from [Just One API Dashboard](https://dashboard.justoneapi.com/en/login?utm_source=clawhub.ai&utm_medium=referral&utm_campaign=justoneapi_douyin_xingtu_gw_api_data_sp_author_video_distribution&utm_content=project_link).
- Authentication details: [Just One API Usage Guide](https://docs.justoneapi.com/en/?utm_source=clawhub.ai&utm_medium=referral&utm_campaign=justoneapi_douyin_xingtu_gw_api_data_sp_author_video_distribution&utm_content=project_link).
## Output Focus
- State the operation ID and endpoint path used, for example `gwApiDataSpAuthorVideoDistributionV1` on `/api/douyin-xingtu/gw/api/data_sp/author_video_distribution/v1`.
- Echo the required lookup scope (`oAuthorId`) before summarizing results.
- Prioritize fields that support this endpoint purpose: Get Douyin Creator Marketplace (Xingtu) video Distribution data, including content performance breakdowns across published videos, for creator evaluation, campaign planning, and marketplace research.
- Return raw JSON only after the short, endpoint-specific summary.
- If the backend errors, include the backend payload and the exact operation ID.
FILE:bin/run.mjs
#!/usr/bin/env node
const manifest = {
"baseUrl": "https://api.justoneapi.com",
"description": "Call GET /api/douyin-xingtu/gw/api/data_sp/author_video_distribution/v1 for Douyin Creator Marketplace (Xingtu) Video Distribution through JustOneAPI with oAuthorId.",
"displayName": "Douyin Creator Marketplace (Xingtu) Video Distribution",
"openapi": "3.1.0",
"platformKey": "douyin-xingtu",
"primaryTag": "Douyin Creator Marketplace (Xingtu)",
"skillName": "justoneapi_douyin_xingtu_gw_api_data_sp_author_video_distribution",
"slug": "justoneapi-douyin-xingtu-gw-api-data-sp-author-video-distribution",
"sourceTitle": "OpenAPI definition",
"operations": [
{
"description": "Get Douyin Creator Marketplace (Xingtu) video Distribution data, including content performance breakdowns across published videos, for creator evaluation, campaign planning, and marketplace research.",
"method": "GET",
"operationId": "gwApiDataSpAuthorVideoDistributionV1",
"parameters": [
{
"defaultValue": null,
"description": "User authentication token.",
"enumValues": [],
"location": "query",
"name": "token",
"required": true,
"schemaType": "string"
},
{
"defaultValue": null,
"description": "Author's unique ID.",
"enumValues": [],
"location": "query",
"name": "oAuthorId",
"required": true,
"schemaType": "string"
},
{
"defaultValue": "SHORT_VIDEO",
"description": "Platform type.\n\nAvailable Values:\n- `SHORT_VIDEO`: Short video\n- `LIVE_STREAMING`: Live streaming\n- `PICTURE_TEXT`: Picture and text\n- `SHORT_DRAMA`: Short drama",
"enumValues": [
"SHORT_VIDEO",
"LIVE_STREAMING",
"PICTURE_TEXT",
"SHORT_DRAMA"
],
"location": "query",
"name": "platform",
"required": false,
"schemaType": "string"
}
],
"path": "/api/douyin-xingtu/gw/api/data_sp/author_video_distribution/v1",
"requestBody": null,
"responses": [
{
"description": "OK",
"statusCode": "200"
}
],
"summary": "Video Distribution",
"tags": [
"Douyin Creator Marketplace (Xingtu)"
]
}
],
"endpointPath": "gw/api/data_sp/author_video_distribution",
"skillType": "interface"
};
const args = parseArgs(process.argv.slice(2));
if (!args.operation) {
fail("Missing required --operation argument.");
}
const operation = manifest.operations.find((item) => item.operationId === args.operation);
if (!operation) {
fail(`Unknown operation "args.operation".`, { availableOperations: manifest.operations.map((item) => item.operationId) });
}
const params = parseParams(args.paramsJson);
applyDefaults(operation, params);
injectToken(operation, params, args.token);
validateRequired(operation, params);
const baseUrl = manifest.baseUrl;
const url = new URL(operation.path, ensureBaseUrl(baseUrl));
applyPathParams(operation, params, url);
applyQueryParams(operation, params, url);
const requestInit = {
headers: {
"accept": "application/json",
},
method: operation.method,
};
if (operation.requestBody && params.body !== undefined) {
requestInit.body = JSON.stringify(params.body);
requestInit.headers["content-type"] = operation.requestBody.contentType || "application/json";
}
let response;
try {
response = await fetch(url, requestInit);
} catch (error) {
fail("Network request failed.", {
cause: error instanceof Error ? error.message : String(error),
operationId: operation.operationId,
});
}
const rawBody = await response.text();
let parsedBody;
try {
parsedBody = rawBody ? JSON.parse(rawBody) : null;
} catch (error) {
if (!response.ok) {
fail("Backend returned a non-JSON error response.", {
body: rawBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
fail("Backend returned invalid JSON.", {
body: rawBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
if (!response.ok) {
fail("Backend request failed.", {
body: parsedBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
process.stdout.write(`JSON.stringify(parsedBody, null, 2)\n`);
function parseArgs(argv) {
const parsed = { operation: null, paramsJson: "{}", token: null };
for (let index = 0; index < argv.length; index += 1) {
const flag = argv[index];
const value = argv[index + 1];
if (flag === "--operation") {
parsed.operation = value;
index += 1;
continue;
}
if (flag === "--params-json") {
parsed.paramsJson = value;
index += 1;
continue;
}
if (flag === "--token") {
parsed.token = value;
index += 1;
continue;
}
fail(`Unknown argument "flag".`);
}
return parsed;
}
function parseParams(input) {
try {
const parsed = JSON.parse(input || "{}");
if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) {
fail("--params-json must decode to a JSON object.");
}
return parsed;
} catch (error) {
fail("Failed to parse --params-json.", {
cause: error instanceof Error ? error.message : String(error),
});
}
}
function applyDefaults(operation, params) {
for (const parameter of operation.parameters) {
if (params[parameter.name] === undefined && parameter.defaultValue !== null) {
params[parameter.name] = parameter.defaultValue;
}
}
}
function injectToken(operation, params, cliToken) {
const tokenParam = operation.parameters.find((parameter) => parameter.name === "token");
if (!tokenParam || params.token !== undefined) {
return;
}
if (!cliToken) {
fail("--token is required for this operation.", {
operationId: operation.operationId,
});
}
params.token = cliToken;
}
function validateRequired(operation, params) {
const missing = [];
for (const parameter of operation.parameters) {
if (parameter.required && params[parameter.name] === undefined) {
missing.push(parameter.name);
}
}
if (operation.requestBody?.required && params.body === undefined) {
missing.push("body");
}
if (missing.length) {
fail("Missing required parameters.", {
missing,
operationId: operation.operationId,
});
}
}
function applyPathParams(operation, params, url) {
let pathname = url.pathname;
for (const parameter of operation.parameters.filter((item) => item.location === "path")) {
const value = params[parameter.name];
if (value === undefined) {
continue;
}
pathname = pathname.replace(`{parameter.name}`, encodeURIComponent(String(value)));
}
url.pathname = pathname;
}
function applyQueryParams(operation, params, url) {
for (const parameter of operation.parameters.filter((item) => item.location === "query")) {
const value = params[parameter.name];
if (value === undefined) {
continue;
}
appendValue(url.searchParams, parameter.name, value);
}
}
function appendValue(searchParams, name, value) {
if (Array.isArray(value)) {
for (const item of value) {
appendValue(searchParams, name, item);
}
return;
}
if (value && typeof value === "object") {
searchParams.append(name, JSON.stringify(value));
return;
}
searchParams.append(name, String(value));
}
function ensureBaseUrl(value) {
return value.endsWith("/") ? value : `value/`;
}
function fail(message, details = null) {
const payload = { message };
if (details) {
payload.details = details;
}
process.stderr.write(`JSON.stringify(payload, null, 2)\n`);
process.exit(1);
}
FILE:generated/operations.json
{
"baseUrl": "https://api.justoneapi.com",
"description": "Call GET /api/douyin-xingtu/gw/api/data_sp/author_video_distribution/v1 for Douyin Creator Marketplace (Xingtu) Video Distribution through JustOneAPI with oAuthorId.",
"displayName": "Douyin Creator Marketplace (Xingtu) Video Distribution",
"endpointPath": "gw/api/data_sp/author_video_distribution",
"openapi": "3.1.0",
"operations": [
{
"description": "Get Douyin Creator Marketplace (Xingtu) video Distribution data, including content performance breakdowns across published videos, for creator evaluation, campaign planning, and marketplace research.",
"method": "GET",
"operationId": "gwApiDataSpAuthorVideoDistributionV1",
"parameters": [
{
"defaultValue": null,
"description": "User authentication token.",
"enumValues": [],
"location": "query",
"name": "token",
"required": true,
"schemaType": "string"
},
{
"defaultValue": null,
"description": "Author's unique ID.",
"enumValues": [],
"location": "query",
"name": "oAuthorId",
"required": true,
"schemaType": "string"
},
{
"defaultValue": "SHORT_VIDEO",
"description": "Platform type.\n\nAvailable Values:\n- `SHORT_VIDEO`: Short video\n- `LIVE_STREAMING`: Live streaming\n- `PICTURE_TEXT`: Picture and text\n- `SHORT_DRAMA`: Short drama",
"enumValues": [
"SHORT_VIDEO",
"LIVE_STREAMING",
"PICTURE_TEXT",
"SHORT_DRAMA"
],
"location": "query",
"name": "platform",
"required": false,
"schemaType": "string"
}
],
"path": "/api/douyin-xingtu/gw/api/data_sp/author_video_distribution/v1",
"requestBody": null,
"responses": [
{
"description": "OK",
"statusCode": "200"
}
],
"summary": "Video Distribution",
"tags": [
"Douyin Creator Marketplace (Xingtu)"
]
}
],
"platformKey": "douyin-xingtu",
"primaryTag": "Douyin Creator Marketplace (Xingtu)",
"skillName": "justoneapi_douyin_xingtu_gw_api_data_sp_author_video_distribution",
"skillType": "interface",
"slug": "justoneapi-douyin-xingtu-gw-api-data-sp-author-video-distribution",
"sourceTitle": "OpenAPI definition"
}
FILE:generated/operations.md
# Douyin Creator Marketplace (Xingtu) Video Distribution operations
Generated from JustOneAPI OpenAPI for platform key `douyin-xingtu`.
Endpoint group: `gw/api/data_sp/author_video_distribution`.
## `gwApiDataSpAuthorVideoDistributionV1`
- Method: `GET`
- Path: `/api/douyin-xingtu/gw/api/data_sp/author_video_distribution/v1`
- Summary: Video Distribution
- Description: Get Douyin Creator Marketplace (Xingtu) video Distribution data, including content performance breakdowns across published videos, for creator evaluation, campaign planning, and marketplace research.
- Tags: `Douyin Creator Marketplace (Xingtu)`
### Parameters
| Name | In | Required | Type | Default | Description |
| --- | --- | --- | --- | --- | --- |
| `token` | `query` | yes | `string` | n/a | User authentication token. |
| `oAuthorId` | `query` | yes | `string` | n/a | Author's unique ID. |
| `platform` | `query` | no | `string` | `SHORT_VIDEO` | Platform type.
Available Values:
- `SHORT_VIDEO`: Short video
- `LIVE_STREAMING`: Live streaming
- `PICTURE_TEXT`: Picture and text
- `SHORT_DRAMA`: Short drama |
| enum | values | no | n/a | n/a | `SHORT_VIDEO`, `LIVE_STREAMING`, `PICTURE_TEXT`, `SHORT_DRAMA` |
### Request body
No request body.
### Responses
- `200`: OK
Call GET /api/douyin-xingtu/gw/api/data_sp/author_touch_distribution/v1 for Douyin Creator Marketplace (Xingtu) Audience Touchpoint Distribution through Just...
---
name: Douyin Creator Marketplace (Xingtu) Audience Touchpoint Distribution API
description: Call GET /api/douyin-xingtu/gw/api/data_sp/author_touch_distribution/v1 for Douyin Creator Marketplace (Xingtu) Audience Touchpoint Distribution through JustOneAPI with oAuthorId.
author: JustOneAPI
homepage: https://api.justoneapi.com
metadata: {"openclaw":{"homepage":"https://api.justoneapi.com","primaryEnv":"JUST_ONE_API_TOKEN","requires":{"bins":["node"],"env":["JUST_ONE_API_TOKEN"]},"skillKey":"justoneapi_douyin_xingtu_gw_api_data_sp_author_touch_distribution"}}
---
# Douyin Creator Marketplace (Xingtu) Audience Touchpoint Distribution
Use this focused JustOneAPI skill for audience Touchpoint Distribution in Douyin Creator Marketplace (Xingtu). It targets `GET /api/douyin-xingtu/gw/api/data_sp/author_touch_distribution/v1`. Required non-token inputs are `oAuthorId`. OpenAPI describes it as: Get Douyin Creator Marketplace (Xingtu) audience Touchpoint Distribution data, including segment breakdowns, audience composition, and distribution signals, for creator evaluation, campaign planning, and marketplace research.
## Endpoint Scope
- Platform key: `douyin-xingtu`
- Endpoint key: `gw/api/data_sp/author_touch_distribution`
- Platform family: Douyin Creator Marketplace (Xingtu)
- Skill slug: `justoneapi-douyin-xingtu-gw-api-data-sp-author-touch-distribution`
| Operation | Version | Method | Path | OpenAPI summary |
| --- | --- | --- | --- | --- |
| `gwApiDataSpAuthorTouchDistributionV1` | `v1` | `GET` | `/api/douyin-xingtu/gw/api/data_sp/author_touch_distribution/v1` | Audience Touchpoint Distribution |
## Inputs
| Parameter | In | Required by | Optional by | Type | Notes |
| --- | --- | --- | --- | --- | --- |
| `oAuthorId` | `query` | all | n/a | `string` | Author's unique ID |
| `platform` | `query` | n/a | all | `string` | Platform type. Available Values: - `SHORT_VIDEO`: Short video - `LIVE_STREAMING`: Live streaming - `PICTURE_TEXT`: Picture and text - `SHORT_DRAMA`: Short drama |
| `platform` enum | values | n/a | n/a | n/a | `LIVE_STREAMING`, `PICTURE_TEXT`, `SHORT_DRAMA`, `SHORT_VIDEO` |
Request body: none documented; send parameters through path or query arguments.
## Version Choice
Use `gwApiDataSpAuthorTouchDistributionV1` for the documented `v1` endpoint. There are no alternate versions grouped in this skill.
## Run This Endpoint
Supported operation IDs in this skill: `gwApiDataSpAuthorTouchDistributionV1`.
```bash
node {baseDir}/bin/run.mjs --operation "gwApiDataSpAuthorTouchDistributionV1" --token "$JUST_ONE_API_TOKEN" --params-json '{"oAuthorId":"<oAuthorId>"}'
```
Ask for any missing required parameter before calling the helper. Keep user-provided IDs, cursors, keywords, and filters unchanged.
## Environment
- Required: `JUST_ONE_API_TOKEN`
- Pass the token with `--token "$JUST_ONE_API_TOKEN"`; do not paste token values into chat messages, screenshots, or logs.
- Get a token from [Just One API Dashboard](https://dashboard.justoneapi.com/en/login?utm_source=clawhub.ai&utm_medium=referral&utm_campaign=justoneapi_douyin_xingtu_gw_api_data_sp_author_touch_distribution&utm_content=project_link).
- Authentication details: [Just One API Usage Guide](https://docs.justoneapi.com/en/?utm_source=clawhub.ai&utm_medium=referral&utm_campaign=justoneapi_douyin_xingtu_gw_api_data_sp_author_touch_distribution&utm_content=project_link).
## Output Focus
- State the operation ID and endpoint path used, for example `gwApiDataSpAuthorTouchDistributionV1` on `/api/douyin-xingtu/gw/api/data_sp/author_touch_distribution/v1`.
- Echo the required lookup scope (`oAuthorId`) before summarizing results.
- Prioritize fields that support this endpoint purpose: Get Douyin Creator Marketplace (Xingtu) audience Touchpoint Distribution data, including segment breakdowns, audience composition, and distribution signals, for creator evaluation, campaign planning, and marketplace research.
- Return raw JSON only after the short, endpoint-specific summary.
- If the backend errors, include the backend payload and the exact operation ID.
FILE:bin/run.mjs
#!/usr/bin/env node
const manifest = {
"baseUrl": "https://api.justoneapi.com",
"description": "Call GET /api/douyin-xingtu/gw/api/data_sp/author_touch_distribution/v1 for Douyin Creator Marketplace (Xingtu) Audience Touchpoint Distribution through JustOneAPI with oAuthorId.",
"displayName": "Douyin Creator Marketplace (Xingtu) Audience Touchpoint Distribution",
"openapi": "3.1.0",
"platformKey": "douyin-xingtu",
"primaryTag": "Douyin Creator Marketplace (Xingtu)",
"skillName": "justoneapi_douyin_xingtu_gw_api_data_sp_author_touch_distribution",
"slug": "justoneapi-douyin-xingtu-gw-api-data-sp-author-touch-distribution",
"sourceTitle": "OpenAPI definition",
"operations": [
{
"description": "Get Douyin Creator Marketplace (Xingtu) audience Touchpoint Distribution data, including segment breakdowns, audience composition, and distribution signals, for creator evaluation, campaign planning, and marketplace research.",
"method": "GET",
"operationId": "gwApiDataSpAuthorTouchDistributionV1",
"parameters": [
{
"defaultValue": null,
"description": "User authentication token.",
"enumValues": [],
"location": "query",
"name": "token",
"required": true,
"schemaType": "string"
},
{
"defaultValue": null,
"description": "Author's unique ID.",
"enumValues": [],
"location": "query",
"name": "oAuthorId",
"required": true,
"schemaType": "string"
},
{
"defaultValue": "SHORT_VIDEO",
"description": "Platform type.\n\nAvailable Values:\n- `SHORT_VIDEO`: Short video\n- `LIVE_STREAMING`: Live streaming\n- `PICTURE_TEXT`: Picture and text\n- `SHORT_DRAMA`: Short drama",
"enumValues": [
"SHORT_VIDEO",
"LIVE_STREAMING",
"PICTURE_TEXT",
"SHORT_DRAMA"
],
"location": "query",
"name": "platform",
"required": false,
"schemaType": "string"
}
],
"path": "/api/douyin-xingtu/gw/api/data_sp/author_touch_distribution/v1",
"requestBody": null,
"responses": [
{
"description": "OK",
"statusCode": "200"
}
],
"summary": "Audience Touchpoint Distribution",
"tags": [
"Douyin Creator Marketplace (Xingtu)"
]
}
],
"endpointPath": "gw/api/data_sp/author_touch_distribution",
"skillType": "interface"
};
const args = parseArgs(process.argv.slice(2));
if (!args.operation) {
fail("Missing required --operation argument.");
}
const operation = manifest.operations.find((item) => item.operationId === args.operation);
if (!operation) {
fail(`Unknown operation "args.operation".`, { availableOperations: manifest.operations.map((item) => item.operationId) });
}
const params = parseParams(args.paramsJson);
applyDefaults(operation, params);
injectToken(operation, params, args.token);
validateRequired(operation, params);
const baseUrl = manifest.baseUrl;
const url = new URL(operation.path, ensureBaseUrl(baseUrl));
applyPathParams(operation, params, url);
applyQueryParams(operation, params, url);
const requestInit = {
headers: {
"accept": "application/json",
},
method: operation.method,
};
if (operation.requestBody && params.body !== undefined) {
requestInit.body = JSON.stringify(params.body);
requestInit.headers["content-type"] = operation.requestBody.contentType || "application/json";
}
let response;
try {
response = await fetch(url, requestInit);
} catch (error) {
fail("Network request failed.", {
cause: error instanceof Error ? error.message : String(error),
operationId: operation.operationId,
});
}
const rawBody = await response.text();
let parsedBody;
try {
parsedBody = rawBody ? JSON.parse(rawBody) : null;
} catch (error) {
if (!response.ok) {
fail("Backend returned a non-JSON error response.", {
body: rawBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
fail("Backend returned invalid JSON.", {
body: rawBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
if (!response.ok) {
fail("Backend request failed.", {
body: parsedBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
process.stdout.write(`JSON.stringify(parsedBody, null, 2)\n`);
function parseArgs(argv) {
const parsed = { operation: null, paramsJson: "{}", token: null };
for (let index = 0; index < argv.length; index += 1) {
const flag = argv[index];
const value = argv[index + 1];
if (flag === "--operation") {
parsed.operation = value;
index += 1;
continue;
}
if (flag === "--params-json") {
parsed.paramsJson = value;
index += 1;
continue;
}
if (flag === "--token") {
parsed.token = value;
index += 1;
continue;
}
fail(`Unknown argument "flag".`);
}
return parsed;
}
function parseParams(input) {
try {
const parsed = JSON.parse(input || "{}");
if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) {
fail("--params-json must decode to a JSON object.");
}
return parsed;
} catch (error) {
fail("Failed to parse --params-json.", {
cause: error instanceof Error ? error.message : String(error),
});
}
}
function applyDefaults(operation, params) {
for (const parameter of operation.parameters) {
if (params[parameter.name] === undefined && parameter.defaultValue !== null) {
params[parameter.name] = parameter.defaultValue;
}
}
}
function injectToken(operation, params, cliToken) {
const tokenParam = operation.parameters.find((parameter) => parameter.name === "token");
if (!tokenParam || params.token !== undefined) {
return;
}
if (!cliToken) {
fail("--token is required for this operation.", {
operationId: operation.operationId,
});
}
params.token = cliToken;
}
function validateRequired(operation, params) {
const missing = [];
for (const parameter of operation.parameters) {
if (parameter.required && params[parameter.name] === undefined) {
missing.push(parameter.name);
}
}
if (operation.requestBody?.required && params.body === undefined) {
missing.push("body");
}
if (missing.length) {
fail("Missing required parameters.", {
missing,
operationId: operation.operationId,
});
}
}
function applyPathParams(operation, params, url) {
let pathname = url.pathname;
for (const parameter of operation.parameters.filter((item) => item.location === "path")) {
const value = params[parameter.name];
if (value === undefined) {
continue;
}
pathname = pathname.replace(`{parameter.name}`, encodeURIComponent(String(value)));
}
url.pathname = pathname;
}
function applyQueryParams(operation, params, url) {
for (const parameter of operation.parameters.filter((item) => item.location === "query")) {
const value = params[parameter.name];
if (value === undefined) {
continue;
}
appendValue(url.searchParams, parameter.name, value);
}
}
function appendValue(searchParams, name, value) {
if (Array.isArray(value)) {
for (const item of value) {
appendValue(searchParams, name, item);
}
return;
}
if (value && typeof value === "object") {
searchParams.append(name, JSON.stringify(value));
return;
}
searchParams.append(name, String(value));
}
function ensureBaseUrl(value) {
return value.endsWith("/") ? value : `value/`;
}
function fail(message, details = null) {
const payload = { message };
if (details) {
payload.details = details;
}
process.stderr.write(`JSON.stringify(payload, null, 2)\n`);
process.exit(1);
}
FILE:generated/operations.json
{
"baseUrl": "https://api.justoneapi.com",
"description": "Call GET /api/douyin-xingtu/gw/api/data_sp/author_touch_distribution/v1 for Douyin Creator Marketplace (Xingtu) Audience Touchpoint Distribution through JustOneAPI with oAuthorId.",
"displayName": "Douyin Creator Marketplace (Xingtu) Audience Touchpoint Distribution",
"endpointPath": "gw/api/data_sp/author_touch_distribution",
"openapi": "3.1.0",
"operations": [
{
"description": "Get Douyin Creator Marketplace (Xingtu) audience Touchpoint Distribution data, including segment breakdowns, audience composition, and distribution signals, for creator evaluation, campaign planning, and marketplace research.",
"method": "GET",
"operationId": "gwApiDataSpAuthorTouchDistributionV1",
"parameters": [
{
"defaultValue": null,
"description": "User authentication token.",
"enumValues": [],
"location": "query",
"name": "token",
"required": true,
"schemaType": "string"
},
{
"defaultValue": null,
"description": "Author's unique ID.",
"enumValues": [],
"location": "query",
"name": "oAuthorId",
"required": true,
"schemaType": "string"
},
{
"defaultValue": "SHORT_VIDEO",
"description": "Platform type.\n\nAvailable Values:\n- `SHORT_VIDEO`: Short video\n- `LIVE_STREAMING`: Live streaming\n- `PICTURE_TEXT`: Picture and text\n- `SHORT_DRAMA`: Short drama",
"enumValues": [
"SHORT_VIDEO",
"LIVE_STREAMING",
"PICTURE_TEXT",
"SHORT_DRAMA"
],
"location": "query",
"name": "platform",
"required": false,
"schemaType": "string"
}
],
"path": "/api/douyin-xingtu/gw/api/data_sp/author_touch_distribution/v1",
"requestBody": null,
"responses": [
{
"description": "OK",
"statusCode": "200"
}
],
"summary": "Audience Touchpoint Distribution",
"tags": [
"Douyin Creator Marketplace (Xingtu)"
]
}
],
"platformKey": "douyin-xingtu",
"primaryTag": "Douyin Creator Marketplace (Xingtu)",
"skillName": "justoneapi_douyin_xingtu_gw_api_data_sp_author_touch_distribution",
"skillType": "interface",
"slug": "justoneapi-douyin-xingtu-gw-api-data-sp-author-touch-distribution",
"sourceTitle": "OpenAPI definition"
}
FILE:generated/operations.md
# Douyin Creator Marketplace (Xingtu) Audience Touchpoint Distribution operations
Generated from JustOneAPI OpenAPI for platform key `douyin-xingtu`.
Endpoint group: `gw/api/data_sp/author_touch_distribution`.
## `gwApiDataSpAuthorTouchDistributionV1`
- Method: `GET`
- Path: `/api/douyin-xingtu/gw/api/data_sp/author_touch_distribution/v1`
- Summary: Audience Touchpoint Distribution
- Description: Get Douyin Creator Marketplace (Xingtu) audience Touchpoint Distribution data, including segment breakdowns, audience composition, and distribution signals, for creator evaluation, campaign planning, and marketplace research.
- Tags: `Douyin Creator Marketplace (Xingtu)`
### Parameters
| Name | In | Required | Type | Default | Description |
| --- | --- | --- | --- | --- | --- |
| `token` | `query` | yes | `string` | n/a | User authentication token. |
| `oAuthorId` | `query` | yes | `string` | n/a | Author's unique ID. |
| `platform` | `query` | no | `string` | `SHORT_VIDEO` | Platform type.
Available Values:
- `SHORT_VIDEO`: Short video
- `LIVE_STREAMING`: Live streaming
- `PICTURE_TEXT`: Picture and text
- `SHORT_DRAMA`: Short drama |
| enum | values | no | n/a | n/a | `SHORT_VIDEO`, `LIVE_STREAMING`, `PICTURE_TEXT`, `SHORT_DRAMA` |
### Request body
No request body.
### Responses
- `200`: OK
Call GET /api/douyin-xingtu/gw/api/data_sp/author_rec_videos_v2/v1 for Douyin Creator Marketplace (Xingtu) Recommended Videos through JustOneAPI with oAuthorId.
---
name: Douyin Creator Marketplace (Xingtu) Recommended Videos API
description: Call GET /api/douyin-xingtu/gw/api/data_sp/author_rec_videos_v2/v1 for Douyin Creator Marketplace (Xingtu) Recommended Videos through JustOneAPI with oAuthorId.
author: JustOneAPI
homepage: https://api.justoneapi.com
metadata: {"openclaw":{"homepage":"https://api.justoneapi.com","primaryEnv":"JUST_ONE_API_TOKEN","requires":{"bins":["node"],"env":["JUST_ONE_API_TOKEN"]},"skillKey":"justoneapi_douyin_xingtu_gw_api_data_sp_author_rec_videos_v2"}}
---
# Douyin Creator Marketplace (Xingtu) Recommended Videos
Use this focused JustOneAPI skill for recommended Videos in Douyin Creator Marketplace (Xingtu). It targets `GET /api/douyin-xingtu/gw/api/data_sp/author_rec_videos_v2/v1`. Required non-token inputs are `oAuthorId`. OpenAPI describes it as: Get Douyin Creator Marketplace (Xingtu) recommended Videos data, including content references used, for creator evaluation.
## Endpoint Scope
- Platform key: `douyin-xingtu`
- Endpoint key: `gw/api/data_sp/author_rec_videos_v2`
- Platform family: Douyin Creator Marketplace (Xingtu)
- Skill slug: `justoneapi-douyin-xingtu-gw-api-data-sp-author-rec-videos-v2`
| Operation | Version | Method | Path | OpenAPI summary |
| --- | --- | --- | --- | --- |
| `gwApiDataSpAuthorRecVideosV2V1` | `v1` | `GET` | `/api/douyin-xingtu/gw/api/data_sp/author_rec_videos_v2/v1` | Recommended Videos |
## Inputs
| Parameter | In | Required by | Optional by | Type | Notes |
| --- | --- | --- | --- | --- | --- |
| `oAuthorId` | `query` | all | n/a | `string` | Author's unique ID |
| `platform` | `query` | n/a | all | `string` | Platform type. Available Values: - `SHORT_VIDEO`: Short video - `LIVE_STREAMING`: Live streaming - `PICTURE_TEXT`: Picture and text - `SHORT_DRAMA`: Short drama |
| `platform` enum | values | n/a | n/a | n/a | `LIVE_STREAMING`, `PICTURE_TEXT`, `SHORT_DRAMA`, `SHORT_VIDEO` |
Request body: none documented; send parameters through path or query arguments.
## Version Choice
Use `gwApiDataSpAuthorRecVideosV2V1` for the documented `v1` endpoint. There are no alternate versions grouped in this skill.
## Run This Endpoint
Supported operation IDs in this skill: `gwApiDataSpAuthorRecVideosV2V1`.
```bash
node {baseDir}/bin/run.mjs --operation "gwApiDataSpAuthorRecVideosV2V1" --token "$JUST_ONE_API_TOKEN" --params-json '{"oAuthorId":"<oAuthorId>"}'
```
Ask for any missing required parameter before calling the helper. Keep user-provided IDs, cursors, keywords, and filters unchanged.
## Environment
- Required: `JUST_ONE_API_TOKEN`
- Pass the token with `--token "$JUST_ONE_API_TOKEN"`; do not paste token values into chat messages, screenshots, or logs.
- Get a token from [Just One API Dashboard](https://dashboard.justoneapi.com/en/login?utm_source=clawhub.ai&utm_medium=referral&utm_campaign=justoneapi_douyin_xingtu_gw_api_data_sp_author_rec_videos_v2&utm_content=project_link).
- Authentication details: [Just One API Usage Guide](https://docs.justoneapi.com/en/?utm_source=clawhub.ai&utm_medium=referral&utm_campaign=justoneapi_douyin_xingtu_gw_api_data_sp_author_rec_videos_v2&utm_content=project_link).
## Output Focus
- State the operation ID and endpoint path used, for example `gwApiDataSpAuthorRecVideosV2V1` on `/api/douyin-xingtu/gw/api/data_sp/author_rec_videos_v2/v1`.
- Echo the required lookup scope (`oAuthorId`) before summarizing results.
- Prioritize fields that support this endpoint purpose: Get Douyin Creator Marketplace (Xingtu) recommended Videos data, including content references used, for creator evaluation.
- Return raw JSON only after the short, endpoint-specific summary.
- If the backend errors, include the backend payload and the exact operation ID.
FILE:bin/run.mjs
#!/usr/bin/env node
const manifest = {
"baseUrl": "https://api.justoneapi.com",
"description": "Call GET /api/douyin-xingtu/gw/api/data_sp/author_rec_videos_v2/v1 for Douyin Creator Marketplace (Xingtu) Recommended Videos through JustOneAPI with oAuthorId.",
"displayName": "Douyin Creator Marketplace (Xingtu) Recommended Videos",
"openapi": "3.1.0",
"platformKey": "douyin-xingtu",
"primaryTag": "Douyin Creator Marketplace (Xingtu)",
"skillName": "justoneapi_douyin_xingtu_gw_api_data_sp_author_rec_videos_v2",
"slug": "justoneapi-douyin-xingtu-gw-api-data-sp-author-rec-videos-v2",
"sourceTitle": "OpenAPI definition",
"operations": [
{
"description": "Get Douyin Creator Marketplace (Xingtu) recommended Videos data, including content references used, for creator evaluation.",
"method": "GET",
"operationId": "gwApiDataSpAuthorRecVideosV2V1",
"parameters": [
{
"defaultValue": null,
"description": "User authentication token.",
"enumValues": [],
"location": "query",
"name": "token",
"required": true,
"schemaType": "string"
},
{
"defaultValue": null,
"description": "Author's unique ID.",
"enumValues": [],
"location": "query",
"name": "oAuthorId",
"required": true,
"schemaType": "string"
},
{
"defaultValue": "SHORT_VIDEO",
"description": "Platform type.\n\nAvailable Values:\n- `SHORT_VIDEO`: Short video\n- `LIVE_STREAMING`: Live streaming\n- `PICTURE_TEXT`: Picture and text\n- `SHORT_DRAMA`: Short drama",
"enumValues": [
"SHORT_VIDEO",
"LIVE_STREAMING",
"PICTURE_TEXT",
"SHORT_DRAMA"
],
"location": "query",
"name": "platform",
"required": false,
"schemaType": "string"
}
],
"path": "/api/douyin-xingtu/gw/api/data_sp/author_rec_videos_v2/v1",
"requestBody": null,
"responses": [
{
"description": "OK",
"statusCode": "200"
}
],
"summary": "Recommended Videos",
"tags": [
"Douyin Creator Marketplace (Xingtu)"
]
}
],
"endpointPath": "gw/api/data_sp/author_rec_videos_v2",
"skillType": "interface"
};
const args = parseArgs(process.argv.slice(2));
if (!args.operation) {
fail("Missing required --operation argument.");
}
const operation = manifest.operations.find((item) => item.operationId === args.operation);
if (!operation) {
fail(`Unknown operation "args.operation".`, { availableOperations: manifest.operations.map((item) => item.operationId) });
}
const params = parseParams(args.paramsJson);
applyDefaults(operation, params);
injectToken(operation, params, args.token);
validateRequired(operation, params);
const baseUrl = manifest.baseUrl;
const url = new URL(operation.path, ensureBaseUrl(baseUrl));
applyPathParams(operation, params, url);
applyQueryParams(operation, params, url);
const requestInit = {
headers: {
"accept": "application/json",
},
method: operation.method,
};
if (operation.requestBody && params.body !== undefined) {
requestInit.body = JSON.stringify(params.body);
requestInit.headers["content-type"] = operation.requestBody.contentType || "application/json";
}
let response;
try {
response = await fetch(url, requestInit);
} catch (error) {
fail("Network request failed.", {
cause: error instanceof Error ? error.message : String(error),
operationId: operation.operationId,
});
}
const rawBody = await response.text();
let parsedBody;
try {
parsedBody = rawBody ? JSON.parse(rawBody) : null;
} catch (error) {
if (!response.ok) {
fail("Backend returned a non-JSON error response.", {
body: rawBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
fail("Backend returned invalid JSON.", {
body: rawBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
if (!response.ok) {
fail("Backend request failed.", {
body: parsedBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
process.stdout.write(`JSON.stringify(parsedBody, null, 2)\n`);
function parseArgs(argv) {
const parsed = { operation: null, paramsJson: "{}", token: null };
for (let index = 0; index < argv.length; index += 1) {
const flag = argv[index];
const value = argv[index + 1];
if (flag === "--operation") {
parsed.operation = value;
index += 1;
continue;
}
if (flag === "--params-json") {
parsed.paramsJson = value;
index += 1;
continue;
}
if (flag === "--token") {
parsed.token = value;
index += 1;
continue;
}
fail(`Unknown argument "flag".`);
}
return parsed;
}
function parseParams(input) {
try {
const parsed = JSON.parse(input || "{}");
if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) {
fail("--params-json must decode to a JSON object.");
}
return parsed;
} catch (error) {
fail("Failed to parse --params-json.", {
cause: error instanceof Error ? error.message : String(error),
});
}
}
function applyDefaults(operation, params) {
for (const parameter of operation.parameters) {
if (params[parameter.name] === undefined && parameter.defaultValue !== null) {
params[parameter.name] = parameter.defaultValue;
}
}
}
function injectToken(operation, params, cliToken) {
const tokenParam = operation.parameters.find((parameter) => parameter.name === "token");
if (!tokenParam || params.token !== undefined) {
return;
}
if (!cliToken) {
fail("--token is required for this operation.", {
operationId: operation.operationId,
});
}
params.token = cliToken;
}
function validateRequired(operation, params) {
const missing = [];
for (const parameter of operation.parameters) {
if (parameter.required && params[parameter.name] === undefined) {
missing.push(parameter.name);
}
}
if (operation.requestBody?.required && params.body === undefined) {
missing.push("body");
}
if (missing.length) {
fail("Missing required parameters.", {
missing,
operationId: operation.operationId,
});
}
}
function applyPathParams(operation, params, url) {
let pathname = url.pathname;
for (const parameter of operation.parameters.filter((item) => item.location === "path")) {
const value = params[parameter.name];
if (value === undefined) {
continue;
}
pathname = pathname.replace(`{parameter.name}`, encodeURIComponent(String(value)));
}
url.pathname = pathname;
}
function applyQueryParams(operation, params, url) {
for (const parameter of operation.parameters.filter((item) => item.location === "query")) {
const value = params[parameter.name];
if (value === undefined) {
continue;
}
appendValue(url.searchParams, parameter.name, value);
}
}
function appendValue(searchParams, name, value) {
if (Array.isArray(value)) {
for (const item of value) {
appendValue(searchParams, name, item);
}
return;
}
if (value && typeof value === "object") {
searchParams.append(name, JSON.stringify(value));
return;
}
searchParams.append(name, String(value));
}
function ensureBaseUrl(value) {
return value.endsWith("/") ? value : `value/`;
}
function fail(message, details = null) {
const payload = { message };
if (details) {
payload.details = details;
}
process.stderr.write(`JSON.stringify(payload, null, 2)\n`);
process.exit(1);
}
FILE:generated/operations.json
{
"baseUrl": "https://api.justoneapi.com",
"description": "Call GET /api/douyin-xingtu/gw/api/data_sp/author_rec_videos_v2/v1 for Douyin Creator Marketplace (Xingtu) Recommended Videos through JustOneAPI with oAuthorId.",
"displayName": "Douyin Creator Marketplace (Xingtu) Recommended Videos",
"endpointPath": "gw/api/data_sp/author_rec_videos_v2",
"openapi": "3.1.0",
"operations": [
{
"description": "Get Douyin Creator Marketplace (Xingtu) recommended Videos data, including content references used, for creator evaluation.",
"method": "GET",
"operationId": "gwApiDataSpAuthorRecVideosV2V1",
"parameters": [
{
"defaultValue": null,
"description": "User authentication token.",
"enumValues": [],
"location": "query",
"name": "token",
"required": true,
"schemaType": "string"
},
{
"defaultValue": null,
"description": "Author's unique ID.",
"enumValues": [],
"location": "query",
"name": "oAuthorId",
"required": true,
"schemaType": "string"
},
{
"defaultValue": "SHORT_VIDEO",
"description": "Platform type.\n\nAvailable Values:\n- `SHORT_VIDEO`: Short video\n- `LIVE_STREAMING`: Live streaming\n- `PICTURE_TEXT`: Picture and text\n- `SHORT_DRAMA`: Short drama",
"enumValues": [
"SHORT_VIDEO",
"LIVE_STREAMING",
"PICTURE_TEXT",
"SHORT_DRAMA"
],
"location": "query",
"name": "platform",
"required": false,
"schemaType": "string"
}
],
"path": "/api/douyin-xingtu/gw/api/data_sp/author_rec_videos_v2/v1",
"requestBody": null,
"responses": [
{
"description": "OK",
"statusCode": "200"
}
],
"summary": "Recommended Videos",
"tags": [
"Douyin Creator Marketplace (Xingtu)"
]
}
],
"platformKey": "douyin-xingtu",
"primaryTag": "Douyin Creator Marketplace (Xingtu)",
"skillName": "justoneapi_douyin_xingtu_gw_api_data_sp_author_rec_videos_v2",
"skillType": "interface",
"slug": "justoneapi-douyin-xingtu-gw-api-data-sp-author-rec-videos-v2",
"sourceTitle": "OpenAPI definition"
}
FILE:generated/operations.md
# Douyin Creator Marketplace (Xingtu) Recommended Videos operations
Generated from JustOneAPI OpenAPI for platform key `douyin-xingtu`.
Endpoint group: `gw/api/data_sp/author_rec_videos_v2`.
## `gwApiDataSpAuthorRecVideosV2V1`
- Method: `GET`
- Path: `/api/douyin-xingtu/gw/api/data_sp/author_rec_videos_v2/v1`
- Summary: Recommended Videos
- Description: Get Douyin Creator Marketplace (Xingtu) recommended Videos data, including content references used, for creator evaluation.
- Tags: `Douyin Creator Marketplace (Xingtu)`
### Parameters
| Name | In | Required | Type | Default | Description |
| --- | --- | --- | --- | --- | --- |
| `token` | `query` | yes | `string` | n/a | User authentication token. |
| `oAuthorId` | `query` | yes | `string` | n/a | Author's unique ID. |
| `platform` | `query` | no | `string` | `SHORT_VIDEO` | Platform type.
Available Values:
- `SHORT_VIDEO`: Short video
- `LIVE_STREAMING`: Live streaming
- `PICTURE_TEXT`: Picture and text
- `SHORT_DRAMA`: Short drama |
| enum | values | no | n/a | n/a | `SHORT_VIDEO`, `LIVE_STREAMING`, `PICTURE_TEXT`, `SHORT_DRAMA` |
### Request body
No request body.
### Responses
- `200`: OK
Call GET /api/douyin-xingtu/gw/api/data_sp/author_link_struct/v1 for Douyin Creator Marketplace (Xingtu) Creator Link Structure through JustOneAPI with oAuth...
---
name: Douyin Creator Marketplace (Xingtu) Creator Link Structure API
description: Call GET /api/douyin-xingtu/gw/api/data_sp/author_link_struct/v1 for Douyin Creator Marketplace (Xingtu) Creator Link Structure through JustOneAPI with oAuthorId.
author: JustOneAPI
homepage: https://api.justoneapi.com
metadata: {"openclaw":{"homepage":"https://api.justoneapi.com","primaryEnv":"JUST_ONE_API_TOKEN","requires":{"bins":["node"],"env":["JUST_ONE_API_TOKEN"]},"skillKey":"justoneapi_douyin_xingtu_gw_api_data_sp_author_link_struct"}}
---
# Douyin Creator Marketplace (Xingtu) Creator Link Structure
Use this focused JustOneAPI skill for creator Link Structure in Douyin Creator Marketplace (Xingtu). It targets `GET /api/douyin-xingtu/gw/api/data_sp/author_link_struct/v1`. Required non-token inputs are `oAuthorId`. OpenAPI describes it as: Get Douyin Creator Marketplace (Xingtu) creator Link Structure data, including engagement and conversion metrics, for creator performance analysis.
## Endpoint Scope
- Platform key: `douyin-xingtu`
- Endpoint key: `gw/api/data_sp/author_link_struct`
- Platform family: Douyin Creator Marketplace (Xingtu)
- Skill slug: `justoneapi-douyin-xingtu-gw-api-data-sp-author-link-struct`
| Operation | Version | Method | Path | OpenAPI summary |
| --- | --- | --- | --- | --- |
| `gwApiDataSpAuthorLinkStructV1` | `v1` | `GET` | `/api/douyin-xingtu/gw/api/data_sp/author_link_struct/v1` | Creator Link Structure |
## Inputs
| Parameter | In | Required by | Optional by | Type | Notes |
| --- | --- | --- | --- | --- | --- |
| `oAuthorId` | `query` | all | n/a | `string` | Author's unique ID |
| `platform` | `query` | n/a | all | `string` | Platform type. Available Values: - `SHORT_VIDEO`: Short video - `LIVE_STREAMING`: Live streaming - `PICTURE_TEXT`: Picture and text - `SHORT_DRAMA`: Short drama |
| `platform` enum | values | n/a | n/a | n/a | `LIVE_STREAMING`, `PICTURE_TEXT`, `SHORT_DRAMA`, `SHORT_VIDEO` |
Request body: none documented; send parameters through path or query arguments.
## Version Choice
Use `gwApiDataSpAuthorLinkStructV1` for the documented `v1` endpoint. There are no alternate versions grouped in this skill.
## Run This Endpoint
Supported operation IDs in this skill: `gwApiDataSpAuthorLinkStructV1`.
```bash
node {baseDir}/bin/run.mjs --operation "gwApiDataSpAuthorLinkStructV1" --token "$JUST_ONE_API_TOKEN" --params-json '{"oAuthorId":"<oAuthorId>"}'
```
Ask for any missing required parameter before calling the helper. Keep user-provided IDs, cursors, keywords, and filters unchanged.
## Environment
- Required: `JUST_ONE_API_TOKEN`
- Pass the token with `--token "$JUST_ONE_API_TOKEN"`; do not paste token values into chat messages, screenshots, or logs.
- Get a token from [Just One API Dashboard](https://dashboard.justoneapi.com/en/login?utm_source=clawhub.ai&utm_medium=referral&utm_campaign=justoneapi_douyin_xingtu_gw_api_data_sp_author_link_struct&utm_content=project_link).
- Authentication details: [Just One API Usage Guide](https://docs.justoneapi.com/en/?utm_source=clawhub.ai&utm_medium=referral&utm_campaign=justoneapi_douyin_xingtu_gw_api_data_sp_author_link_struct&utm_content=project_link).
## Output Focus
- State the operation ID and endpoint path used, for example `gwApiDataSpAuthorLinkStructV1` on `/api/douyin-xingtu/gw/api/data_sp/author_link_struct/v1`.
- Echo the required lookup scope (`oAuthorId`) before summarizing results.
- Prioritize fields that support this endpoint purpose: Get Douyin Creator Marketplace (Xingtu) creator Link Structure data, including engagement and conversion metrics, for creator performance analysis.
- Return raw JSON only after the short, endpoint-specific summary.
- If the backend errors, include the backend payload and the exact operation ID.
FILE:bin/run.mjs
#!/usr/bin/env node
const manifest = {
"baseUrl": "https://api.justoneapi.com",
"description": "Call GET /api/douyin-xingtu/gw/api/data_sp/author_link_struct/v1 for Douyin Creator Marketplace (Xingtu) Creator Link Structure through JustOneAPI with oAuthorId.",
"displayName": "Douyin Creator Marketplace (Xingtu) Creator Link Structure",
"openapi": "3.1.0",
"platformKey": "douyin-xingtu",
"primaryTag": "Douyin Creator Marketplace (Xingtu)",
"skillName": "justoneapi_douyin_xingtu_gw_api_data_sp_author_link_struct",
"slug": "justoneapi-douyin-xingtu-gw-api-data-sp-author-link-struct",
"sourceTitle": "OpenAPI definition",
"operations": [
{
"description": "Get Douyin Creator Marketplace (Xingtu) creator Link Structure data, including engagement and conversion metrics, for creator performance analysis.",
"method": "GET",
"operationId": "gwApiDataSpAuthorLinkStructV1",
"parameters": [
{
"defaultValue": null,
"description": "User authentication token.",
"enumValues": [],
"location": "query",
"name": "token",
"required": true,
"schemaType": "string"
},
{
"defaultValue": null,
"description": "Author's unique ID.",
"enumValues": [],
"location": "query",
"name": "oAuthorId",
"required": true,
"schemaType": "string"
},
{
"defaultValue": "SHORT_VIDEO",
"description": "Platform type.\n\nAvailable Values:\n- `SHORT_VIDEO`: Short video\n- `LIVE_STREAMING`: Live streaming\n- `PICTURE_TEXT`: Picture and text\n- `SHORT_DRAMA`: Short drama",
"enumValues": [
"SHORT_VIDEO",
"LIVE_STREAMING",
"PICTURE_TEXT",
"SHORT_DRAMA"
],
"location": "query",
"name": "platform",
"required": false,
"schemaType": "string"
}
],
"path": "/api/douyin-xingtu/gw/api/data_sp/author_link_struct/v1",
"requestBody": null,
"responses": [
{
"description": "OK",
"statusCode": "200"
}
],
"summary": "Creator Link Structure",
"tags": [
"Douyin Creator Marketplace (Xingtu)"
]
}
],
"endpointPath": "gw/api/data_sp/author_link_struct",
"skillType": "interface"
};
const args = parseArgs(process.argv.slice(2));
if (!args.operation) {
fail("Missing required --operation argument.");
}
const operation = manifest.operations.find((item) => item.operationId === args.operation);
if (!operation) {
fail(`Unknown operation "args.operation".`, { availableOperations: manifest.operations.map((item) => item.operationId) });
}
const params = parseParams(args.paramsJson);
applyDefaults(operation, params);
injectToken(operation, params, args.token);
validateRequired(operation, params);
const baseUrl = manifest.baseUrl;
const url = new URL(operation.path, ensureBaseUrl(baseUrl));
applyPathParams(operation, params, url);
applyQueryParams(operation, params, url);
const requestInit = {
headers: {
"accept": "application/json",
},
method: operation.method,
};
if (operation.requestBody && params.body !== undefined) {
requestInit.body = JSON.stringify(params.body);
requestInit.headers["content-type"] = operation.requestBody.contentType || "application/json";
}
let response;
try {
response = await fetch(url, requestInit);
} catch (error) {
fail("Network request failed.", {
cause: error instanceof Error ? error.message : String(error),
operationId: operation.operationId,
});
}
const rawBody = await response.text();
let parsedBody;
try {
parsedBody = rawBody ? JSON.parse(rawBody) : null;
} catch (error) {
if (!response.ok) {
fail("Backend returned a non-JSON error response.", {
body: rawBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
fail("Backend returned invalid JSON.", {
body: rawBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
if (!response.ok) {
fail("Backend request failed.", {
body: parsedBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
process.stdout.write(`JSON.stringify(parsedBody, null, 2)\n`);
function parseArgs(argv) {
const parsed = { operation: null, paramsJson: "{}", token: null };
for (let index = 0; index < argv.length; index += 1) {
const flag = argv[index];
const value = argv[index + 1];
if (flag === "--operation") {
parsed.operation = value;
index += 1;
continue;
}
if (flag === "--params-json") {
parsed.paramsJson = value;
index += 1;
continue;
}
if (flag === "--token") {
parsed.token = value;
index += 1;
continue;
}
fail(`Unknown argument "flag".`);
}
return parsed;
}
function parseParams(input) {
try {
const parsed = JSON.parse(input || "{}");
if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) {
fail("--params-json must decode to a JSON object.");
}
return parsed;
} catch (error) {
fail("Failed to parse --params-json.", {
cause: error instanceof Error ? error.message : String(error),
});
}
}
function applyDefaults(operation, params) {
for (const parameter of operation.parameters) {
if (params[parameter.name] === undefined && parameter.defaultValue !== null) {
params[parameter.name] = parameter.defaultValue;
}
}
}
function injectToken(operation, params, cliToken) {
const tokenParam = operation.parameters.find((parameter) => parameter.name === "token");
if (!tokenParam || params.token !== undefined) {
return;
}
if (!cliToken) {
fail("--token is required for this operation.", {
operationId: operation.operationId,
});
}
params.token = cliToken;
}
function validateRequired(operation, params) {
const missing = [];
for (const parameter of operation.parameters) {
if (parameter.required && params[parameter.name] === undefined) {
missing.push(parameter.name);
}
}
if (operation.requestBody?.required && params.body === undefined) {
missing.push("body");
}
if (missing.length) {
fail("Missing required parameters.", {
missing,
operationId: operation.operationId,
});
}
}
function applyPathParams(operation, params, url) {
let pathname = url.pathname;
for (const parameter of operation.parameters.filter((item) => item.location === "path")) {
const value = params[parameter.name];
if (value === undefined) {
continue;
}
pathname = pathname.replace(`{parameter.name}`, encodeURIComponent(String(value)));
}
url.pathname = pathname;
}
function applyQueryParams(operation, params, url) {
for (const parameter of operation.parameters.filter((item) => item.location === "query")) {
const value = params[parameter.name];
if (value === undefined) {
continue;
}
appendValue(url.searchParams, parameter.name, value);
}
}
function appendValue(searchParams, name, value) {
if (Array.isArray(value)) {
for (const item of value) {
appendValue(searchParams, name, item);
}
return;
}
if (value && typeof value === "object") {
searchParams.append(name, JSON.stringify(value));
return;
}
searchParams.append(name, String(value));
}
function ensureBaseUrl(value) {
return value.endsWith("/") ? value : `value/`;
}
function fail(message, details = null) {
const payload = { message };
if (details) {
payload.details = details;
}
process.stderr.write(`JSON.stringify(payload, null, 2)\n`);
process.exit(1);
}
FILE:generated/operations.json
{
"baseUrl": "https://api.justoneapi.com",
"description": "Call GET /api/douyin-xingtu/gw/api/data_sp/author_link_struct/v1 for Douyin Creator Marketplace (Xingtu) Creator Link Structure through JustOneAPI with oAuthorId.",
"displayName": "Douyin Creator Marketplace (Xingtu) Creator Link Structure",
"endpointPath": "gw/api/data_sp/author_link_struct",
"openapi": "3.1.0",
"operations": [
{
"description": "Get Douyin Creator Marketplace (Xingtu) creator Link Structure data, including engagement and conversion metrics, for creator performance analysis.",
"method": "GET",
"operationId": "gwApiDataSpAuthorLinkStructV1",
"parameters": [
{
"defaultValue": null,
"description": "User authentication token.",
"enumValues": [],
"location": "query",
"name": "token",
"required": true,
"schemaType": "string"
},
{
"defaultValue": null,
"description": "Author's unique ID.",
"enumValues": [],
"location": "query",
"name": "oAuthorId",
"required": true,
"schemaType": "string"
},
{
"defaultValue": "SHORT_VIDEO",
"description": "Platform type.\n\nAvailable Values:\n- `SHORT_VIDEO`: Short video\n- `LIVE_STREAMING`: Live streaming\n- `PICTURE_TEXT`: Picture and text\n- `SHORT_DRAMA`: Short drama",
"enumValues": [
"SHORT_VIDEO",
"LIVE_STREAMING",
"PICTURE_TEXT",
"SHORT_DRAMA"
],
"location": "query",
"name": "platform",
"required": false,
"schemaType": "string"
}
],
"path": "/api/douyin-xingtu/gw/api/data_sp/author_link_struct/v1",
"requestBody": null,
"responses": [
{
"description": "OK",
"statusCode": "200"
}
],
"summary": "Creator Link Structure",
"tags": [
"Douyin Creator Marketplace (Xingtu)"
]
}
],
"platformKey": "douyin-xingtu",
"primaryTag": "Douyin Creator Marketplace (Xingtu)",
"skillName": "justoneapi_douyin_xingtu_gw_api_data_sp_author_link_struct",
"skillType": "interface",
"slug": "justoneapi-douyin-xingtu-gw-api-data-sp-author-link-struct",
"sourceTitle": "OpenAPI definition"
}
FILE:generated/operations.md
# Douyin Creator Marketplace (Xingtu) Creator Link Structure operations
Generated from JustOneAPI OpenAPI for platform key `douyin-xingtu`.
Endpoint group: `gw/api/data_sp/author_link_struct`.
## `gwApiDataSpAuthorLinkStructV1`
- Method: `GET`
- Path: `/api/douyin-xingtu/gw/api/data_sp/author_link_struct/v1`
- Summary: Creator Link Structure
- Description: Get Douyin Creator Marketplace (Xingtu) creator Link Structure data, including engagement and conversion metrics, for creator performance analysis.
- Tags: `Douyin Creator Marketplace (Xingtu)`
### Parameters
| Name | In | Required | Type | Default | Description |
| --- | --- | --- | --- | --- | --- |
| `token` | `query` | yes | `string` | n/a | User authentication token. |
| `oAuthorId` | `query` | yes | `string` | n/a | Author's unique ID. |
| `platform` | `query` | no | `string` | `SHORT_VIDEO` | Platform type.
Available Values:
- `SHORT_VIDEO`: Short video
- `LIVE_STREAMING`: Live streaming
- `PICTURE_TEXT`: Picture and text
- `SHORT_DRAMA`: Short drama |
| enum | values | no | n/a | n/a | `SHORT_VIDEO`, `LIVE_STREAMING`, `PICTURE_TEXT`, `SHORT_DRAMA` |
### Request body
No request body.
### Responses
- `200`: OK
Call GET /api/douyin-xingtu/gw/api/data_sp/author_cp_info/v1 for Douyin Creator Marketplace (Xingtu) Cost Performance Analysis through JustOneAPI with oAutho...
---
name: Douyin Creator Marketplace (Xingtu) Cost Performance Analysis API
description: Call GET /api/douyin-xingtu/gw/api/data_sp/author_cp_info/v1 for Douyin Creator Marketplace (Xingtu) Cost Performance Analysis through JustOneAPI with oAuthorId.
author: JustOneAPI
homepage: https://api.justoneapi.com
metadata: {"openclaw":{"homepage":"https://api.justoneapi.com","primaryEnv":"JUST_ONE_API_TOKEN","requires":{"bins":["node"],"env":["JUST_ONE_API_TOKEN"]},"skillKey":"justoneapi_douyin_xingtu_gw_api_data_sp_author_cp_info"}}
---
# Douyin Creator Marketplace (Xingtu) Cost Performance Analysis
Use this focused JustOneAPI skill for cost Performance Analysis in Douyin Creator Marketplace (Xingtu). It targets `GET /api/douyin-xingtu/gw/api/data_sp/author_cp_info/v1`. Required non-token inputs are `oAuthorId`. OpenAPI describes it as: Get Douyin Creator Marketplace (Xingtu) cost Performance Analysis data, including pricing, exposure, and engagement efficiency indicators, for creator evaluation, campaign planning, and marketplace research.
## Endpoint Scope
- Platform key: `douyin-xingtu`
- Endpoint key: `gw/api/data_sp/author_cp_info`
- Platform family: Douyin Creator Marketplace (Xingtu)
- Skill slug: `justoneapi-douyin-xingtu-gw-api-data-sp-author-cp-info`
| Operation | Version | Method | Path | OpenAPI summary |
| --- | --- | --- | --- | --- |
| `gwApiDataSpAuthorCpInfoV1` | `v1` | `GET` | `/api/douyin-xingtu/gw/api/data_sp/author_cp_info/v1` | Cost Performance Analysis |
## Inputs
| Parameter | In | Required by | Optional by | Type | Notes |
| --- | --- | --- | --- | --- | --- |
| `oAuthorId` | `query` | all | n/a | `string` | Author's unique ID |
| `platform` | `query` | n/a | all | `string` | Platform type. Available Values: - `SHORT_VIDEO`: Short video - `LIVE_STREAMING`: Live streaming - `PICTURE_TEXT`: Picture and text - `SHORT_DRAMA`: Short drama |
| `platform` enum | values | n/a | n/a | n/a | `LIVE_STREAMING`, `PICTURE_TEXT`, `SHORT_DRAMA`, `SHORT_VIDEO` |
Request body: none documented; send parameters through path or query arguments.
## Version Choice
Use `gwApiDataSpAuthorCpInfoV1` for the documented `v1` endpoint. There are no alternate versions grouped in this skill.
## Run This Endpoint
Supported operation IDs in this skill: `gwApiDataSpAuthorCpInfoV1`.
```bash
node {baseDir}/bin/run.mjs --operation "gwApiDataSpAuthorCpInfoV1" --token "$JUST_ONE_API_TOKEN" --params-json '{"oAuthorId":"<oAuthorId>"}'
```
Ask for any missing required parameter before calling the helper. Keep user-provided IDs, cursors, keywords, and filters unchanged.
## Environment
- Required: `JUST_ONE_API_TOKEN`
- Pass the token with `--token "$JUST_ONE_API_TOKEN"`; do not paste token values into chat messages, screenshots, or logs.
- Get a token from [Just One API Dashboard](https://dashboard.justoneapi.com/en/login?utm_source=clawhub.ai&utm_medium=referral&utm_campaign=justoneapi_douyin_xingtu_gw_api_data_sp_author_cp_info&utm_content=project_link).
- Authentication details: [Just One API Usage Guide](https://docs.justoneapi.com/en/?utm_source=clawhub.ai&utm_medium=referral&utm_campaign=justoneapi_douyin_xingtu_gw_api_data_sp_author_cp_info&utm_content=project_link).
## Output Focus
- State the operation ID and endpoint path used, for example `gwApiDataSpAuthorCpInfoV1` on `/api/douyin-xingtu/gw/api/data_sp/author_cp_info/v1`.
- Echo the required lookup scope (`oAuthorId`) before summarizing results.
- Prioritize fields that support this endpoint purpose: Get Douyin Creator Marketplace (Xingtu) cost Performance Analysis data, including pricing, exposure, and engagement efficiency indicators, for creator evaluation, campaign planning, and marketplace research.
- Return raw JSON only after the short, endpoint-specific summary.
- If the backend errors, include the backend payload and the exact operation ID.
FILE:bin/run.mjs
#!/usr/bin/env node
const manifest = {
"baseUrl": "https://api.justoneapi.com",
"description": "Call GET /api/douyin-xingtu/gw/api/data_sp/author_cp_info/v1 for Douyin Creator Marketplace (Xingtu) Cost Performance Analysis through JustOneAPI with oAuthorId.",
"displayName": "Douyin Creator Marketplace (Xingtu) Cost Performance Analysis",
"openapi": "3.1.0",
"platformKey": "douyin-xingtu",
"primaryTag": "Douyin Creator Marketplace (Xingtu)",
"skillName": "justoneapi_douyin_xingtu_gw_api_data_sp_author_cp_info",
"slug": "justoneapi-douyin-xingtu-gw-api-data-sp-author-cp-info",
"sourceTitle": "OpenAPI definition",
"operations": [
{
"description": "Get Douyin Creator Marketplace (Xingtu) cost Performance Analysis data, including pricing, exposure, and engagement efficiency indicators, for creator evaluation, campaign planning, and marketplace research.",
"method": "GET",
"operationId": "gwApiDataSpAuthorCpInfoV1",
"parameters": [
{
"defaultValue": null,
"description": "User authentication token.",
"enumValues": [],
"location": "query",
"name": "token",
"required": true,
"schemaType": "string"
},
{
"defaultValue": null,
"description": "Author's unique ID.",
"enumValues": [],
"location": "query",
"name": "oAuthorId",
"required": true,
"schemaType": "string"
},
{
"defaultValue": "SHORT_VIDEO",
"description": "Platform type.\n\nAvailable Values:\n- `SHORT_VIDEO`: Short video\n- `LIVE_STREAMING`: Live streaming\n- `PICTURE_TEXT`: Picture and text\n- `SHORT_DRAMA`: Short drama",
"enumValues": [
"SHORT_VIDEO",
"LIVE_STREAMING",
"PICTURE_TEXT",
"SHORT_DRAMA"
],
"location": "query",
"name": "platform",
"required": false,
"schemaType": "string"
}
],
"path": "/api/douyin-xingtu/gw/api/data_sp/author_cp_info/v1",
"requestBody": null,
"responses": [
{
"description": "OK",
"statusCode": "200"
}
],
"summary": "Cost Performance Analysis",
"tags": [
"Douyin Creator Marketplace (Xingtu)"
]
}
],
"endpointPath": "gw/api/data_sp/author_cp_info",
"skillType": "interface"
};
const args = parseArgs(process.argv.slice(2));
if (!args.operation) {
fail("Missing required --operation argument.");
}
const operation = manifest.operations.find((item) => item.operationId === args.operation);
if (!operation) {
fail(`Unknown operation "args.operation".`, { availableOperations: manifest.operations.map((item) => item.operationId) });
}
const params = parseParams(args.paramsJson);
applyDefaults(operation, params);
injectToken(operation, params, args.token);
validateRequired(operation, params);
const baseUrl = manifest.baseUrl;
const url = new URL(operation.path, ensureBaseUrl(baseUrl));
applyPathParams(operation, params, url);
applyQueryParams(operation, params, url);
const requestInit = {
headers: {
"accept": "application/json",
},
method: operation.method,
};
if (operation.requestBody && params.body !== undefined) {
requestInit.body = JSON.stringify(params.body);
requestInit.headers["content-type"] = operation.requestBody.contentType || "application/json";
}
let response;
try {
response = await fetch(url, requestInit);
} catch (error) {
fail("Network request failed.", {
cause: error instanceof Error ? error.message : String(error),
operationId: operation.operationId,
});
}
const rawBody = await response.text();
let parsedBody;
try {
parsedBody = rawBody ? JSON.parse(rawBody) : null;
} catch (error) {
if (!response.ok) {
fail("Backend returned a non-JSON error response.", {
body: rawBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
fail("Backend returned invalid JSON.", {
body: rawBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
if (!response.ok) {
fail("Backend request failed.", {
body: parsedBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
process.stdout.write(`JSON.stringify(parsedBody, null, 2)\n`);
function parseArgs(argv) {
const parsed = { operation: null, paramsJson: "{}", token: null };
for (let index = 0; index < argv.length; index += 1) {
const flag = argv[index];
const value = argv[index + 1];
if (flag === "--operation") {
parsed.operation = value;
index += 1;
continue;
}
if (flag === "--params-json") {
parsed.paramsJson = value;
index += 1;
continue;
}
if (flag === "--token") {
parsed.token = value;
index += 1;
continue;
}
fail(`Unknown argument "flag".`);
}
return parsed;
}
function parseParams(input) {
try {
const parsed = JSON.parse(input || "{}");
if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) {
fail("--params-json must decode to a JSON object.");
}
return parsed;
} catch (error) {
fail("Failed to parse --params-json.", {
cause: error instanceof Error ? error.message : String(error),
});
}
}
function applyDefaults(operation, params) {
for (const parameter of operation.parameters) {
if (params[parameter.name] === undefined && parameter.defaultValue !== null) {
params[parameter.name] = parameter.defaultValue;
}
}
}
function injectToken(operation, params, cliToken) {
const tokenParam = operation.parameters.find((parameter) => parameter.name === "token");
if (!tokenParam || params.token !== undefined) {
return;
}
if (!cliToken) {
fail("--token is required for this operation.", {
operationId: operation.operationId,
});
}
params.token = cliToken;
}
function validateRequired(operation, params) {
const missing = [];
for (const parameter of operation.parameters) {
if (parameter.required && params[parameter.name] === undefined) {
missing.push(parameter.name);
}
}
if (operation.requestBody?.required && params.body === undefined) {
missing.push("body");
}
if (missing.length) {
fail("Missing required parameters.", {
missing,
operationId: operation.operationId,
});
}
}
function applyPathParams(operation, params, url) {
let pathname = url.pathname;
for (const parameter of operation.parameters.filter((item) => item.location === "path")) {
const value = params[parameter.name];
if (value === undefined) {
continue;
}
pathname = pathname.replace(`{parameter.name}`, encodeURIComponent(String(value)));
}
url.pathname = pathname;
}
function applyQueryParams(operation, params, url) {
for (const parameter of operation.parameters.filter((item) => item.location === "query")) {
const value = params[parameter.name];
if (value === undefined) {
continue;
}
appendValue(url.searchParams, parameter.name, value);
}
}
function appendValue(searchParams, name, value) {
if (Array.isArray(value)) {
for (const item of value) {
appendValue(searchParams, name, item);
}
return;
}
if (value && typeof value === "object") {
searchParams.append(name, JSON.stringify(value));
return;
}
searchParams.append(name, String(value));
}
function ensureBaseUrl(value) {
return value.endsWith("/") ? value : `value/`;
}
function fail(message, details = null) {
const payload = { message };
if (details) {
payload.details = details;
}
process.stderr.write(`JSON.stringify(payload, null, 2)\n`);
process.exit(1);
}
FILE:generated/operations.json
{
"baseUrl": "https://api.justoneapi.com",
"description": "Call GET /api/douyin-xingtu/gw/api/data_sp/author_cp_info/v1 for Douyin Creator Marketplace (Xingtu) Cost Performance Analysis through JustOneAPI with oAuthorId.",
"displayName": "Douyin Creator Marketplace (Xingtu) Cost Performance Analysis",
"endpointPath": "gw/api/data_sp/author_cp_info",
"openapi": "3.1.0",
"operations": [
{
"description": "Get Douyin Creator Marketplace (Xingtu) cost Performance Analysis data, including pricing, exposure, and engagement efficiency indicators, for creator evaluation, campaign planning, and marketplace research.",
"method": "GET",
"operationId": "gwApiDataSpAuthorCpInfoV1",
"parameters": [
{
"defaultValue": null,
"description": "User authentication token.",
"enumValues": [],
"location": "query",
"name": "token",
"required": true,
"schemaType": "string"
},
{
"defaultValue": null,
"description": "Author's unique ID.",
"enumValues": [],
"location": "query",
"name": "oAuthorId",
"required": true,
"schemaType": "string"
},
{
"defaultValue": "SHORT_VIDEO",
"description": "Platform type.\n\nAvailable Values:\n- `SHORT_VIDEO`: Short video\n- `LIVE_STREAMING`: Live streaming\n- `PICTURE_TEXT`: Picture and text\n- `SHORT_DRAMA`: Short drama",
"enumValues": [
"SHORT_VIDEO",
"LIVE_STREAMING",
"PICTURE_TEXT",
"SHORT_DRAMA"
],
"location": "query",
"name": "platform",
"required": false,
"schemaType": "string"
}
],
"path": "/api/douyin-xingtu/gw/api/data_sp/author_cp_info/v1",
"requestBody": null,
"responses": [
{
"description": "OK",
"statusCode": "200"
}
],
"summary": "Cost Performance Analysis",
"tags": [
"Douyin Creator Marketplace (Xingtu)"
]
}
],
"platformKey": "douyin-xingtu",
"primaryTag": "Douyin Creator Marketplace (Xingtu)",
"skillName": "justoneapi_douyin_xingtu_gw_api_data_sp_author_cp_info",
"skillType": "interface",
"slug": "justoneapi-douyin-xingtu-gw-api-data-sp-author-cp-info",
"sourceTitle": "OpenAPI definition"
}
FILE:generated/operations.md
# Douyin Creator Marketplace (Xingtu) Cost Performance Analysis operations
Generated from JustOneAPI OpenAPI for platform key `douyin-xingtu`.
Endpoint group: `gw/api/data_sp/author_cp_info`.
## `gwApiDataSpAuthorCpInfoV1`
- Method: `GET`
- Path: `/api/douyin-xingtu/gw/api/data_sp/author_cp_info/v1`
- Summary: Cost Performance Analysis
- Description: Get Douyin Creator Marketplace (Xingtu) cost Performance Analysis data, including pricing, exposure, and engagement efficiency indicators, for creator evaluation, campaign planning, and marketplace research.
- Tags: `Douyin Creator Marketplace (Xingtu)`
### Parameters
| Name | In | Required | Type | Default | Description |
| --- | --- | --- | --- | --- | --- |
| `token` | `query` | yes | `string` | n/a | User authentication token. |
| `oAuthorId` | `query` | yes | `string` | n/a | Author's unique ID. |
| `platform` | `query` | no | `string` | `SHORT_VIDEO` | Platform type.
Available Values:
- `SHORT_VIDEO`: Short video
- `LIVE_STREAMING`: Live streaming
- `PICTURE_TEXT`: Picture and text
- `SHORT_DRAMA`: Short drama |
| enum | values | no | n/a | n/a | `SHORT_VIDEO`, `LIVE_STREAMING`, `PICTURE_TEXT`, `SHORT_DRAMA` |
### Request body
No request body.
### Responses
- `200`: OK
Call GET /api/douyin-xingtu/gw/api/data_sp/author_audience_distribution/v1 for Douyin Creator Marketplace (Xingtu) Audience Distribution through JustOneAPI w...
---
name: Douyin Creator Marketplace (Xingtu) Audience Distribution API
description: Call GET /api/douyin-xingtu/gw/api/data_sp/author_audience_distribution/v1 for Douyin Creator Marketplace (Xingtu) Audience Distribution through JustOneAPI with oAuthorId.
author: JustOneAPI
homepage: https://api.justoneapi.com
metadata: {"openclaw":{"homepage":"https://api.justoneapi.com","primaryEnv":"JUST_ONE_API_TOKEN","requires":{"bins":["node"],"env":["JUST_ONE_API_TOKEN"]},"skillKey":"justoneapi_douyin_xingtu_gw_api_data_sp_author_audience_distribution"}}
---
# Douyin Creator Marketplace (Xingtu) Audience Distribution
Use this focused JustOneAPI skill for audience Distribution in Douyin Creator Marketplace (Xingtu). It targets `GET /api/douyin-xingtu/gw/api/data_sp/author_audience_distribution/v1`. Required non-token inputs are `oAuthorId`. OpenAPI describes it as: Get Douyin Creator Marketplace (Xingtu) audience Distribution data, including demographic and interest-based audience segmentation, for creator evaluation, campaign planning, and marketplace research.
## Endpoint Scope
- Platform key: `douyin-xingtu`
- Endpoint key: `gw/api/data_sp/author_audience_distribution`
- Platform family: Douyin Creator Marketplace (Xingtu)
- Skill slug: `justoneapi-douyin-xingtu-gw-api-data-sp-author-audience-distribution`
| Operation | Version | Method | Path | OpenAPI summary |
| --- | --- | --- | --- | --- |
| `gwApiDataSpAuthorAudienceDistributionV1` | `v1` | `GET` | `/api/douyin-xingtu/gw/api/data_sp/author_audience_distribution/v1` | Audience Distribution |
## Inputs
| Parameter | In | Required by | Optional by | Type | Notes |
| --- | --- | --- | --- | --- | --- |
| `linkType` | `query` | n/a | all | `string` | Link type filter. Available Values: - `CONNECTED`: Connected - `AWARE`: Aware - `INTERESTED`: Interested - `LIKE`: Like - `FOLLOW`: Follow |
| `linkType` enum | values | n/a | n/a | n/a | `AWARE`, `CONNECTED`, `FOLLOW`, `INTERESTED`, `LIKE` |
| `oAuthorId` | `query` | all | n/a | `string` | Author's unique ID |
| `platform` | `query` | n/a | all | `string` | Platform type. Available Values: - `SHORT_VIDEO`: Short video - `LIVE_STREAMING`: Live streaming - `PICTURE_TEXT`: Picture and text - `SHORT_DRAMA`: Short drama |
| `platform` enum | values | n/a | n/a | n/a | `LIVE_STREAMING`, `PICTURE_TEXT`, `SHORT_DRAMA`, `SHORT_VIDEO` |
Request body: none documented; send parameters through path or query arguments.
## Version Choice
Use `gwApiDataSpAuthorAudienceDistributionV1` for the documented `v1` endpoint. There are no alternate versions grouped in this skill.
## Run This Endpoint
Supported operation IDs in this skill: `gwApiDataSpAuthorAudienceDistributionV1`.
```bash
node {baseDir}/bin/run.mjs --operation "gwApiDataSpAuthorAudienceDistributionV1" --token "$JUST_ONE_API_TOKEN" --params-json '{"oAuthorId":"<oAuthorId>"}'
```
Ask for any missing required parameter before calling the helper. Keep user-provided IDs, cursors, keywords, and filters unchanged.
## Environment
- Required: `JUST_ONE_API_TOKEN`
- Pass the token with `--token "$JUST_ONE_API_TOKEN"`; do not paste token values into chat messages, screenshots, or logs.
- Get a token from [Just One API Dashboard](https://dashboard.justoneapi.com/en/login?utm_source=clawhub.ai&utm_medium=referral&utm_campaign=justoneapi_douyin_xingtu_gw_api_data_sp_author_audience_distribution&utm_content=project_link).
- Authentication details: [Just One API Usage Guide](https://docs.justoneapi.com/en/?utm_source=clawhub.ai&utm_medium=referral&utm_campaign=justoneapi_douyin_xingtu_gw_api_data_sp_author_audience_distribution&utm_content=project_link).
## Output Focus
- State the operation ID and endpoint path used, for example `gwApiDataSpAuthorAudienceDistributionV1` on `/api/douyin-xingtu/gw/api/data_sp/author_audience_distribution/v1`.
- Echo the required lookup scope (`oAuthorId`) before summarizing results.
- Prioritize fields that support this endpoint purpose: Get Douyin Creator Marketplace (Xingtu) audience Distribution data, including demographic and interest-based audience segmentation, for creator evaluation, campaign planning, and marketplace research.
- Return raw JSON only after the short, endpoint-specific summary.
- If the backend errors, include the backend payload and the exact operation ID.
FILE:bin/run.mjs
#!/usr/bin/env node
const manifest = {
"baseUrl": "https://api.justoneapi.com",
"description": "Call GET /api/douyin-xingtu/gw/api/data_sp/author_audience_distribution/v1 for Douyin Creator Marketplace (Xingtu) Audience Distribution through JustOneAPI with oAuthorId.",
"displayName": "Douyin Creator Marketplace (Xingtu) Audience Distribution",
"openapi": "3.1.0",
"platformKey": "douyin-xingtu",
"primaryTag": "Douyin Creator Marketplace (Xingtu)",
"skillName": "justoneapi_douyin_xingtu_gw_api_data_sp_author_audience_distribution",
"slug": "justoneapi-douyin-xingtu-gw-api-data-sp-author-audience-distribution",
"sourceTitle": "OpenAPI definition",
"operations": [
{
"description": "Get Douyin Creator Marketplace (Xingtu) audience Distribution data, including demographic and interest-based audience segmentation, for creator evaluation, campaign planning, and marketplace research.",
"method": "GET",
"operationId": "gwApiDataSpAuthorAudienceDistributionV1",
"parameters": [
{
"defaultValue": null,
"description": "User authentication token.",
"enumValues": [],
"location": "query",
"name": "token",
"required": true,
"schemaType": "string"
},
{
"defaultValue": null,
"description": "Author's unique ID.",
"enumValues": [],
"location": "query",
"name": "oAuthorId",
"required": true,
"schemaType": "string"
},
{
"defaultValue": "SHORT_VIDEO",
"description": "Platform type.\n\nAvailable Values:\n- `SHORT_VIDEO`: Short video\n- `LIVE_STREAMING`: Live streaming\n- `PICTURE_TEXT`: Picture and text\n- `SHORT_DRAMA`: Short drama",
"enumValues": [
"SHORT_VIDEO",
"LIVE_STREAMING",
"PICTURE_TEXT",
"SHORT_DRAMA"
],
"location": "query",
"name": "platform",
"required": false,
"schemaType": "string"
},
{
"defaultValue": "CONNECTED",
"description": "Link type filter.\n\nAvailable Values:\n- `CONNECTED`: Connected\n- `AWARE`: Aware\n- `INTERESTED`: Interested\n- `LIKE`: Like\n- `FOLLOW`: Follow",
"enumValues": [
"CONNECTED",
"AWARE",
"INTERESTED",
"LIKE",
"FOLLOW"
],
"location": "query",
"name": "linkType",
"required": false,
"schemaType": "string"
}
],
"path": "/api/douyin-xingtu/gw/api/data_sp/author_audience_distribution/v1",
"requestBody": null,
"responses": [
{
"description": "OK",
"statusCode": "200"
}
],
"summary": "Audience Distribution",
"tags": [
"Douyin Creator Marketplace (Xingtu)"
]
}
],
"endpointPath": "gw/api/data_sp/author_audience_distribution",
"skillType": "interface"
};
const args = parseArgs(process.argv.slice(2));
if (!args.operation) {
fail("Missing required --operation argument.");
}
const operation = manifest.operations.find((item) => item.operationId === args.operation);
if (!operation) {
fail(`Unknown operation "args.operation".`, { availableOperations: manifest.operations.map((item) => item.operationId) });
}
const params = parseParams(args.paramsJson);
applyDefaults(operation, params);
injectToken(operation, params, args.token);
validateRequired(operation, params);
const baseUrl = manifest.baseUrl;
const url = new URL(operation.path, ensureBaseUrl(baseUrl));
applyPathParams(operation, params, url);
applyQueryParams(operation, params, url);
const requestInit = {
headers: {
"accept": "application/json",
},
method: operation.method,
};
if (operation.requestBody && params.body !== undefined) {
requestInit.body = JSON.stringify(params.body);
requestInit.headers["content-type"] = operation.requestBody.contentType || "application/json";
}
let response;
try {
response = await fetch(url, requestInit);
} catch (error) {
fail("Network request failed.", {
cause: error instanceof Error ? error.message : String(error),
operationId: operation.operationId,
});
}
const rawBody = await response.text();
let parsedBody;
try {
parsedBody = rawBody ? JSON.parse(rawBody) : null;
} catch (error) {
if (!response.ok) {
fail("Backend returned a non-JSON error response.", {
body: rawBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
fail("Backend returned invalid JSON.", {
body: rawBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
if (!response.ok) {
fail("Backend request failed.", {
body: parsedBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
process.stdout.write(`JSON.stringify(parsedBody, null, 2)\n`);
function parseArgs(argv) {
const parsed = { operation: null, paramsJson: "{}", token: null };
for (let index = 0; index < argv.length; index += 1) {
const flag = argv[index];
const value = argv[index + 1];
if (flag === "--operation") {
parsed.operation = value;
index += 1;
continue;
}
if (flag === "--params-json") {
parsed.paramsJson = value;
index += 1;
continue;
}
if (flag === "--token") {
parsed.token = value;
index += 1;
continue;
}
fail(`Unknown argument "flag".`);
}
return parsed;
}
function parseParams(input) {
try {
const parsed = JSON.parse(input || "{}");
if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) {
fail("--params-json must decode to a JSON object.");
}
return parsed;
} catch (error) {
fail("Failed to parse --params-json.", {
cause: error instanceof Error ? error.message : String(error),
});
}
}
function applyDefaults(operation, params) {
for (const parameter of operation.parameters) {
if (params[parameter.name] === undefined && parameter.defaultValue !== null) {
params[parameter.name] = parameter.defaultValue;
}
}
}
function injectToken(operation, params, cliToken) {
const tokenParam = operation.parameters.find((parameter) => parameter.name === "token");
if (!tokenParam || params.token !== undefined) {
return;
}
if (!cliToken) {
fail("--token is required for this operation.", {
operationId: operation.operationId,
});
}
params.token = cliToken;
}
function validateRequired(operation, params) {
const missing = [];
for (const parameter of operation.parameters) {
if (parameter.required && params[parameter.name] === undefined) {
missing.push(parameter.name);
}
}
if (operation.requestBody?.required && params.body === undefined) {
missing.push("body");
}
if (missing.length) {
fail("Missing required parameters.", {
missing,
operationId: operation.operationId,
});
}
}
function applyPathParams(operation, params, url) {
let pathname = url.pathname;
for (const parameter of operation.parameters.filter((item) => item.location === "path")) {
const value = params[parameter.name];
if (value === undefined) {
continue;
}
pathname = pathname.replace(`{parameter.name}`, encodeURIComponent(String(value)));
}
url.pathname = pathname;
}
function applyQueryParams(operation, params, url) {
for (const parameter of operation.parameters.filter((item) => item.location === "query")) {
const value = params[parameter.name];
if (value === undefined) {
continue;
}
appendValue(url.searchParams, parameter.name, value);
}
}
function appendValue(searchParams, name, value) {
if (Array.isArray(value)) {
for (const item of value) {
appendValue(searchParams, name, item);
}
return;
}
if (value && typeof value === "object") {
searchParams.append(name, JSON.stringify(value));
return;
}
searchParams.append(name, String(value));
}
function ensureBaseUrl(value) {
return value.endsWith("/") ? value : `value/`;
}
function fail(message, details = null) {
const payload = { message };
if (details) {
payload.details = details;
}
process.stderr.write(`JSON.stringify(payload, null, 2)\n`);
process.exit(1);
}
FILE:generated/operations.json
{
"baseUrl": "https://api.justoneapi.com",
"description": "Call GET /api/douyin-xingtu/gw/api/data_sp/author_audience_distribution/v1 for Douyin Creator Marketplace (Xingtu) Audience Distribution through JustOneAPI with oAuthorId.",
"displayName": "Douyin Creator Marketplace (Xingtu) Audience Distribution",
"endpointPath": "gw/api/data_sp/author_audience_distribution",
"openapi": "3.1.0",
"operations": [
{
"description": "Get Douyin Creator Marketplace (Xingtu) audience Distribution data, including demographic and interest-based audience segmentation, for creator evaluation, campaign planning, and marketplace research.",
"method": "GET",
"operationId": "gwApiDataSpAuthorAudienceDistributionV1",
"parameters": [
{
"defaultValue": null,
"description": "User authentication token.",
"enumValues": [],
"location": "query",
"name": "token",
"required": true,
"schemaType": "string"
},
{
"defaultValue": null,
"description": "Author's unique ID.",
"enumValues": [],
"location": "query",
"name": "oAuthorId",
"required": true,
"schemaType": "string"
},
{
"defaultValue": "SHORT_VIDEO",
"description": "Platform type.\n\nAvailable Values:\n- `SHORT_VIDEO`: Short video\n- `LIVE_STREAMING`: Live streaming\n- `PICTURE_TEXT`: Picture and text\n- `SHORT_DRAMA`: Short drama",
"enumValues": [
"SHORT_VIDEO",
"LIVE_STREAMING",
"PICTURE_TEXT",
"SHORT_DRAMA"
],
"location": "query",
"name": "platform",
"required": false,
"schemaType": "string"
},
{
"defaultValue": "CONNECTED",
"description": "Link type filter.\n\nAvailable Values:\n- `CONNECTED`: Connected\n- `AWARE`: Aware\n- `INTERESTED`: Interested\n- `LIKE`: Like\n- `FOLLOW`: Follow",
"enumValues": [
"CONNECTED",
"AWARE",
"INTERESTED",
"LIKE",
"FOLLOW"
],
"location": "query",
"name": "linkType",
"required": false,
"schemaType": "string"
}
],
"path": "/api/douyin-xingtu/gw/api/data_sp/author_audience_distribution/v1",
"requestBody": null,
"responses": [
{
"description": "OK",
"statusCode": "200"
}
],
"summary": "Audience Distribution",
"tags": [
"Douyin Creator Marketplace (Xingtu)"
]
}
],
"platformKey": "douyin-xingtu",
"primaryTag": "Douyin Creator Marketplace (Xingtu)",
"skillName": "justoneapi_douyin_xingtu_gw_api_data_sp_author_audience_distribution",
"skillType": "interface",
"slug": "justoneapi-douyin-xingtu-gw-api-data-sp-author-audience-distribution",
"sourceTitle": "OpenAPI definition"
}
FILE:generated/operations.md
# Douyin Creator Marketplace (Xingtu) Audience Distribution operations
Generated from JustOneAPI OpenAPI for platform key `douyin-xingtu`.
Endpoint group: `gw/api/data_sp/author_audience_distribution`.
## `gwApiDataSpAuthorAudienceDistributionV1`
- Method: `GET`
- Path: `/api/douyin-xingtu/gw/api/data_sp/author_audience_distribution/v1`
- Summary: Audience Distribution
- Description: Get Douyin Creator Marketplace (Xingtu) audience Distribution data, including demographic and interest-based audience segmentation, for creator evaluation, campaign planning, and marketplace research.
- Tags: `Douyin Creator Marketplace (Xingtu)`
### Parameters
| Name | In | Required | Type | Default | Description |
| --- | --- | --- | --- | --- | --- |
| `token` | `query` | yes | `string` | n/a | User authentication token. |
| `oAuthorId` | `query` | yes | `string` | n/a | Author's unique ID. |
| `platform` | `query` | no | `string` | `SHORT_VIDEO` | Platform type.
Available Values:
- `SHORT_VIDEO`: Short video
- `LIVE_STREAMING`: Live streaming
- `PICTURE_TEXT`: Picture and text
- `SHORT_DRAMA`: Short drama |
| enum | values | no | n/a | n/a | `SHORT_VIDEO`, `LIVE_STREAMING`, `PICTURE_TEXT`, `SHORT_DRAMA` |
| `linkType` | `query` | no | `string` | `CONNECTED` | Link type filter.
Available Values:
- `CONNECTED`: Connected
- `AWARE`: Aware
- `INTERESTED`: Interested
- `LIKE`: Like
- `FOLLOW`: Follow |
| enum | values | no | n/a | n/a | `CONNECTED`, `AWARE`, `INTERESTED`, `LIKE`, `FOLLOW` |
### Request body
No request body.
### Responses
- `200`: OK
Call GET /api/douyin-xingtu/gw/api/data/get_author_hot_comment_tokens/v1 for Douyin Creator Marketplace (Xingtu) KOL Comment Keyword Analysis through JustOne...
---
name: Douyin Creator Marketplace (Xingtu) KOL Comment Keyword Analysis API
description: Call GET /api/douyin-xingtu/gw/api/data/get_author_hot_comment_tokens/v1 for Douyin Creator Marketplace (Xingtu) KOL Comment Keyword Analysis through JustOneAPI with oAuthorId.
author: JustOneAPI
homepage: https://api.justoneapi.com
metadata: {"openclaw":{"homepage":"https://api.justoneapi.com","primaryEnv":"JUST_ONE_API_TOKEN","requires":{"bins":["node"],"env":["JUST_ONE_API_TOKEN"]},"skillKey":"justoneapi_douyin_xingtu_gw_api_data_get_author_hot_comment_tokens"}}
---
# Douyin Creator Marketplace (Xingtu) KOL Comment Keyword Analysis
Use this focused JustOneAPI skill for kOL Comment Keyword Analysis in Douyin Creator Marketplace (Xingtu). It targets `GET /api/douyin-xingtu/gw/api/data/get_author_hot_comment_tokens/v1`. Required non-token inputs are `oAuthorId`. OpenAPI describes it as: Get Douyin Creator Marketplace (Xingtu) kOL Comment Keyword Analysis data, including core metrics, trend signals, and performance indicators, for audience language analysis and comment-topic research.
## Endpoint Scope
- Platform key: `douyin-xingtu`
- Endpoint key: `gw/api/data/get_author_hot_comment_tokens`
- Platform family: Douyin Creator Marketplace (Xingtu)
- Skill slug: `justoneapi-douyin-xingtu-gw-api-data-get-author-hot-comment-tokens`
| Operation | Version | Method | Path | OpenAPI summary |
| --- | --- | --- | --- | --- |
| `gwApiDataGetAuthorHotCommentTokensV1` | `v1` | `GET` | `/api/douyin-xingtu/gw/api/data/get_author_hot_comment_tokens/v1` | KOL Comment Keyword Analysis |
## Inputs
| Parameter | In | Required by | Optional by | Type | Notes |
| --- | --- | --- | --- | --- | --- |
| `oAuthorId` | `query` | all | n/a | `string` | Author's unique ID |
Request body: none documented; send parameters through path or query arguments.
## Version Choice
Use `gwApiDataGetAuthorHotCommentTokensV1` for the documented `v1` endpoint. There are no alternate versions grouped in this skill.
## Run This Endpoint
Supported operation IDs in this skill: `gwApiDataGetAuthorHotCommentTokensV1`.
```bash
node {baseDir}/bin/run.mjs --operation "gwApiDataGetAuthorHotCommentTokensV1" --token "$JUST_ONE_API_TOKEN" --params-json '{"oAuthorId":"<oAuthorId>"}'
```
Ask for any missing required parameter before calling the helper. Keep user-provided IDs, cursors, keywords, and filters unchanged.
## Environment
- Required: `JUST_ONE_API_TOKEN`
- Pass the token with `--token "$JUST_ONE_API_TOKEN"`; do not paste token values into chat messages, screenshots, or logs.
- Get a token from [Just One API Dashboard](https://dashboard.justoneapi.com/en/login?utm_source=clawhub.ai&utm_medium=referral&utm_campaign=justoneapi_douyin_xingtu_gw_api_data_get_author_hot_comment_tokens&utm_content=project_link).
- Authentication details: [Just One API Usage Guide](https://docs.justoneapi.com/en/?utm_source=clawhub.ai&utm_medium=referral&utm_campaign=justoneapi_douyin_xingtu_gw_api_data_get_author_hot_comment_tokens&utm_content=project_link).
## Output Focus
- State the operation ID and endpoint path used, for example `gwApiDataGetAuthorHotCommentTokensV1` on `/api/douyin-xingtu/gw/api/data/get_author_hot_comment_tokens/v1`.
- Echo the required lookup scope (`oAuthorId`) before summarizing results.
- Prioritize fields that support this endpoint purpose: Get Douyin Creator Marketplace (Xingtu) kOL Comment Keyword Analysis data, including core metrics, trend signals, and performance indicators, for audience language analysis and comment-topic research.
- Return raw JSON only after the short, endpoint-specific summary.
- If the backend errors, include the backend payload and the exact operation ID.
FILE:bin/run.mjs
#!/usr/bin/env node
const manifest = {
"baseUrl": "https://api.justoneapi.com",
"description": "Call GET /api/douyin-xingtu/gw/api/data/get_author_hot_comment_tokens/v1 for Douyin Creator Marketplace (Xingtu) KOL Comment Keyword Analysis through JustOneAPI with oAuthorId.",
"displayName": "Douyin Creator Marketplace (Xingtu) KOL Comment Keyword Analysis",
"openapi": "3.1.0",
"platformKey": "douyin-xingtu",
"primaryTag": "Douyin Creator Marketplace (Xingtu)",
"skillName": "justoneapi_douyin_xingtu_gw_api_data_get_author_hot_comment_tokens",
"slug": "justoneapi-douyin-xingtu-gw-api-data-get-author-hot-comment-tokens",
"sourceTitle": "OpenAPI definition",
"operations": [
{
"description": "Get Douyin Creator Marketplace (Xingtu) kOL Comment Keyword Analysis data, including core metrics, trend signals, and performance indicators, for audience language analysis and comment-topic research.",
"method": "GET",
"operationId": "gwApiDataGetAuthorHotCommentTokensV1",
"parameters": [
{
"defaultValue": null,
"description": "User authentication token.",
"enumValues": [],
"location": "query",
"name": "token",
"required": true,
"schemaType": "string"
},
{
"defaultValue": null,
"description": "Author's unique ID.",
"enumValues": [],
"location": "query",
"name": "oAuthorId",
"required": true,
"schemaType": "string"
}
],
"path": "/api/douyin-xingtu/gw/api/data/get_author_hot_comment_tokens/v1",
"requestBody": null,
"responses": [
{
"description": "OK",
"statusCode": "200"
}
],
"summary": "KOL Comment Keyword Analysis",
"tags": [
"Douyin Creator Marketplace (Xingtu)"
]
}
],
"endpointPath": "gw/api/data/get_author_hot_comment_tokens",
"skillType": "interface"
};
const args = parseArgs(process.argv.slice(2));
if (!args.operation) {
fail("Missing required --operation argument.");
}
const operation = manifest.operations.find((item) => item.operationId === args.operation);
if (!operation) {
fail(`Unknown operation "args.operation".`, { availableOperations: manifest.operations.map((item) => item.operationId) });
}
const params = parseParams(args.paramsJson);
applyDefaults(operation, params);
injectToken(operation, params, args.token);
validateRequired(operation, params);
const baseUrl = manifest.baseUrl;
const url = new URL(operation.path, ensureBaseUrl(baseUrl));
applyPathParams(operation, params, url);
applyQueryParams(operation, params, url);
const requestInit = {
headers: {
"accept": "application/json",
},
method: operation.method,
};
if (operation.requestBody && params.body !== undefined) {
requestInit.body = JSON.stringify(params.body);
requestInit.headers["content-type"] = operation.requestBody.contentType || "application/json";
}
let response;
try {
response = await fetch(url, requestInit);
} catch (error) {
fail("Network request failed.", {
cause: error instanceof Error ? error.message : String(error),
operationId: operation.operationId,
});
}
const rawBody = await response.text();
let parsedBody;
try {
parsedBody = rawBody ? JSON.parse(rawBody) : null;
} catch (error) {
if (!response.ok) {
fail("Backend returned a non-JSON error response.", {
body: rawBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
fail("Backend returned invalid JSON.", {
body: rawBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
if (!response.ok) {
fail("Backend request failed.", {
body: parsedBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
process.stdout.write(`JSON.stringify(parsedBody, null, 2)\n`);
function parseArgs(argv) {
const parsed = { operation: null, paramsJson: "{}", token: null };
for (let index = 0; index < argv.length; index += 1) {
const flag = argv[index];
const value = argv[index + 1];
if (flag === "--operation") {
parsed.operation = value;
index += 1;
continue;
}
if (flag === "--params-json") {
parsed.paramsJson = value;
index += 1;
continue;
}
if (flag === "--token") {
parsed.token = value;
index += 1;
continue;
}
fail(`Unknown argument "flag".`);
}
return parsed;
}
function parseParams(input) {
try {
const parsed = JSON.parse(input || "{}");
if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) {
fail("--params-json must decode to a JSON object.");
}
return parsed;
} catch (error) {
fail("Failed to parse --params-json.", {
cause: error instanceof Error ? error.message : String(error),
});
}
}
function applyDefaults(operation, params) {
for (const parameter of operation.parameters) {
if (params[parameter.name] === undefined && parameter.defaultValue !== null) {
params[parameter.name] = parameter.defaultValue;
}
}
}
function injectToken(operation, params, cliToken) {
const tokenParam = operation.parameters.find((parameter) => parameter.name === "token");
if (!tokenParam || params.token !== undefined) {
return;
}
if (!cliToken) {
fail("--token is required for this operation.", {
operationId: operation.operationId,
});
}
params.token = cliToken;
}
function validateRequired(operation, params) {
const missing = [];
for (const parameter of operation.parameters) {
if (parameter.required && params[parameter.name] === undefined) {
missing.push(parameter.name);
}
}
if (operation.requestBody?.required && params.body === undefined) {
missing.push("body");
}
if (missing.length) {
fail("Missing required parameters.", {
missing,
operationId: operation.operationId,
});
}
}
function applyPathParams(operation, params, url) {
let pathname = url.pathname;
for (const parameter of operation.parameters.filter((item) => item.location === "path")) {
const value = params[parameter.name];
if (value === undefined) {
continue;
}
pathname = pathname.replace(`{parameter.name}`, encodeURIComponent(String(value)));
}
url.pathname = pathname;
}
function applyQueryParams(operation, params, url) {
for (const parameter of operation.parameters.filter((item) => item.location === "query")) {
const value = params[parameter.name];
if (value === undefined) {
continue;
}
appendValue(url.searchParams, parameter.name, value);
}
}
function appendValue(searchParams, name, value) {
if (Array.isArray(value)) {
for (const item of value) {
appendValue(searchParams, name, item);
}
return;
}
if (value && typeof value === "object") {
searchParams.append(name, JSON.stringify(value));
return;
}
searchParams.append(name, String(value));
}
function ensureBaseUrl(value) {
return value.endsWith("/") ? value : `value/`;
}
function fail(message, details = null) {
const payload = { message };
if (details) {
payload.details = details;
}
process.stderr.write(`JSON.stringify(payload, null, 2)\n`);
process.exit(1);
}
FILE:generated/operations.json
{
"baseUrl": "https://api.justoneapi.com",
"description": "Call GET /api/douyin-xingtu/gw/api/data/get_author_hot_comment_tokens/v1 for Douyin Creator Marketplace (Xingtu) KOL Comment Keyword Analysis through JustOneAPI with oAuthorId.",
"displayName": "Douyin Creator Marketplace (Xingtu) KOL Comment Keyword Analysis",
"endpointPath": "gw/api/data/get_author_hot_comment_tokens",
"openapi": "3.1.0",
"operations": [
{
"description": "Get Douyin Creator Marketplace (Xingtu) kOL Comment Keyword Analysis data, including core metrics, trend signals, and performance indicators, for audience language analysis and comment-topic research.",
"method": "GET",
"operationId": "gwApiDataGetAuthorHotCommentTokensV1",
"parameters": [
{
"defaultValue": null,
"description": "User authentication token.",
"enumValues": [],
"location": "query",
"name": "token",
"required": true,
"schemaType": "string"
},
{
"defaultValue": null,
"description": "Author's unique ID.",
"enumValues": [],
"location": "query",
"name": "oAuthorId",
"required": true,
"schemaType": "string"
}
],
"path": "/api/douyin-xingtu/gw/api/data/get_author_hot_comment_tokens/v1",
"requestBody": null,
"responses": [
{
"description": "OK",
"statusCode": "200"
}
],
"summary": "KOL Comment Keyword Analysis",
"tags": [
"Douyin Creator Marketplace (Xingtu)"
]
}
],
"platformKey": "douyin-xingtu",
"primaryTag": "Douyin Creator Marketplace (Xingtu)",
"skillName": "justoneapi_douyin_xingtu_gw_api_data_get_author_hot_comment_tokens",
"skillType": "interface",
"slug": "justoneapi-douyin-xingtu-gw-api-data-get-author-hot-comment-tokens",
"sourceTitle": "OpenAPI definition"
}
FILE:generated/operations.md
# Douyin Creator Marketplace (Xingtu) KOL Comment Keyword Analysis operations
Generated from JustOneAPI OpenAPI for platform key `douyin-xingtu`.
Endpoint group: `gw/api/data/get_author_hot_comment_tokens`.
## `gwApiDataGetAuthorHotCommentTokensV1`
- Method: `GET`
- Path: `/api/douyin-xingtu/gw/api/data/get_author_hot_comment_tokens/v1`
- Summary: KOL Comment Keyword Analysis
- Description: Get Douyin Creator Marketplace (Xingtu) kOL Comment Keyword Analysis data, including core metrics, trend signals, and performance indicators, for audience language analysis and comment-topic research.
- Tags: `Douyin Creator Marketplace (Xingtu)`
### Parameters
| Name | In | Required | Type | Default | Description |
| --- | --- | --- | --- | --- | --- |
| `token` | `query` | yes | `string` | n/a | User authentication token. |
| `oAuthorId` | `query` | yes | `string` | n/a | Author's unique ID. |
### Request body
No request body.
### Responses
- `200`: OK
Call GET /api/douyin-xingtu/gw/api/author/get_author_show_items_v2/v1 for Douyin Creator Marketplace (Xingtu) Showcase Items through JustOneAPI with oAuthorId.
---
name: Douyin Creator Marketplace (Xingtu) Showcase Items API
description: Call GET /api/douyin-xingtu/gw/api/author/get_author_show_items_v2/v1 for Douyin Creator Marketplace (Xingtu) Showcase Items through JustOneAPI with oAuthorId.
author: JustOneAPI
homepage: https://api.justoneapi.com
metadata: {"openclaw":{"homepage":"https://api.justoneapi.com","primaryEnv":"JUST_ONE_API_TOKEN","requires":{"bins":["node"],"env":["JUST_ONE_API_TOKEN"]},"skillKey":"justoneapi_douyin_xingtu_gw_api_author_get_author_show_items_v2"}}
---
# Douyin Creator Marketplace (Xingtu) Showcase Items
Use this focused JustOneAPI skill for showcase Items in Douyin Creator Marketplace (Xingtu). It targets `GET /api/douyin-xingtu/gw/api/author/get_author_show_items_v2/v1`. Required non-token inputs are `oAuthorId`. OpenAPI describes it as: Get Douyin Creator Marketplace (Xingtu) showcase Items data, including products and videos associated with the account, for creator evaluation, campaign planning, and marketplace research.
## Endpoint Scope
- Platform key: `douyin-xingtu`
- Endpoint key: `gw/api/author/get_author_show_items_v2`
- Platform family: Douyin Creator Marketplace (Xingtu)
- Skill slug: `justoneapi-douyin-xingtu-gw-api-author-get-author-show-items-v2`
| Operation | Version | Method | Path | OpenAPI summary |
| --- | --- | --- | --- | --- |
| `gwApiAuthorGetAuthorShowItemsV2V1` | `v1` | `GET` | `/api/douyin-xingtu/gw/api/author/get_author_show_items_v2/v1` | Showcase Items |
## Inputs
| Parameter | In | Required by | Optional by | Type | Notes |
| --- | --- | --- | --- | --- | --- |
| `flowType` | `query` | n/a | all | `string` | Flow type filter. Available Values: - `EXCLUDE`: Exclude - `INCLUDE`: Include |
| `flowType` enum | values | n/a | n/a | n/a | `EXCLUDE`, `INCLUDE` |
| `oAuthorId` | `query` | all | n/a | `string` | Author's unique ID |
| `onlyAssign` | `query` | n/a | all | `boolean` | Whether to only include assigned items |
| `platform` | `query` | n/a | all | `string` | Platform type. Available Values: - `SHORT_VIDEO`: Short video - `LIVE_STREAMING`: Live streaming - `PICTURE_TEXT`: Picture and text - `SHORT_DRAMA`: Short drama |
| `platform` enum | values | n/a | n/a | n/a | `LIVE_STREAMING`, `PICTURE_TEXT`, `SHORT_DRAMA`, `SHORT_VIDEO` |
Request body: none documented; send parameters through path or query arguments.
## Version Choice
Use `gwApiAuthorGetAuthorShowItemsV2V1` for the documented `v1` endpoint. There are no alternate versions grouped in this skill.
## Run This Endpoint
Supported operation IDs in this skill: `gwApiAuthorGetAuthorShowItemsV2V1`.
```bash
node {baseDir}/bin/run.mjs --operation "gwApiAuthorGetAuthorShowItemsV2V1" --token "$JUST_ONE_API_TOKEN" --params-json '{"oAuthorId":"<oAuthorId>"}'
```
Ask for any missing required parameter before calling the helper. Keep user-provided IDs, cursors, keywords, and filters unchanged.
## Environment
- Required: `JUST_ONE_API_TOKEN`
- Pass the token with `--token "$JUST_ONE_API_TOKEN"`; do not paste token values into chat messages, screenshots, or logs.
- Get a token from [Just One API Dashboard](https://dashboard.justoneapi.com/en/login?utm_source=clawhub.ai&utm_medium=referral&utm_campaign=justoneapi_douyin_xingtu_gw_api_author_get_author_show_items_v2&utm_content=project_link).
- Authentication details: [Just One API Usage Guide](https://docs.justoneapi.com/en/?utm_source=clawhub.ai&utm_medium=referral&utm_campaign=justoneapi_douyin_xingtu_gw_api_author_get_author_show_items_v2&utm_content=project_link).
## Output Focus
- State the operation ID and endpoint path used, for example `gwApiAuthorGetAuthorShowItemsV2V1` on `/api/douyin-xingtu/gw/api/author/get_author_show_items_v2/v1`.
- Echo the required lookup scope (`oAuthorId`) before summarizing results.
- Prioritize fields that support this endpoint purpose: Get Douyin Creator Marketplace (Xingtu) showcase Items data, including products and videos associated with the account, for creator evaluation, campaign planning, and marketplace research.
- Return raw JSON only after the short, endpoint-specific summary.
- If the backend errors, include the backend payload and the exact operation ID.
FILE:bin/run.mjs
#!/usr/bin/env node
const manifest = {
"baseUrl": "https://api.justoneapi.com",
"description": "Call GET /api/douyin-xingtu/gw/api/author/get_author_show_items_v2/v1 for Douyin Creator Marketplace (Xingtu) Showcase Items through JustOneAPI with oAuthorId.",
"displayName": "Douyin Creator Marketplace (Xingtu) Showcase Items",
"openapi": "3.1.0",
"platformKey": "douyin-xingtu",
"primaryTag": "Douyin Creator Marketplace (Xingtu)",
"skillName": "justoneapi_douyin_xingtu_gw_api_author_get_author_show_items_v2",
"slug": "justoneapi-douyin-xingtu-gw-api-author-get-author-show-items-v2",
"sourceTitle": "OpenAPI definition",
"operations": [
{
"description": "Get Douyin Creator Marketplace (Xingtu) showcase Items data, including products and videos associated with the account, for creator evaluation, campaign planning, and marketplace research.",
"method": "GET",
"operationId": "gwApiAuthorGetAuthorShowItemsV2V1",
"parameters": [
{
"defaultValue": null,
"description": "User authentication token.",
"enumValues": [],
"location": "query",
"name": "token",
"required": true,
"schemaType": "string"
},
{
"defaultValue": null,
"description": "Author's unique ID.",
"enumValues": [],
"location": "query",
"name": "oAuthorId",
"required": true,
"schemaType": "string"
},
{
"defaultValue": "SHORT_VIDEO",
"description": "Platform type.\n\nAvailable Values:\n- `SHORT_VIDEO`: Short video\n- `LIVE_STREAMING`: Live streaming\n- `PICTURE_TEXT`: Picture and text\n- `SHORT_DRAMA`: Short drama",
"enumValues": [
"SHORT_VIDEO",
"LIVE_STREAMING",
"PICTURE_TEXT",
"SHORT_DRAMA"
],
"location": "query",
"name": "platform",
"required": false,
"schemaType": "string"
},
{
"defaultValue": false,
"description": "Whether to only include assigned items.",
"enumValues": [],
"location": "query",
"name": "onlyAssign",
"required": false,
"schemaType": "boolean"
},
{
"defaultValue": "EXCLUDE",
"description": "Flow type filter.\n\nAvailable Values:\n- `EXCLUDE`: Exclude\n- `INCLUDE`: Include",
"enumValues": [
"EXCLUDE",
"INCLUDE"
],
"location": "query",
"name": "flowType",
"required": false,
"schemaType": "string"
}
],
"path": "/api/douyin-xingtu/gw/api/author/get_author_show_items_v2/v1",
"requestBody": null,
"responses": [
{
"description": "OK",
"statusCode": "200"
}
],
"summary": "Showcase Items",
"tags": [
"Douyin Creator Marketplace (Xingtu)"
]
}
],
"endpointPath": "gw/api/author/get_author_show_items_v2",
"skillType": "interface"
};
const args = parseArgs(process.argv.slice(2));
if (!args.operation) {
fail("Missing required --operation argument.");
}
const operation = manifest.operations.find((item) => item.operationId === args.operation);
if (!operation) {
fail(`Unknown operation "args.operation".`, { availableOperations: manifest.operations.map((item) => item.operationId) });
}
const params = parseParams(args.paramsJson);
applyDefaults(operation, params);
injectToken(operation, params, args.token);
validateRequired(operation, params);
const baseUrl = manifest.baseUrl;
const url = new URL(operation.path, ensureBaseUrl(baseUrl));
applyPathParams(operation, params, url);
applyQueryParams(operation, params, url);
const requestInit = {
headers: {
"accept": "application/json",
},
method: operation.method,
};
if (operation.requestBody && params.body !== undefined) {
requestInit.body = JSON.stringify(params.body);
requestInit.headers["content-type"] = operation.requestBody.contentType || "application/json";
}
let response;
try {
response = await fetch(url, requestInit);
} catch (error) {
fail("Network request failed.", {
cause: error instanceof Error ? error.message : String(error),
operationId: operation.operationId,
});
}
const rawBody = await response.text();
let parsedBody;
try {
parsedBody = rawBody ? JSON.parse(rawBody) : null;
} catch (error) {
if (!response.ok) {
fail("Backend returned a non-JSON error response.", {
body: rawBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
fail("Backend returned invalid JSON.", {
body: rawBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
if (!response.ok) {
fail("Backend request failed.", {
body: parsedBody,
operationId: operation.operationId,
status: response.status,
statusText: response.statusText,
});
}
process.stdout.write(`JSON.stringify(parsedBody, null, 2)\n`);
function parseArgs(argv) {
const parsed = { operation: null, paramsJson: "{}", token: null };
for (let index = 0; index < argv.length; index += 1) {
const flag = argv[index];
const value = argv[index + 1];
if (flag === "--operation") {
parsed.operation = value;
index += 1;
continue;
}
if (flag === "--params-json") {
parsed.paramsJson = value;
index += 1;
continue;
}
if (flag === "--token") {
parsed.token = value;
index += 1;
continue;
}
fail(`Unknown argument "flag".`);
}
return parsed;
}
function parseParams(input) {
try {
const parsed = JSON.parse(input || "{}");
if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) {
fail("--params-json must decode to a JSON object.");
}
return parsed;
} catch (error) {
fail("Failed to parse --params-json.", {
cause: error instanceof Error ? error.message : String(error),
});
}
}
function applyDefaults(operation, params) {
for (const parameter of operation.parameters) {
if (params[parameter.name] === undefined && parameter.defaultValue !== null) {
params[parameter.name] = parameter.defaultValue;
}
}
}
function injectToken(operation, params, cliToken) {
const tokenParam = operation.parameters.find((parameter) => parameter.name === "token");
if (!tokenParam || params.token !== undefined) {
return;
}
if (!cliToken) {
fail("--token is required for this operation.", {
operationId: operation.operationId,
});
}
params.token = cliToken;
}
function validateRequired(operation, params) {
const missing = [];
for (const parameter of operation.parameters) {
if (parameter.required && params[parameter.name] === undefined) {
missing.push(parameter.name);
}
}
if (operation.requestBody?.required && params.body === undefined) {
missing.push("body");
}
if (missing.length) {
fail("Missing required parameters.", {
missing,
operationId: operation.operationId,
});
}
}
function applyPathParams(operation, params, url) {
let pathname = url.pathname;
for (const parameter of operation.parameters.filter((item) => item.location === "path")) {
const value = params[parameter.name];
if (value === undefined) {
continue;
}
pathname = pathname.replace(`{parameter.name}`, encodeURIComponent(String(value)));
}
url.pathname = pathname;
}
function applyQueryParams(operation, params, url) {
for (const parameter of operation.parameters.filter((item) => item.location === "query")) {
const value = params[parameter.name];
if (value === undefined) {
continue;
}
appendValue(url.searchParams, parameter.name, value);
}
}
function appendValue(searchParams, name, value) {
if (Array.isArray(value)) {
for (const item of value) {
appendValue(searchParams, name, item);
}
return;
}
if (value && typeof value === "object") {
searchParams.append(name, JSON.stringify(value));
return;
}
searchParams.append(name, String(value));
}
function ensureBaseUrl(value) {
return value.endsWith("/") ? value : `value/`;
}
function fail(message, details = null) {
const payload = { message };
if (details) {
payload.details = details;
}
process.stderr.write(`JSON.stringify(payload, null, 2)\n`);
process.exit(1);
}
FILE:generated/operations.json
{
"baseUrl": "https://api.justoneapi.com",
"description": "Call GET /api/douyin-xingtu/gw/api/author/get_author_show_items_v2/v1 for Douyin Creator Marketplace (Xingtu) Showcase Items through JustOneAPI with oAuthorId.",
"displayName": "Douyin Creator Marketplace (Xingtu) Showcase Items",
"endpointPath": "gw/api/author/get_author_show_items_v2",
"openapi": "3.1.0",
"operations": [
{
"description": "Get Douyin Creator Marketplace (Xingtu) showcase Items data, including products and videos associated with the account, for creator evaluation, campaign planning, and marketplace research.",
"method": "GET",
"operationId": "gwApiAuthorGetAuthorShowItemsV2V1",
"parameters": [
{
"defaultValue": null,
"description": "User authentication token.",
"enumValues": [],
"location": "query",
"name": "token",
"required": true,
"schemaType": "string"
},
{
"defaultValue": null,
"description": "Author's unique ID.",
"enumValues": [],
"location": "query",
"name": "oAuthorId",
"required": true,
"schemaType": "string"
},
{
"defaultValue": "SHORT_VIDEO",
"description": "Platform type.\n\nAvailable Values:\n- `SHORT_VIDEO`: Short video\n- `LIVE_STREAMING`: Live streaming\n- `PICTURE_TEXT`: Picture and text\n- `SHORT_DRAMA`: Short drama",
"enumValues": [
"SHORT_VIDEO",
"LIVE_STREAMING",
"PICTURE_TEXT",
"SHORT_DRAMA"
],
"location": "query",
"name": "platform",
"required": false,
"schemaType": "string"
},
{
"defaultValue": false,
"description": "Whether to only include assigned items.",
"enumValues": [],
"location": "query",
"name": "onlyAssign",
"required": false,
"schemaType": "boolean"
},
{
"defaultValue": "EXCLUDE",
"description": "Flow type filter.\n\nAvailable Values:\n- `EXCLUDE`: Exclude\n- `INCLUDE`: Include",
"enumValues": [
"EXCLUDE",
"INCLUDE"
],
"location": "query",
"name": "flowType",
"required": false,
"schemaType": "string"
}
],
"path": "/api/douyin-xingtu/gw/api/author/get_author_show_items_v2/v1",
"requestBody": null,
"responses": [
{
"description": "OK",
"statusCode": "200"
}
],
"summary": "Showcase Items",
"tags": [
"Douyin Creator Marketplace (Xingtu)"
]
}
],
"platformKey": "douyin-xingtu",
"primaryTag": "Douyin Creator Marketplace (Xingtu)",
"skillName": "justoneapi_douyin_xingtu_gw_api_author_get_author_show_items_v2",
"skillType": "interface",
"slug": "justoneapi-douyin-xingtu-gw-api-author-get-author-show-items-v2",
"sourceTitle": "OpenAPI definition"
}
FILE:generated/operations.md
# Douyin Creator Marketplace (Xingtu) Showcase Items operations
Generated from JustOneAPI OpenAPI for platform key `douyin-xingtu`.
Endpoint group: `gw/api/author/get_author_show_items_v2`.
## `gwApiAuthorGetAuthorShowItemsV2V1`
- Method: `GET`
- Path: `/api/douyin-xingtu/gw/api/author/get_author_show_items_v2/v1`
- Summary: Showcase Items
- Description: Get Douyin Creator Marketplace (Xingtu) showcase Items data, including products and videos associated with the account, for creator evaluation, campaign planning, and marketplace research.
- Tags: `Douyin Creator Marketplace (Xingtu)`
### Parameters
| Name | In | Required | Type | Default | Description |
| --- | --- | --- | --- | --- | --- |
| `token` | `query` | yes | `string` | n/a | User authentication token. |
| `oAuthorId` | `query` | yes | `string` | n/a | Author's unique ID. |
| `platform` | `query` | no | `string` | `SHORT_VIDEO` | Platform type.
Available Values:
- `SHORT_VIDEO`: Short video
- `LIVE_STREAMING`: Live streaming
- `PICTURE_TEXT`: Picture and text
- `SHORT_DRAMA`: Short drama |
| enum | values | no | n/a | n/a | `SHORT_VIDEO`, `LIVE_STREAMING`, `PICTURE_TEXT`, `SHORT_DRAMA` |
| `onlyAssign` | `query` | no | `boolean` | `false` | Whether to only include assigned items. |
| `flowType` | `query` | no | `string` | `EXCLUDE` | Flow type filter.
Available Values:
- `EXCLUDE`: Exclude
- `INCLUDE`: Include |
| enum | values | no | n/a | n/a | `EXCLUDE`, `INCLUDE` |
### Request body
No request body.
### Responses
- `200`: OK