Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

The API Release Management process targets Process describes the creation of public releases of (pre-)releases of API versions , aligned with the Commonalities and ICM release in through the API lifecycle, and for a given meta-release.

In the For a meta-release process, this API release process describes how to prepare the public Release Process targets the release of an API versionpublic API versions, aligned with the corresponding Commonalities and ICM public versions.

Info
titleIMPORTANT

API release numbers are decoupled from API version numbers.

API releases are just numbered sequentially, while API versions follow the API versioning guidelines.

...

Table of Contents

Definitions

TermDefinition

pre-release

The

release of an API version consists in the creation of a GitHub release of the API's repository, with a release tag and (optionally for alpha) a release package. A release can be created for any alpha, release-candidate or public API version. No releases can be created for wip API versions.

pre-release

The term pre-release is used to refer to the release of any of the alpha or release-candidate API versions.

NOTE: all

term pre-release is used to refer to the GitHub release of any of the alpha or release-candidate API versions.

NOTE: pre-releases are not meant to be included in a meta-release. All pre-releases are publicly available in the CAMARA GitHub and can be used AT THE USER'S OWN RISK, as changes

may happen to such API versions without notice.

alpha release

The term alpha release is used to refer to the release of an alpha API version.

release candidate

The term release candidate is used to refer to the release of a release-candidate API version.

public release

The term public release is used to refer to the

may happen to such API versions without notice.

release

A release refers to the GitHub release of a public API version.

It can have the status initial or stable.

initial public release

An initial public release

Releases may be proposed as part of a meta-release.

release of initial public API

Initial public API versions only exists for new APIs. It concerns

the release of

public APIs versions with x = 0 (0.y.z without version extension).

A public

release

API version is called "initial" to indicate that the API version has not yet reached full maturity, but is considered stable enough to  be proposed for use in

commercial

applications. However, the user shall be

informed

aware that subsequent versions of this API

versions

may require code changes to their applications.

Initial public

releases

API versions can be

  • released
at any time (
  • outside the meta-release process
)
  • in order to allow for rapid evolution
of APIs
  • .
published
  • released as part of a meta-release, after which it is expected that in the next meta-release this API version becomes stable.

release of stable public

release

API

A stable public

release

API version concerns an API version

released after its stability has been demonstrated through Stable public releases concern the API versions

together with all required release assets. They are included in a meta-release.

Stable public API versions are recommended for use in commercial applications. The user can expect that subsequent public API versions will be backward-compatible with the one they are using, unless explicitly announced otherwise.

meta-release

A meta-release is a set of public

of API versions released

API version releases published together at a given point in time (Spring and Fall).

All API versions of a given meta-release shall be aligned to the

public

releases of the Commonalities and Identity and Consent Management (ICM) documentation included in that same meta-release.

maintenance release

The term maintenance release is used to refer to the release of a patch update of a released public API version.

release tag

A release tag is a GitHub tag placed on the main or a maintenance branch that identifies a release of the API version's repository.
release package
A release package is a zip file of the repository created using the GitHub release mechanism together with the release tag. It contains a snapshot of the full API Sub Project repository with the content indicated by the release tag
A release package is a zip file of the GitHub repository created using the GitHub release mechanism together with the release tag. It contains a snapshot of the full API Sub Project repository with the content marked with the release tag.
GitHub releaseThe term GitHub release is used to refer to the combination of a release tag and, optionally, a release package created using the GitHub release feature for an API repository. A GitHub release can be created for any alpha, release-candidate or public API version. No GitHub releases shall be created for wip API versions.
API release trackerAn API release tracker is a LF Confluence wiki page that provides the visibility on the progress of the
release
(pre-)releases of a given API version. Each API version under release by an API Sub Project shall have its tracker under their API Sub Project's API Release Tracking page.

API releases - overview

To prepare the release of a public API version, at least two intermediate API versions must be (pre-)released as follows:

  • at M3: the first release-candidate API version implementing the defined API scope for the release (achieved through one or more alpha releases), agreed stable for functional testing and aligned to the alpha releases of Commonalities and ICM (M1).
  • at M4: the final release-candidate API version ready for meta-release approval, aligned to the final release candidates of Commonalities and ICM (M2), input to subsequent public release.

...

Technically, an API release is created using GitHub features and requires:

  • A GitHub issue for the release.
  • A "release PR" associated to this issue.
  • If required (see table below), a GitHub release package (zip file of the whole API Sub Project repository).
  • A GitHub release tag with the release number "rx.y" (see below).

Example of the use of the API release process

...

  • copy the API-Readiness-Checklist.md file(s) to the API Sub Project repository in the home/code folder.
  • rename the file to include the prefix <API name> plus a dash ("-") e.g. quality-on-demand-API-Readiness-Checklist.md
  • provide each release asset as indicated in the column corresponding to the release type (alpha, release-candidate, initial public release or stable public release)
  • for an available asset
    • update the Status column with "Y" (yes) if the release asset is available or fulfilled in the current release, or "N" (no) otherwise. Example: an intermediate alpha release or release candidate may not yet provide all mandatory release assets for the release type.
    • update the Comments column with the link to the asset  (if applicable), and any other additional comments as needed
  • NOTE: the checklists of a (final) release candidate of an API version and the checklist of its subsequent public release are the same, while additional release assets are required for a subsequent stable public release of the API version.

Checklist explanation

The following table explains each of the release assets expected to be delivered in the API release.

Nr

API release assets

Explanation

1

API definition

This is the OAS API definition file (following the https://spec.openapis.org/oas/v3.0.3 format). It shall be present in the home/code/API_definition folders of the API Sub Project and validated using the linting rules in point 6. 

2

Design guidelines from Commonalities applied

This refers to the guidelines in the API-Design-Guidelines.md document.

A subset of these design guidelines have been mapped to corresponding linting rules provided by Commonalities, that can be executed against the OAS API definition file if linting is enabled for the Sub Project.

For the design guidelines that cannot (yet) be verified by linting rules, the API Sub Project team shall ensure coverage manually. Ideally, a checklist of such guidelines would be provided by the Commonalities team.  In particular, API Sub Project shall verify data type alignment to the Commonalities/artifacts/CAMARA_common.yaml

3

Guidelines from ICM applied

This refers to the guidelines described in the documents available in the IdentityAndConsentManagement / documents folder corresponds to a set of linting rules provided by ICM that are successfully executed against the OAS API definition file. 

Other guidelines that cannot be verified by linting rules shall be covered manually by the API Sub project team. Ideally, a checklist of such guidelines would be provided by the ICM team.

4

API versioning convention applied

This shall be checked through a linting rule added to the Commonalities rule set on the format of the version field in the OAS API definition file. API versioning is described in the API-Design-Guidelines.md document.

5

API documentation

The API specification shall include all the needed documentation. It shall include the section on security as described in the API Design Guidelines

API documentation beyond the one embedded in the API definition file, shall be located in the home/documentation/API_documentation folder of the API Sub Project. It shall follow the Commonalities/documentation/API-DocumentationTemplate.md 

6

User Stories

User Stories (it is recommended to have at least 2) need to be documented by the API Sub Project team. User Stories shall follow the template: Userstory-template.md and be located in the home/documentation/API_documentation folder of the API Sub Project. Please note that User Stories shall be provided when an API is first submitted to the CAMARA API backlog.

7

Basic API test cases & documentation

At least one Gherkin feature file is provided for the API in the Test_definitions folder of the API Sub Project covering sunny day scenarios and main error cases (of course you may provide more if available). Details can be found in the API Testing Guidelines (in Commonalities GitHub). Basic tests are sufficient for an initial public-release.

8

Enhanced API test cases & documentation

Gherkin feature files are provided for the API in the Test_definitions folder of the API Sub Project covering sunny and rainy day scenarios.  Details can be found in the API Testing Guidelines (in Commonalities GitHub). Enhanced tests are required for a stable public-release.

9

Test result statement

A statement in a discussion issue of the API Sub Project by at least one of the API Sub Project members that the Gherkin feature files have been successfully executed against their (lab) API implementation. 

10

API release numbering conventions applied

This is verified using the information on the release tracker page. The API release numbering is described here: 

11

Change log updated

Change log need to be provided following the template and are located here: link tbd .

12

Previous public release was certified

The previous public API version had at least 1 certified implementation. Reference to at least 1 certification of the API is provided on the GSMA API market launch and certification page.

...

Note 2: the addition of a Security review release asset beyond the Commonalities linting rules is for further study.

Release checklist

The following table indicates the assets of the API readiness checklist that need to be provided for the release of an API version depending on 

...