diff --git a/.travis.yml b/.travis.yml
index 6de3b6b..e8c76d5 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,7 +1,8 @@
sudo: false
language: ruby
+dist: focal # Ubuntu 20.04
rvm:
- - 2.7.7
+ - 3.3.0
cache: bundler
env:
global:
diff --git a/Gemfile b/Gemfile
index cd804a0..818fa53 100755
--- a/Gemfile
+++ b/Gemfile
@@ -1,11 +1,11 @@
-ruby '>=2.3.1'
+ruby '>=3.2.5'
source 'https://rubygems.org'
# Middleman
-gem 'middleman', '~>4.2.1'
-gem 'middleman-syntax', '~> 3.0.0'
-gem 'middleman-autoprefixer', '~> 2.7.0'
-gem "middleman-sprockets", "~> 4.1.0"
-gem 'rouge', '~> 2.0.5'
-gem 'redcarpet', '~> 3.4.0'
-gem 'nokogiri', '~> 1.8.2'
+gem 'middleman', '~> 4.5.1'
+gem 'middleman-syntax', '~> 3.4.0'
+gem 'middleman-autoprefixer', '~> 3.0.0'
+gem 'middleman-sprockets', '~> 4.1.1'
+gem 'rouge', '~> 3.2.0'
+gem 'redcarpet', '~> 3.6.0'
+gem 'nokogiri', '~> 1.16.7'
diff --git a/Gemfile.lock b/Gemfile.lock
index e126e35..4ddf3bd 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -1,61 +1,69 @@
GEM
remote: https://rubygems.org/
specs:
- activesupport (5.0.6)
+ activesupport (7.0.8.4)
concurrent-ruby (~> 1.0, >= 1.0.2)
- i18n (~> 0.7)
- minitest (~> 5.1)
- tzinfo (~> 1.1)
- addressable (2.5.2)
- public_suffix (>= 2.0.2, < 4.0)
- autoprefixer-rails (6.7.7.2)
- execjs
- backports (3.11.1)
+ i18n (>= 1.6, < 2)
+ minitest (>= 5.1)
+ tzinfo (~> 2.0)
+ addressable (2.8.7)
+ public_suffix (>= 2.0.2, < 7.0)
+ autoprefixer-rails (10.4.19.0)
+ execjs (~> 2)
+ backports (3.25.0)
coffee-script (2.4.1)
coffee-script-source
execjs
coffee-script-source (1.12.2)
- compass-import-once (1.0.5)
- sass (>= 3.2, < 3.5)
- concurrent-ruby (1.0.5)
- contracts (0.13.0)
- dotenv (2.2.1)
+ concurrent-ruby (1.3.4)
+ contracts (0.16.1)
+ dotenv (3.1.2)
erubis (2.7.0)
- execjs (2.7.0)
- fast_blank (1.0.0)
- fastimage (2.1.1)
- ffi (1.9.18)
- haml (5.0.4)
- temple (>= 0.8.0)
+ execjs (2.9.1)
+ fast_blank (1.0.1)
+ fastimage (2.3.1)
+ ffi (1.17.0-aarch64-linux-gnu)
+ ffi (1.17.0-aarch64-linux-musl)
+ ffi (1.17.0-arm-linux-gnu)
+ ffi (1.17.0-arm-linux-musl)
+ ffi (1.17.0-arm64-darwin)
+ ffi (1.17.0-x86-linux-gnu)
+ ffi (1.17.0-x86-linux-musl)
+ ffi (1.17.0-x86_64-darwin)
+ ffi (1.17.0-x86_64-linux-gnu)
+ ffi (1.17.0-x86_64-linux-musl)
+ haml (6.3.0)
+ temple (>= 0.8.2)
+ thor
tilt
hamster (3.0.0)
concurrent-ruby (~> 1.0)
- hashie (3.5.7)
- i18n (0.7.0)
- kramdown (1.16.2)
- listen (3.0.8)
- rb-fsevent (~> 0.9, >= 0.9.4)
- rb-inotify (~> 0.9, >= 0.9.7)
- memoist (0.16.0)
- middleman (4.2.1)
+ hashie (3.6.0)
+ i18n (1.6.0)
+ concurrent-ruby (~> 1.0)
+ kramdown (2.4.0)
+ rexml
+ listen (3.9.0)
+ rb-fsevent (~> 0.10, >= 0.10.3)
+ rb-inotify (~> 0.9, >= 0.9.10)
+ memoist (0.16.2)
+ middleman (4.5.1)
coffee-script (~> 2.2)
- compass-import-once (= 1.0.5)
haml (>= 4.0.5)
- kramdown (~> 1.2)
- middleman-cli (= 4.2.1)
- middleman-core (= 4.2.1)
- sass (>= 3.4.0, < 4.0)
- middleman-autoprefixer (2.7.1)
- autoprefixer-rails (>= 6.5.2, < 7.0.0)
- middleman-core (>= 3.3.3)
- middleman-cli (4.2.1)
- thor (>= 0.17.0, < 2.0)
- middleman-core (4.2.1)
- activesupport (>= 4.2, < 5.1)
- addressable (~> 2.3)
+ kramdown (>= 2.3.0)
+ middleman-cli (= 4.5.1)
+ middleman-core (= 4.5.1)
+ middleman-autoprefixer (3.0.0)
+ autoprefixer-rails (~> 10.0)
+ middleman-core (>= 4.0.0)
+ middleman-cli (4.5.1)
+ thor (>= 0.17.0, < 1.3.0)
+ middleman-core (4.5.1)
+ activesupport (>= 6.1, < 7.1)
+ addressable (~> 2.4)
backports (~> 3.6)
- bundler (~> 1.1)
- contracts (~> 0.13.0)
+ bundler (~> 2.0)
+ contracts (~> 0.13, < 0.17)
dotenv
erubis
execjs (~> 2.0)
@@ -63,68 +71,97 @@ GEM
fastimage (~> 2.0)
hamster (~> 3.0)
hashie (~> 3.4)
- i18n (~> 0.7.0)
- listen (~> 3.0.0)
+ i18n (~> 1.6.0)
+ listen (~> 3.0)
memoist (~> 0.14)
- padrino-helpers (~> 0.13.0)
+ padrino-helpers (~> 0.15.0)
parallel
rack (>= 1.4.5, < 3)
- sass (>= 3.4)
+ sassc (~> 2.0)
servolux
- tilt (~> 2.0)
+ tilt (~> 2.0.9)
+ toml
uglifier (~> 3.0)
+ webrick
middleman-sprockets (4.1.1)
middleman-core (~> 4.0)
sprockets (>= 3.0)
- middleman-syntax (3.0.0)
+ middleman-syntax (3.4.0)
middleman-core (>= 3.2)
- rouge (~> 2.0)
- mini_portile2 (2.3.0)
- minitest (5.11.3)
- nokogiri (1.8.2)
- mini_portile2 (~> 2.3.0)
- padrino-helpers (0.13.3.4)
- i18n (~> 0.6, >= 0.6.7)
- padrino-support (= 0.13.3.4)
+ rouge (~> 3.2)
+ minitest (5.25.1)
+ nokogiri (1.16.7-aarch64-linux)
+ racc (~> 1.4)
+ nokogiri (1.16.7-arm-linux)
+ racc (~> 1.4)
+ nokogiri (1.16.7-arm64-darwin)
+ racc (~> 1.4)
+ nokogiri (1.16.7-x86-linux)
+ racc (~> 1.4)
+ nokogiri (1.16.7-x86_64-darwin)
+ racc (~> 1.4)
+ nokogiri (1.16.7-x86_64-linux)
+ racc (~> 1.4)
+ padrino-helpers (0.15.3)
+ i18n (>= 0.6.7, < 2)
+ padrino-support (= 0.15.3)
tilt (>= 1.4.1, < 3)
- padrino-support (0.13.3.4)
- activesupport (>= 3.1)
- parallel (1.12.1)
- public_suffix (3.0.1)
- rack (2.0.4)
- rb-fsevent (0.10.2)
- rb-inotify (0.9.10)
- ffi (>= 0.5.0, < 2)
- redcarpet (3.4.0)
- rouge (2.0.7)
- sass (3.4.25)
+ padrino-support (0.15.3)
+ parallel (1.26.3)
+ parslet (2.0.0)
+ public_suffix (6.0.1)
+ racc (1.8.1)
+ rack (2.2.9)
+ rb-fsevent (0.11.2)
+ rb-inotify (0.11.1)
+ ffi (~> 1.0)
+ redcarpet (3.6.0)
+ rexml (3.3.7)
+ rouge (3.2.1)
+ sassc (2.4.0)
+ ffi (~> 1.9)
servolux (0.13.0)
- sprockets (3.7.1)
+ sprockets (4.2.1)
+ concurrent-ruby (~> 1.0)
+ rack (>= 2.2.4, < 4)
+ temple (0.10.3)
+ thor (1.2.2)
+ tilt (2.0.11)
+ toml (0.3.0)
+ parslet (>= 1.8.0, < 3.0.0)
+ tzinfo (2.0.6)
concurrent-ruby (~> 1.0)
- rack (> 1, < 3)
- temple (0.8.0)
- thor (0.20.0)
- thread_safe (0.3.6)
- tilt (2.0.8)
- tzinfo (1.2.4)
- thread_safe (~> 0.1)
uglifier (3.2.0)
execjs (>= 0.3.0, < 3)
+ webrick (1.8.1)
PLATFORMS
- ruby
+ aarch64-linux
+ aarch64-linux-gnu
+ aarch64-linux-musl
+ arm-linux
+ arm-linux-gnu
+ arm-linux-musl
+ arm64-darwin
+ x86-linux
+ x86-linux-gnu
+ x86-linux-musl
+ x86_64-darwin
+ x86_64-linux
+ x86_64-linux-gnu
+ x86_64-linux-musl
DEPENDENCIES
- middleman (~> 4.2.1)
- middleman-autoprefixer (~> 2.7.0)
- middleman-sprockets (~> 4.1.0)
- middleman-syntax (~> 3.0.0)
- nokogiri (~> 1.8.2)
- redcarpet (~> 3.4.0)
- rouge (~> 2.0.5)
+ middleman (~> 4.5.1)
+ middleman-autoprefixer (~> 3.0.0)
+ middleman-sprockets (~> 4.1.1)
+ middleman-syntax (~> 3.4.0)
+ nokogiri (~> 1.16.7)
+ redcarpet (~> 3.6.0)
+ rouge (~> 3.2.0)
RUBY VERSION
- ruby 2.4.2p198
+ ruby 3.3.0p0
BUNDLED WITH
- 1.16.1
+ 2.5.3
diff --git a/README.md b/README.md
index df206c0..f9eed41 100644
--- a/README.md
+++ b/README.md
@@ -7,12 +7,30 @@ https://docs.opendatasoft.com/api/
## Building the documentation
+You must install [Ruby](https://www.ruby-lang.org/en/) to build this documentation. Note that on MacOS, you can find a
+Ruby v2.6 installed with the OS. As you can read on this following page [Ruby Branches
+Maintenance](https://www.ruby-lang.org/en/downloads/branches/), that the 2.6 version is quite obsolete and unmaintained.
+
+### Ruby Install
+
+You can use the [rbenv](https://github.com/rbenv/rbenv) tool which, as the pyenv tool, helps you to install any version
+of Ruby. You can just do `brew install rbenv`. Make sure you also have these packages `openssl@3 readline libyaml gmp`
+necessary to build Ruby on your laptop.
+
+Then:
+
+* `rbenv install -l` to see the latest stable versions of Ruby
+* `rbenv install 3.3.0` or any `3.3.x` version.
+
+You might need to add `eval "$(rbenv init - zsh)"` to your `.zshrc` file. If you use Bash, change and use zsh :)
+
### Prerequisites
You will need bundler to build the documentation.
```shell
-bundle install --path vendor/bundle
+bundle config set path 'vendor/bundle'
+bundle install
```
### Development server
@@ -23,7 +41,7 @@ To run the development server
bundle exec middleman server
```
-You can now see the docs at http://localhost:4567.
+You can now see the docs at http://localhost:4567. As you don't have a `index.html` file, you have to update the URL adding `/wfs-v2.html` for instance to check out the content related to WFS v2.
### Build
@@ -33,9 +51,9 @@ bundle exec middleman build
### Deploy
-The `develop` branch is automatically deployed to https://help.opendatasoft.com/en/apis
+The `develop` branch is automatically deployed to https://betahelp.opendatasoft.com/en/apis
-The `master` branch is automatically deployed to https://betahelp.opendatasoft.com/en/apis
+The `master` branch is automatically deployed to https://help.opendatasoft.com/en/apis
## Writing rules
diff --git a/config.rb b/config.rb
index 5905e04..e5bf734 100755
--- a/config.rb
+++ b/config.rb
@@ -1,7 +1,7 @@
# Unique header generation
require './lib/unique_head.rb'
-["ods-search-v1", "wfs", "csw", "tpf", "odata"].each do |apis|
+["ods-search-v1", "wfs-v1", "wfs-v2", "csw", "tpf", "odata"].each do |apis|
proxy "/#{apis}/index.html", "#{apis}.html", :locals => { :page_apis => apis }
end
@@ -29,7 +29,13 @@
require './lib/multilang.rb'
end
-activate :sprockets
+# sprockets should not be used to compile '.css.scss' files since middleman v4 does it.
+# When sprockets tries to compile some (already compiled) .css as .scss files, it fails.
+# just use sprockets to bundle the Javascript files.
+# see https://github.com/middleman/middleman-sprockets/issues/127#issuecomment-736958140
+activate :sprockets do |sprockets|
+ sprockets.supported_output_extensions = ['.js']
+end
activate :autoprefixer do |config|
config.browsers = ['last 2 version', 'Firefox ESR']
diff --git a/source/includes/v1/available_apis.md b/source/includes/v1/available_apis.md
index f306d51..3227af5 100644
--- a/source/includes/v1/available_apis.md
+++ b/source/includes/v1/available_apis.md
@@ -1,5 +1,10 @@
# Search API v1
+
+
Opendatasoft datasets are accessible by developers through an HTTP REST API.
The domain is used to illustrate examples in the following documentation.
diff --git a/source/includes/wfs/describe_feature_type.md b/source/includes/wfs-v1/describe_feature_type.md
similarity index 95%
rename from source/includes/wfs/describe_feature_type.md
rename to source/includes/wfs-v1/describe_feature_type.md
index c6017ee..230171a 100644
--- a/source/includes/wfs/describe_feature_type.md
+++ b/source/includes/wfs-v1/describe_feature_type.md
@@ -35,4 +35,4 @@ The existing parameters in the WFS standard that are not listed in this table ar
Parameter | Description | Optionality and use
--------- | ----------- | -------------------
-`TypeName` | A comma-separated list of feature types to describe. | Optional. When omitted, return all feature types known.
+`TypeName` | A comma-separated list of feature types to describe. | Optional. When omitted, return all feature types known.
\ No newline at end of file
diff --git a/source/includes/wfs/get_capabilities.md b/source/includes/wfs-v1/get_capabilities.md
similarity index 99%
rename from source/includes/wfs/get_capabilities.md
rename to source/includes/wfs-v1/get_capabilities.md
index fff0f4d..4558047 100644
--- a/source/includes/wfs/get_capabilities.md
+++ b/source/includes/wfs-v1/get_capabilities.md
@@ -54,4 +54,4 @@ Section name | Content
`ServiceIdentification` | Metadata about the WFS implementation
`ServiceProvider` | Metadata about the organization offering the WFS service
`OperationsMetadata` | Metadata about the WFS operations offered by the WFS implementation
-`FeatureTypeList` | List of features types that are available from the service
+`FeatureTypeList` | List of features types that are available from the service
\ No newline at end of file
diff --git a/source/includes/wfs/get_feature.md b/source/includes/wfs-v1/get_feature.md
similarity index 97%
rename from source/includes/wfs/get_feature.md
rename to source/includes/wfs-v1/get_feature.md
index 66ce5b7..a6262fa 100644
--- a/source/includes/wfs/get_feature.md
+++ b/source/includes/wfs-v1/get_feature.md
@@ -44,4 +44,4 @@ Parameter | Description | Optionality and use
`maxFeatures` | Used to define the maximum number of records that should be returned from the result set of a query | Optional. Value must be a positive integer
`TypeName` | A list of feature type names to query | Mandatory
`PropertyName` | A list of properties that should be returned | Optional. The absence of a value also indicates that all properties should be fetched
-`featureId` | An enumerated list of feature instances to fetch identified by their feature identifiers | Optional
+`featureId` | An enumerated list of feature instances to fetch identified by their feature identifiers | Optional
\ No newline at end of file
diff --git a/source/includes/wfs/introduction.md b/source/includes/wfs-v1/introduction.md
similarity index 99%
rename from source/includes/wfs/introduction.md
rename to source/includes/wfs-v1/introduction.md
index 86c414b..6d1335b 100644
--- a/source/includes/wfs/introduction.md
+++ b/source/includes/wfs-v1/introduction.md
@@ -70,4 +70,4 @@ Name | Definition | Data type and value | Multiplicity and use
---- | ---------- | ------------------- | --------------------
`ExceptionText` | Text describing specific exception represented by the exceptionCode | Character String type, not empty. Value is an exception description as defined by individual servers | Zero or more (optional). Omitted only when no more useful information available
`exceptionCode` | Code representing type of this exception | Character String type, not empty. Allowed values are specified by each implementation specification and server implementation | One (mandatory)
-`locator` | Indicator of location in the client's operation request where this exception was encountered | Character String type, not empty Contents defined for each allowed exceptionCode value for each operation | Zero or one (optional). Omitted when no useful value available
+`locator` | Indicator of location in the client's operation request where this exception was encountered | Character String type, not empty Contents defined for each allowed exceptionCode value for each operation | Zero or one (optional). Omitted when no useful value available
\ No newline at end of file
diff --git a/source/includes/wfs-v2/describe_feature_type.md b/source/includes/wfs-v2/describe_feature_type.md
new file mode 100644
index 0000000..a9facdc
--- /dev/null
+++ b/source/includes/wfs-v2/describe_feature_type.md
@@ -0,0 +1,24 @@
+## DescribeFeatureType
+
+> [DescribeFeatureType operation with the optional TypeNames parameter](https://documentation-resources.opendatasoft.com/api/wfs?service=WFS&request=DescribeFeatureType&version=2.0.0&typeNames=ods:gender-equality-in-europe)
+
+>
+
+```http
+GET https://documentation-resources.opendatasoft.com/api/wfs?service=WFS&request=DescribeFeatureType&version=2.0.0&typeNames=ods:gender-equality-in-europe HTTP/1.1
+```
+
+
+The `DescribeFeatureType` operation generates a schema description of features types serviced by the WFS.
+
+### Parameters
+
+This is the list of the supported parameters specific to the `DescribeFeatureType` operation. You should also take into
+consideration the common parameters. [See here](#parameters)
+
+The existing parameters in the WFS standard that are not listed in this table are currently not supported.
+
+| Parameter | Description | Optionality and use |
+|------------|------------------------------------------------------|---------------------------------------------------------|
+| `TypeName` | A comma-separated list of feature types to describe. | Optional. When omitted, return all feature types known. |
+**(OutputFormat is not supported)*
diff --git a/source/includes/wfs-v2/get_capabilities.md b/source/includes/wfs-v2/get_capabilities.md
new file mode 100644
index 0000000..025f19a
--- /dev/null
+++ b/source/includes/wfs-v2/get_capabilities.md
@@ -0,0 +1,40 @@
+# Operations
+
+## GetCapabilities
+
+> [GetCapabilities operation with the optional Sections parameter](https://documentation-resources.opendatasoft.com/api/wfs?service=WFS&request=GetCapabilities§ions=OperationsMetadata,FeatureTypeList)
+
+>
+
+```http
+GET https://documentation-resources.opendatasoft.com/api/wfs?service=WFS&request=GetCapabilities§ions=OperationsMetadata,FeatureTypeList HTTP/1.1
+```
+
+The `GetCapabilities` operation allows clients to retrieve service metadata. The response is an XML document
+containing the information.
+
+### Parameters
+
+This is the list of the supported parameters specific to the `GetCapabilities` operation. You should also take into
+consideration the common parameters. [See here](#parameters).
+
+The existing parameters in the WFS standard that are not listed in this table are currently not supported.
+
+| Parameter | Description | Optionality and use |
+|------------------|---------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------|
+| `Sections` | Unordered list of zero or more names of sections of service metadata document to be returned in service metadata document. | Optional. When omitted, returns the complete service metadata document. |
+| `AcceptVersions` | Prioritized sequence of one or more specification versions accepted by client, with preferred versions listed first. | Optional. When omitted, returns the latest supported version. |
+**(AcceptFormats and UpdateSequences are not supported)*
+
+### Response document
+The WFS API returns from a GetCapabilities request sections in the service metadata. The section name can be used as a value for the
+`Sections` parameter.
+
+| Section name | Content |
+|-------------------------|---------------------------------------------------------------------|
+| `ServiceIdentification` | Metadata about the WFS implementation |
+| `ServiceProvider` | Metadata about the organization offering the WFS service |
+| `OperationsMetadata` | Metadata about the WFS operations offered by the WFS implementation |
+| `FeatureTypeList` | List of features types that are available from the service |
+| `Languages` | Languages supported from the service |
+| `Filter_Capabilities` | Metadata about the Filter encoding implementation |
diff --git a/source/includes/wfs-v2/get_feature.md b/source/includes/wfs-v2/get_feature.md
new file mode 100644
index 0000000..08f4527
--- /dev/null
+++ b/source/includes/wfs-v2/get_feature.md
@@ -0,0 +1,29 @@
+## GetFeature
+
+> [GetFeature operation with the optional PropertyName parameter](https://documentation-resources.opendatasoft.com/api/wfs?service=WFS&request=GetFeature&version=2.0.0&typename=ods:gender-equality-in-europe&propertyname=country)
+
+>
+
+```http
+GET https://documentation-resources.opendatasoft.com/api/wfs?service=WFS&request=GetFeature&version=2.0.0&typename=ods:gender-equality-in-europe&propertyname=country HTTP/1.1
+```
+
+The `GetFeature` operation allows retrieval of features from the WFS, and output them using the GML 3.1.1
+representation.
+
+### Parameters
+
+This is the list of the supported parameters specific to the `GetFeature` operation. You should also take into
+consideration the common parameters. [See here](#parameters).
+
+The existing parameters in the WFS standard that are not listed in this table are currently not supported.
+
+| Parameter | Description | Optionality and use |
+|-----------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------|
+| `ResultType` | Used to indicate whether a WFS should generate a complete response document or an empty response document indicating only the number of features that the query would return | Optional. Values can be `hits` or `results`. Default value is `results` |
+| `Count` | Used to define the maximum number of records that should be returned from the result set of a query | Optional |
+| `TypeNames` | A list of feature type names to query | Optional |
+| `PropertyNames` | A list of properties (dataset columns) that should be returned | Optional |
+| `FeatureId` | An enumerated list of feature instances to fetch identified by their feature identifiers | Optional |
+| `Bbox` | A bounding box used to filter the results by spatial extent | Optional |
+*(OutputFormat and SortBy are not supported)*
diff --git a/source/includes/wfs-v2/introduction.md b/source/includes/wfs-v2/introduction.md
new file mode 100644
index 0000000..72425d6
--- /dev/null
+++ b/source/includes/wfs-v2/introduction.md
@@ -0,0 +1,178 @@
+# WFS API
+
+Opendatasoft records can be accessed through a Web Feature Service (WFS), which provides an interface allowing
+requests for geographical datasets.
+
+The WFS API provides an interface that enables requests for geographical features from the Opendatasoft records.
+
+This documentation is designed to guide you through the usage of the WFS API in version 2.0.0 with simple conformance class. It includes information on the supported operations, examples of typical use cases, common errors, and additional resources.
+
+If you have any questions or encounter any issues while using the WFS API, refer to the troubleshooting section or contact our support team for assistance.
+
+Let's get started with using the WFS API in version v2.0.0.
+(v1.1.0 is deprecated)
+
+## Operations supported
+Opendatasoft platform implements only by HTTP GET method the
+5 following operations defined by the WFS standard with simple conformance class :
+GetCapabilities, DescribeFeatureType, ListStoredQueries, DescribeStoredQueries, GetFeature operation with only the StoredQuery action. One stored query, that fetches a feature using its id, is available.
+
+| Operation | Description |
+|-------------------------|----------------------------------------------------------------------------------|
+| `GetCapabilities` | Retrieves metadata about the WFS service |
+| `DescribeFeatureType` | Generates a schema description of features types |
+| `GetFeature` | Retrieves features from the service and output them using the GML representation |
+| `ListStoredQueries` | Lists the stored queries that are available |
+| `DescribeStoredQueries` | Generates a description of the named stored queries that are available |
+
+## Service address and methods
+
+> [Service entry address](https://documentation-resources.opendatasoft.com/api/wfs)
+
+```http
+GET https://documentation-resources.opendatasoft.com/api/wfs HTTP/1.1
+```
+
+The service can be reached at the following entry address.
+
+The workspace `https://documentation-resources.opendatasoft.com/` is used as an example in this documentation, but you should replace it with your custom workspace name.
+
+The WFS supports only `GET` HTTP methods in v2.0.0 (`POST` HTTP method is supported in v1.1.0 with only `text/xml` as `Content-Type` header, but this version is deprecated)
+
+## Common parameters
+
+When the HTTP `GET` method is used, the parameters are appended to the URL using a Keyword Value Pair (KVP)
+encoding.
+
+
+Here is the list of the common parameters, supported by all WFS operations:
+
+| Operation | Description | Possible values | Optionality and use |
+|-----------|--------------------------------------|------------------------------------------------------------------------------------------------------|----------------------------------------|
+| `service` | The requested service | `WFS` | One (Mandatory) |
+| `request` | The requested operation | `GetCapabilities`, `DescribeFeatureType`, `GetFeature`, `ListStoredQueries`, `DescribeStoredQueries` | One (Mandatory) |
+| `version` | The requested version of the service | `2.0.0` | One (Mandatory except GetCapabilities) |
+
+**Notice that all usable parameters in this API are case-insensitive**.
+## Common usages
+
+* Viewing and analyzing geographic data: QGIS or ArcGIS can be used to connect to a WFS service and visualize the retrieved data on a map. This allows users to explore and analyze the data in a familiar GIS environment.
+
+
+* Filtering data based on attributes or location: Users can also use the WFS API to filter data based on attributes or location. For example, users may want to filter out features that are not relevant to their analysis or only include features near from a point of interest.
+
+
+Overall, the WFS API provides a flexible and powerful tool for accessing and analyzing geographic data by other software, enabling users to perform a wide range of tasks related to spatial analysis, visualization, and mapping.
+
+## Examples
+
+
GetCapabilities
+
+> [Basic example GetCapabilities](https://documentation-resources.opendatasoft.com/api/wfs?service=WFS&request=GetCapabilities)
+
+>
+
+```http
+GET https://documentation-resources.opendatasoft.com/api/wfs?service=WFS&request=GetCapabilities HTTP/1.1
+```
+* Example 1 : To retrieve the service metadata. This will return an XML document that describes the capabilities of the WFS service, including supported operations, data types, and service metadata.
+
+>
+
+> [Parameterized example GetCapabilities](https://documentation-resources.opendatasoft.com/api/wfs?SERVICE=WFS&REQUEST=GetCapabilities&SECTIONS=ServiceProvider)
+
+```http
+GET https://documentation-resources.opendatasoft.com/api/wfs?SERVICE=WFS&REQUEST=GetCapabilities&SECTIONS=ServiceProvider HTTP/1.1
+```
+
+* Example 2 : To retrieve the service provider metadata, you can use the following URL.
+
+
DescribeFeatureType
+
+> [Basic example DescribeFeatureType](https://documentation-resources.opendatasoft.com/api/wfs?SERVICE=WFS&REQUEST=DescribeFeatureType&VERSION=2.0.0)
+
+>
+
+```http
+GET https://documentation-resources.opendatasoft.com/api/wfs?SERVICE=WFS&REQUEST=DescribeFeatureType&VERSION=2.0.0 HTTP/1.1
+```
+
+* Example 1 : To retrieve schema description of features types serviced by the service. This will return an XSD document that describes the features types.
+
+> [Parameterized example DescribeFeatureType](https://documentation-resources.opendatasoft.com/api/wfs?SERVICE=WFS&REQUEST=DescribeFeatureType&VERSION=2.0.0&TYPENAMES=arrondissements-paris)
+
+>
+
+```http
+GET https://documentation-resources.opendatasoft.com/api/wfs?SERVICE=WFS&REQUEST=DescribeFeatureType&VERSION=2.0.0&TYPENAMES=arrondissements-paris HTTP/1.1
+```
+
+* Example 2 : To retrieve schema description of a feature type. This will return the XSD document that describes an Opendatasoft dataset.
+
+
GetFeature
+
+> [Basic example GetFeature](https://documentation-resources.opendatasoft.com/api/wfs?SERVICE=WFS&REQUEST=GetFeature&VERSION=2.0.0&TYPENAMES=arrondissements-paris)
+
+>
+
+```http
+GET https://documentation-resources.opendatasoft.com/api/wfs?SERVICE=WFS&REQUEST=GetFeature&VERSION=2.0.0&TYPENAMES=arrondissements-paris HTTP/1.1
+```
+
+* Example 1 : To retrieve features from the `arrondissements-paris` dataset.
+
+> [Parameterized example GetFeature](https://documentation-resources.opendatasoft.com/api/wfs?SERVICE=WFS&REQUEST=GetFeature&VERSION=2.0.0&TYPENAMES=arrondissements-paris&BBOX=(48.811090519909115,2.34832763671875,48.90686235347725,2.4300384521484375))
+
+>
+
+```http
+GET https://documentation-resources.opendatasoft.com/api/wfs?SERVICE=WFS&REQUEST=GetFeature&VERSION=2.0.0&TYPENAMES=arrondissements-paris&BBOX=(48.811090519909115,2.34832763671875,48.90686235347725,2.4300384521484375) HTTP/1.1
+```
+
+* Example 2 : To retrieve features from the `arrondissements-paris` dataset within a bounding box.
+
+
ListStoredQueries
+
+> [Basic example ListStoredQueries](https://documentation-resources.opendatasoft.com/api/wfs?SERVICE=WFS&REQUEST=ListStoredQueries&VERSION=2.0.0)
+
+>
+
+```http
+GET https://documentation-resources.opendatasoft.com/api/wfs?SERVICE=WFS&REQUEST=ListStoredQueries&VERSION=2.0.0 HTTP/1.1
+```
+
+* Example : To retrieve stored queries from the workspace.
+
+
DescribeStoredQueries
+
+> [Basic example DescribeStoredQueries](https://documentation-resources.opendatasoft.com/api/wfs?SERVICE=WFS&REQUEST=DescribeStoredQueries&VERSION=2.0.0)
+
+>
+
+```http
+GET https://documentation-resources.opendatasoft.com/api/wfs?SERVICE=WFS&REQUEST=DescribeStoredQueries&VERSION=2.0.0 HTTP/1.1
+```
+
+* Example : To retrieve stored queries structure from the workspace (it gives details about input parameters and responses of stored queries).
+
+## Exception reports
+
+> Exception example
+
+```xml
+
+
+
+ Service must be WFS or CSW.
+
+
+```
+
+When an error occurs, the service responds to the client using an Exception Report message to describe the error.
+
+| Name | Definition | Data type and value | Multiplicity and use |
+|-----------------|----------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------|
+| `ExceptionText` | Text describing specific exception represented by the exceptionCode | Character String type, not empty. Value is an exception description as defined by individual servers | Zero or more (optional). Omitted only when no more useful information available |
+| `exceptionCode` | Code representing type of this exception | Character String type, not empty. Allowed values are specified by each implementation specification and server implementation | One (mandatory) |
+| `locator` | Indicator of location in the client's operation request where this exception was encountered | Character String type, not empty Contents defined for each allowed exceptionCode value for each operation | Zero or one (optional). Omitted when no useful value available |
diff --git a/source/includes/wfs-v2/stored_queries.md b/source/includes/wfs-v2/stored_queries.md
new file mode 100644
index 0000000..2cd0a34
--- /dev/null
+++ b/source/includes/wfs-v2/stored_queries.md
@@ -0,0 +1,27 @@
+## ListStoredQueries
+
+> [ListStoredQueries operation](https://documentation-resources.opendatasoft.com/api/wfs?service=WFS&request=ListStoredQueries&version=2.0.0)
+
+>
+
+```http
+GET https://documentation-resources.opendatasoft.com/api/wfs?service=WFS&request=ListStoredQueries&version=2.0.0 HTTP/1.1
+```
+
+The `ListStoredQueries` operation lists the stored queries that are available in the WFS service, it does not require any parameters.
+
+This operation is only available in v2.0.0.
+
+## DescribeStoredQueries
+
+> [DescribeStoredQueries operation](https://documentation-resources.opendatasoft.com/api/wfs?service=WFS&request=DescribeStoredQueries&version=2.0.0)
+
+>
+
+```http
+GET https://documentation-resources.opendatasoft.com/api/wfs?service=WFS&request=DescribeStoredQueries&version=2.0.0 HTTP/1.1
+```
+
+The `DescribeStoredQueries` operation generates a description of the named stored queries that are available in the WFS service, it does not require any parameters.
+
+This operation is only available in v2.0.0.
diff --git a/source/layouts/layout.erb b/source/layouts/layout.erb
index e288385..de3f29e 100755
--- a/source/layouts/layout.erb
+++ b/source/layouts/layout.erb
@@ -90,7 +90,7 @@ under the License.