infrahub-sdk
v0.0.9
Published
A client SDK for the Infrahub API.
Readme
infrahub-sdk-typescript
A TypeScript SDK for interacting with the Infrahub API.
Installation
npm install infrahub-sdkUsage
import { InfrahubClient, gql, InfrahubClientOptions } from 'infrahub-sdk';
const options: InfrahubClientOptions = {
address: "https://demo.infrahub.app",
token: "your-api-token"
}
console.log('Executing GraphQL query...');
const client = new InfrahubClient(options);
const listDevices = gql`
query MyQuery {
InfraDevice {
edges {
node {
display_label
}
}
}
}
`;
const usersData = await client.executeGraphQL(listDevices);TLS/SSL Configuration
When connecting to Infrahub instances with custom, self-signed, or expired certificates, you can configure TLS options:
Handling Certificate Errors
If you encounter certificate errors such as:
certificate has expiredself-signed certificateunable to verify the first certificateUNABLE_TO_VERIFY_LEAF_SIGNATURE
You can resolve these by configuring the TLS options as shown below.
Disable Certificate Verification (for development/testing)
This is the recommended approach for handling expired certificates in development/testing environments:
import { InfrahubClient, InfrahubClientOptions } from 'infrahub-sdk';
const options: InfrahubClientOptions = {
address: "https://infrahub.example.com",
token: "your-api-token",
tls: {
rejectUnauthorized: false
}
}
const client = new InfrahubClient(options);Important Notes:
- Setting
rejectUnauthorized: falsedisables ALL certificate validation - This bypasses checks for expired, self-signed, and invalid certificates
- Warning: Never use this in production environments as it makes your connection vulnerable to man-in-the-middle attacks
- Only use this for development, testing, or when connecting to trusted internal servers
Example: See examples/expired-certificate-example.ts for a complete working example.
Troubleshooting
If you're still experiencing certificate errors after setting rejectUnauthorized: false:
- Verify the configuration is being applied: Make sure you're creating the client with the TLS options
- Check for multiple client instances: Ensure all instances use the same TLS configuration
- Network/Proxy Issues: If you're behind a proxy, you may need additional configuration
- Node.js Version: Ensure you're using Node.js 14 or later
Use Custom CA Certificate
import fs from 'fs';
const options: InfrahubClientOptions = {
address: "https://infrahub.example.com",
token: "your-api-token",
tls: {
ca: fs.readFileSync('/path/to/ca-certificate.pem')
}
}
const client = new InfrahubClient(options);Mutual TLS (Client Certificate Authentication)
import fs from 'fs';
const options: InfrahubClientOptions = {
address: "https://infrahub.example.com",
token: "your-api-token",
tls: {
ca: fs.readFileSync('/path/to/ca-certificate.pem'),
cert: fs.readFileSync('/path/to/client-cert.pem'),
key: fs.readFileSync('/path/to/client-key.pem')
}
}
const client = new InfrahubClient(options);Development
- Build:
npm run build - Test:
npm test
License
Apache License 2.0
