RCS Service Contract¶
This release of RCS publishes endpoints at /v1
and /v0.9
. The
endpoints at /v1
are compatible with registration requests for schemas 1.0
and 1.1 and document requests for RAMP schema 1.0 .
The current JSON schema is used to validate registration requests is at:
An older schema for RAMP versions prior to schema 1.0 is documented at:
GET /v1/doc/[lang]/[smallkey]
¶
Success Code: 200
Request Body: Empty
Response Body: JSON Object
The response will have a JSON configuration fragment to be merged into the RAMP configuration. It will be compatible with RAMP schema 1.0, although as it is a fragment it will not validate against the schema without additional configuration being supplied.
Error conditions:
- invalid language code: 400 Bad Request, response body empty
- smallkey not found: 404 Not Found, response body empty
GET /v1/docs/[lang]/[smallkey]{,[smallkey]}
¶
Success Code: 200
Request Body: Empty
Response Body: JSON Array
The response will be an array of JSON objects, each object will be a JSON configuration fragment to be merged into the RAMP config. It will be compatible with RAMP schema 1.0, although as it is a fragment it will not validate against the schema without additional configuration being supplied.
Error conditions:
- invalid language code: 400 Bad Request, response body empty
- smallkey not found: 200 normal response, the corresponding fragment will be
structured as:
{"error_code":404,"smallkey":"[smallkey]"}
PUT /v1/register/[smallkey]
¶
Success Code: 201
Request Body: JSON Object
Request Headers: Implement the Request Signing protocol
Response Body: Empty
Error Conditions:
- payload does not conform to schema: 400 Bad Request, body contains
{"errors":["message 1","message 2"]}
- invalid timestamp format: 400 Bad Request
- unable to verify metadata surce: 400 Bad Request
- missing headers / unretrivable key: 401 Not Authorized
- exception in processing: 500 Internal Server Error, empty body
Registration requests are validated against The body of the request should conform to:
{"version":"1.1.0","payload_type":("feature","wms"),"en":(payload),"fr":(payload) }
- RCS currently accepts 1.0.0 and 1.1.0 requests
Payload Type feature
¶
The feature payload should conform to:
{
"service_url": (str: URL to ESRI REST Feature Layer Endpoint),
"service_name": (str: Layer Name),
"display_field": (str: Layer Attribute),
"metadata": {
"uuid": (str: a unique identifier),
"catalogue_url": (str: URL describing the layer in full detail)
"metadata_url": (str: direct URL to metadata for that layer)
}
}
- the service URL should not have any query string component
metadata
,display_field
,service_name
are optional- where
service_url
specifies Feature Layer endpoint, this may be an endpoint from a Feature Service or a Map Service; what is important is that the URL should reference the layer id within it - NOTE metadata should be present for most layers, it is left as optional only for exceptional cases
- one of
uuid
or*_url
should be specified metadata_url
should be direct URL to the layer’s metadata which should be in XML formatcatalogue_url
should be a URL linking back to the catalogue’s page describing the layeruuid
should be a unique identifier which can be prefixed with a preconfigured metadata URL to retrieve specific metadata for that layer
Payload Type wms
¶
The wms payload should conform to:
{
"service_url": (str: URL to WMS Service),
"layer": (str: Layer Identifier),
"legend_format": (str: MIME type)",
"feature_info_type": (str: MIME type),
"metadata": {
"uuid": (str: a unique identifier),
"catalogue_url": (str: URL describing the layer in full detail)
"metadata_url": (str: direct URL to metadata for that layer)
}
}
- the service URL should not have any query string component
layer
is required and must match the a layer identifier specified in the WMSlegend_format
is an optional string, if present it indicates legend support on the WMS and specifies the image MIME type to request from the serverfeature_info_type
is an optional field, if present it indicates feature info support on the WMS, default parsers are available fortext/html
(direct HTML code which can be inserted into a RAMP panel),text/plain
(plain text which will be wrapped in a paragraph tag and then inserted into a RAMP panel NOTE: all formatting will be lost), andapplication/json
(a JSON fragment which will have its top level properties displayed in a tabular format in a RAMP panel)- NOTE metadata should be present for most layers, it is left as optional only for exceptional cases
- one of
uuid
or*_url
should be specified metadata_url
should be direct URL to the layer’s metadata which should be in XML formatcatalogue_url
should be a URL linking back to the catalogue’s page describing the layeruuid
should be a unique identifier which can be prefixed with a preconfigured metadata URL to retrieve specific metadata for that layer
DELETE /v1/register/[smallkey]
¶
Success Code: 204
Request Body: Empty
Request Headers: Implement the Request Signing protocol
Response Body: Empty
Error Conditions:
- smallkey not found: 404 Not Found
- invalid timestamp format: 400 Bad Request
- missing headers / unretrivable key: 401 Not Authorized
- exception in processing: 500 Internal Server Error, empty body
POST /v1/update/[age]
¶
added in RCS 1.8.0
Success Code: 200
Request Body: Empty
Request Headers: Implement the Request Signing protocol
Request Params: age should be either “all” or a positive integer indicating the minimum age in days that a record should be before it is updated
Response Body: { "success": ["smallkey", …], "errors": {"smallkey": "message", …} }
Error conditions:
- Age is invalid, error code 400, body {“error”:”argument should be either ‘all’ or a positive integer”}
PUT /v1/simplification/[smallkey]
¶
added in RCS 1.9.0
Success Code: 200
Request Body: JSON Object
Request Headers: Implement the Request Signing protocol
The body of the request should conform to:
{"user":"<user name>","factor":<simplification factor> }
Response Body: { "success": ["smallkey", …], "errors": {"smallkey": "message", …} }
Error conditions:
- smallkey not found: 404 Not Found
- smallkey maps to non-feature layer: 400 Record is not a feature layer
- factor is not an integer: 400 Invalid payload JSON
- exception in processing: 500 Internal Server Error, empty body