Skip to content

ICM lifecycle and API compatibility governance - for review - #545

Open
tanjadegroot wants to merge 26 commits into
mainfrom
docs/icm-lifecycle-compatibility
Open

ICM lifecycle and API compatibility governance - for review#545
tanjadegroot wants to merge 26 commits into
mainfrom
docs/icm-lifecycle-compatibility

Conversation

@tanjadegroot

@tanjadegroot tanjadegroot commented May 26, 2026

Copy link
Copy Markdown
Collaborator

What type of PR is this?

Add one of the following kinds:

  • documentation

What this PR does / why we need it:

This PR introduces a guideline for ICM version lifecycle governance and definition of ICM-compatibility of API versions. This allows CAMARA to provide a clear and governed way to handle ICM version dependency of APIs both for API developers in CAMARA, and for API Providers and API Consumers in their API deployments.

In a nutshell, this guideline proposes to introduce the following:

  • ICM-compatibility: the alignment of APIs with information defined by an ICM version as follows:

    1. ICM design info - API versions need to respect this in their definition - recorded in the ICM-compatibility matrix
    2. ICM deployment info - API Providers and API Consumers need to respect this in their API deployment (contractual agreement)
  • x-camara-min-icm: an additional field in the API definition file (yaml) indicating the lowest ICM version this API version is designed to work with.

  • ICM version lifecycle states (Supported, Deprecated, Retired, Revoked): governance, the impact of state changes on ICM-compatibility of APIs, and resulting actions by API designers, API Providers and API Consumers.

  • ICM compatibility matrix (generated): a Release Management asset that records which API version is ICM-compatible with which ICM version

The proposal is open for review by all and particular by the ICM and Commonalities teams.

Which issue(s) this PR fixes:

Fixes: #351

Special notes for reviewers:

For the list of open issues at the end - I am working on a Wiki page with some proposals will include the link here as soon as available.

* docs: draft ICM lifecycle and API compatibility governance

Draft response to the ICM WG request to Release Management (ICM#324, ICM#340,
RM#351/#459) defining governance for ICM version evolution and its dependencies
with CAMARA API versions.

Built on a three-contract model (API Consumer ↔ API, API Consumer ↔ AS, ICM ↔
API), semver discipline at ICM 1.0.0, per-major lifecycle tiers
(Preferred/Supported/Deprecated/Retired), a flat x-camara-min-icm-version
declaration in API specs, a derived compatibility matrix, and explicit
recognition of aggregators as ecosystem normalizers.

* docs: simplify concepts and tighten floor rule per review

Collapse to one defined ICM-compatibility concept (API spec relative to ICM
version), use 'state' instead of 'tier' for ICM major lifecycle, require
lowest Supported ICM version as the publication-time floor, and distinguish
technical compatibility from CAMARA compliance.

* docs: V2 working merge — two-aspect ICM-compatibility, fold in review

- §3 restructured around two distinct aspects of ICM-compatibility:
  API version (design-time, CAMARA-governed via Commonalities) and
  deployment (runtime, API-Provider-governed). Explicit ICM →
  Commonalities → API definitions path captured in §3.4.

- §6.1 state model recast as a four-column table (state × ICM version ×
  API version × API deployment). States apply per ICM version with major
  as the primary grain. Revoked added as a terminal exceptional state.
  Preferred kept as a label (deployment recommendation only).

- API spec field is `x-camara-min-icm` (no `-version` suffix). §7.2
  rule includes a third operand: the ICM floor required by the declared
  Commonalities version.

- §10 cascade section dropped — its consequences are now captured by
  the four-column state table; remaining unique point on API-lifecycle
  independence moved to §6.1 as a note. §7.3 (multi-major declaration
  field) also dropped; cross-major compatibility is handled solely by
  §4 governance assessment.

- §6.4 introduces breaking-change tables (design info and deployment
  info) as ICM release-note stubs.

- §14 open items reworked: added cross-major assessment process and
  timing, Provider deployment timeline after Preferred designation, and
  ICM ↔ Commonalities coupling.

- Glossary aligned with WG review; SemVer capitalization consistent
  throughout; MUSTs scope-clarified for CAMARA-governance reach.

* docs: drop Preferred label per WG discussion

Tanja's reply on PR #497 confirms dropping the Preferred concept entirely.
Migration timing on the deployment side is governed by the lifecycle state
transitions (Supported → Deprecated → Retired window), decoupled from
meta-release cadence.

Changes:
- Remove the Preferred glossary entry and the Preferred paragraph in §6.1.
- §6.2: reword the row labels and notes so timing triggers off the
  publication of a newer Supported major rather than off a Preferred-label
  transition; reword the concurrent-support requirement accordingly.
- §8 item 1: API Providers MUST implement the latest published Supported
  major ICM version (instead of 'the version holding the Preferred label').
- §14: drop the now-redundant open item on Provider deployment timeline
  after Preferred designation; covered by item 1 (exact durations).

* Update documentation/SupportingDocuments/icm-lifecycle-and-compatibility.md

Co-authored-by: Tanja de Groot <87864067+tanjadegroot@users.noreply.github.com>

* docs: apply round-A review feedback (terminology + per-row content)

Wording polish from Tanja's 2026-05-18 review: standardise on
'API version ICM-compatibility' / 'API deployment ICM-compatibility'
throughout; rename headings (§3.3, §5, §7.2, §7.3, §8, §10,
§11.1-§11.3); reorder §5 SemVer bullets major → minor → patch;
update lifecycle-state table rows; drop §10.3 (folded into §10.1/10.2);
reword §6.2 governance parameters; add 'documented by Release Management'
intro to §13.

Structural changes (merge §4 → §7, §6 transitions subsection split,
§12 lifecycle column) and pushback items left in 23 open threads.

* docs: merge §4 into §6.1 + renumber sections

§4 (Minimum ICM version) folded into §6.1 of the renamed §6 (API version
ICM-compatibility - details). Floor declaration, three bullets, cross-major
governance assessment, and example consolidated into a single subsection.
Sections §5..§14 renumber down to §4..§13; all cross-refs updated.

* docs: collapse §5.4 + §5.5 into §5.4 Release notes

Current §5.4 (Publication of state) and §5.5 (release-note change tables)
combined under a single §5.4 "ICM version - Release notes" parent with
§5.4.1 (Publication of lifecycle state) and §5.4.2 (ICM version change
tables) as sub-subsections. §13 item 10 cross-ref updated to §5.4.2.

* docs: substantive corrections + drop §8 Aggregator + drop Appendix B

- §5.1 Revoked row: broaden 'a later minor or patch version' to
  'another (earlier or later) minor or patch version' to allow rollback.
- §7.1 item 3: remove the 'info.description template mandated by
  Commonalities' clause from the Provider discovery channels
  (the template does not advertise the deployed ICM version).
- §4 trailer ('transition to 1.0.0 should coincide with a scope-baseline
  review...') folded into §12 item 2 (Transition to ICM 1.0.0).
- §5.3 governance-parameters trailer: annotated with HTML comment marker
  for removal when WG agrees.
- §8 Aggregator role removed — no normative content. §9..§13 renumbered
  to §8..§12; all cross-refs updated.
- Appendix B removed.

* docs: editorial cleanup pass

- §6.2 floor formula commentary: drop 'latest' and 'major' qualifiers
  on 'always raises its x-camara-min-icm to a Supported ICM version'.
  Remove Tanja's TBC meta-marker.
- §5.4.1 machine-readable schema: tighten 'may be defined later' to
  'must be available' (the §6.3 validation rule depends on it).
- §6.3 validation: add explicit dependency note pointing at §5.4.1.
- §9.1 ICM-compatibility formula: add () around the AND triple; fix
  unmatched ')' typo.
- §11 line 317: 'ICM-compatibility changes' → 'ICM-compatibility
  authorizations' (matches glossary §2).
- §5.1 Revoked row note and §7.1 provider-compliance line: drop
  redundant 'major' qualifier (applies to any ICM version).

* docs: §2 glossary + §3 polish from Tanja's earlier-round review

- §2 glossary:
  - ICM deployment info: broaden scope to include design time, not
    only runtime, since Providers and Consumers design their
    implementations against the target ICM version.
  - API version ICM-compatibility: tie the property to the
    x-camara-min-icm field where the floor is declared.
  - 'Deployment ICM-compatibility' → 'API deployment ICM-compatibility'
    to match the prefix used throughout the body.
  - ICM-compatibility umbrella: name the two members explicitly
    (API version + API deployment ICM-compatibility) instead of the
    abstract 'aspects' shorthand.
- §3 heading: drop the '— two aspects, two responsibilities' subtitle.
- §3 intro paragraph: name ICM design info and ICM deployment info
  upfront, hooking into the §3.1 / §3.2 subsections.
- §3.1 'Owned and governed by CAMARA' bullet: keep 'codified by';
  add trailing clarifier '… by following these guidelines.'
- §3.1 second bullet: 'Signaled by x-camara-min-icm declared in' →
  'Declared via x-camara-min-icm in'.

* TdG comment upto section 5.4

I could not commit to a new branch and do a PR: error message: 'There was an error committing your changes: File could not be edited'

* TdG updates to section 6

* TdG section 7 updates

* TdG updates sections 8 and 9

Updated sections on ICM version release cadence and compatibility matrix for clarity and precision.

* tdg comments sections 10 and 11

inverted order of old sections 10 and 11

* TdG comments sections 12 and Appendix A

* TdG - few miscellaneous updates

* docs: typo + inconsistency fixes

* docs: two more typo fixes

* Apply final round of suggestions from code review as agreed in RM call

Co-authored-by: Herbert Damker <herbert.damker@telekom.de>

---------

Co-authored-by: Tanja de Groot <87864067+tanjadegroot@users.noreply.github.com>
@tanjadegroot tanjadegroot changed the title docs: ICM lifecycle and API compatibility governance draft (#497) ICM lifecycle and API compatibility governance - for review May 26, 2026
@tanjadegroot

Copy link
Copy Markdown
Collaborator Author

Hi ICM team, @camaraproject/identity-and-consent-management_codeowners , @camaraproject/identity-and-consent-management_maintainers,

please review this PR and provide your comments / questions.

On the section "Open Issues" you can also add your thoughts in the Wiki here: ICM lifecycle - open issues (WIP)

@sebdewet sebdewet left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice documentation, few minors comments

Comment thread documentation/SupportingDocuments/icm-lifecycle-and-compatibility.md Outdated
Comment thread documentation/SupportingDocuments/icm-lifecycle-and-compatibility.md Outdated
Comment thread documentation/SupportingDocuments/icm-lifecycle-and-compatibility.md Outdated
Comment thread documentation/SupportingDocuments/icm-lifecycle-and-compatibility.md Outdated
Comment thread documentation/SupportingDocuments/icm-lifecycle-and-compatibility.md Outdated
Comment thread documentation/SupportingDocuments/icm-lifecycle-and-compatibility.md Outdated
Comment thread documentation/SupportingDocuments/icm-lifecycle-and-compatibility.md Outdated
Comment thread documentation/SupportingDocuments/icm-lifecycle-and-compatibility.md Outdated
Comment thread documentation/SupportingDocuments/icm-lifecycle-and-compatibility.md Outdated
Comment thread documentation/SupportingDocuments/icm-lifecycle-and-compatibility.md Outdated
partially addressed, some are addressed in the Wiki first
@ToshiWakayama-KDDI

Copy link
Copy Markdown

Hi @tanjadegroot,

Thank you for putting together this excellent document. Apologies for the late comment.

I have a quick question to clarify my understanding regarding the "exact durations", specifically this statement:
"Total/maximum compatibility period of an ICM version: 30 months / 2.5 years."

I assume this does not mean that an operator / API provider is forced to upgrade all of their implemented APIs within 2.5 years. Is that correct?

My understanding is that even if an operator implemented an API 2.5 years ago, as long as that older version of the API supports the latest ICM version, it can continue to be used. The ICM compatibility matrix would manage this kind of API-to-ICM version support.

I hope my understanding is correct, as forcing an upgrade of all implemented APIs within a 2.5-year timeframe would be too short for most operators.

Thanks.

@tanjadegroot

Copy link
Copy Markdown
Collaborator Author

Hi @tanjadegroot,

Thank you for putting together this excellent document. Apologies for the late comment.

Hi @ToshiWakayama-KDDI,

thanks :-) and thanks for your question, never to late !

I have a quick question to clarify my understanding regarding the "exact durations", specifically this statement: "Total/maximum compatibility period of an ICM version: 30 months / 2.5 years."

I assume this does not mean that an operator / API provider is forced to upgrade all of their implemented APIs within 2.5 years. Is that correct?

Correct: no one can force an operator to upgrade. However, operators are expected to upgrade to a Supported ICM version before their current ICM version is Retired. Else they will loose the "CAMARA ICM-compatible" label of their API deployment (but no impact on actual functioning of their current deployment).

Please be aware that the durations currently specified (18 months for Supported and 12 months for Deprecated) are proposals only, and are up for discussion. So your comment is very timely :-)

My understanding is that even if an operator implemented an API 2.5 years ago, as long as that older version of the API supports the latest ICM version, it can continue to be used. The ICM compatibility matrix would manage this kind of API-to-ICM version support.

Yes, if that API version supports the latest ICM version and that ICM version is implemented by the operator, then their API deployment is ICM-compatible per the compatibility matrix.

However, the compatibility matrix does not contain Retired ICM versions, unless decided by an explicit exception.
It is expected that operator upgrade to a Supported ICM version once their current version becomes Deprecated (12 months before Retirement).

We can consider 2 cases:

  • Case 1: after 2.5 years, the ICM version is Retired, but an operator continues to run this Retired ICM version with the API versions compatible to it. The Retirement state of this ICM version does not mean that this API deployment will no longer work. However, it means that this operator can no longer claim that their API deployment is ICM-compatible according to CAMARA guidelines, unless a specific exception was decided to extend ICM-compatibility for the involved API versions and this retired ICM version for a specific time period. Disclaimer: We still need to define in more detail the ICM-compatibility exception process and identify the valid reasons to allow the exception(s).

  • Case 2: During Deprecation period (12 months), the operator upgrades their ICM deployment to a newer ICM version (or, if they support 2 ICM versions in parallel, a new one is added and the oldest one is withdrawn)

    • Deployed APIs that are not impacted by the new ICM version can continue to run. They will be ICM-compatible with the newer ICM version in case of minor or patch updates of the ICM version. In case of a major update of the ICM version, Governance needs to declare that this API version is ICM-compatible with this newer ICM version and add it to the compatibility matrix. Standard updates of the compatibility matrix is part of the Signal meta-release process.
    • Deployed APIs that have a dependency on the newer ICM version would need to upgrade to a newer API version that is ICM-compatible with this newer ICM version.
    • Disclaimer: the duration of the Deprecation period is up for discussion.

I hope my understanding is correct, as forcing an upgrade of all implemented APIs within a 2.5-year timeframe would be too short for most operators.

It sounds like you would want the Deprecated period to be longer than 12 months.
What would be a reasonable duration in your opinion ? both for Supported and for Deprecation periods ?

Thanks.

I hope this helps, but please don't hesitate if you have more questions/comments.

@hdamker in case you want to comment

@ToshiWakayama-KDDI

Copy link
Copy Markdown

Hi @tanjadegroot , @hdamker , all,

Since there are no other comments on the duration topic so far, I would like to share further feedback based on our internal discussions (as I originally initiated this topic). Apologies for the delayed comment. I hope commenting here (rather than directly editing the Wiki page) is the correct way.

After discussing this with our API business team, KDDI does not have a strict requirement for the exact duration. We understand the benefit of implementing and launching newer versions as early as possible. However, from an operational perspective, having an API live in production for less than 3 years seems a bit short.

Let me illustrate our concern with a typical scenario starting from 2027, based on the current proposal (18 months Supported + 12 months Deprecated = 30 months Total):

A Typical Scenario (Current 30-month rule):

  • [Release in 2027] Q2 2027: Signal27 released -> Q4 2027: Sync27 released.
  • [Implementation] Q2 2028: An operator launches Sync27 APIs in production (utilizing their 2028 budget).
  • [Release in 2028] Q2 2028: Signal28 released -> Q4 2028: Sync28 released.
  • [Release in 2029] Q2 2029: Signal29 released -> Q4 2029: Sync29 released.
  • [Deprecation] Q4 2029: Signal27 becomes Deprecated (18 months after Signal28 was released in Q2 2028).
  • [Release in 2030] Q2 2030: Signal30 released -> Q4 2030: Sync30 released.
  • [Retirement] Q4 2030: Signal27 becomes Retired (30 months after Signal28 was released).

Our Observations on this scenario:
In this scenario, the Sync27 APIs launched in Q2 2028 are forced to retire by Q4 2030. This means the API's actual live lifespan is only 2.5 years, which is too short for operators.
Furthermore, at the retirement timing (Q4 2030), the operator must replace Sync27 APIs. However, Sync30 APIs cannot realistically be the candidate for this replacement because they have just been released, and operators typically want to avoid the potential risks of initial patch releases. They would be forced to migrate to older Sync28 or Sync29 APIs instead.

Our Proposal: A 6-month extension to the Supported period
We propose extending the lifecycle to 36 months in total:

  • Supported period: 24 months (2 years)
  • Deprecated period: 12 months (1 year)
    (Total: 36 months / 3 years)

Benefits of this Proposal:
If we apply this 6-month extension to the scenario above, the mandatory replacement of Sync27 APIs would happen in Q2 2031.
This ensures the Sync27 APIs can be live in production for a full 3 years.
By Q2 2031, Sync30 APIs will have been out for about 6 months, meaning the risk of early patch releases is significantly reduced. They become a stable, viable candidate for the migration.

I would appreciate it if the community could consider this 36-month lifecycle.

@jpengar

jpengar commented Jul 1, 2026

Copy link
Copy Markdown

@camaraproject/release-management_maintainers How can we conclude this topic in @tanjadegroot absence? Is the Release Management WG going to take up the matter?

From the ICM's perspective, we were expecting to review and approve the agreed updates in PR #545 (https://lf-camaraproject.atlassian.net/wiki/spaces/CAM/pages/880934924/2026-06-17+ICM+Minutes). This was in preparation for the first publication of the document following ICM approval.

@tanjadegroot

Copy link
Copy Markdown
Collaborator Author

@jpengar Hi Jesus & team, apologies for the interrupt. I am now able to reconnect again and will progress the issue as we have discussed. I am targetting the next ICM meeting if OK for you.

@tanjadegroot

Copy link
Copy Markdown
Collaborator Author

Hi @tanjadegroot , @hdamker , all,

Since there are no other comments on the duration topic so far, I would like to share further feedback based on our internal discussions (as I originally initiated this topic). Apologies for the delayed comment. I hope commenting here (rather than directly editing the Wiki page) is the correct way.

After discussing this with our API business team, KDDI does not have a strict requirement for the exact duration. We understand the benefit of implementing and launching newer versions as early as possible. However, from an operational perspective, having an API live in production for less than 3 years seems a bit short.

Let me illustrate our concern with a typical scenario starting from 2027, based on the current proposal (18 months Supported + 12 months Deprecated = 30 months Total):

A Typical Scenario (Current 30-month rule):

  • [Release in 2027] Q2 2027: Signal27 released -> Q4 2027: Sync27 released.
  • [Implementation] Q2 2028: An operator launches Sync27 APIs in production (utilizing their 2028 budget).
  • [Release in 2028] Q2 2028: Signal28 released -> Q4 2028: Sync28 released.
  • [Release in 2029] Q2 2029: Signal29 released -> Q4 2029: Sync29 released.
  • [Deprecation] Q4 2029: Signal27 becomes Deprecated (18 months after Signal28 was released in Q2 2028).
  • [Release in 2030] Q2 2030: Signal30 released -> Q4 2030: Sync30 released.
  • [Retirement] Q4 2030: Signal27 becomes Retired (30 months after Signal28 was released).

Our Observations on this scenario: In this scenario, the Sync27 APIs launched in Q2 2028 are forced to retire by Q4 2030. This means the API's actual live lifespan is only 2.5 years, which is too short for operators. Furthermore, at the retirement timing (Q4 2030), the operator must replace Sync27 APIs. However, Sync30 APIs cannot realistically be the candidate for this replacement because they have just been released, and operators typically want to avoid the potential risks of initial patch releases. They would be forced to migrate to older Sync28 or Sync29 APIs instead.

Our Proposal: A 6-month extension to the Supported period We propose extending the lifecycle to 36 months in total:

  • Supported period: 24 months (2 years)
  • Deprecated period: 12 months (1 year)
    (Total: 36 months / 3 years)

Benefits of this Proposal: If we apply this 6-month extension to the scenario above, the mandatory replacement of Sync27 APIs would happen in Q2 2031. This ensures the Sync27 APIs can be live in production for a full 3 years. By Q2 2031, Sync30 APIs will have been out for about 6 months, meaning the risk of early patch releases is significantly reduced. They become a stable, viable candidate for the migration.

I would appreciate it if the community could consider this 36-month lifecycle.

Hi Toshi,
My apologies for the delay in responding due to connectivity problems last week.

Thank you much for this great input. It looks very reasonable to me.

I propose we take the decision on your proposal at the next ICM meeting, so others can still react before that.

If you allow me I will use your above text to create an example in the document under review.

Thanks !

Updated governance parameters for ICM lifecycle states, changing the duration of the Supported state from 18 months to 24 months. Added an example of ICM lifecycle state evolution and API deployment across meta-releases.
Clarify language regarding ICM releases and state transitions.

@jpengar jpengar left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@jpengar Hi Jesus & team, apologies for the interrupt. I am now able to reconnect again and will progress the issue as we have discussed. I am targetting the next ICM meeting if OK for you.

Perfect — thank you so much, @tanjadegroot !. Sorry for the late response, but I've been out of the office the last couple of weeks. The next ICM meeting is next week, so there's plenty of time.

I think the agreed pending actions on the document are summarised well here:
https://lf-camaraproject.atlassian.net/wiki/spaces/CAM/pages/880934924/2026-06-17+ICM+Minutes.

The minutes from the last meeting that you didn't manage to attend can be found here:
https://lf-camaraproject.atlassian.net/wiki/spaces/CAM/pages/913571872/2026-07-01+ICM+Minutes

If those pending actions are implemented in the PR, I think we will be in a position to review the changes and approve the PR from the ICM's perspective at next week's ICM meeting. At least I would provide my approval, as I'm already more than OK with it.

Comment thread documentation/SupportingDocuments/icm-lifecycle-and-compatibility.md Outdated
@tanjadegroot

Copy link
Copy Markdown
Collaborator Author

@jpengar Hi Jesus, working on both today.

Updated the tables following Jesus' Wiki proposal.
Added lifecycle state table for ICM release notes 

Track of ICM releases sofar

Example of ICM version override
Added a table of contents
Clarified the types of ICM-compatibility exceptions and their documentation requirements.
Added a section detailing actions to maintain ICM-compatibility, including a table outlining the relationship between meta-releases, ICM versions, and lifecycle states for API designers, providers, and consumers.
Updated version and status to reflect latest draft for ICM WG discussion.

@jpengar jpengar left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Generally speaking, I think the content of the proposal looks good. I therefore approve it in advance. I have included some editorial changes for your consideration @tanjadegroot


The two classes of changes are not necessarily related. For example, a change in ICM deployment info MAY (1) or MAY NOT (2) lead to a change of API design info, e.g.

1. a new auth flow impacts the API design info as a new type of credential/token needs to be introduced in the API definition (change of ICM deployment info leads to change of ICM design info)

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
1. a new auth flow impacts the API design info as a new type of credential/token needs to be introduced in the API definition (change of ICM deployment info leads to change of ICM design info)
1. a new security scheme impacts the API design info as a new `securitySchemes` needs to be introduced in the API definition (change of ICM deployment info leads to change of ICM design info)

This is not accurate. In general, a new OAuth flow introduced by ICM does not affect the API specification. To provide a better example, we could say that ICM introduces new security scheme, changes the mandatory ICM info.description template or changes the scope format as mentioned in other parts of the document.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Corrected

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@jpengar One question still on this one: the intention of the first example was to show that an ICM deployment info change may impact ICM design info. Would the following additions in bold be correct ? if not I will just leave it as is.

  1. a new security scheme, required by a new auth flow or by a new behaviour of an existing auth flow, impacts the API design info as a new securitySchemes item needs to be introduced in the API definition (change in ICM deployment info leads to change in ICM design info)

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

Comment thread documentation/SupportingDocuments/icm-lifecycle-and-compatibility.md Outdated

This guideline defines lifecycle management of Identity and Consent Management (ICM) versions and how CAMARA APIs declare and maintain compatibility with them. It defines under what rules API versions and ICM versions can co-evolve while still providing clear compatibility guarantees.

The guideline recognizes operational reality: API Providers offer the same API version against multiple ICM versions, and API Consumers require an API version and an ICM version as part of a single usage contract — if either aspect changes in a way that affects them, their implementation must adapt.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
The guideline recognizes operational reality: API Providers offer the same API version against multiple ICM versions, and API Consumers require an API version and an ICM version as part of a single usage contract — if either aspect changes in a way that affects them, their implementation must adapt.
The guideline recognizes operational reality: API Providers offer the same API version against multiple ICM versions, and API Consumers require an API version and an ICM version as part of a single usage contract — if either aspect changes in a way that affects them, their implementation must adapt.
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in [RFC 2119](https://www.rfc-editor.org/rfc/rfc2119).

This change requires the words 'must', 'should', etc. to be capitalised throughout the document. This is just an editorial matter and does not affect content approval.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done

Comment thread documentation/SupportingDocuments/icm-lifecycle-and-compatibility.md Outdated
Comment thread documentation/SupportingDocuments/icm-lifecycle-and-compatibility.md Outdated
Comment thread documentation/SupportingDocuments/icm-lifecycle-and-compatibility.md Outdated
Comment thread documentation/SupportingDocuments/icm-lifecycle-and-compatibility.md Outdated
Comment thread documentation/SupportingDocuments/icm-lifecycle-and-compatibility.md Outdated
Comment thread documentation/SupportingDocuments/icm-lifecycle-and-compatibility.md Outdated
Comment thread documentation/SupportingDocuments/icm-lifecycle-and-compatibility.md Outdated
@tanjadegroot

Copy link
Copy Markdown
Collaborator Author

@jpengar, all,

I incorporated all comments from Jesus except one on the MUST, SHOULD reference + capitalization that I will still shortly.

I rewroted the example section 3.8 on the lifecycle state durations and Provider impacts: ICM version being valid for 3 years leads to actual API deployment lifespan being valid for 2 years (not 3 as was wrongly stated before in line 411).

API deployment realistically targets 6 months after their release and hence 12 months after the corresponding ICM version release of those APIs.

@ToshiWakayama-KDDI, all: please check that this is still OK and inline with your expectations.

@jpengar

jpengar commented Jul 30, 2026

Copy link
Copy Markdown

@tanjadegroot and all, one of the action items from yesterday's ICM meeting was to compile a list of ICM-impactable design-info elements. Please see the list I have compiled below of what ICM has defined so far. Please let me know if I have missed anything.

plus some additional changes on the side
adjusted the section 3 introduction to better fit the new content. some duplication wit the glossary section could be remove (shorten glossary)
@tanjadegroot

Copy link
Copy Markdown
Collaborator Author

@jpengar looks good ! thanks !

One suggestion:

  • I would point the first 2 links to artefact file here where the reference templates are now stored, rather than to the sample-service.yaml.

Also added the CAMARA:MANDATORY:identifying-phone-number-from-access-token also from ICM I guess ?

Please check my propose update in intro of section 3 in commit 5c9df39

WDYT ?

@jpengar

jpengar commented Jul 31, 2026

Copy link
Copy Markdown

@jpengar looks good ! thanks !

One suggestion:

  • I would point the first 2 links to artefact file here where the reference templates are now stored, rather than to the sample-service.yaml.

Also added the CAMARA:MANDATORY:identifying-phone-number-from-access-token also from ICM I guess ?

@tanjadegroot Yes, good catch! I agree with your suggestion. I've updated my previous comment to reflect this.

Please check my propose update in intro of section 3 in commit 5c9df39

WDYT ?

LGTM. I agree, but take a look at the index and the numbers of the subsections. They should start from 3.1, but currently start from 3.2. Consequently, the links in the index are broken.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Enabling a minimum ICM version for forward compatibility across APIs versions

6 participants