camber-client
Client for communication with the camber
GraphQL system.
It is build in TypeScript and has one peer dependency of @simpleview/sv-graphql-client
.
OS Support
The expectation is that this application will be installed in Linux using sv-kubernetes.
Prerequisites
Install
Using npm:
npm install @simpleview/camber-client
Using yarn:
yarn install @simpleview/camber-client
Update
To update to the latest version, rerun the install command.
Authentication Requirements
Interactions with camber
require authentication as a Simpleview user.
Use a Google Service Account when interacting with the service on behalf of a product.
const { AuthPrefix } = require("@simpleview/sv-auth-client");
const { GraphServer } = require("@simpleview/sv-graphql-client");
async function serviceAccountToken() {
const service_account = JSON.parse(SERVICE_ACCOUNT_JSON);
const { auth } = new GraphServer({
graphUrl: AUTH_GRAPHQL_URL,
prefixes: [AuthPrefix]
});
const { token } = await auth.login_service_account({
input: {
email: service_account.client_email,
private_key: service_account.private_key
},
fields: `
success
token
`
});
return token;
}
The token
should be added to the context
for each function call.
Implementation & Usage
To see the input parameters and output fields of an endpoint, view the Schema in the GraphQL Explorer at https://graphql.simpleviewinc.com/ for the corresponding GraphQL query.
CamberPrefix
CamberPrefix
can be loaded into the sv-graphql-client
GraphServer
to use as a client library for accessing camber
in GraphQL.
JavaScript:
const { CamberPrefix } = require("@simpleview/camber-client");
const { GraphServer } = require("@simpleview/sv-graphql-client");
module.exports = new GraphServer({ graphUrl: GRAPHQL_URL, prefixes: [CamberPrefix] });
TypeScript:
import { CamberPrefix } from "@simpleview/camber-client";
import { GraphServer } from "@simpleview/sv-graphql-client";
export default new GraphServer({ graphUrl: GRAPHQL_URL, prefixes: [CamberPrefix] });
Where you are making server requests:
JavaScript:
const { camber } = require("./camberGraphServer");
TypeScript:
import { camber } from "./camberGraphServer";
CamberPrefix.accounts
This method wraps the camber.accounts
GraphQL query.
const result = camber.accounts({
fields: `
docs {
acct_id
label
name
external_id
logo_url
sendgrid {
api_key
transaction_pool
marketing_pool
}
cloudinary {
cloud_name
api_key
api_secret
}
timezone
mfa_required
created
updated
}
count
`,
context: {
token
}
});
CamberPrefix.feature_sets_upsert
This method wraps the camber.feature_sets_upsert
GraphQL mutation.
const result = camber.feature_sets_upsert({
fields: "success message",
input: {
product_key: "APEX",
groups: [
{
key: "MODULES",
features: [
{
key: "ACCOUNTS",
name: "Accounts"
},
{
key: "CONTACTS",
name: "Contacts"
}
]
},
{
key: "INTEGRATIONS",
features: [
{
key: "ACTON",
name: "Act-On"
},
{
key: "ZAPIER",
name: "Zapier"
}
]
},
{
key: "PLUGINS",
features: [
{
key: "PLUGINONE",
name: "Plugin One"
}
]
},
{
key: "ADDONS",
features: [
{
key: "ADDONONE",
name: "Addon One"
}
]
}
]
}
context: {
token
}
});
CamberPrefix.products
This method wraps the camber.products
GraphQL query.
const result = camber.products({
fields: `
docs {
key
name
description
}
count
`,
context: {
token
}
});
Related Documentation
Troubleshooting
For any assistance please reach out on the camber Slack channel.