Link and Contact
Website |
Support |
Copyright © Calypso Networks Association, https://calypsonet.org.
This specification is licensed under the Creative Commons Attribution-NoDerivatives 4.0 International (CC BY-ND 4.0).
You are free to share — copy and redistribute this document in any medium or format for any purpose, even commercially — under the following terms:
-
Attribution — You MUST give appropriate credit to the Calypso Networks Association, provide a link to the license, and indicate if changes were made. You MAY do so in any reasonable manner, but not in any way that suggests the Calypso Networks Association endorses you or your use.
-
NoDerivatives — If you remix, transform, or build upon this document, you MAY NOT distribute the modified material.
No additional restrictions — You MAY NOT apply legal terms or technological measures that legally restrict others from doing anything the license permits.
Implementation grant — The NoDerivatives condition above applies to this specification document only — its text, tables and diagrams. It does not restrict the use of the technical information the document contains. The Calypso Networks Association hereby grants everyone an irrevocable, worldwide, royalty-free permission to use the information contained in this specification to design, develop, and distribute software implementations of this API, in any programming language, under the license of their choice.
The full license text is available at https://creativecommons.org/licenses/by-nd/4.0/.
1. Abstract
This document is the official technical specification of the Terminal Definitions API standardised by the Calypso Networks Association (CNA). It defines, in a language-agnostic way, the enumerated types that constitute global constants shared between several APIs of the CNA Terminal API family.
The Terminal Definitions API is a foundation module: it exposes no service interface, no SPI, no state machine. Its sole purpose is to host the cross-cutting enumerations that other Terminal APIs depend on.
Document Status
Reference |
YYMMDD-SP-CNATerminalAPI-Definitions |
|---|---|
Short name |
CNA-TD-API |
Version |
1.0.0-SNAPSHOT |
Revision date |
2026-07-20 |
Editor |
Calypso Networks Association |
Source repository |
https://github.com/calypsonet/calypsonet-terminal-definitions-uml-api |
Reference license |
Creative Commons Attribution-NoDerivatives 4.0 International (CC BY-ND 4.0) |
| The present document specifies the 1.0.0-SNAPSHOT of the Terminal Definitions API as an initial release. It defines a single, coherent baseline against which conforming implementations are evaluated. |
Revision List
|
This section lists the high-level changes per version. The complete, fine-grained
changelog is maintained in the |
| Version / Date | Modifications |
|---|---|
v1.0.0-SNAPSHOT |
Baseline. |
2. Introduction
2.1. Purpose
The Terminal Definitions API centralises the enumerated types that constitute global constants shared between several CNA Terminal APIs. By isolating these notions in a dedicated module, the family avoids:
-
duplicating the same enumerations across several APIs,
-
coupling a consumer API to another consumer API merely because they share a constant,
-
mixing the slow, conservative evolution rhythm of these constants with the faster rhythm of the consumer APIs.
2.2. Scope
This specification covers:
-
the
RfTechnologyenumeration listing the radio-frequency communication technologies supported by contactless card readers, -
the
CardTypeenumeration listing the card products and transport-protocol families identifiable at detection time.
The following topics are out of scope:
-
the wire-level protocols associated with each technology,
-
the discovery mechanism by which a reader determines the technology or type of a presented card,
-
any interface or operation that consumes these enumerations — consumed APIs are responsible for documenting how they use them.
2.3. Conformance
A software product conforms to this specification if and only if:
Throughout this specification, the key words MUST, MUST NOT, SHOULD, SHOULD NOT, RECOMMENDED, MAY and OPTIONAL are to be interpreted as described in RFC 2119 and RFC 8174 when, and only when, they appear in all capitals.
In conformance with RFC 2119, SHALL is equivalent to MUST; this specification uses MUST exclusively in order to avoid ambiguity.
2.4. Document Conventions
2.4.1. Naming
Type names follow UpperCamelCase; enumeration values use UPPER_SNAKE_CASE. Names defined by this specification
are reproduced as-is in the UML class diagram (Section 4.3).
2.4.2. Type tables
Each class and enumeration defined in this document is described by a table of the form:
Name |
The type’s normalized name. |
|---|---|
Kind |
The category of the type (class, enumeration, etc.). |
Namespace |
The namespace in which the type is defined. |
Since |
The version of the API in which the type was introduced. |
Purpose |
A normative description of the type’s responsibility. |
See also |
Cross-references to related operations or types, each a hyperlink to the corresponding table. Present only when applicable. |
The Purpose row states, in one or two sentences, the responsibility of the type and the way an instance is obtained. It is meant to be scanned, not read: any content that requires structure or depth — rules, lists, notes, value tables or examples — is placed as prose below the table.
2.5. References and Resources
2.5.1. Calypso References
This specification defines the shared vocabulary of the CNA Terminal API; it does not normatively reference any other CNA Terminal API document.
2.5.2. Normative References
| Reference | Document |
|---|---|
Key words for use in RFCs to Indicate Requirement Levels, S. Bradner, March 1997. |
|
Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words, B. Leiba, May 2017. |
|
Identification cards — Contactless integrated circuit cards — Proximity cards. |
|
Identification cards — Contactless integrated circuit cards — Vicinity cards. |
2.5.3. External Resources
| Resource | Link |
|---|---|
Calypso Networks Association |
|
Terminal APIs website |
|
Terminal APIs documentation |
3. Glossary and Acronyms
3.1. Glossary
| Term | Definition |
|---|---|
RF Technology |
Radio-frequency communication technology used by a contactless reader to detect a card, as defined in ISO/IEC 14443. |
Card Type |
Identified product or transport-protocol family of a detected card. |
Polling |
The act, performed by a contactless reader, of broadcasting an interrogation pattern to discover a card in its field. |
3.2. Acronyms
| Abbreviation | Expansion |
|---|---|
AID |
Application IDentifier |
CNA |
Calypso Networks Association |
ISO |
International Organization for Standardization |
RF |
Radio Frequency |
RFC |
Request For Comments |
4. Architectural Overview
4.1. Functional positioning
The Terminal Definitions API is depended upon by other CNA Terminal APIs that need to expose typed constants in their public signatures. The dependency is public (the enumerations appear in the consuming APIs' public surface) and is expected to be propagated transitively to the consumers of those APIs:
4.2. Logical namespaces
| Namespace | Role | Summary |
|---|---|---|
|
Public API |
Shared vocabulary of the CNA Terminal API: the RF-technology and card-type enumerations ( |
4.3. UML class diagram
The following UML class diagram provides a visual representation of the types and relationships defined by this specification:
4.4. Evolution policy
-
Adding a new value to an existing enumeration is a backward-compatible evolution and MAY occur in a minor version of this specification.
-
Removing or renaming a value is a breaking change and MUST only occur in a new major version of this specification.
-
Adding a new enumeration to the API is a backward-compatible evolution and MAY occur in a minor version.
5. API Specification
5.1. Classes
5.1.1. Definitions API Properties
Name |
|
|---|---|
Kind |
Final class |
Namespace |
|
Since |
1.0 |
Purpose |
Exposes the immutable properties of the Terminal Definitions API. |
Constants
| Name | Type | Since | Description |
|---|---|---|---|
|
|
1.0 |
String representation of the version of the API implemented by the conforming binding (e.g. |
|
The |
5.2. Enumerations
5.2.1. Card Type
Name |
|
|---|---|
Kind |
Enumeration |
Namespace |
|
Since |
1.0 |
Purpose |
Identifies a card type, as observed after detection. |
| Value | Since | Description |
|---|---|---|
|
1.0 |
Contact card compliant with ISO/IEC 7816-3. |
|
1.0 |
Contactless card compliant with the ISO/IEC 14443-4 transport protocol. No A/B distinction is exposed at this level: the transport layer is identical and the application behaviour does not depend on the underlying sub-layer. |
|
1.0 |
MIFARE Classic 1 KB product (ISO/IEC 14443-3 Type A sub-layer). |
|
1.0 |
MIFARE Classic 4 KB product (ISO/IEC 14443-3 Type A sub-layer). |
|
1.0 |
MIFARE Ultralight product (ISO/IEC 14443-3 Type A sub-layer). |
|
1.0 |
ST25 SRT512 product (ISO/IEC 14443-3 Type B sub-layer). |
|
1.0 |
Innovatron B' card. |
|
1.0 |
Sony FeliCa card. |
|
1.0 |
ISO/IEC 15693 vicinity card. |
|
1.0 |
The card type could not be identified. May happen when a card of a type not yet referenced by this enumeration is detected, or when the detection process is partial. |
|
Granularity rationale. The dual granularity of |
5.2.2. RF Technology
Name |
|
|---|---|
Kind |
Enumeration |
Namespace |
|
Since |
1.0 |
Purpose |
Identifies a radio-frequency communication technology that a contactless reader can activate during polling.
|
| Value | Since | Description |
|---|---|---|
|
1.0 |
ISO/IEC 14443 family, both Type A and Type B variants. The A/B distinction is not exposed at the polling level: the reader is asked to interrogate "the ISO 14443 family". |
|
1.0 |
Proprietary Innovatron B' technology. |
|
1.0 |
Sony FeliCa technology. |
|
1.0 |
ISO/IEC 15693 vicinity technology. |