API specification
HTTP mapping
Implementers SHOULD provide the endpoints listed below so Corev-CLI can perform pull and push operations correctly.
| HTTP Method | Endpoint URL | Description | 
|---|---|---|
| GET | /configs/:project/latest | Returns the latest configuration | 
| POST | /configs/:project | Uploads a new or updated configuration | 
File naming
All configuration files SHOULD follow the naming convention below:
<project>@<version>.json
Example:
configs/atlas@1.0.0.json
JSON schema
Every configuration file SHOULD conform to the JSON schema below, which precisely defines the required structure and fields:
{
	"type": "object",
	"properties": {
		"name": {
			"type": "string"
		},
		"version": {
			"type": "string"
		},
		"config": {
			"type": "object",
			"additionalProperties": true
		}
	},
	"required": ["name", "version", "config"],
	"additionalProperties": false
}
API contract (Recommended)
Sections 1, 2, 3, and 4 below describe a recommended API contract for compatibility with Corev-CLI. The specification is divided into two main parts: the methods (belonging to the ConfigService interface) and the dictionaries (Configuration and UploadResponse).
1 The getLatestConfig() method
Belongs to the Corev ConfigService conformance class.
Expects a single argument, projectName, which identifies the project. It returns a promise that resolves with a Configuration object containing the latest configuration for that project.
partial interface ConfigService {
  Promise<Configuration> getLatestConfig(DOMString projectName);
};
Behavior:
- When this method is invoked, the implementation MUST retrieve the latest configuration from storage (or memory) and return it as a Configurationobject.
- If the project is not found, the promise SHOULD reject with an appropriate error.
2 The uploadConfig() method
Belongs to the Corev ConfigService conformance class. Expects two arguments:
- projectName— a DOMString specifying the project.
- config— a- Configurationobject to be stored or updated.
partial interface ConfigService {
  Promise<UploadResponse> uploadConfig(DOMString projectName, Configuration config);
};
Behavior:
- When this method is invoked, the implementation MUST store or update the configuration for the specified project, then return an UploadResponseindicating success or error.
- If a duplicate or lower version of a configuration is not allowed by policy, this method SHOULD reject with a 409 Conflict-like error or return an appropriate error response in theUploadResponse.
3 The Configuration dictionary
Represents the structure of a project configuration object.
dictionary Configuration {
  required DOMString name;      // Project name (e.g., "atlas")
  required DOMString version;   // Version string (e.g., "1.0.0")
  required any config;          // JSON object with configuration data
};
Usage notes:
- nametypically matches the project identifier (e.g., "atlas").
- versioncan be any string representing a version (e.g., "1.0.0", "2025.04.13-alpha", etc.).
- configis an arbitrary JSON-like structure containing key-value pairs relevant to the configuration.
4 The UploadResponse dictionary
Defines the response returned after a successful (or failed) configuration upload.
dictionary UploadResponse {
  required DOMString status;    // "success" or "error"
  DOMString? message;           // Optional message with details
};
Usage notes:
- statusMUST be either- "success"or- "error".
- messageMAY be provided to give further context, such as error details or confirmations.