Skip to main content

README

⚙️ CCC: Customer Controlled Configuration

CCC sketch

🥅 Goal of the service

CCC provides a platform for managing customer's configuration.

It acts as a backend for UIs specialized in managing specific kinds of configuration (Checkout config, Payment config, Receipt Config, PLU list, etc.).

Diagram

Values can be set on specific targets, including: tenant, business unit, workstation, etc.

If the value does not exist on requested target, it is retrieved from the parent target, more info in the inheritance section.

🤔 How do I use this?

As an end user you will be interacting with specific microfrontends specialized on one or more kinds of configuration.

CCC service is working in the background to give UI you are using access to the values. You are not going to use this service directly.

🧑‍💻 How do I integrate with this?

Before integrating with the service you should be familiar with the following concepts:

✍️ Defining a new config kind

Configuration kinds are defined in your clan's common repository, preferably in customer-config directory. To sync it with CCC you need to setup workflow which uses extenda/actions/customer-config GitHub action.

Before defining a kind you will need to define the JSON schema for its values. Hii Retail JSON Schema Registry is used to store schemas.

Examples:

WARNING: Before defining a new config kind make sure you've read gotchas when defining config kinds.

🎛️ Getting and setting values

If you are developing a configuration microfrontend you will be interacting with CCC using the REST API.

API is available on this URL and here is the OpenAPI schema.

Note: when you set a value, it does not change immediately, rather it is processed in the background and might take some time depending on how many dependent values need to be updated, see [inheritence][config-inheritence].

👀 Listening to value changes

If you want to listen to configuration value updates you need to subscribe to our public Pub/Sub topic.

To subscribe to the topic follow this link and here is the AsyncAPI schema.