Changelog
-
2026-09-28
-
new improved look of the guide:
-
chapters on different pages and a search box
-
reorganized chapter structure:
-
standard problem types, lists of HTTP methods and status codes, reserved words and changelog moved to annexes
-
the HTTP chapter bundles the rules on use of appropriate HTTP methods, status codes, media types and content negotiation
-
-
-
update rule [evo-compat] and Versioning chapter to also cover asynchronous messages. Improve list of compatible extensions : update guideline on input enum values updates and remove redirection.
-
update rule [col-get]: add alternative
POST /searchcontroller for complex input structure. -
update rule [addi-prop]: explicitly recommend against the use of
additionalProperties: false -
update rule [oas-comp]:
$refshould always point to a named component under/components, not inline definitions -
updates in Events and asynchronous messaging chapter:
-
distinguish between event, command and query archetypes
-
update rule [async-svctype]: new naming convention of
type -
update rule [async-ctxt]:
specversionattribute and handling unknown context attributes -
new rule [async-prbl]: problem replies
-
new rule [async-size]: size of Asynchronous Messages and the claim check pattern
-
-
examples throughout the guide were updated. Problem examples now use JSON Pointer to refer to input properties in a message body
-
-
2026-06-12
-
new rule [rule-sens-dat] on sensitive data in URLs or headers
-
new rule [sch-discr] split of from [sch-oneof] and [sch-allof] on URI-reference syntax for discriminator mapping
-
added link to example schema to Pagination
-
update [sch-oneof]: discriminator mapping should include all
oneOfsubschemas -
new rule [sec-req]: security requirements must be consistent with security schemes
-
new rule [sch-opbody-req]:
requiredshould be specified explicitly on request bodies -
reference the RFCs on requirements levels (MUST, SHOULD, etc.) in Introduction, and replace MANDATORY by REQUIRED throughout the guide
-
-
2026-04-28
-
update [sch-allof] and [sch-oneof]: guidelines on use of
discriminatorandmapping -
new rule [child-ent] on representation of child entities
-
update rule [oas-descr] with exception for
titlewithinallOfandnotinline schemas -
update [async-svctype]:
serviceshould be prefixed with a reverse-DNS name -
new rule [async-order] on out-of-order and duplicate messages
-
update rule [async-cespec]:
-
clarify that an Asynchronous Message is immutable and all functional data should be part of it (i.e. not exclusively in exchange protocol)
-
guidelines on context attributes were split off to [async-ctxt]
-
-
new rule [async-generic] with guidelines on generic endpoints for Asynchronous Messages
-
add a list of organizations that endorse this guide (Introduction)
-
-
2026-02-16
-
new rule [oas-doc] on providing documentation in OpenAPI. This replaces the previous
[ext-docs]rule. -
update rule [oas-descr]:
-
extended with all OpenAPI free-text documentation properties
-
a
summaryshould now be present for each operation -
for inline schemas of type
object, atitleis now recommended. For schema components, it shouldn’t override the component name if present.
-
-
update rule [sch-oneof]: changed allowed usage to ensure tooling compatibility (
objectsubschemas withdiscriminator, subschemas with onlyrequiredandenumsubschemas) -
update [trc-header]: make UUIDv4 optional for trace ids and recommend randomness
-
-
2025-11-25
-
new guidelines on Asynchronous messaging and events
-
new rule [trace-w3c] on the use of W3C/OTel tracing only within an organization’s trust boundary
-
-
2025-09-24
-
add rules about composition, inheritance and polymorphism in schemas using
oneOf,allOfanddiscriminatorin [sch-allof] and [sch-oneof] -
add linked documentation pages for each issue type in Bad Request
-
improve internationalization.adoc#internationalization guidelines:
-
clarifications on the
Content-Languageheader -
language choice may also be based on a user profile
-
update [int-negot]: language priority using
qparam, matching regional language variants and fallback behavior
-
-
(minor): apply OAS definitions for an OpenAPI (entry) document and OpenAPI description throughout the guide
-
-
2025-06-16
-
recommend OpenAPI 3.0 and remove OpenAPI 2.0 throughout the guide
-
new in Bad Request Problem: standardized
invalidInputissue type -
update section Identifier: describe potential compatibility problems with escaped slash values in path params
-
update rule [id-name]: always prefix
idandcodepath param names with their resource type -
update description
409 Conflictstatus: conflict with "data on the server" instead of "current state of the target resource". Remove optimistic locking issue (usually412)
-
-
2025-01-28
-
new in Bad Request Problem: standardized
referencedResourceNotFoundissue type -
update of Standardized problem types: add
WWW-Authenticateheader for access token or scope problems -
update rule [int-negot]: a default fallback language should be used when
Accept-Languageheader can’t be respected
-
Older changes
-
2024-12-02
-
add a list of Related Belgif initiatives
-
new rule [prop-req] on declaring properties as
required -
new rule [openapi-opid]: recommend the use of
operationId -
update rule [jsn-null]: clarify use of
null -
new rule [doc-patch] on JSON Merge Patch, illustrating the use of nullable properties
-
update rule [err-problem]: provide structured data in additional properties and recommend against parsing
titleordescription -
clarify that time offsets are mandatory for
date-timevalues in JSON -
update rule: [oas-exampl] recommending to add examples, and clarify specifics of OpenAPI 2.0 and 3.0
-
-
2024-04-05
-
update [oas-tags]: add new guidelines on tags (declared, style, no more than one tag on an operation)
-
new: rule [oas-comp] applies naming guidelines on all types of components (previously in [oas-types] only for schemas)
-
added motivation for [oas-rdonly] why required properties shouldn’t be readOnly
-
clarify that health status should be from client point-of-view in Health
-
-
2024-01-31
-
new: a document may also be a singleton that’s not part of a collection (Singleton documents)
-
new: path parameter names should use lowerCamelCase [path-param]
-
update: clarify that query parameters should use lowerCamelCase [uri-notat]
-
update: the name of a multi-value query parameter should be singular if it’s a noun [qry-multi]
-
new: explicit rule and clearer guidelines on
GET /healthresource [hlth-res]
-
-
2023-10-05
-
update: [req-valid] issue type for unknown input is renamed
-
new: rule [hdr-case] on case-insensitivity of HTTP headers
-
update: explicit rules for guidelines: [meth-http] and [stat-codes] (use of appropriate HTTP methods and status codes), [col-sort] (sorting a collection)
-
update: improved overview table for the use of HTTP methods [meth-http]
-
update: corrected use of status 303: allowed on all methods in overview table [stat-codes]
-
update: links to the releases of common OpenAPI definitions are added to [oas-comdef]
-
update: Problem Details for HTTP APIs is updated to RFC 9457 which obsoletes RFC 7807 throughout the guide
-
-
2023-06-14
-
add /doc/openapi.[json,yaml] to list of reserved resources Resource names
-
updated [id-name]: naming convention for OpenAPI types for identifiers and codes
-
updated [hyp-links]: avoid cross-API links, make self links optional
-
new: [req-valid]: handling unknown request parameters
-
updated list of OpenAPI tools
-
-
2023-03-17
-
Rule identifier with anchor added for each rule in the guide
-
Updated [jsn-naming]: naming of JSON properties
-
Updated [id-name] with new naming conventions for identifiers and codes
-
-
2022-12-07
-
new: Representing general problem types in OpenAPI
-
new: Representing general and operation-specific HTTP headers in OpenAPI
-
-
2022-10-27
-
updated: the response body when creating a resource may also contain partial or full resource ( Create a new resource)
-
-
2022-05-20
-
move REST guide to belgif.be, updating href problem links
-
-
2022-03-31
-
new: use string based types for decimals when precision is important (Decimals)
-
updated: new type InputValidationProblem for problems of type
badRequestandresourceNotFound(breaking change) -
updated: clarify the use of multiple query parameters to filter a collection (Filtering)
-
-
2022-02-02
-
new: designing new identifiers and codes or using existing numerical ones
-
updates for OpenAPI 3.0 support throughout the entire guide
-
new: Service Unavailable problem type (http 503)
-
added: use Retry-After HTTP header in Too Many Failed Requests and Too Many Requests
-
-
2021-06-24
-
updated: use URNs as problem type and add href for problem documentation (Error handling)
-
updated: clarify use of charset in JSON media type (http.adoc#media-types)
-
added: how to specify media types in OpenAPI 3 (Specifying media types in OpenAPI)
-
-
2020-12-02
-
new: standardized problem types internalServerError, badGateway, tooManyFailedRequests, payloadTooLarge (Standardized problem types)
-
-
2020-11-04
-
added: Remove a selection of items from a collection (Collection)
-
updated: status codes made consistent in various locations (Collection, Document, HTTP Methods and HTTP Status Codes)
-
added: status codes 429 Too Many Requests and 502 Bad Gateway (HTTP Status Codes)
-
added: table about how to use each HTTP method ( HTTP Methods)
-
added: table listing acceptable status codes for each method ( Status Codes)
-
-
2020-09-09
-
new: recommend use of CloudEvents specification (events.adoc#events)
-
add guidelines on API health checks (Health)
-
move common OpenAPI schemas to separate GitHub repositories (Common OpenAPI definitions)
-
-
2020-08-03
-
allow OpenAPI 3.0 (API specifications)
-
remove unmaintained swagger-validator-maven-plugin and styleguide-validationrules from tools list (api_specifications.adoc#openapi-tools)
-
change status codes to string types in example OpenAPI definitions to be compliant to the OpenAPI standard
-
set license of this guide to Apache License, Version 2.0 (Introduction)
-
-
2020-03-24
-
add links to GitHub, vocabularies and OAS schemas in the Introduction
-
-
2020-01-10
-
updated rules: naming of JSON properties and naming of Schemas: no digits as first letter and no dots in names
-
added 413 Payload Too Large to list of HTTP status codes
-
updated Resource URI notation rule: no trailing slashes in URIs
-
added rule: default values in OpenAPI specification
-
added Controller resource archetype and move all archetypes to Resources chapter
-
-
2019-05-23
-
update list of standard problem types and add InvalidParamProblem schema to problem-v1.yaml, see Standardized problem types
-
new rule: naming of identifiers in Document
-
add status code
303 See Otherto Create a new resource -
new rule: use tags in OpenAPI
-
new section: how to specify media types in OpenAPI
-
update rules: naming of JSON properties and naming of Schemas to make names more meaningful
-
new rule: use
descriptionand avoidtitleto describe Schemas -
updated rule: String and integer types (Schemas). String based codes should have a unique representation.
-
-
2019-01-22
-
modified API specifications guidelines for reusable definitions to be put in Swagger files instead of multiple smaller JSON schema files
-
gCloud JSON Schemas refactored to this new file structure
-
updated list of Swagger editors and code generators in Tools
-
added guidelines about Tracing with standardized HTTP headers
-
add OpenAPI example of multi-valued query param to Resources
-
added rule: place reference data resources in
/refData(doc resource) -
add list of reserved resource names to Reserved words
-
document
selectreserved query param to filter resource representation (Consult (Document))
-
-
2018-11-26
-
add SelfLink type in Links
-
recommend American English for JSON format property names and Schemas
-
add recommendations on typing of properties in Schemas (integer/string, enums)
-
-
2018-09-09
-
2018-08-09
-
Standardized Problem response for several use cases in Error handling and updated Problem examples throughout the guide
-
-
2018-08-08
-
added clarifications and example for use of
HttpLinkto Links -
changed guideline for JSON Schemas to single root type per file and add rule on common BelGov schemas
-
-
2018-06-29
-
added files with common data types containing types referenced throughout the guide
-
added MergePatch type to Partial update
-
added guidelines for Long-running tasks
-
-
2018-05-28
-
added Caching guidelines
-
-
2018-04-25
-
added Internationalization (I18N) guidelines
-
updated Controller, allowing verb as child resource and GET method in some cases
-
update format of version number in API specifications
-
added contact email address in Introduction
-
prefix
BelGov-added for custom reserved HTTP headers
-
-
2018-04-19
-
guidelines about reusable JSON Schemas
-
-
2018-04-18
-
added Versioning guidelines
-
removed collector, added "Non-CRUD operations" under Document section
-
-
2018-03-14
-
added reserved HTTP headers and rule on custom http headers (reserved HTTP headers)
-
content negotiation and JSON subtypes added to http.adoc#media-types
-
Consulting a collection: empty items array mandatory when collection is empty
-
relax the rule on
additionalPropertiesto be compatible with its use for embedded resources
-
-
2018-03-07
-
Error handling: use of RFC 7807
-