1.0.5 • Published 4 months ago

@simpleview/camber-client v1.0.5

Weekly downloads
-
License
MIT
Repository
-
Last release
4 months ago

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]
	});

	// authorize the service_account return the token
	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
				asset_folder
			}
			timezone
			mfa_required
			created
			updated
		}
		count
	`,
	context: {
		token // from serviceAccountToken call
	}
});

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 // from serviceAccountToken call
	}
});

CamberPrefix.products

This method wraps the camber.products GraphQL query.

const result = camber.products({
	fields: `
		docs {
			key
			name
			description
		}
		count
	`,
	context: {
		token // from serviceAccountToken call
	}
});

Related Documentation

Troubleshooting

For any assistance please reach out on the Microservices Support Teams channel.

1.0.2

8 months ago

1.0.5

4 months ago

1.0.4

5 months ago

1.0.3

8 months ago

1.0.1

10 months ago

1.0.0

10 months ago