Content Creation API

Content Creation API (CCA) is an API that is used by Naviga's Content Creation Tools (CCT), but it is also meant to be used by customers and their own solutions.
On a basic level, CCA is layer above the editorial content repository, i.e. Open Content. Note that this does not mean that CCA mimics all the feature of Open Content but adds support for a new document format, NavigaDoc (see below), impose validations and restrictions on which document types that are handled as part of our editorial ecosystem. CCA simplifies the requests, validates and enrich (when necessary) the requests to the repository. Further more, CCA decouples the clients form the repository, i.e. changes in the repository API or behavior does not necessarily affect the clients of CCA.
The format used by CCA is NavigaDoc but the documents are stored in XML (NewsML) in Open Content. CCA makes the transformation between NavigaDoc and XML when writing and reading the documents. In the documentation of NavigaDoc, the supported document types are also specified.
In addition to documents, CCA exposes functionality for uploading and downloading files. CCA processes the uploaded files, creating artifacts depending on type of file being uploaded. Typically, CCA extracts metadata from the uploaded file and creates a NavigaDoc document with this metadata. The created artifacts from the upload can then be fetched using CCA.
CCA is a "software as a service" hosted on Amazon Elastic Container Service (ECS) and is built using Go programming language. It uses the Twirp framework which is a simple RPC framework built on the Protobuf protocol (supports both JSON and Protobuf messages). It makes use of Navigas single sign on service Naviga ID.
The configuration for each customer (which repository to use, customer S3 buckets to use etc.) is based on organisational belonging. CCA uses the organisation in the Naviga ID token in order to route each requests.
The CCA Client is the official Go client for CCA, but the client repository includes API declarations that can be used for anyone wishing to create a CCA client for another language.
Last modified 18d ago