{"openapi":"3.1.0","info":{"title":"LINE Audience Targeting (BYOK) API","version":"0.1.0","description":"LINE Audience Targeting (BYOK) lets an AI assistant read your own LINE Audience Targeting data through the LINE Audience Targeting API with a key you supply (channel access token (long-lived or stateless) of a Messaging API channel). Read-only: 8 tools (list_audience_groups, get_audience_group, list_shared_audience_groups, get_shared_audience_group, get_aggregation_unit_count,...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-line-audience-targeting.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-line-audience-targeting/docs"},"termsOfService":"https://connectorbay.com/byok-line-audience-targeting/terms"},"servers":[{"url":"https://byok-line-audience-targeting.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-line-audience-targeting/docs"},"security":[{"upstreamKey":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"Optional. A Pro API key raises rate limits; no credentials are required."},"upstreamKey":{"type":"apiKey","in":"header","name":"X-Upstream-Key","description":"Your own key for the service this connector wraps (bring your own key). Used for that one call only; never stored, logged or cached."}},"schemas":{"Error":{"type":"object","properties":{"ok":{"const":false},"error":{"type":"object"}}}}},"paths":{"/v1/tools/list_audience_groups":{"post":{"operationId":"list_audience_groups","summary":"List audience groups for targeted LINE messages with type, name, state, member count, creation time and permission. Use ","description":"List audience groups for targeted LINE messages with type, name, state, member count, creation time and permission. Use for \"Which LINE audience groups are ready and how many users are in each\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"page":{"description":"Page number, starting at 1.","maximum":10000,"minimum":1,"title":"Page","type":"integer"},"description":{"anyOf":[{"maxLength":120,"type":"string"},{"type":"null"}],"default":null,"description":"Only audience groups whose name contains this text.","title":"Description"},"status":{"anyOf":[{"enum":["IN_PROGRESS","READY","FAILED","EXPIRED","INACTIVE","ACTIVATING"],"type":"string"},{"type":"null"}],"default":null,"description":"Only audience groups in this state.","title":"Status"},"size":{"anyOf":[{"maximum":40,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many audience groups per page (1 to 40, default 20).","title":"Size"},"create_route":{"anyOf":[{"enum":["OA_MANAGER","MESSAGING_API","POINT_AD","AD_MANAGER"],"type":"string"},{"type":"null"}],"default":null,"description":"Only audience groups created this way.","title":"Create Route"},"includes_external_public_groups":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True to also include public audience groups shared by other accounts.","title":"Includes External Public Groups"}},"required":["page"],"title":"list_audience_groupsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_audience_group":{"post":{"operationId":"get_audience_group","summary":"Get one audience group with its state, member count and recent add-audience jobs. Use for \"How big is LINE audience grou","description":"Get one audience group with its state, member count and recent add-audience jobs. Use for \"How big is LINE audience group 4389303728991 and did its last job finish\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"audience_group_id":{"description":"Numeric ID of the audience group, from the audience group list.","title":"Audience Group Id","type":"integer"}},"required":["audience_group_id"],"title":"get_audience_groupArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_shared_audience_groups":{"post":{"operationId":"list_shared_audience_groups","summary":"List audience groups shared with your account by other LINE accounts with state, member count and permission. Use for \"W","description":"List audience groups shared with your account by other LINE accounts with state, member count and permission. Use for \"Which LINE audience groups have been shared with us\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"page":{"description":"Page number, starting at 1.","maximum":10000,"minimum":1,"title":"Page","type":"integer"},"description":{"anyOf":[{"maxLength":120,"type":"string"},{"type":"null"}],"default":null,"description":"Only audience groups whose name contains this text.","title":"Description"},"status":{"anyOf":[{"enum":["IN_PROGRESS","READY","FAILED","EXPIRED","INACTIVE","ACTIVATING"],"type":"string"},{"type":"null"}],"default":null,"description":"Only audience groups in this state.","title":"Status"},"size":{"anyOf":[{"maximum":40,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many audience groups per page (1 to 40, default 20).","title":"Size"},"create_route":{"anyOf":[{"enum":["OA_MANAGER","MESSAGING_API","POINT_AD","AD_MANAGER"],"type":"string"},{"type":"null"}],"default":null,"description":"Only audience groups created this way.","title":"Create Route"},"includes_owned_audience_groups":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"True to also include audience groups your own account owns.","title":"Includes Owned Audience Groups"}},"required":["page"],"title":"list_shared_audience_groupsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_shared_audience_group":{"post":{"operationId":"get_shared_audience_group","summary":"Get one shared audience group with its state, member count, recent jobs and the owner account name. Use for \"Who owns sh","description":"Get one shared audience group with its state, member count, recent jobs and the owner account name. Use for \"Who owns shared LINE audience group 4389303728991\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"audience_group_id":{"description":"Numeric ID of the audience group, from the audience group list.","title":"Audience Group Id","type":"integer"}},"required":["audience_group_id"],"title":"get_shared_audience_groupArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_aggregation_unit_count":{"post":{"operationId":"get_aggregation_unit_count","summary":"Show how many custom aggregation units were used this month (units label messages for per-campaign statistics). Use for ","description":"Show how many custom aggregation units were used this month (units label messages for per-campaign statistics). Use for \"How many LINE custom aggregation units have I used this month\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"get_aggregation_unit_countArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_aggregation_units":{"post":{"operationId":"list_aggregation_units","summary":"List the custom aggregation unit names used this month, with a continuation token when more remain. Use for \"Which LINE ","description":"List the custom aggregation unit names used this month, with a continuation token when more remain. Use for \"Which LINE custom aggregation units exist this month\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maxLength":4,"type":"string"},{"type":"null"}],"default":"100","description":"How many unit names to return (1 to 1000).","title":"Limit"},"start":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"description":"Continuation token from the previous answer's 'next' field.","title":"Start"}},"title":"list_aggregation_unitsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_narrowcast_progress":{"post":{"operationId":"get_narrowcast_progress","summary":"Get the delivery progress of a narrowcast message: phase, target, success and failure counts and times. Use for \"Did my ","description":"Get the delivery progress of a narrowcast message: phase, target, success and failure counts and times. Use for \"Did my LINE narrowcast message finish sending\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"request_id":{"description":"Request ID returned in the x-line-request-id header when the narrowcast was sent.","maxLength":80,"title":"Request Id","type":"string"}},"required":["request_id"],"title":"get_narrowcast_progressArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_webhook_endpoint":{"post":{"operationId":"get_webhook_endpoint","summary":"Show the webhook URL configured for the channel and whether it is active. Use for \"What webhook URL is set on my LINE ch","description":"Show the webhook URL configured for the channel and whether it is active. Use for \"What webhook URL is set on my LINE channel\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"get_webhook_endpointArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}}}}