@grc-claw/integration-marketplace 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/IntegrationMarketplace.d.ts +32 -0
- package/dist/IntegrationMarketplace.js +319 -0
- package/dist/connectors/ADPConnector.d.ts +12 -0
- package/dist/connectors/ADPConnector.js +97 -0
- package/dist/connectors/AWSCloudTrailConnector.d.ts +12 -0
- package/dist/connectors/AWSCloudTrailConnector.js +77 -0
- package/dist/connectors/AWSCloudWatchConnector.d.ts +12 -0
- package/dist/connectors/AWSCloudWatchConnector.js +70 -0
- package/dist/connectors/AWSGuardDutyConnector.d.ts +12 -0
- package/dist/connectors/AWSGuardDutyConnector.js +139 -0
- package/dist/connectors/AWSIAMConnector.d.ts +12 -0
- package/dist/connectors/AWSIAMConnector.js +90 -0
- package/dist/connectors/AWSKMSConnector.d.ts +12 -0
- package/dist/connectors/AWSKMSConnector.js +70 -0
- package/dist/connectors/AWSLambdaConnector.d.ts +12 -0
- package/dist/connectors/AWSLambdaConnector.js +84 -0
- package/dist/connectors/AWSRDSConnector.d.ts +12 -0
- package/dist/connectors/AWSRDSConnector.js +84 -0
- package/dist/connectors/AWSS3Connector.d.ts +12 -0
- package/dist/connectors/AWSS3Connector.js +112 -0
- package/dist/connectors/AkamaiConnector.d.ts +12 -0
- package/dist/connectors/AkamaiConnector.js +98 -0
- package/dist/connectors/ArgoCDConnector.d.ts +12 -0
- package/dist/connectors/ArgoCDConnector.js +93 -0
- package/dist/connectors/ArtifactoryConnector.d.ts +12 -0
- package/dist/connectors/ArtifactoryConnector.js +94 -0
- package/dist/connectors/AtlassianJiraConnector.d.ts +12 -0
- package/dist/connectors/AtlassianJiraConnector.js +134 -0
- package/dist/connectors/Auth0Connector.d.ts +12 -0
- package/dist/connectors/Auth0Connector.js +150 -0
- package/dist/connectors/AzureADConnector.d.ts +12 -0
- package/dist/connectors/AzureADConnector.js +115 -0
- package/dist/connectors/AzureDevOpsConnector.d.ts +12 -0
- package/dist/connectors/AzureDevOpsConnector.js +130 -0
- package/dist/connectors/AzureDevOpsPipelinesConnector.d.ts +12 -0
- package/dist/connectors/AzureDevOpsPipelinesConnector.js +72 -0
- package/dist/connectors/AzurePipelinesConnector.d.ts +12 -0
- package/dist/connectors/AzurePipelinesConnector.js +72 -0
- package/dist/connectors/AzurePolicyConnector.d.ts +12 -0
- package/dist/connectors/AzurePolicyConnector.js +141 -0
- package/dist/connectors/AzureReposConnector.d.ts +12 -0
- package/dist/connectors/AzureReposConnector.js +96 -0
- package/dist/connectors/AzureSentinelConnector.d.ts +12 -0
- package/dist/connectors/AzureSentinelConnector.js +88 -0
- package/dist/connectors/BambooCICDConnector.d.ts +12 -0
- package/dist/connectors/BambooCICDConnector.js +72 -0
- package/dist/connectors/BambooHRConnector.d.ts +12 -0
- package/dist/connectors/BambooHRConnector.js +84 -0
- package/dist/connectors/BeyondTrustConnector.d.ts +12 -0
- package/dist/connectors/BeyondTrustConnector.js +94 -0
- package/dist/connectors/BitbucketConnector.d.ts +12 -0
- package/dist/connectors/BitbucketConnector.js +100 -0
- package/dist/connectors/BitbucketPipelinesConnector.d.ts +12 -0
- package/dist/connectors/BitbucketPipelinesConnector.js +72 -0
- package/dist/connectors/BoxConnector.d.ts +12 -0
- package/dist/connectors/BoxConnector.js +122 -0
- package/dist/connectors/BuildkiteConnector.d.ts +12 -0
- package/dist/connectors/BuildkiteConnector.js +95 -0
- package/dist/connectors/CarbonBlackConnector.d.ts +12 -0
- package/dist/connectors/CarbonBlackConnector.js +89 -0
- package/dist/connectors/CassandraConnector.d.ts +12 -0
- package/dist/connectors/CassandraConnector.js +69 -0
- package/dist/connectors/CheckPointConnector.d.ts +12 -0
- package/dist/connectors/CheckPointConnector.js +98 -0
- package/dist/connectors/CircleCIConnector.d.ts +12 -0
- package/dist/connectors/CircleCIConnector.js +129 -0
- package/dist/connectors/CircleCIConnectorsConnector.d.ts +12 -0
- package/dist/connectors/CircleCIConnectorsConnector.js +69 -0
- package/dist/connectors/CiscoUmbrellaConnector.d.ts +12 -0
- package/dist/connectors/CiscoUmbrellaConnector.js +96 -0
- package/dist/connectors/CloudBeesJenkinsConnector.d.ts +12 -0
- package/dist/connectors/CloudBeesJenkinsConnector.js +70 -0
- package/dist/connectors/CloudflareDNSConnector.d.ts +12 -0
- package/dist/connectors/CloudflareDNSConnector.js +71 -0
- package/dist/connectors/CloudflareWAFConnector.d.ts +12 -0
- package/dist/connectors/CloudflareWAFConnector.js +98 -0
- package/dist/connectors/ConfluenceConnector.d.ts +12 -0
- package/dist/connectors/ConfluenceConnector.js +101 -0
- package/dist/connectors/ConstantContactConnector.d.ts +12 -0
- package/dist/connectors/ConstantContactConnector.js +70 -0
- package/dist/connectors/CouchDBConnector.d.ts +12 -0
- package/dist/connectors/CouchDBConnector.js +69 -0
- package/dist/connectors/CrowdStrikeConnector.d.ts +12 -0
- package/dist/connectors/CrowdStrikeConnector.js +86 -0
- package/dist/connectors/CrowdStrikeFalconConnector.d.ts +12 -0
- package/dist/connectors/CrowdStrikeFalconConnector.js +92 -0
- package/dist/connectors/CrowdStrikeSpotlightConnector.d.ts +12 -0
- package/dist/connectors/CrowdStrikeSpotlightConnector.js +139 -0
- package/dist/connectors/CyberArkConnector.d.ts +12 -0
- package/dist/connectors/CyberArkConnector.js +95 -0
- package/dist/connectors/DatabricksConnector.d.ts +12 -0
- package/dist/connectors/DatabricksConnector.js +95 -0
- package/dist/connectors/DatadogConnector.d.ts +12 -0
- package/dist/connectors/DatadogConnector.js +110 -0
- package/dist/connectors/DigitalOceanConnector.d.ts +12 -0
- package/dist/connectors/DigitalOceanConnector.js +85 -0
- package/dist/connectors/DiscordConnector.d.ts +12 -0
- package/dist/connectors/DiscordConnector.js +98 -0
- package/dist/connectors/DockerHubConnector.d.ts +12 -0
- package/dist/connectors/DockerHubConnector.js +80 -0
- package/dist/connectors/DocuSignConnector.d.ts +12 -0
- package/dist/connectors/DocuSignConnector.js +96 -0
- package/dist/connectors/DriftConnector.d.ts +12 -0
- package/dist/connectors/DriftConnector.js +69 -0
- package/dist/connectors/DropboxConnector.d.ts +12 -0
- package/dist/connectors/DropboxConnector.js +127 -0
- package/dist/connectors/ESETConnector.d.ts +12 -0
- package/dist/connectors/ESETConnector.js +70 -0
- package/dist/connectors/ElasticsearchCloudConnector.d.ts +12 -0
- package/dist/connectors/ElasticsearchCloudConnector.js +70 -0
- package/dist/connectors/FSecureConnector.d.ts +12 -0
- package/dist/connectors/FSecureConnector.js +70 -0
- package/dist/connectors/FeatureFlagConnector.d.ts +12 -0
- package/dist/connectors/FeatureFlagConnector.js +70 -0
- package/dist/connectors/FluxCDConnector.d.ts +12 -0
- package/dist/connectors/FluxCDConnector.js +94 -0
- package/dist/connectors/ForgeRockConnector.d.ts +12 -0
- package/dist/connectors/ForgeRockConnector.js +95 -0
- package/dist/connectors/FortinetConnector.d.ts +12 -0
- package/dist/connectors/FortinetConnector.js +98 -0
- package/dist/connectors/FreshdeskConnector.d.ts +12 -0
- package/dist/connectors/FreshdeskConnector.js +71 -0
- package/dist/connectors/GCPBigQueryConnector.d.ts +12 -0
- package/dist/connectors/GCPBigQueryConnector.js +71 -0
- package/dist/connectors/GCPComputeConnector.d.ts +12 -0
- package/dist/connectors/GCPComputeConnector.js +87 -0
- package/dist/connectors/GCPConfigConnector.d.ts +12 -0
- package/dist/connectors/GCPConfigConnector.js +149 -0
- package/dist/connectors/GCPFirestoreConnector.d.ts +12 -0
- package/dist/connectors/GCPFirestoreConnector.js +71 -0
- package/dist/connectors/GCPIAMConnector.d.ts +12 -0
- package/dist/connectors/GCPIAMConnector.js +98 -0
- package/dist/connectors/GCPSCCConnector.d.ts +12 -0
- package/dist/connectors/GCPSCCConnector.js +94 -0
- package/dist/connectors/GitHubActionsConnector.d.ts +12 -0
- package/dist/connectors/GitHubActionsConnector.js +104 -0
- package/dist/connectors/GitHubConnector.d.ts +12 -0
- package/dist/connectors/GitHubConnector.js +135 -0
- package/dist/connectors/GitHubCopilotConnector.d.ts +12 -0
- package/dist/connectors/GitHubCopilotConnector.js +72 -0
- package/dist/connectors/GitLabCIConnector.d.ts +12 -0
- package/dist/connectors/GitLabCIConnector.js +71 -0
- package/dist/connectors/GitLabConnector.d.ts +12 -0
- package/dist/connectors/GitLabConnector.js +101 -0
- package/dist/connectors/GitLabSASTConnector.d.ts +12 -0
- package/dist/connectors/GitLabSASTConnector.js +130 -0
- package/dist/connectors/GoogleWorkspaceConnector.d.ts +12 -0
- package/dist/connectors/GoogleWorkspaceConnector.js +136 -0
- package/dist/connectors/HelmConnector.d.ts +12 -0
- package/dist/connectors/HelmConnector.js +94 -0
- package/dist/connectors/HubSpotConnector.d.ts +12 -0
- package/dist/connectors/HubSpotConnector.js +77 -0
- package/dist/connectors/IFTTTConnector.d.ts +12 -0
- package/dist/connectors/IFTTTConnector.js +70 -0
- package/dist/connectors/ImpervaConnector.d.ts +12 -0
- package/dist/connectors/ImpervaConnector.js +94 -0
- package/dist/connectors/InfluxDBConnector.d.ts +12 -0
- package/dist/connectors/InfluxDBConnector.js +70 -0
- package/dist/connectors/IntercomConnector.d.ts +12 -0
- package/dist/connectors/IntercomConnector.js +69 -0
- package/dist/connectors/JenkinsConnector.d.ts +12 -0
- package/dist/connectors/JenkinsConnector.js +96 -0
- package/dist/connectors/JiraConnector.d.ts +12 -0
- package/dist/connectors/JiraConnector.js +103 -0
- package/dist/connectors/KafkaConnector.d.ts +12 -0
- package/dist/connectors/KafkaConnector.js +70 -0
- package/dist/connectors/KasperskyConnector.d.ts +12 -0
- package/dist/connectors/KasperskyConnector.js +70 -0
- package/dist/connectors/KubernetesConnector.d.ts +12 -0
- package/dist/connectors/KubernetesConnector.js +109 -0
- package/dist/connectors/LaceworkConnector.d.ts +13 -0
- package/dist/connectors/LaceworkConnector.js +143 -0
- package/dist/connectors/LaunchDarklyConnector.d.ts +12 -0
- package/dist/connectors/LaunchDarklyConnector.js +86 -0
- package/dist/connectors/LinodeConnector.d.ts +12 -0
- package/dist/connectors/LinodeConnector.js +70 -0
- package/dist/connectors/LookerConnector.d.ts +12 -0
- package/dist/connectors/LookerConnector.js +94 -0
- package/dist/connectors/MailchimpConnector.d.ts +12 -0
- package/dist/connectors/MailchimpConnector.js +71 -0
- package/dist/connectors/MalwarebytesConnector.d.ts +12 -0
- package/dist/connectors/MalwarebytesConnector.js +85 -0
- package/dist/connectors/McAfeeConnector.d.ts +12 -0
- package/dist/connectors/McAfeeConnector.js +85 -0
- package/dist/connectors/Microsoft365Connector.d.ts +12 -0
- package/dist/connectors/Microsoft365Connector.js +139 -0
- package/dist/connectors/MongoDBConnector.d.ts +12 -0
- package/dist/connectors/MongoDBConnector.js +86 -0
- package/dist/connectors/NamelyConnector.d.ts +12 -0
- package/dist/connectors/NamelyConnector.js +97 -0
- package/dist/connectors/Neo4jConnector.d.ts +12 -0
- package/dist/connectors/Neo4jConnector.js +70 -0
- package/dist/connectors/NetSuiteConnector.d.ts +12 -0
- package/dist/connectors/NetSuiteConnector.js +94 -0
- package/dist/connectors/NetskopeConnector.d.ts +12 -0
- package/dist/connectors/NetskopeConnector.js +98 -0
- package/dist/connectors/NexusConnector.d.ts +12 -0
- package/dist/connectors/NexusConnector.js +93 -0
- package/dist/connectors/NotionConnector.d.ts +12 -0
- package/dist/connectors/NotionConnector.js +109 -0
- package/dist/connectors/OktaConnector.d.ts +12 -0
- package/dist/connectors/OktaConnector.js +123 -0
- package/dist/connectors/OktaSystemLogConnector.d.ts +12 -0
- package/dist/connectors/OktaSystemLogConnector.js +129 -0
- package/dist/connectors/OpsgenieConnector.d.ts +12 -0
- package/dist/connectors/OpsgenieConnector.js +70 -0
- package/dist/connectors/PagerDutyConnector.d.ts +12 -0
- package/dist/connectors/PagerDutyConnector.js +106 -0
- package/dist/connectors/PalantirConnector.d.ts +12 -0
- package/dist/connectors/PalantirConnector.js +95 -0
- package/dist/connectors/PaloAltoPrismaCloudConnector.d.ts +12 -0
- package/dist/connectors/PaloAltoPrismaCloudConnector.js +110 -0
- package/dist/connectors/PingFederateConnector.d.ts +12 -0
- package/dist/connectors/PingFederateConnector.js +97 -0
- package/dist/connectors/PostgreSQLCloudConnector.d.ts +12 -0
- package/dist/connectors/PostgreSQLCloudConnector.js +70 -0
- package/dist/connectors/PowerBIConnector.d.ts +12 -0
- package/dist/connectors/PowerBIConnector.js +95 -0
- package/dist/connectors/PrismaCloudConnector.d.ts +12 -0
- package/dist/connectors/PrismaCloudConnector.js +147 -0
- package/dist/connectors/QualysConnector.d.ts +12 -0
- package/dist/connectors/QualysConnector.js +96 -0
- package/dist/connectors/QualysScannerConnector.d.ts +12 -0
- package/dist/connectors/QualysScannerConnector.js +131 -0
- package/dist/connectors/QuickBooksConnector.d.ts +12 -0
- package/dist/connectors/QuickBooksConnector.js +97 -0
- package/dist/connectors/RabbitMQConnector.d.ts +12 -0
- package/dist/connectors/RabbitMQConnector.js +69 -0
- package/dist/connectors/RadwareConnector.d.ts +12 -0
- package/dist/connectors/RadwareConnector.js +94 -0
- package/dist/connectors/RedisCloudConnector.d.ts +12 -0
- package/dist/connectors/RedisCloudConnector.js +70 -0
- package/dist/connectors/RingCentralConnector.d.ts +12 -0
- package/dist/connectors/RingCentralConnector.js +94 -0
- package/dist/connectors/SAPSuccessFactorsConnector.d.ts +12 -0
- package/dist/connectors/SAPSuccessFactorsConnector.js +103 -0
- package/dist/connectors/SailPointConnector.d.ts +12 -0
- package/dist/connectors/SailPointConnector.js +97 -0
- package/dist/connectors/SalesforceConnector.d.ts +12 -0
- package/dist/connectors/SalesforceConnector.js +91 -0
- package/dist/connectors/SendGridConnector.d.ts +12 -0
- package/dist/connectors/SendGridConnector.js +69 -0
- package/dist/connectors/SentinelOneConnector.d.ts +12 -0
- package/dist/connectors/SentinelOneConnector.js +89 -0
- package/dist/connectors/ServiceNowConnector.d.ts +12 -0
- package/dist/connectors/ServiceNowConnector.js +123 -0
- package/dist/connectors/SlackConnector.d.ts +12 -0
- package/dist/connectors/SlackConnector.js +109 -0
- package/dist/connectors/SnowflakeConnector.d.ts +12 -0
- package/dist/connectors/SnowflakeConnector.js +105 -0
- package/dist/connectors/SnykConnector.d.ts +12 -0
- package/dist/connectors/SnykConnector.js +84 -0
- package/dist/connectors/SnykMonitorConnector.d.ts +12 -0
- package/dist/connectors/SnykMonitorConnector.js +131 -0
- package/dist/connectors/SophosConnector.d.ts +12 -0
- package/dist/connectors/SophosConnector.js +87 -0
- package/dist/connectors/SpinnakerConnector.d.ts +12 -0
- package/dist/connectors/SpinnakerConnector.js +70 -0
- package/dist/connectors/SplunkConnector.d.ts +12 -0
- package/dist/connectors/SplunkConnector.js +126 -0
- package/dist/connectors/StripeConnector.d.ts +12 -0
- package/dist/connectors/StripeConnector.js +97 -0
- package/dist/connectors/TableauConnector.d.ts +12 -0
- package/dist/connectors/TableauConnector.js +101 -0
- package/dist/connectors/TaniumConnector.d.ts +12 -0
- package/dist/connectors/TaniumConnector.js +97 -0
- package/dist/connectors/TeamCityConnector.d.ts +12 -0
- package/dist/connectors/TeamCityConnector.js +71 -0
- package/dist/connectors/TeamsConnector.d.ts +12 -0
- package/dist/connectors/TeamsConnector.js +96 -0
- package/dist/connectors/TenableIOConnector.d.ts +12 -0
- package/dist/connectors/TenableIOConnector.js +130 -0
- package/dist/connectors/TerraformCloudConnector.d.ts +12 -0
- package/dist/connectors/TerraformCloudConnector.js +106 -0
- package/dist/connectors/TravisCIConnector.d.ts +12 -0
- package/dist/connectors/TravisCIConnector.js +95 -0
- package/dist/connectors/TrendMicroConnector.d.ts +12 -0
- package/dist/connectors/TrendMicroConnector.js +85 -0
- package/dist/connectors/TwilioConnector.d.ts +12 -0
- package/dist/connectors/TwilioConnector.js +70 -0
- package/dist/connectors/VercelConnector.d.ts +12 -0
- package/dist/connectors/VercelConnector.js +70 -0
- package/dist/connectors/VultrConnector.d.ts +12 -0
- package/dist/connectors/VultrConnector.js +70 -0
- package/dist/connectors/WebexConnector.d.ts +12 -0
- package/dist/connectors/WebexConnector.js +94 -0
- package/dist/connectors/WizConnector.d.ts +12 -0
- package/dist/connectors/WizConnector.js +172 -0
- package/dist/connectors/WorkdayConnector.d.ts +12 -0
- package/dist/connectors/WorkdayConnector.js +100 -0
- package/dist/connectors/XeroConnector.d.ts +12 -0
- package/dist/connectors/XeroConnector.js +96 -0
- package/dist/connectors/ZapierConnector.d.ts +12 -0
- package/dist/connectors/ZapierConnector.js +70 -0
- package/dist/connectors/ZendeskConnector.d.ts +12 -0
- package/dist/connectors/ZendeskConnector.js +71 -0
- package/dist/connectors/ZenefitsConnector.d.ts +12 -0
- package/dist/connectors/ZenefitsConnector.js +93 -0
- package/dist/connectors/ZoomConnector.d.ts +12 -0
- package/dist/connectors/ZoomConnector.js +97 -0
- package/dist/connectors/ZscalerConnector.d.ts +12 -0
- package/dist/connectors/ZscalerConnector.js +97 -0
- package/dist/connectors/index.d.ts +150 -0
- package/dist/connectors/index.js +157 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.js +16 -0
- package/dist/index.test.d.ts +1 -0
- package/dist/index.test.js +139 -0
- package/dist/types.d.ts +57 -0
- package/dist/types.js +8 -0
- package/package.json +33 -0
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { IntegrationConnector, ConnectorConfig, EvidenceArtifact, IntegrationCapability, ComplianceFramework } from "../types.js";
|
|
2
|
+
export declare class TravisCIConnector implements IntegrationConnector {
|
|
3
|
+
readonly id = "travis-ci";
|
|
4
|
+
readonly name = "Travis CI";
|
|
5
|
+
readonly category: "ci_cd";
|
|
6
|
+
readonly authType: "api_key";
|
|
7
|
+
readonly capabilities: IntegrationCapability[];
|
|
8
|
+
readonly frameworks: ComplianceFramework[];
|
|
9
|
+
private fetchApi;
|
|
10
|
+
testConnection(config: ConnectorConfig): Promise<boolean>;
|
|
11
|
+
collectEvidence(config: ConnectorConfig): Promise<EvidenceArtifact[]>;
|
|
12
|
+
}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { hashEvidence, generateEvidenceId } from "../types.js";
|
|
2
|
+
const capabilities = [
|
|
3
|
+
{
|
|
4
|
+
id: "travis-builds",
|
|
5
|
+
name: "Build History",
|
|
6
|
+
description: "Fetch Travis CI build configurations and results",
|
|
7
|
+
evidenceCategories: ["change_management", "configuration"],
|
|
8
|
+
},
|
|
9
|
+
{
|
|
10
|
+
id: "travis-env",
|
|
11
|
+
name: "Environment Variables",
|
|
12
|
+
description: "Fetch encrypted environment variable configurations",
|
|
13
|
+
evidenceCategories: ["data_protection", "access_control"],
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
id: "travis-repos",
|
|
17
|
+
name: "Repository Settings",
|
|
18
|
+
description: "Fetch enabled repositories and branch settings",
|
|
19
|
+
evidenceCategories: ["access_control", "configuration"],
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
id: "travis-cron",
|
|
23
|
+
name: "Cron Jobs",
|
|
24
|
+
description: "Fetch scheduled build configurations",
|
|
25
|
+
evidenceCategories: ["change_management"],
|
|
26
|
+
},
|
|
27
|
+
];
|
|
28
|
+
export class TravisCIConnector {
|
|
29
|
+
id = "travis-ci";
|
|
30
|
+
name = "Travis CI";
|
|
31
|
+
category = "ci_cd";
|
|
32
|
+
authType = "api_key";
|
|
33
|
+
capabilities = capabilities;
|
|
34
|
+
frameworks = [
|
|
35
|
+
"SOC2",
|
|
36
|
+
"ISO27001",
|
|
37
|
+
"NIST_CSF",
|
|
38
|
+
];
|
|
39
|
+
async fetchApi(config, endpoint) {
|
|
40
|
+
const base = config.baseUrl || "https://api.travis-ci.com";
|
|
41
|
+
const resp = await fetch(`${base}${endpoint}`, {
|
|
42
|
+
headers: {
|
|
43
|
+
Authorization: `Token ${config.apiToken}`,
|
|
44
|
+
"Travis-API-Version": "3",
|
|
45
|
+
"Content-Type": "application/json",
|
|
46
|
+
},
|
|
47
|
+
});
|
|
48
|
+
if (!resp.ok)
|
|
49
|
+
throw new Error(`Travis CI API ${resp.status}: ${resp.statusText}`);
|
|
50
|
+
return (await resp.json());
|
|
51
|
+
}
|
|
52
|
+
async testConnection(config) {
|
|
53
|
+
try {
|
|
54
|
+
await this.fetchApi(config, "/repos");
|
|
55
|
+
return true;
|
|
56
|
+
}
|
|
57
|
+
catch {
|
|
58
|
+
return false;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
async collectEvidence(config) {
|
|
62
|
+
const artifacts = [];
|
|
63
|
+
const now = new Date().toISOString();
|
|
64
|
+
const repo = config.extra?.repo || "default/repo";
|
|
65
|
+
const builds = await this.fetchApi(config, `/repo/${repo.replace("/", "%2F")}/builds?limit=10`).catch(() => ({ builds: [] }));
|
|
66
|
+
artifacts.push({
|
|
67
|
+
id: generateEvidenceId(),
|
|
68
|
+
connectorId: this.id,
|
|
69
|
+
capabilityId: "travis-builds",
|
|
70
|
+
timestamp: now,
|
|
71
|
+
hash: hashEvidence(builds),
|
|
72
|
+
framework: "SOC2",
|
|
73
|
+
controlId: "CC8.1",
|
|
74
|
+
source: `travis-ci.com/${repo}`,
|
|
75
|
+
status: "partial",
|
|
76
|
+
data: { recentBuilds: builds.builds?.length || 0 },
|
|
77
|
+
metadata: { repo },
|
|
78
|
+
});
|
|
79
|
+
const settings = await this.fetchApi(config, `/repo/${repo.replace("/", "%2F")}/settings`).catch(() => ({}));
|
|
80
|
+
artifacts.push({
|
|
81
|
+
id: generateEvidenceId(),
|
|
82
|
+
connectorId: this.id,
|
|
83
|
+
capabilityId: "travis-repos",
|
|
84
|
+
timestamp: now,
|
|
85
|
+
hash: hashEvidence(settings),
|
|
86
|
+
framework: "ISO27001",
|
|
87
|
+
controlId: "A.6.2.1",
|
|
88
|
+
source: `travis-ci.com/${repo}/settings`,
|
|
89
|
+
status: "partial",
|
|
90
|
+
data: settings,
|
|
91
|
+
metadata: { repo },
|
|
92
|
+
});
|
|
93
|
+
return artifacts;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { IntegrationConnector, ConnectorConfig, EvidenceArtifact, IntegrationCapability, ComplianceFramework } from "../types.js";
|
|
2
|
+
export declare class TrendMicroConnector implements IntegrationConnector {
|
|
3
|
+
readonly id = "trendmicro";
|
|
4
|
+
readonly name = "Trend Micro";
|
|
5
|
+
readonly category: "endpoint";
|
|
6
|
+
readonly authType: "api_key";
|
|
7
|
+
readonly capabilities: IntegrationCapability[];
|
|
8
|
+
readonly frameworks: ComplianceFramework[];
|
|
9
|
+
private fetchApi;
|
|
10
|
+
testConnection(config: ConnectorConfig): Promise<boolean>;
|
|
11
|
+
collectEvidence(config: ConnectorConfig): Promise<EvidenceArtifact[]>;
|
|
12
|
+
}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { hashEvidence, generateEvidenceId } from "../types.js";
|
|
2
|
+
const capabilities = [
|
|
3
|
+
{
|
|
4
|
+
id: "trendmicro-endpoints",
|
|
5
|
+
name: "Endpoint Protection",
|
|
6
|
+
description: "Fetch Trend Micro endpoint security agent status and policy compliance",
|
|
7
|
+
evidenceCategories: ["endpoint_security", "posture_assessment"],
|
|
8
|
+
},
|
|
9
|
+
{
|
|
10
|
+
id: "trendmicro-detections",
|
|
11
|
+
name: "Threat Detections",
|
|
12
|
+
description: "Fetch threat detection events and malware quarantine events",
|
|
13
|
+
evidenceCategories: ["vulnerability_management", "monitoring"],
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
id: "trendmicro-network",
|
|
17
|
+
name: "Network Inspection",
|
|
18
|
+
description: "Fetch network inspection rules and IPS/IDS event summaries",
|
|
19
|
+
evidenceCategories: ["network_security", "configuration"],
|
|
20
|
+
},
|
|
21
|
+
];
|
|
22
|
+
export class TrendMicroConnector {
|
|
23
|
+
id = "trendmicro";
|
|
24
|
+
name = "Trend Micro";
|
|
25
|
+
category = "endpoint";
|
|
26
|
+
authType = "api_key";
|
|
27
|
+
capabilities = capabilities;
|
|
28
|
+
frameworks = ["SOC2", "ISO27001", "NIST_CSF", "HIPAA"];
|
|
29
|
+
async fetchApi(config, endpoint) {
|
|
30
|
+
const base = config.baseUrl || "https://app.deepsecurity.trendmicro.com/api";
|
|
31
|
+
const resp = await fetch(`${base}${endpoint}`, {
|
|
32
|
+
headers: {
|
|
33
|
+
Authorization: `ApiKey ${config.apiToken}`,
|
|
34
|
+
"Content-Type": "application/json",
|
|
35
|
+
},
|
|
36
|
+
});
|
|
37
|
+
if (!resp.ok)
|
|
38
|
+
throw new Error(`Trend Micro API ${resp.status}: ${resp.statusText}`);
|
|
39
|
+
return (await resp.json());
|
|
40
|
+
}
|
|
41
|
+
async testConnection(config) {
|
|
42
|
+
try {
|
|
43
|
+
await this.fetchApi(config, "/computers?expand=none&maxComputerCount=1");
|
|
44
|
+
return true;
|
|
45
|
+
}
|
|
46
|
+
catch {
|
|
47
|
+
return false;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
async collectEvidence(config) {
|
|
51
|
+
const artifacts = [];
|
|
52
|
+
const now = new Date().toISOString();
|
|
53
|
+
const computers = await this.fetchApi(config, "/computers?expand=none&maxComputerCount=100").catch(() => ({ computers: [] }));
|
|
54
|
+
const computerList = (computers.computers || []);
|
|
55
|
+
artifacts.push({
|
|
56
|
+
id: generateEvidenceId(),
|
|
57
|
+
connectorId: this.id,
|
|
58
|
+
capabilityId: "trendmicro-endpoints",
|
|
59
|
+
timestamp: now,
|
|
60
|
+
hash: hashEvidence({ computerCount: computerList.length }),
|
|
61
|
+
framework: "SOC2",
|
|
62
|
+
controlId: "CC6.8",
|
|
63
|
+
source: "trendmicro/computers",
|
|
64
|
+
status: computerList.length > 0 ? "compliant" : "unknown",
|
|
65
|
+
data: { endpointCount: computerList.length },
|
|
66
|
+
metadata: {},
|
|
67
|
+
});
|
|
68
|
+
const events = await this.fetchApi(config, "/events?maxCount=10").catch(() => ({ events: [] }));
|
|
69
|
+
const eventList = (events.events || []);
|
|
70
|
+
artifacts.push({
|
|
71
|
+
id: generateEvidenceId(),
|
|
72
|
+
connectorId: this.id,
|
|
73
|
+
capabilityId: "trendmicro-detections",
|
|
74
|
+
timestamp: now,
|
|
75
|
+
hash: hashEvidence({ eventCount: eventList.length }),
|
|
76
|
+
framework: "ISO27001",
|
|
77
|
+
controlId: "A.12.2.1",
|
|
78
|
+
source: "trendmicro/events",
|
|
79
|
+
status: eventList.length === 0 ? "compliant" : "non_compliant",
|
|
80
|
+
data: { recentEvents: eventList.length },
|
|
81
|
+
metadata: {},
|
|
82
|
+
});
|
|
83
|
+
return artifacts;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { IntegrationConnector, ConnectorConfig, EvidenceArtifact, IntegrationCapability, ComplianceFramework } from "../types.js";
|
|
2
|
+
export declare class TwilioConnector implements IntegrationConnector {
|
|
3
|
+
readonly id = "twilio";
|
|
4
|
+
readonly name = "Twilio";
|
|
5
|
+
readonly category: "communication";
|
|
6
|
+
readonly authType: "api_key";
|
|
7
|
+
readonly capabilities: IntegrationCapability[];
|
|
8
|
+
readonly frameworks: ComplianceFramework[];
|
|
9
|
+
private fetchApi;
|
|
10
|
+
testConnection(config: ConnectorConfig): Promise<boolean>;
|
|
11
|
+
collectEvidence(config: ConnectorConfig): Promise<EvidenceArtifact[]>;
|
|
12
|
+
}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { hashEvidence, generateEvidenceId } from "../types.js";
|
|
2
|
+
const capabilities = [
|
|
3
|
+
{
|
|
4
|
+
id: "twilio-accounts",
|
|
5
|
+
name: "Account Configuration",
|
|
6
|
+
description: "Fetch Twilio account details, subaccount hierarchy, and usage records",
|
|
7
|
+
evidenceCategories: ["configuration", "monitoring"],
|
|
8
|
+
},
|
|
9
|
+
{
|
|
10
|
+
id: "twilio-security",
|
|
11
|
+
name: "Security Settings",
|
|
12
|
+
description: "Fetch Twilio API key management, IP restrictions, and webhook security",
|
|
13
|
+
evidenceCategories: ["access_control", "secret_management"],
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
id: "twilio-communications",
|
|
17
|
+
name: "Communication Logs",
|
|
18
|
+
description: "Fetch SMS/voice message delivery status and error logs",
|
|
19
|
+
evidenceCategories: ["monitoring", "audit"],
|
|
20
|
+
},
|
|
21
|
+
];
|
|
22
|
+
export class TwilioConnector {
|
|
23
|
+
id = "twilio";
|
|
24
|
+
name = "Twilio";
|
|
25
|
+
category = "communication";
|
|
26
|
+
authType = "api_key";
|
|
27
|
+
capabilities = capabilities;
|
|
28
|
+
frameworks = ["SOC2", "ISO27001", "HIPAA"];
|
|
29
|
+
async fetchApi(config, endpoint) {
|
|
30
|
+
const base = config.baseUrl || "https://api.twilio.com/2010-04-01";
|
|
31
|
+
const auth = Buffer.from(`${config.clientId}:${config.clientSecret}`).toString("base64");
|
|
32
|
+
const resp = await fetch(`${base}${endpoint}`, {
|
|
33
|
+
headers: {
|
|
34
|
+
Authorization: `Basic ${auth}`,
|
|
35
|
+
"Content-Type": "application/json",
|
|
36
|
+
},
|
|
37
|
+
});
|
|
38
|
+
if (!resp.ok)
|
|
39
|
+
throw new Error(`Twilio API ${resp.status}: ${resp.statusText}`);
|
|
40
|
+
return (await resp.json());
|
|
41
|
+
}
|
|
42
|
+
async testConnection(config) {
|
|
43
|
+
try {
|
|
44
|
+
await this.fetchApi(config, "/Accounts.json?Limit=1");
|
|
45
|
+
return true;
|
|
46
|
+
}
|
|
47
|
+
catch {
|
|
48
|
+
return false;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
async collectEvidence(config) {
|
|
52
|
+
const artifacts = [];
|
|
53
|
+
const now = new Date().toISOString();
|
|
54
|
+
const account = await this.fetchApi(config, "/Account.json").catch(() => ({}));
|
|
55
|
+
artifacts.push({
|
|
56
|
+
id: generateEvidenceId(),
|
|
57
|
+
connectorId: this.id,
|
|
58
|
+
capabilityId: "twilio-accounts",
|
|
59
|
+
timestamp: now,
|
|
60
|
+
hash: hashEvidence(account),
|
|
61
|
+
framework: "SOC2",
|
|
62
|
+
controlId: "CC6.1",
|
|
63
|
+
source: "twilio/account",
|
|
64
|
+
status: "unknown",
|
|
65
|
+
data: { connected: true },
|
|
66
|
+
metadata: {},
|
|
67
|
+
});
|
|
68
|
+
return artifacts;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { IntegrationConnector, ConnectorConfig, EvidenceArtifact, IntegrationCapability, ComplianceFramework } from "../types.js";
|
|
2
|
+
export declare class VercelConnector implements IntegrationConnector {
|
|
3
|
+
readonly id = "vercel";
|
|
4
|
+
readonly name = "Vercel";
|
|
5
|
+
readonly category: "ci_cd";
|
|
6
|
+
readonly authType: "bearer_token";
|
|
7
|
+
readonly capabilities: IntegrationCapability[];
|
|
8
|
+
readonly frameworks: ComplianceFramework[];
|
|
9
|
+
private fetchApi;
|
|
10
|
+
testConnection(config: ConnectorConfig): Promise<boolean>;
|
|
11
|
+
collectEvidence(config: ConnectorConfig): Promise<EvidenceArtifact[]>;
|
|
12
|
+
}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { hashEvidence, generateEvidenceId } from "../types.js";
|
|
2
|
+
const capabilities = [
|
|
3
|
+
{
|
|
4
|
+
id: "vercel-projects",
|
|
5
|
+
name: "Vercel Projects",
|
|
6
|
+
description: "Fetch Vercel project configurations, domains, and deployment settings",
|
|
7
|
+
evidenceCategories: ["cloud_configuration", "ci_cd"],
|
|
8
|
+
},
|
|
9
|
+
{
|
|
10
|
+
id: "vercel-deployments",
|
|
11
|
+
name: "Deployment History",
|
|
12
|
+
description: "Fetch recent deployment history, build logs, and rollback status",
|
|
13
|
+
evidenceCategories: ["ci_cd", "change_management"],
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
id: "vercel-security",
|
|
17
|
+
name: "Security Headers",
|
|
18
|
+
description: "Fetch Vercel security headers, CSP policies, and firewall rules",
|
|
19
|
+
evidenceCategories: ["network_security", "configuration"],
|
|
20
|
+
},
|
|
21
|
+
];
|
|
22
|
+
export class VercelConnector {
|
|
23
|
+
id = "vercel";
|
|
24
|
+
name = "Vercel";
|
|
25
|
+
category = "ci_cd";
|
|
26
|
+
authType = "bearer_token";
|
|
27
|
+
capabilities = capabilities;
|
|
28
|
+
frameworks = ["SOC2", "ISO27001"];
|
|
29
|
+
async fetchApi(config, endpoint) {
|
|
30
|
+
const base = config.baseUrl || "https://api.vercel.com";
|
|
31
|
+
const resp = await fetch(`${base}${endpoint}`, {
|
|
32
|
+
headers: {
|
|
33
|
+
Authorization: `Bearer ${config.apiToken}`,
|
|
34
|
+
"Content-Type": "application/json",
|
|
35
|
+
},
|
|
36
|
+
});
|
|
37
|
+
if (!resp.ok)
|
|
38
|
+
throw new Error(`Vercel API ${resp.status}: ${resp.statusText}`);
|
|
39
|
+
return (await resp.json());
|
|
40
|
+
}
|
|
41
|
+
async testConnection(config) {
|
|
42
|
+
try {
|
|
43
|
+
await this.fetchApi(config, "/v9/projects?limit=1");
|
|
44
|
+
return true;
|
|
45
|
+
}
|
|
46
|
+
catch {
|
|
47
|
+
return false;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
async collectEvidence(config) {
|
|
51
|
+
const artifacts = [];
|
|
52
|
+
const now = new Date().toISOString();
|
|
53
|
+
const projects = await this.fetchApi(config, "/v9/projects?limit=100").catch(() => ({ projects: [] }));
|
|
54
|
+
const projectList = (projects.projects || []);
|
|
55
|
+
artifacts.push({
|
|
56
|
+
id: generateEvidenceId(),
|
|
57
|
+
connectorId: this.id,
|
|
58
|
+
capabilityId: "vercel-projects",
|
|
59
|
+
timestamp: now,
|
|
60
|
+
hash: hashEvidence({ projectCount: projectList.length }),
|
|
61
|
+
framework: "SOC2",
|
|
62
|
+
controlId: "CC8.1",
|
|
63
|
+
source: "vercel/projects",
|
|
64
|
+
status: "unknown",
|
|
65
|
+
data: { projectCount: projectList.length },
|
|
66
|
+
metadata: {},
|
|
67
|
+
});
|
|
68
|
+
return artifacts;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { IntegrationConnector, ConnectorConfig, EvidenceArtifact, IntegrationCapability, ComplianceFramework } from "../types.js";
|
|
2
|
+
export declare class VultrConnector implements IntegrationConnector {
|
|
3
|
+
readonly id = "vultr";
|
|
4
|
+
readonly name = "Vultr";
|
|
5
|
+
readonly category: "cloud_provider";
|
|
6
|
+
readonly authType: "bearer_token";
|
|
7
|
+
readonly capabilities: IntegrationCapability[];
|
|
8
|
+
readonly frameworks: ComplianceFramework[];
|
|
9
|
+
private fetchApi;
|
|
10
|
+
testConnection(config: ConnectorConfig): Promise<boolean>;
|
|
11
|
+
collectEvidence(config: ConnectorConfig): Promise<EvidenceArtifact[]>;
|
|
12
|
+
}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { hashEvidence, generateEvidenceId } from "../types.js";
|
|
2
|
+
const capabilities = [
|
|
3
|
+
{
|
|
4
|
+
id: "vultr-instances",
|
|
5
|
+
name: "Cloud Instances",
|
|
6
|
+
description: "Fetch Vultr compute instance configurations and status",
|
|
7
|
+
evidenceCategories: ["cloud_configuration", "infrastructure"],
|
|
8
|
+
},
|
|
9
|
+
{
|
|
10
|
+
id: "vultr-firewalls",
|
|
11
|
+
name: "Firewall Groups",
|
|
12
|
+
description: "Fetch firewall group rules and network access controls",
|
|
13
|
+
evidenceCategories: ["network_security", "access_control"],
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
id: "vultr-dns",
|
|
17
|
+
name: "DNS Domains",
|
|
18
|
+
description: "Fetch managed DNS domain configurations",
|
|
19
|
+
evidenceCategories: ["configuration", "infrastructure"],
|
|
20
|
+
},
|
|
21
|
+
];
|
|
22
|
+
export class VultrConnector {
|
|
23
|
+
id = "vultr";
|
|
24
|
+
name = "Vultr";
|
|
25
|
+
category = "cloud_provider";
|
|
26
|
+
authType = "bearer_token";
|
|
27
|
+
capabilities = capabilities;
|
|
28
|
+
frameworks = ["SOC2", "ISO27001", "NIST_CSF"];
|
|
29
|
+
async fetchApi(config, endpoint) {
|
|
30
|
+
const base = config.baseUrl || "https://api.vultr.com/v2";
|
|
31
|
+
const resp = await fetch(`${base}${endpoint}`, {
|
|
32
|
+
headers: {
|
|
33
|
+
Authorization: `Bearer ${config.apiToken}`,
|
|
34
|
+
"Content-Type": "application/json",
|
|
35
|
+
},
|
|
36
|
+
});
|
|
37
|
+
if (!resp.ok)
|
|
38
|
+
throw new Error(`Vultr API ${resp.status}: ${resp.statusText}`);
|
|
39
|
+
return (await resp.json());
|
|
40
|
+
}
|
|
41
|
+
async testConnection(config) {
|
|
42
|
+
try {
|
|
43
|
+
await this.fetchApi(config, "/accounts");
|
|
44
|
+
return true;
|
|
45
|
+
}
|
|
46
|
+
catch {
|
|
47
|
+
return false;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
async collectEvidence(config) {
|
|
51
|
+
const artifacts = [];
|
|
52
|
+
const now = new Date().toISOString();
|
|
53
|
+
const instances = await this.fetchApi(config, "/instances").catch(() => ({ instances: [] }));
|
|
54
|
+
const instanceList = (instances.instances || []);
|
|
55
|
+
artifacts.push({
|
|
56
|
+
id: generateEvidenceId(),
|
|
57
|
+
connectorId: this.id,
|
|
58
|
+
capabilityId: "vultr-instances",
|
|
59
|
+
timestamp: now,
|
|
60
|
+
hash: hashEvidence({ instanceCount: instanceList.length }),
|
|
61
|
+
framework: "SOC2",
|
|
62
|
+
controlId: "CC6.1",
|
|
63
|
+
source: "vultr/instances",
|
|
64
|
+
status: "unknown",
|
|
65
|
+
data: { instanceCount: instanceList.length },
|
|
66
|
+
metadata: {},
|
|
67
|
+
});
|
|
68
|
+
return artifacts;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { IntegrationConnector, ConnectorConfig, EvidenceArtifact, IntegrationCapability, ComplianceFramework } from "../types.js";
|
|
2
|
+
export declare class WebexConnector implements IntegrationConnector {
|
|
3
|
+
readonly id = "webex";
|
|
4
|
+
readonly name = "Cisco Webex";
|
|
5
|
+
readonly category: "communication";
|
|
6
|
+
readonly authType: "oauth2";
|
|
7
|
+
readonly capabilities: IntegrationCapability[];
|
|
8
|
+
readonly frameworks: ComplianceFramework[];
|
|
9
|
+
private fetchApi;
|
|
10
|
+
testConnection(config: ConnectorConfig): Promise<boolean>;
|
|
11
|
+
collectEvidence(config: ConnectorConfig): Promise<EvidenceArtifact[]>;
|
|
12
|
+
}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { hashEvidence, generateEvidenceId } from "../types.js";
|
|
2
|
+
const capabilities = [
|
|
3
|
+
{
|
|
4
|
+
id: "webex-meetings",
|
|
5
|
+
name: "Meeting Policies",
|
|
6
|
+
description: "Fetch Webex meeting security and lobby settings",
|
|
7
|
+
evidenceCategories: ["access_control", "data_protection"],
|
|
8
|
+
},
|
|
9
|
+
{
|
|
10
|
+
id: "webex-devices",
|
|
11
|
+
name: "Device Management",
|
|
12
|
+
description: "Fetch registered device compliance and firmware status",
|
|
13
|
+
evidenceCategories: ["endpoint", "configuration"],
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
id: "webex-users",
|
|
17
|
+
name: "User Provisioning",
|
|
18
|
+
description: "Fetch user accounts, roles, and license assignments",
|
|
19
|
+
evidenceCategories: ["access_control", "configuration"],
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
id: "webex-audit",
|
|
23
|
+
name: "Admin Audit",
|
|
24
|
+
description: "Fetch admin activity and configuration change logs",
|
|
25
|
+
evidenceCategories: ["monitoring", "access_control"],
|
|
26
|
+
},
|
|
27
|
+
];
|
|
28
|
+
export class WebexConnector {
|
|
29
|
+
id = "webex";
|
|
30
|
+
name = "Cisco Webex";
|
|
31
|
+
category = "communication";
|
|
32
|
+
authType = "oauth2";
|
|
33
|
+
capabilities = capabilities;
|
|
34
|
+
frameworks = [
|
|
35
|
+
"SOC2",
|
|
36
|
+
"ISO27001",
|
|
37
|
+
"NIST_CSF",
|
|
38
|
+
"HIPAA",
|
|
39
|
+
];
|
|
40
|
+
async fetchApi(config, endpoint) {
|
|
41
|
+
const base = config.baseUrl || "https://webexapis.com/v1";
|
|
42
|
+
const resp = await fetch(`${base}${endpoint}`, {
|
|
43
|
+
headers: {
|
|
44
|
+
Authorization: `Bearer ${config.apiToken}`,
|
|
45
|
+
"Content-Type": "application/json",
|
|
46
|
+
},
|
|
47
|
+
});
|
|
48
|
+
if (!resp.ok)
|
|
49
|
+
throw new Error(`Webex API ${resp.status}: ${resp.statusText}`);
|
|
50
|
+
return (await resp.json());
|
|
51
|
+
}
|
|
52
|
+
async testConnection(config) {
|
|
53
|
+
try {
|
|
54
|
+
await this.fetchApi(config, "/people/me");
|
|
55
|
+
return true;
|
|
56
|
+
}
|
|
57
|
+
catch {
|
|
58
|
+
return false;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
async collectEvidence(config) {
|
|
62
|
+
const artifacts = [];
|
|
63
|
+
const now = new Date().toISOString();
|
|
64
|
+
const people = await this.fetchApi(config, "/people?max=100").catch(() => ({ items: [] }));
|
|
65
|
+
artifacts.push({
|
|
66
|
+
id: generateEvidenceId(),
|
|
67
|
+
connectorId: this.id,
|
|
68
|
+
capabilityId: "webex-users",
|
|
69
|
+
timestamp: now,
|
|
70
|
+
hash: hashEvidence(people),
|
|
71
|
+
framework: "SOC2",
|
|
72
|
+
controlId: "CC6.1",
|
|
73
|
+
source: "webex/people",
|
|
74
|
+
status: people.items?.length > 0 ? "compliant" : "unknown",
|
|
75
|
+
data: { userCount: people.items?.length || 0 },
|
|
76
|
+
metadata: {},
|
|
77
|
+
});
|
|
78
|
+
const devices = await this.fetchApi(config, "/devices").catch(() => ({ items: [] }));
|
|
79
|
+
artifacts.push({
|
|
80
|
+
id: generateEvidenceId(),
|
|
81
|
+
connectorId: this.id,
|
|
82
|
+
capabilityId: "webex-devices",
|
|
83
|
+
timestamp: now,
|
|
84
|
+
hash: hashEvidence(devices),
|
|
85
|
+
framework: "ISO27001",
|
|
86
|
+
controlId: "A.6.2.1",
|
|
87
|
+
source: "webex/devices",
|
|
88
|
+
status: devices.items?.length > 0 ? "compliant" : "non_compliant",
|
|
89
|
+
data: { registeredDevices: devices.items?.length || 0 },
|
|
90
|
+
metadata: {},
|
|
91
|
+
});
|
|
92
|
+
return artifacts;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { IntegrationConnector, ConnectorConfig, EvidenceArtifact, IntegrationCapability, ComplianceFramework } from "../types.js";
|
|
2
|
+
export declare class WizConnector implements IntegrationConnector {
|
|
3
|
+
readonly id = "wiz";
|
|
4
|
+
readonly name = "Wiz";
|
|
5
|
+
readonly category: "cloud_provider";
|
|
6
|
+
readonly authType: "oauth2";
|
|
7
|
+
readonly capabilities: IntegrationCapability[];
|
|
8
|
+
readonly frameworks: ComplianceFramework[];
|
|
9
|
+
private getToken;
|
|
10
|
+
testConnection(config: ConnectorConfig): Promise<boolean>;
|
|
11
|
+
collectEvidence(config: ConnectorConfig): Promise<EvidenceArtifact[]>;
|
|
12
|
+
}
|