diff --git a/go.mod b/go.mod index 8220e8a..83d931b 100644 --- a/go.mod +++ b/go.mod @@ -3,7 +3,7 @@ module github.com/flashcatcloud/flashduty-cli go 1.26.0 require ( - github.com/flashcatcloud/go-flashduty v0.15.18-0.20261016025836-93c9482173b5 + github.com/flashcatcloud/go-flashduty v0.15.18 github.com/mattn/go-runewidth v0.0.30 github.com/spf13/cobra v1.10.2 github.com/spf13/pflag v1.0.10 diff --git a/go.sum b/go.sum index 6b580fa..03402c8 100644 --- a/go.sum +++ b/go.sum @@ -1,10 +1,8 @@ github.com/clipperhouse/uax29/v2 v2.2.0 h1:ChwIKnQN3kcZteTXMgb1wztSgaU+ZemkgWdohwgs8tY= github.com/clipperhouse/uax29/v2 v2.2.0/go.mod h1:EFJ2TJMRUaplDxHKj1qAEhCtQPW2tJSwu5BF98AuoVM= github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= -github.com/flashcatcloud/go-flashduty v0.15.17-0.20261014102327-2f2d5497df53 h1:v6tVZmttBD67/gcdQym1SmY1TavYXd95WU3AQAog9VQ= -github.com/flashcatcloud/go-flashduty v0.15.17-0.20261014102327-2f2d5497df53/go.mod h1:YpHiTYXR5NXBI/rGRZfUy537XMkhdCkwA8NW1QoRHwk= -github.com/flashcatcloud/go-flashduty v0.15.18-0.20261016025836-93c9482173b5 h1:e5ApVt+44vsgUvakvkDn51tjIBC53hRqHiw863O9iTw= -github.com/flashcatcloud/go-flashduty v0.15.18-0.20261016025836-93c9482173b5/go.mod h1:YpHiTYXR5NXBI/rGRZfUy537XMkhdCkwA8NW1QoRHwk= +github.com/flashcatcloud/go-flashduty v0.15.18 h1:sa2x7FQVfaPPMs068OtpZuFMbCIoOtuGR1YGavnxuuk= +github.com/flashcatcloud/go-flashduty v0.15.18/go.mod h1:YpHiTYXR5NXBI/rGRZfUy537XMkhdCkwA8NW1QoRHwk= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/mattn/go-runewidth v0.0.30 h1:+KUuiDA4fF0R1p5FeueHefjDm+GIM+kWfFnDjybOPgk= diff --git a/internal/cli/zz_generated_integrations.go b/internal/cli/zz_generated_integrations.go index 074b0a1..935a3b3 100644 --- a/internal/cli/zz_generated_integrations.go +++ b/internal/cli/zz_generated_integrations.go @@ -89,7 +89,7 @@ Response fields ('data' envelope is unwrapped — these fields are at the top le - plugin_type (string) (required) — Integration type, for example 'standard.alert' or 'zabbix.alert'. - plugin_type_name (string) (required) — Display name of the integration type, in the language of the request. - ref_id (string) (required) — Source reference ID, normally 'a_' for an account-level integration; legacy 'w_' references may also exist. Channel-owned 'c_' integrations are excluded. - - settings (object) (required) — Stored type-specific configuration, including credential values without masking; matches the legacy '/datasource/*' response behavior. + - settings (object) (required) — Stored type-specific configuration. Each saved secret (passwords, app secrets, tokens, encryption keys, webhook endpoints, HTTP pull URL and body, headers, custom bodies) is returned as '******'; unset values stay empty. - status (string) (required) — Lifecycle status: 'enabled' while the integration accepts events, 'disabled' when it is paused. [enabled, disabled] - team_id (integer) (required) — ID of the team that owns the integration. '0' when it is not assigned to a team. - test (object) — Plugin test result, returned only when a test is performed. @@ -189,7 +189,7 @@ Response fields ('data' envelope is unwrapped — rows are nested under items[]; - plugin_type (string) (required) — Integration type, for example 'standard.alert' or 'zabbix.alert'. - plugin_type_name (string) (required) — Display name of the integration type, in the language of the request. - ref_id (string) (required) — Source reference ID, normally 'a_' for an account-level integration; legacy 'w_' references may also exist. Channel-owned 'c_' integrations are excluded. - - settings (object) (required) — Stored type-specific configuration, including credential values without masking; matches the legacy '/datasource/*' response behavior. + - settings (object) (required) — Stored type-specific configuration. Each saved secret (passwords, app secrets, tokens, encryption keys, webhook endpoints, HTTP pull URL and body, headers, custom bodies) is returned as '******'; unset values stay empty. - status (string) (required) — Lifecycle status: 'enabled' while the integration accepts events, 'disabled' when it is paused. [enabled, disabled] - team_id (integer) (required) — ID of the team that owns the integration. '0' when it is not assigned to a team. - updated_at (string) (required) — Unix timestamp in seconds when the integration was last updated. CLI '--json' renders this as an RFC3339 string in the process's local timezone (NOT UTC, and NOT the wire integer); an unset value renders as null. @@ -672,7 +672,7 @@ Request fields: --is-test bool — Run the plugin test when submitting 'settings'; no test is performed for a metadata-only update. --name string — New name, 2–49 characters. (2-49 chars) --team-id int — New owning team ID; '0' clears the team assignment. (min 0) - settings (object, via --data) — Replacement type-specific configuration. Known sensitive fields omitted or sent as '******' keep their stored value; an explicit empty headers object clears headers. + settings (object, via --data) — Replacement type-specific configuration. Known sensitive fields omitted or sent as '******' keep their stored value; an explicit empty headers object clears headers. A stored secret cannot be kept while its destination (such as 'endpoint', 'url', or a database host or port) changes. Response fields ('data' envelope is unwrapped — these fields are at the top level): - category (string) (required) — Category the integration belongs to: 'event.alert' alert events, 'event.change' change events, 'im' IM bots, 'webhook' custom webhooks. [event.alert, event.change, im, webhook] @@ -689,7 +689,7 @@ Response fields ('data' envelope is unwrapped — these fields are at the top le - plugin_type (string) (required) — Integration type, for example 'standard.alert' or 'zabbix.alert'. - plugin_type_name (string) (required) — Display name of the integration type, in the language of the request. - ref_id (string) (required) — Source reference ID, normally 'a_' for an account-level integration; legacy 'w_' references may also exist. Channel-owned 'c_' integrations are excluded. - - settings (object) (required) — Stored type-specific configuration, including credential values without masking; matches the legacy '/datasource/*' response behavior. + - settings (object) (required) — Stored type-specific configuration. Each saved secret (passwords, app secrets, tokens, encryption keys, webhook endpoints, HTTP pull URL and body, headers, custom bodies) is returned as '******'; unset values stay empty. - status (string) (required) — Lifecycle status: 'enabled' while the integration accepts events, 'disabled' when it is paused. [enabled, disabled] - team_id (integer) (required) — ID of the team that owns the integration. '0' when it is not assigned to a team. - test (object) — Plugin test result, returned only when a test is performed. diff --git a/internal/cli/zz_generated_response_help.go b/internal/cli/zz_generated_response_help.go index 7cd75ff..fe052d1 100644 --- a/internal/cli/zz_generated_response_help.go +++ b/internal/cli/zz_generated_response_help.go @@ -158,12 +158,12 @@ var responseHelpBySDKMethod = map[string]string{ "Incidents.WorkItemUpdate": "Response fields (`data` envelope is unwrapped — these fields are at the top level):\n - added_assignee_ids (array) — Assignee member IDs that were newly added (and notified).\n - idempotent_replay (boolean) — True when the call replayed an earlier request with the same idempotency key.\n - item (object) — A structured incident work item (action or post-mortem follow-up) with its assignees.\n - agent_session_id (string) — ID of the AI SRE session executing this item. Omitted when no session is recorded.\n - agent_session_venue (string) — Where that AI SRE session runs: `web` or `im`. Omitted when no session is recorded. [web, im]\n - assignee_ids (array) (required) — Member IDs of the current person assignees. AI SRE is not included. Never null; an empty array means no person assignee.\n - assignees (array) (required) — Current assignees. Each entry is `{type, id?}`. `type` is `person` or `ai_sre`; an `ai_sre` entry omits `id`. Never null; an empty array means unassigned. `assignee_ids` is the person-only subset of this list.\n - id (integer) — Member ID. Required when `type` is `person`. Omitted when `type` is `ai_sre`.\n - type (string) (required) — Assignee kind: `person` (a member) or `ai_sre` (the account AI SRE). [person, ai_sre]\n - converted_at_seconds (string) — Conversion time as a Unix timestamp in seconds. Present only after conversion. CLI `--json` renders this as an RFC3339 string in the process's local timezone (NOT UTC, and NOT the wire integer); an unset value renders as null.\n - converted_by (integer) — Member ID of the operator who converted the action into a follow-up. Present only after conversion.\n - created_at_seconds (string) (required) — Creation time as a Unix timestamp in seconds. CLI `--json` renders this as an RFC3339 string in the process's local timezone (NOT UTC, and NOT the wire integer); an unset value renders as null.\n - created_by (integer) (required) — Member ID of the creator.\n - description (string) — Optional longer description (max 65,535 characters). (≤65535 chars)\n - incident_id (string) (required) — Incident ID (MongoDB ObjectID) the item is anchored to.\n - item_type (string) (required) — `action` for an item anchored to an active incident; `follow_up` for a post-mortem follow-up. [action, follow_up]\n - legacy_source_id (string) — Original identifier of the legacy follow-up this item was migrated from. Present only when `source_kind` is `legacy_follow_up`.\n - post_mortem_id (string) — Post-mortem ID (32-character hex string). Present on follow-up items once bound to a post-mortem.\n - priority (string) — Optional client-defined priority (max 64 characters). (≤64 chars)\n - source_kind (string) (required) — `native` for items created through this API; `legacy_follow_up` for items migrated from legacy post-mortem follow-ups. [native, legacy_follow_up]\n - status (string) (required) — Client-defined status (max 64 characters). There is no fixed state machine. (≤64 chars)\n - title (string) (required) — Item title (max 512 characters). (≤512 chars)\n - updated_at_seconds (string) (required) — Last update time as a Unix timestamp in seconds. CLI `--json` renders this as an RFC3339 string in the process's local timezone (NOT UTC, and NOT the wire integer); an unset value renders as null.\n - updated_by (integer) (required) — Member ID of the last updater.\n - version (integer) (required) — Optimistic-locking version, incremented on every mutation.\n - work_item_id (string) (required) — Work item ID (opaque string, max 128 characters). (≤128 chars)\n - removed_assignee_ids (array) — Assignee member IDs that were removed (never notified).\n", "Integrations.DatasourceImPersonTryLink": "Response fields (`data` envelope is unwrapped — these fields are at the top level):\n - new_linked_person_ids (array) (required) — Person IDs newly linked during this call.\n", "Integrations.Detail": "Response fields (`data` envelope is unwrapped — these fields are at the top level):\n - attempt (integer) (required) — Attempt sequence number.\n - channel_id (integer) — Channel ID when applicable.\n - channel_name (string) — Name of the associated channel, resolved at query time.\n - duration (integer) (required) — Total elapsed time of the attempt in milliseconds.\n - endpoint (string) (required) — Destination URL.\n - error_message (string) — Error message when delivery failed.\n - event_id (string) (required) — Event ID.\n - event_time (string) (required) — Event time formatted as `YYYY-MM-DD HH:MM:SS.ffffff`.\n - event_type (string) (required) — Event type code. `i_*` values are incident events (for example `i_new` = incident created); `a_*` values are alert events (for example `a_new` = alert triggered).\n - integration_id (integer) (required) — Integration ID.\n - ref_id (string) — Source object ID.\n - ref_title (string) — Title of the source incident or alert, resolved at query time.\n - request_body (string) — Outbound request body payload.\n - request_headers (string) — Serialized outbound request headers.\n - response_body (string) — Response body.\n - response_headers (string) — Serialized response headers.\n - status (string) (required) — Delivery outcome. [success, failed]\n - status_code (integer) (required) — HTTP status code.\n - webhook_type (string) (required) — Source object kind: `incident` or `alert`. [incident, alert]\n", - "Integrations.IntegrationAPIReadInfo": "Response fields (`data` envelope is unwrapped — these fields are at the top level):\n - category (string) (required) — Category the integration belongs to: `event.alert` alert events, `event.change` change events, `im` IM bots, `webhook` custom webhooks. [event.alert, event.change, im, webhook]\n - created_at (string) (required) — Unix timestamp in seconds when the integration was created. CLI `--json` renders this as an RFC3339 string in the process's local timezone (NOT UTC, and NOT the wire integer); an unset value renders as null.\n - creator_id (integer) (required) — ID of the member who created the integration.\n - description (string) (required) — Free-form description.\n - editable (boolean) (required) — Whether the current caller passes the integration object-permission check; write calls also require Integrations Manage.\n - integration_id (integer) (required) — Integration ID.\n - integration_key (string) (required) — Decrypted integration key for inbound pushes. Empty when no key is stored; distinct from the account `app_key`.\n - last_time (string) (required) — Unix timestamp in seconds of the most recent event received. `0` when no event has arrived yet. CLI `--json` renders this as an RFC3339 string in the process's local timezone (NOT UTC, and NOT the wire integer); an unset value renders as null.\n - name (string) (required) — Integration name.\n - no_editable (boolean) (required) — Read-only flag. When true, the public APIs do not allow changes to this integration.\n - plugin_id (integer) (required) — Internal integration type ID; use `plugin_type`, not this ID, when creating an integration.\n - plugin_type (string) (required) — Integration type, for example `standard.alert` or `zabbix.alert`.\n - plugin_type_name (string) (required) — Display name of the integration type, in the language of the request.\n - ref_id (string) (required) — Source reference ID, normally `a_` for an account-level integration; legacy `w_` references may also exist. Channel-owned `c_` integrations are excluded.\n - settings (object) (required) — Stored type-specific configuration, including credential values without masking; matches the legacy `/datasource/*` response behavior.\n - status (string) (required) — Lifecycle status: `enabled` while the integration accepts events, `disabled` when it is paused. [enabled, disabled]\n - team_id (integer) (required) — ID of the team that owns the integration. `0` when it is not assigned to a team.\n - test (object) — Plugin test result, returned only when a test is performed.\n - message (string) (required) — Test failure message; empty on success.\n - success (boolean) (required) — Whether the plugin test succeeded.\n - updated_at (string) (required) — Unix timestamp in seconds when the integration was last updated. CLI `--json` renders this as an RFC3339 string in the process's local timezone (NOT UTC, and NOT the wire integer); an unset value renders as null.\n - updated_by (integer) (required) — ID of the member who last updated the integration.\n", - "Integrations.IntegrationAPIReadList": "Response fields (this command's `--json` is a TOP-LEVEL array of these row objects — pipe `jq '.[]'`, NOT `.items[]`):\n - account_id (integer) (required) — ID of the account that owns the integration.\n - category (string) (required) — Category the integration belongs to: `event.alert` alert events, `event.change` change events, `im` IM bots, `webhook` custom webhooks. [event.alert, event.change, im, webhook]\n - created_at (string) (required) — Unix timestamp in seconds when the integration was created. CLI `--json` renders this as an RFC3339 string in the process's local timezone (NOT UTC, and NOT the wire integer); an unset value renders as null.\n - creator_id (integer) (required) — ID of the member who created the integration.\n - data_source_id (integer) (required) — Legacy datasource ID, equal to `integration_id`.\n - description (string) (required) — Free-form description.\n - editable (boolean) (required) — Whether the current caller passes the integration object-permission check; write calls also require Integrations Manage.\n - exclusive_data_source_id (integer) (required) — Legacy compatibility field; `0` for items returned by this public-integration list.\n - integration_id (integer) (required) — Integration ID.\n - integration_key (string) (required) — Decrypted integration key for inbound pushes. Empty when no key is stored; distinct from the account `app_key`.\n - last_time (string) (required) — Unix timestamp in seconds of the most recent event received. `0` when no event has arrived yet. CLI `--json` renders this as an RFC3339 string in the process's local timezone (NOT UTC, and NOT the wire integer); an unset value renders as null.\n - name (string) (required) — Integration name.\n - no_editable (boolean) (required) — Read-only flag. When true, the public APIs do not allow changes to this integration.\n - plugin_id (integer) (required) — Internal integration type ID; use `plugin_type`, not this ID, when creating an integration.\n - plugin_type (string) (required) — Integration type, for example `standard.alert` or `zabbix.alert`.\n - plugin_type_name (string) (required) — Display name of the integration type, in the language of the request.\n - ref_id (string) (required) — Source reference ID, normally `a_` for an account-level integration; legacy `w_` references may also exist. Channel-owned `c_` integrations are excluded.\n - settings (object) (required) — Stored type-specific configuration, including credential values without masking; matches the legacy `/datasource/*` response behavior.\n - status (string) (required) — Lifecycle status: `enabled` while the integration accepts events, `disabled` when it is paused. [enabled, disabled]\n - team_id (integer) (required) — ID of the team that owns the integration. `0` when it is not assigned to a team.\n - updated_at (string) (required) — Unix timestamp in seconds when the integration was last updated. CLI `--json` renders this as an RFC3339 string in the process's local timezone (NOT UTC, and NOT the wire integer); an unset value renders as null.\n - updated_by (integer) (required) — ID of the member who last updated the integration.\n", + "Integrations.IntegrationAPIReadInfo": "Response fields (`data` envelope is unwrapped — these fields are at the top level):\n - category (string) (required) — Category the integration belongs to: `event.alert` alert events, `event.change` change events, `im` IM bots, `webhook` custom webhooks. [event.alert, event.change, im, webhook]\n - created_at (string) (required) — Unix timestamp in seconds when the integration was created. CLI `--json` renders this as an RFC3339 string in the process's local timezone (NOT UTC, and NOT the wire integer); an unset value renders as null.\n - creator_id (integer) (required) — ID of the member who created the integration.\n - description (string) (required) — Free-form description.\n - editable (boolean) (required) — Whether the current caller passes the integration object-permission check; write calls also require Integrations Manage.\n - integration_id (integer) (required) — Integration ID.\n - integration_key (string) (required) — Decrypted integration key for inbound pushes. Empty when no key is stored; distinct from the account `app_key`.\n - last_time (string) (required) — Unix timestamp in seconds of the most recent event received. `0` when no event has arrived yet. CLI `--json` renders this as an RFC3339 string in the process's local timezone (NOT UTC, and NOT the wire integer); an unset value renders as null.\n - name (string) (required) — Integration name.\n - no_editable (boolean) (required) — Read-only flag. When true, the public APIs do not allow changes to this integration.\n - plugin_id (integer) (required) — Internal integration type ID; use `plugin_type`, not this ID, when creating an integration.\n - plugin_type (string) (required) — Integration type, for example `standard.alert` or `zabbix.alert`.\n - plugin_type_name (string) (required) — Display name of the integration type, in the language of the request.\n - ref_id (string) (required) — Source reference ID, normally `a_` for an account-level integration; legacy `w_` references may also exist. Channel-owned `c_` integrations are excluded.\n - settings (object) (required) — Stored type-specific configuration. Each saved secret (passwords, app secrets, tokens, encryption keys, webhook endpoints, HTTP pull URL and body, headers, custom bodies) is returned as `******`; unset values stay empty.\n - status (string) (required) — Lifecycle status: `enabled` while the integration accepts events, `disabled` when it is paused. [enabled, disabled]\n - team_id (integer) (required) — ID of the team that owns the integration. `0` when it is not assigned to a team.\n - test (object) — Plugin test result, returned only when a test is performed.\n - message (string) (required) — Test failure message; empty on success.\n - success (boolean) (required) — Whether the plugin test succeeded.\n - updated_at (string) (required) — Unix timestamp in seconds when the integration was last updated. CLI `--json` renders this as an RFC3339 string in the process's local timezone (NOT UTC, and NOT the wire integer); an unset value renders as null.\n - updated_by (integer) (required) — ID of the member who last updated the integration.\n", + "Integrations.IntegrationAPIReadList": "Response fields (this command's `--json` is a TOP-LEVEL array of these row objects — pipe `jq '.[]'`, NOT `.items[]`):\n - account_id (integer) (required) — ID of the account that owns the integration.\n - category (string) (required) — Category the integration belongs to: `event.alert` alert events, `event.change` change events, `im` IM bots, `webhook` custom webhooks. [event.alert, event.change, im, webhook]\n - created_at (string) (required) — Unix timestamp in seconds when the integration was created. CLI `--json` renders this as an RFC3339 string in the process's local timezone (NOT UTC, and NOT the wire integer); an unset value renders as null.\n - creator_id (integer) (required) — ID of the member who created the integration.\n - data_source_id (integer) (required) — Legacy datasource ID, equal to `integration_id`.\n - description (string) (required) — Free-form description.\n - editable (boolean) (required) — Whether the current caller passes the integration object-permission check; write calls also require Integrations Manage.\n - exclusive_data_source_id (integer) (required) — Legacy compatibility field; `0` for items returned by this public-integration list.\n - integration_id (integer) (required) — Integration ID.\n - integration_key (string) (required) — Decrypted integration key for inbound pushes. Empty when no key is stored; distinct from the account `app_key`.\n - last_time (string) (required) — Unix timestamp in seconds of the most recent event received. `0` when no event has arrived yet. CLI `--json` renders this as an RFC3339 string in the process's local timezone (NOT UTC, and NOT the wire integer); an unset value renders as null.\n - name (string) (required) — Integration name.\n - no_editable (boolean) (required) — Read-only flag. When true, the public APIs do not allow changes to this integration.\n - plugin_id (integer) (required) — Internal integration type ID; use `plugin_type`, not this ID, when creating an integration.\n - plugin_type (string) (required) — Integration type, for example `standard.alert` or `zabbix.alert`.\n - plugin_type_name (string) (required) — Display name of the integration type, in the language of the request.\n - ref_id (string) (required) — Source reference ID, normally `a_` for an account-level integration; legacy `w_` references may also exist. Channel-owned `c_` integrations are excluded.\n - settings (object) (required) — Stored type-specific configuration. Each saved secret (passwords, app secrets, tokens, encryption keys, webhook endpoints, HTTP pull URL and body, headers, custom bodies) is returned as `******`; unset values stay empty.\n - status (string) (required) — Lifecycle status: `enabled` while the integration accepts events, `disabled` when it is paused. [enabled, disabled]\n - team_id (integer) (required) — ID of the team that owns the integration. `0` when it is not assigned to a team.\n - updated_at (string) (required) — Unix timestamp in seconds when the integration was last updated. CLI `--json` renders this as an RFC3339 string in the process's local timezone (NOT UTC, and NOT the wire integer); an unset value renders as null.\n - updated_by (integer) (required) — ID of the member who last updated the integration.\n", "Integrations.IntegrationAPIReadTypeList": "Response fields (this command's `--json` is a TOP-LEVEL array of these row objects — pipe `jq '.[]'`, NOT `.items[]`):\n - category (string) (required) — Category the type belongs to: `event.alert` alert events, `event.change` change events, `im` IM bots, `webhook` custom webhooks. [event.alert, event.change, im, webhook]\n - plugin_type (string) (required) — Type identifier to pass as `plugin_type` when creating an integration.\n - plugin_type_logo_url (string) (required) — Logo URL of the type.\n - plugin_type_name (string) (required) — Display name of the type.\n - status (string) (required) — Platform status of the type.\n - supports_api_create (boolean) (required) — Whether `POST /integration/create` accepts this type.\n", "Integrations.IntegrationAPIWriteCreate": "Response fields (`data` envelope is unwrapped — these fields are at the top level):\n - integration_id (integer) (required) — ID of the new integration.\n - integration_key (string) (required) — Integration key for inbound pushes; also readable from `/integration/list` and `/integration/info`.\n - test (object) — Plugin test result, returned only when a test is performed.\n - message (string) (required) — Test failure message; empty on success.\n - success (boolean) (required) — Whether the plugin test succeeded.\n", "Integrations.IntegrationAPIWriteRotateKey": "Response fields (`data` envelope is unwrapped — these fields are at the top level):\n - integration_key (string) (required) — New integration key; the previous key stops working immediately. Also readable from `/integration/list` and `/integration/info`.\n", - "Integrations.IntegrationAPIWriteUpdate": "Response fields (`data` envelope is unwrapped — these fields are at the top level):\n - category (string) (required) — Category the integration belongs to: `event.alert` alert events, `event.change` change events, `im` IM bots, `webhook` custom webhooks. [event.alert, event.change, im, webhook]\n - created_at (string) (required) — Unix timestamp in seconds when the integration was created. CLI `--json` renders this as an RFC3339 string in the process's local timezone (NOT UTC, and NOT the wire integer); an unset value renders as null.\n - creator_id (integer) (required) — ID of the member who created the integration.\n - description (string) (required) — Free-form description.\n - editable (boolean) (required) — Whether the current caller passes the integration object-permission check; write calls also require Integrations Manage.\n - integration_id (integer) (required) — Integration ID.\n - integration_key (string) (required) — Decrypted integration key for inbound pushes. Empty when no key is stored; distinct from the account `app_key`.\n - last_time (string) (required) — Unix timestamp in seconds of the most recent event received. `0` when no event has arrived yet. CLI `--json` renders this as an RFC3339 string in the process's local timezone (NOT UTC, and NOT the wire integer); an unset value renders as null.\n - name (string) (required) — Integration name.\n - no_editable (boolean) (required) — Read-only flag. When true, the public APIs do not allow changes to this integration.\n - plugin_id (integer) (required) — Internal integration type ID; use `plugin_type`, not this ID, when creating an integration.\n - plugin_type (string) (required) — Integration type, for example `standard.alert` or `zabbix.alert`.\n - plugin_type_name (string) (required) — Display name of the integration type, in the language of the request.\n - ref_id (string) (required) — Source reference ID, normally `a_` for an account-level integration; legacy `w_` references may also exist. Channel-owned `c_` integrations are excluded.\n - settings (object) (required) — Stored type-specific configuration, including credential values without masking; matches the legacy `/datasource/*` response behavior.\n - status (string) (required) — Lifecycle status: `enabled` while the integration accepts events, `disabled` when it is paused. [enabled, disabled]\n - team_id (integer) (required) — ID of the team that owns the integration. `0` when it is not assigned to a team.\n - test (object) — Plugin test result, returned only when a test is performed.\n - message (string) (required) — Test failure message; empty on success.\n - success (boolean) (required) — Whether the plugin test succeeded.\n - updated_at (string) (required) — Unix timestamp in seconds when the integration was last updated. CLI `--json` renders this as an RFC3339 string in the process's local timezone (NOT UTC, and NOT the wire integer); an unset value renders as null.\n - updated_by (integer) (required) — ID of the member who last updated the integration.\n", + "Integrations.IntegrationAPIWriteUpdate": "Response fields (`data` envelope is unwrapped — these fields are at the top level):\n - category (string) (required) — Category the integration belongs to: `event.alert` alert events, `event.change` change events, `im` IM bots, `webhook` custom webhooks. [event.alert, event.change, im, webhook]\n - created_at (string) (required) — Unix timestamp in seconds when the integration was created. CLI `--json` renders this as an RFC3339 string in the process's local timezone (NOT UTC, and NOT the wire integer); an unset value renders as null.\n - creator_id (integer) (required) — ID of the member who created the integration.\n - description (string) (required) — Free-form description.\n - editable (boolean) (required) — Whether the current caller passes the integration object-permission check; write calls also require Integrations Manage.\n - integration_id (integer) (required) — Integration ID.\n - integration_key (string) (required) — Decrypted integration key for inbound pushes. Empty when no key is stored; distinct from the account `app_key`.\n - last_time (string) (required) — Unix timestamp in seconds of the most recent event received. `0` when no event has arrived yet. CLI `--json` renders this as an RFC3339 string in the process's local timezone (NOT UTC, and NOT the wire integer); an unset value renders as null.\n - name (string) (required) — Integration name.\n - no_editable (boolean) (required) — Read-only flag. When true, the public APIs do not allow changes to this integration.\n - plugin_id (integer) (required) — Internal integration type ID; use `plugin_type`, not this ID, when creating an integration.\n - plugin_type (string) (required) — Integration type, for example `standard.alert` or `zabbix.alert`.\n - plugin_type_name (string) (required) — Display name of the integration type, in the language of the request.\n - ref_id (string) (required) — Source reference ID, normally `a_` for an account-level integration; legacy `w_` references may also exist. Channel-owned `c_` integrations are excluded.\n - settings (object) (required) — Stored type-specific configuration. Each saved secret (passwords, app secrets, tokens, encryption keys, webhook endpoints, HTTP pull URL and body, headers, custom bodies) is returned as `******`; unset values stay empty.\n - status (string) (required) — Lifecycle status: `enabled` while the integration accepts events, `disabled` when it is paused. [enabled, disabled]\n - team_id (integer) (required) — ID of the team that owns the integration. `0` when it is not assigned to a team.\n - test (object) — Plugin test result, returned only when a test is performed.\n - message (string) (required) — Test failure message; empty on success.\n - success (boolean) (required) — Whether the plugin test succeeded.\n - updated_at (string) (required) — Unix timestamp in seconds when the integration was last updated. CLI `--json` renders this as an RFC3339 string in the process's local timezone (NOT UTC, and NOT the wire integer); an unset value renders as null.\n - updated_by (integer) (required) — ID of the member who last updated the integration.\n", "Integrations.List": "Response fields (this command's `--json` is a TOP-LEVEL array of these row objects — pipe `jq '.[]'`, NOT `.items[]`):\n - attempt (integer) (required) — Attempt sequence number.\n - channel_id (integer) — Channel ID associated with the event, when applicable.\n - duration (integer) (required) — Total elapsed time of the attempt in milliseconds.\n - endpoint (string) (required) — Destination URL.\n - error_message (string) — Error message when delivery failed.\n - event_id (string) (required) — Unique event identifier for the delivery attempt.\n - event_time (string) (required) — Event time formatted as `YYYY-MM-DD HH:MM:SS.ffffff`.\n - event_type (string) (required) — Event type code. `i_*` values are incident events (for example `i_new` = incident created); `a_*` values are alert events (for example `a_new` = alert triggered).\n - integration_id (integer) (required) — Integration ID that triggered the webhook.\n - ref_id (string) — Source object ID (incident ID or alert ID).\n - request_body (string) — Outbound request body payload.\n - request_headers (string) — Serialized outbound request headers.\n - response_body (string) — Response body returned by the destination.\n - response_headers (string) — Serialized response headers from the destination.\n - status (string) (required) — Delivery outcome. [success, failed]\n - status_code (integer) (required) — HTTP status code returned by the destination.\n - webhook_type (string) (required) — Source object kind: `incident` or `alert`. [incident, alert]\n", "IssuePresetSeverityRules.Create": "Response fields (`data` envelope is unwrapped — these fields are at the top level):\n - priority (integer) (required) — Evaluation order assigned to the new rule (always the current lowest precedence, i.e. current max + 1).\n - rule_id (string) (required) — ID of the newly created rule.\n - rule_name (string) (required) — Echo of the rule's display name.\n", "IssuePresetSeverityRules.HistoryList": "Response fields (this command's `--json` is a TOP-LEVEL array of these row objects — pipe `jq '.[]'`, NOT `.items[]`):\n - rules (array) (required) — Full rule set captured immediately before the mutation that produced this snapshot. Empty for the very first snapshot.\n - account_id (integer) (required) — Account ID the rule belongs to.\n - application_id (string) (required) — RUM application ID the rule belongs to.\n - created_at (string) (required) — Unix timestamp in milliseconds when the rule was created. CLI `--json` renders this as an RFC3339 string in the process's local timezone (NOT UTC, and NOT the wire integer); an unset value renders as null.\n - created_by (integer) (required) — Member ID who originally created the rule.\n - deleted_at (string) (required) — Unix timestamp in milliseconds the rule was soft-deleted; `0` means not deleted. Always `0` in practice, since deleted rules are excluded before a snapshot is taken. CLI `--json` renders this as an RFC3339 string in the process's local timezone (NOT UTC, and NOT the wire integer); an unset value renders as null.\n - description (string) (required) — Rule description. May be empty.\n - filters (array>) (required) — OR-of-ANDs filter structure: the outer array is OR'd, each inner array is AND'd. A rule matches an error when at least one inner AND-group fully matches.\n - key (string) (required) — Filter attribute key. Only these Error-level attributes are supported for preset severity rules. | Value | Meaning | |---|---| | `error.usr_id` | User ID | | `error.usr_email` | User email | | `error.view_url` | Full URL of the page where the error occurred | | `error.view_url_path` | URL path of the page where the error occurred | | `error.error_type` | Error type | | `error.error_message` | Error message | | `error.env` | Environment (e.g. production/staging) | | `error.service` | Service name | | `error.device_type` | Device type | | `error.os_name` | Operating system name | | `error.browser_name` | Browser name | | `error.is_crash` | Whether the error is a crash (boolean) | [error.usr_id, error.usr_email, error.view_url, error.view_url_path, error.error_type, error.error_message, error.env, error.service, error.device_type, error.os_name, error.browser_name, error.is_crash]\n - oper (string) (required) — Match semantics: `IN` matches when the field's value matches any of `vals`; `NOTIN` matches when it matches none of them (and matches when the field is absent). [IN, NOTIN]\n - vals (array) (required) — Values to match against. Each entry supports exact string match, wildcard (`*`/`?`), regex (wrap in `/.../`), CIDR (`cidr:10.0.0.0/8`) for IP-shaped values, or numeric comparison (`num:gt:100`, `num:le:50`, etc.).\n - id (integer) (required) — Internal auto-increment row ID. Not stable across a history revert — reverting reinserts rows with new IDs.\n - priority (integer) (required) — Evaluation order at snapshot time; `1` is highest precedence.\n - rule_id (string) (required) — Unique rule ID.\n - rule_name (string) (required) — Rule display name.\n - severity (string) (required) — Severity assigned to errors matching this rule. [Critical, Warning, Info]\n - status (string) (required) — Rule status at snapshot time. [enabled, disabled]\n - updated_at (string) (required) — Unix timestamp in milliseconds when the rule was last updated. CLI `--json` renders this as an RFC3339 string in the process's local timezone (NOT UTC, and NOT the wire integer); an unset value renders as null.\n - updated_by (integer) (required) — Member ID who last updated the rule as of snapshot time.\n - updated_at (string) (required) — Unix timestamp in milliseconds when the snapshot was written. CLI `--json` renders this as an RFC3339 string in the process's local timezone (NOT UTC, and NOT the wire integer); an unset value renders as null.\n - updated_by (integer) (required) — Member ID who triggered the mutation this snapshot precedes.\n - updated_by_name (string) (required) — Display name of `updated_by` at the time of the change.\n - version (integer) (required) — Monotonically increasing snapshot version number, starting at 1.\n", diff --git a/skills/flashduty/reference/integration.md b/skills/flashduty/reference/integration.md index c46e12d..d7a1301 100644 --- a/skills/flashduty/reference/integration.md +++ b/skills/flashduty/reference/integration.md @@ -5,10 +5,10 @@ Prereq: read `SKILL.md`. These commands manage **public/account-level integratio ## Read before changing configuration - Start with `type-list` and `list`. Create only a `plugin_type` whose type entry has `supports_api_create: true`. -- List/info return stored `settings` and decrypted `integration_key` without masking. Prefer `--fields` projections for discovery; do not paste secrets into a report or unrelated tool. An integration key authenticates inbound pushes; it is not the account App Key used by this CLI. +- List/info return stored `settings` with each saved secret as `******`, and `integration_key` as is. Prefer `--fields` projections for discovery; do not paste the integration key into a report or unrelated tool. An integration key authenticates inbound pushes; it is not the account App Key used by this CLI. - `editable` describes object permission; writes also require Integrations Manage. `no_editable: true` marks a read-only integration. Do not infer write authorization from read access. - Before update/delete or key rotation, get per-target confirmation and save `info` to the protected workspace backup described in `SKILL.md`. Confirm references before deletion. Rotating the key invalidates the old key immediately; update the sender configuration as part of the approved change. -- Metadata-only updates preserve omitted fields. `--team-id 0` deliberately clears team ownership. Submitted `settings` replace type-specific configuration; known sensitive fields omitted or set to `******` preserve their stored value. An explicit `headers: {}` clears headers. +- Metadata-only updates preserve omitted fields. `--team-id 0` deliberately clears team ownership. Submitted `settings` replace type-specific configuration; known sensitive fields omitted or set to `******` preserve their stored value. A stored secret cannot be kept while its destination (such as `endpoint`, `url`, or a database host or port) changes; send the real secret with the new destination. An explicit `headers: {}` clears headers. - `--is-test` on create, or on update with `settings`, returns plugin test results. Inspect `test.success` and `test.message`: HTTP success is not plugin-test success. An absent `test` means no test result was returned, not a successful test. ## Discovery