diff --git a/models/src/main/thrift/content/v1.thrift b/models/src/main/thrift/content/v1.thrift index 99eefd3..7f8c32d 100644 --- a/models/src/main/thrift/content/v1.thrift +++ b/models/src/main/thrift/content/v1.thrift @@ -1980,7 +1980,23 @@ struct ContentChannel { struct Content { /* - * The id of this item of content: this should always be the path to the item on www.theguardian.com + * The CAPI id of this item of content: once the content is launched, this value will not change, so for + * all content in our Live CAPI system, this value is immutable while the content is live. + * + * Although it's probably best to think of the CAPI id as an opaque value (we shouldn't derive any meaning from it, + * let alone rely on it being a 'path' value), it _does_ take the value of the *initial* path of the URL of the + * item when published to www.theguardian.com. It's worth noting that with the introduction of 'Evolving URLs' + * functionality to the Guardian CMS in 2020, the URL path of a live published piece of Guardian content *can* be + * changed by Editorial Staff. In this case, in the Content API, the content's webUrl will change, but the CAPI id + * will *not*. + * + * Additional points: + * + * - In our internal Preview CAPI service, the CAPI id is *not* fixed until the content is launched. + * - The CAPI id for a live piece of content _can_ change in the rare case that it is taken-down after + * launch, has its path altered (perhaps for legal reasons) and is then republished. Note that this maintains + * the rule that the CAPI id is immutable while content is live, the content has to undergo two state + * transitions (live to draft, to live again) in order for the CAPI id to change. */ 1: required string id