Open Government, Luxembourg
Open Government, Luxembourg — free-tier JSON endpoint
Open Government, Luxembourg offers a free API tier. We verified JSON on a sample GET (Government). Check provider docs for key requirements and limits.
We probe a documented GET and expect 2xx JSON — full uptime and health score. Open provider docs ↗
On our probe schedule. Uptime charts appear after the first check lands.
GET https://data.public.lu/api/1/swagger.json
{
"basePath": "/api/1",
"consumes": [
"application/json"
],
"definitions": {
"Activity": {
"properties": {
"actor": {
"allOf": [
{
"$ref": "#/definitions/UserReference"
}
],
"description": "The user who performed the action",
"readOnly": true
},
"created_at": {
"description": "When the action has been performed",
"format": "date-time",
"readOnly": true,
"type": "string"
},
"extras": {
"description": "Extras attributes as key-value pairs",
"type": "object"
},
"icon": {
"description": "The icon of the activity",
"type": "string"
},
"key": {
"description": "The key of the activity",
"type": "string"
},
"label": {
"description": "The label of the activity",
"type": "string"
},
"organization": {
"allOf": [
{
"$ref": "#/definitions/OrganizationReference"
}
],
"description": "The organization who performed the action",
"readOnly": true
},
"related_to": {
"description": "The activity target name",
"type": "string"
}
},
"required": [
"icon",
"key"
],
"type": "object"
},
"ActivityPage": {
"properties": {
"data": {
"description": "The page data",
"items": {
"$ref": "#/definitions/Activity"
},
"type": "array"
},
"next_page": {
"description": "The next page URL if exists",
"type": "string"
},
"page": {
"description": "The current page",
"minimum": 1,
"type": "integer"
},
"page_size": {
"description": "The page size used for pagination",
"minimum": 0,
"type": "integer"
},
"previous_page": {
"description": "The previous page URL if exists",
"type": "string"
},
"total": {
"description": "The total paginated items",
"minimum": 0,
"type": "integer"
}
},
"required": [
"page",
"page_size"
],
"type": "object"
},
"ApiKey": {
"properties": {
"apikey": {
"description": "The user API Key",
"readOnly": true,
"type": "string"
}
},
"type": "object"
},
"Badge": {
"properties": {
"kind": {
"description": "Kind of badge (certified, etc), specific to each model",
"type": "string"
}
},
"required": [
"kind"
],
"type": "object"
},
"BaseReference": {
"discriminator": "class",
"properties": {
"class": {
"description": "The object class",
"type": "string"
},
"id": {
"description": "The object unique identifier",
"type": "string"
}
},
"required": [
"class",
"id"
],
"type": "object"
},
"CatalogSchema": {
"properties": {
"consolidation_dataset_id": {
"type": "string"
},
"contact": {
"type": "string"
},
"datapackage_description": {
"description": "Only present if the schema is inside a datapackage",
"type": "string"
},
"datapackage_name": {
"description": "Only present if the schema is inside a datapackage",
"type": "string"
},
"datapackage_title": {
"description": "Only present if the schema is inside a datapackage",
"type": "string"
},
"description": {
"type": "string"
},
"examples": {
"items": {
"$ref": "#/definitions/CatalogSchemaExample"
},
"type": "array"
},
"external_doc": {
"type": "string"
}
},
"type": "object"
},
"CatalogSchemaExample": {
"properties": {
"path": {
"type": "string"
},
"title": {
"type": "string"
}
},
"type": "object"
},
"CatalogSchemaVersion": {
"properties": {
"schema_url": {
"type": "string"
},
"version_name": {
"type": "string"
}
},
"type": "object"
}
},
"host": "data.public.lu",
"info": {
"description": "uData API",
"title": "uData API",
"version": "1.0"
},
"paths": {
"/activity": {
"get": {
"operationId": "activity",
"parameters": [
{
"default": 1,
"description": "The page to fetch",
"in": "query",
"name": "page",
"type": "integer"
},
{
"default": 20,
"description": "The page size to fetch",
"in": "query",
"name": "page_size",
"type": "integer"
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"$ref": "#/definitions/ActivityPage"
}
}
},
"summary": "Fetch site activity, optionally filtered by user of org",
"tags": [
"site"
]
}
},
"/avatars/{identifier}/{size}": {
"get": {
"operationId": "avatars",
"responses": {
"200": {
"description": "Success"
}
},
"summary": "Get a deterministic avatar given an identifier at a given size",
"tags": [
"avatars"
]
},
"parameters": [
{
"in": "path",
"name": "identifier",
"required": true,
"type": "string"
},
{
"in": "path",
"name": "size",
"required": true,
"type": "integer"
}
]
},
"/contacts/": {
"post": {
"operationId": "create_contact_point",
"parameters": [
{
"in": "body",
"name": "payload",
"required": true,
"schema": {
"$ref": "#/definitions/ContactPoint"
}
},
{
"description": "An optional fields mask",
"format": "mask",
"in": "header",
"name": "X-Fields",
"type": "string"
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"$ref": "#/definitions/ContactPoint"
}
},
"400": {
"description": "Validation error"
}
},
"summary": "Creates a contact point",
"tags": [
"contacts"
]
}
},
"/contacts/{contact_point}/": {
"delete": {
"operationId": "delete_contact_point",
"responses": {
"204": {
"description": "Contact point deleted"
},
"404": {
"description": "Contact point not found"
}
},
"summary": "Deletes a contact point given its identifier",
"tags": [
"contacts"
]
},
"get": {
"operationId": "get_contact_point",
"parameters": [
{
"description": "An optional fields mask",
"format": "mask",
"in": "header",
"name": "X-Fields",
"type": "string"
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"$ref": "#/definitions/ContactPoint"
}
},
"404": {
"description": "Contact point not found"
}
},
"summary": "Get a contact point given its identifier",
"tags": [
"contacts"
]
},
"parameters": [
{
"in": "path",
"name": "contact_point",
"required": true,
"type": "string"
}
],
"put": {
"operationId": "update_contact_point",
"parameters": [
{
"in": "body",
"name": "payload",
"required": true,
"schema": {
"$ref": "#/definitions/ContactPoint"
}
},
{
"description": "An optional fields mask",
"format": "mask",
"in": "header",
"name": "X-Fields",
"type": "string"
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"$ref": "#/definitions/ContactPoint"
}
},
"400": {
"description": "Validation error"
},
"404": {
"description": "Contact point not found"
}
},
"summary": "Updates a contact point given its identifier",
"tags": [
"contacts"
]
}
},
"/dataservices/": {
"get": {
"operationId": "list_dataservices",
"parameters": [
{
"default": 1,
"description": "The page to display",
"in": "query",
"name": "page",
"type": "integer"
},
{
"default": 20,
"description": "The page size",
"in": "query",
"name": "page_size",
"type": "integer"
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"$ref": "#/definitions/DataservicePage"
}
}
},
"summary": "List or search all dataservices",
"tags": [
"dataservices"
]
},
"post": {
"operationId": "create_dataservice",
"parameters": [
{
"in": "body",
"name": "payload",
"required": true,
"schema": {
"$ref": "#/definitions/Dataservice%20%28write%29"
}
},
{
"description": "An optional fields mask",
"format": "mask",
"in": "header",
"name": "X-Fields",
"type": "string"
}
],
"responses": {
"201": {
"description": "Success",
"schema": {
"$ref": "#/definitions/Dataservice%20%28read%29"
}
},
"400": {
"description": "Validation error"
}
},
"tags": [
"dataservices"
]
}
},
"/dataservices/{dataservice}/": {
"delete": {
"operationId": "delete_dataservice",
"responses": {
"204": {
"description": "dataservice deleted"
}
},
"tags": [
"dataservices"
]
},
"get": {
"operationId": "get_dataservice",
"parameters": [
{
"description": "An optional fields mask",
"format": "mask",
"in": "header",
"name": "X-Fields",
"type": "string"
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"$ref": "#/definitions/Dataservice%20%28read%29"
}
}
},
"tags": [
"dataservices"
]
},
"parameters": [
{
"in": "path",
"name": "dataservice",
"required": true,
"type": "string"
}
],
"patch": {
"operationId": "update_dataservice",
"parameters": [
{
"in": "body",
"name": "payload",
"required": true,
"schema": {
"$ref": "#/definitions/Dataservice%20%28write%29"
}
},
{
"description": "An optional fields mask",
"format": "mask",
"in": "header",
"name": "X-Fields",
"type": "string"
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"$ref": "#/definitions/Dataservice%20%28read%29"
}
},
"400": {
"description": "Validation error"
}
},
"tags": [
"dataservices"
]
}
},
"/dataservices/{dataservice}/datasets/": {
"parameters": [
{
"description": "The dataservice ID or slug",
"in": "path",
"name": "dataservice",
"required": true,
"type": "string"
}
],
"post": {
"operationId": "dataservice_datasets_create",
"parameters": [
{
"in": "body",
"name": "payload",
"required": true,
"schema": {
"items": {
"$ref": "#/definitions/DataserviceDatasetsAdd"
},
"type": "array"
}
},
{
"description": "An optional fields mask",
"format": "mask",
"in": "header",
"name": "X-Fields",
"type": "string"
}
],
"responses": {
"200": {
"description": "Success",
"schema": {
"$ref": "#/definitions/Dataservice%20%28read%29"
}
},
"400": {
"description": "Malformed object id(s) in request"
},
"403": {
"description": "Forbidden"
},
"404": {
"description": "Dataservice not found"
},
"410": {
"description": "Dataservice has been deleted"
}
},
"tags": [
"dataservices"
]
}
},
"/dataservices/{dataservice}/datasets/{dataset}/": {
"delete": {
"operationId": "delete_dataservice_dataset_api_/dataservices/<dataservice:dataservice>/datasets/<dataset:dataset>/",
"responses": {
"404": {
"description": "Dataservice not found"
}
},
"tags": [
"dataservices"
]
},
"parameters": [
{
"description": "The dataservice ID or slug",
"in": "path",
"name": "dataservice",
"required": true,
"type": "string"
},
{
"in": "path",
"name": "dataset",
"required": true,
"type": "string"
}
]
}
},
"produces": [
"application/json"
],
"responses": {
"FieldValidationError": {
"description": "A validation error",
"schema": {
"$ref": "#/definitions/ValidationError"
}
},
"MaskError": {
"description": "When any error occurs on mask"
},
"ParseError": {
"description": "When a mask can't be parsed"
},
"PermissionDenied": {
"description": "Error occuring when the user does not have the required permissions",
"schema": {
"$ref": "#/definitions/Error"
}
},
"UnauthorizedFileType": {
"description": "Error occuring when the user try to upload a non-allowed file type",
"schema": {
"$ref": "#/definitions/Error"
}
},
"UploadError": {
"description": "API Upload response handler",
"schema": {
"$ref": "#/definitions/UploadStatus"
}
},
"UploadProgress": {
"description": "API Upload response handler",
"schema": {
"$ref": "#/definitions/UploadStatus"
}
},
"UploadStatus": {
"description": "API Upload response handler",
"schema": {
"$ref": "#/definitions/UploadStatus"
}
}
}
}curl "https://data.public.lu/api/1/swagger.json"const res = await fetch("https://data.public.lu/api/1/swagger.json");
const data = await res.json();
console.log(data);import requests
res = requests.get("https://data.public.lu/api/1/swagger.json")
print(res.json())/api/1/swagger.jsonPROBEDOpen Government, Luxembourg — free-tier JSON endpoint
/apiApi — documented GET route.
/api/1Api details by ID (example: 1).
/api?limit=10Api — documented GET route.
/api/search?q=testSearch by query parameters.
We probe a documented GET and expect 2xx JSON — full uptime and health score. Export includes every documented route below.
Not tracked yet. Shape-change history starts once this API joins our probe schedule.
Open Government, Luxembourg: common questions
Is Open Government, Luxembourg free to use?
Yes — Open Government, Luxembourg is a free government API. Free tier: Free tier — API key may be required for production. Whether the free tier allows commercial use is unclear — check the provider docs.
Does Open Government, Luxembourg need an API key?
Yes — Open Government, Luxembourg needs a free API key, which you pass on each request. Rate limits: Unpublished.
Can I call Open Government, Luxembourg from the browser?
Yes — Open Government, Luxembourg returns CORS headers over HTTPS, so front-end code can fetch it directly with no backend proxy. Use the fetch snippet on this page, or hit "Run live" to try it now.
Is Open Government, Luxembourg up right now?
Open Government, Luxembourg is catalogued but not yet on our probe schedule, so we don't publish a live status for it. Check the provider's own status page or docs for its current state.