The Open Platform for Enterprise Content

Publish licensed content using open standards with clear rights, versioning, provenance and lifecycle metadata — to humans and AI agents in real time.

Try a content merge

  • In production since 2010
  • JSON Schema, REST & GraphQL
  • OAuth 2.0 & SAML 2.0
  • Gitana Cloud (US & EU) or self-managed
Hamlet store:book
master Live

Example node · illustrative data

{
  "_type": "store:book",
  "title": "Hamlet",
added by the store:licensed feature  "rights": {
    "license": "Editorial, non-commercial",
    "holder": "Example Press",
    "territories": ["US", "CA"]
  },provenance on every change  "_system": {
    "changeset": "41:3b5d8e17a40c92e6d518",
    "modified_by": "editor"
  }}

Checked against store:book on every write, with rights and provenance on the node itself.

Organizations using Gitana include
AstraZeneca Under Armour MassMutual Oxford University Press Alight Cricket Wireless Hotelplan Everyday Health MBC Group European Respiratory Society

Model content the way your business actually works.

Gitana stores content as a graph of typed nodes and associations, defined with JSON Schema. Features inject shared properties and behaviors across types, and every write is validated against the compiled model before it is accepted.

Rules bind to events such as “before a node is updated”, and the same content answers full-text search, query, graph traversal and GraphQL.

Show the store:book typeHide the store:book type
store:bookType
{
  "_qname": "store:book",
  "_type": "d:type",
  "_parent": "n:node",
  "properties": {
    "title": { "type": "string" },
    "summary": { "type": "string" }
  },
  "mandatoryFeatures": {
    "store:licensed": {}
  }
}

The type behind the Hamlet node above. mandatoryFeatures requires every book to carry rights.

Example definition. Types are JSON Schema documents, stored and versioned like the content they describe.

Every change is a changeset. Every team gets a branch.

Gitana versions content the way source control versions code. Editors work in isolated workspaces, compare and merge with visual differencing, and promote approved releases on a schedule — with a complete, restorable history of every edit.

  • Changesets with point-in-time comparison and restore
  • Branches and workspaces for parallel work without collisions
  • Merge with conflict detection and field-level resolution
  • Releases scheduled and promoted across editorial, staging and live

How branching works

Merge spring-catalog into master 1 conflict
master spring-catalog

masterspring-catalog

rights.territories changed on both branches. The differences are marked.
master

["US", "CA"]

Drops EU
spring-catalog

["US", "EU"]

Drops CA
combined

["US", "CA", "EU"]

Keeps both

Next changeset: 44Choose a version to create the merge changeset on master.

Example merge, modeled on Gitana’s conflict resolution view. Choose a version to resolve it.

Rights, provenance and lifecycle travel with every node.

The metadata that makes content trustworthy is part of the content itself, so every application, site and AI agent that consumes it receives the same rights and history.

To an AI agent approved data set · master

Can our EU library portal show the Hamlet summary?

No. Example Press licenses the summary for non-commercial use, such as a library portal, in cleared territories only. The EU is not a cleared territory on master.

Resolve the merge above to change this answer

Hamletstore:book
License
Editorial, non-commercial
Territories
US, CA
Changeset
41:3b5d8e17
Release
Pending merge
Show the REST responseHide the REST response
To an application GET /repositories/$REPO/branches/master/nodes/a1f3c9e27b5d40e86c12
{
  "_type": "store:book",
  "title": "Hamlet",
  "summary": "Hamlet is a tragedy by William Shakespeare…",
rights  "rights": {
    "license": "Editorial, non-commercial",
    "holder": "Example Press",
    "territories": ["US", "CA"]
  },provenance  "_system": {
    "changeset": "41:3b5d8e17a40c92e6d518",
    "modified_by": "editor"
  }}
Example: the Hamlet node from above, cited by an agent and delivered over the REST API. Illustrative data. How agents use governed content · Back to the merge

Run this merge on your own content with an engineer.

Request a demo

Your cloud or ours. Check our work either way.

Run the same platform as a managed service or inside your own infrastructure, and let security and platform teams verify how it is built and shipped without waiting for a sales call.

Gitana Cloud
Fully managed in North America (Virginia) or Europe (Frankfurt), with upgrades, backups and monitoring handled for you.
Self-managed
Docker images with Kubernetes and Helm guidance for Amazon EKS and ECS, Azure AKS, Google GKE or on-premises.
Signed images, SBOM and VEX
Every release image is signed with Sigstore cosign and carries CycloneDX and SPDX bills of materials, VEX statements and scan results.
Security and status
Hosting, encryption, identity, backups and penetration testing in one overview. Gitana Cloud runs in ISO 27001-certified data centers.
Show the cosign commandsHide the cosign commands
Verify a release image
# $VERSION is any release listed under Releases
cosign verify --key gitana-cosign.pub \
  docker.io/cloudcms/api-server:$VERSION

The following checks were performed on each of these signatures:
  - The cosign claims were validated
  - The signatures were verified against the specified public key
Extract its CycloneDX SBOM
# SBOMs are attested per architecture: arm64 here
cosign verify-attestation --key gitana-cosign.pub \
  --type cyclonedx \
  docker.io/cloudcms/api-server:$VERSION-arm64 \
  | jq -r '.payload' | base64 -d | jq '.predicate' \
  > api-server.cdx.json

Supported by the people who built it.

Gitana customers work directly with the engineers behind the platform — from architecture and content modeling through migration, upgrades and day-to-day operations. Independent and profitable since 2010, we are built for long-term partnerships.

I'm continually blown away by how far above and beyond you all go to support us. Absolutely the best customer service I've ever received.
The Sydney Children's Hospitals Network
Alana McDonald Senior Librarian, The Sydney Children's Hospitals Network

Open APIs, with the tools your teams already use.

Every capability is available through a REST API, GraphQL and SDKs for popular languages and frameworks.

  • Node.js
  • Java
  • Python
  • PHP
  • Ruby
  • Go
  • React
  • Next.js
  • Vue

Plus integrations for AWS, Azure, Google Cloud, Okta and Ping Identity.

REST API
# Content licensed for the US, on master
# $API is https://api.cloudcms.com (Gitana Cloud)
curl -X POST \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"rights.territories": "US"}' \
  "$API/repositories/$REPO/branches/master/nodes/query"
Response
{
  "rows": [{
    "_doc": "a1f3c9e27b5d40e86c12",
    "title": "Hamlet",
    "rights": {
      "license": "Editorial, non-commercial",
      "territories": ["US", "CA"]
    }
  }],
  "size": 1, "total_rows": 1, "offset": 0
}
Node.js driver
branch.queryNodes({ "rights.territories": "US" })
    .each(function() {
        console.log(this.title, this.rights.license);
    });

See Gitana with your own content

Bring one of your own content types. A solutions engineer will model it, branch it and deliver it with you, hosted in our cloud or running in yours. The same call covers architecture, security and deployment questions.