openapi: 3.1.0
info:
title: CAA Consultations API (Citizen Space 2.4)
version: '2.4'
summary: Public consultation activities published by the UK Civil Aviation Authority.
description: >-
Machine-readable description of the Citizen Space (Delib) public consultation
API deployed on the UK Civil Aviation Authority's consultations domain.
PROVENANCE: this document is NOT published by the UK CAA or by Delib. It was
written by API Evangelist as a faithful transcription of the CAA's own
published API reference at https://consultations.caa.co.uk/api/2.4/ (HTTP 200,
fetched 2026-07-28), with every parameter name, allowed value, description and
response field copied from that page. Field names and types were then
cross-checked against a live anonymous response
(GET /api/2.4/json_search_results?st=open&fields=all -> HTTP 200,
application/json, 57,395 bytes, 2026-07-28). Nothing was invented; where the
published documentation and the live response disagree on a field name, both
are recorded and the divergence is flagged with x-doc-name.
The CAA publishes no OpenAPI of its own. Versions 2.0, 2.1, 2.2, 2.3 and 2.4
are served concurrently at https://consultations.caa.co.uk/api/. No API key,
no signup and no documented rate limit.
contact:
name: UK Civil Aviation Authority
url: https://consultations.caa.co.uk/
x-evidence:
docs: https://consultations.caa.co.uk/api/2.4/
docs_status: 200
docs_probed: '2026-07-28'
version_index: https://consultations.caa.co.uk/api/
live_verification:
url: https://consultations.caa.co.uk/api/2.4/json_search_results?st=open&fields=all
status: 200
content_type: application/json
bytes: 57395
probed: '2026-07-28'
vendor_guide: https://help.delib.net/article/350-api-v2-x-developers-guide
authored_by: API Evangelist enrichment pipeline
method: generated
servers:
- url: https://consultations.caa.co.uk/api/2.4
description: Citizen Space API version 2.4 (current)
- url: https://consultations.caa.co.uk/api/2.3
description: Citizen Space API version 2.3
- url: https://consultations.caa.co.uk/api/2.2
description: Citizen Space API version 2.2
- url: https://consultations.caa.co.uk/api/2.1
description: Citizen Space API version 2.1
- url: https://consultations.caa.co.uk/api/2.0
description: Citizen Space API version 2.0
tags:
- name: Consultations
description: Published CAA consultation and engagement activities.
paths:
/json_search_results:
get:
operationId: json_search_results
summary: Search published consultation activities
description: >-
Accepts any of the documented search parameters. If no arguments are
supplied, all published activities are returned. Any unsupported
arguments are ignored. Returns a JSON array of activity objects.
tags: [Consultations]
parameters:
- name: tx
in: query
required: false
description: Free text search, case insensitive (eg "Park")
schema: { type: string }
- name: pc
in: query
required: false
description: Postcode, accepts partial postcodes (eg "BS8" or "BS8 111")
schema: { type: string }
- name: st
in: query
required: false
description: State, must be one of `open`, `forthcoming` or `closed`
schema:
type: string
enum: [open, forthcoming, closed]
- name: au
in: query
required: false
description: Audience ID, must be one of the audiences configured on the site
schema: { type: string }
- name: in
in: query
required: false
description: Interest ID, must be one of the interests configured on the site
schema: { type: string }
- name: de
in: query
required: false
description: >-
Department the activity sits within. Value must be the same as the ID
of a department within the site
schema: { type: string }
- name: ar
in: query
required: false
description: Area ID, must be one of the areas configured on the site
schema: { type: string }
- name: dk
in: query
required: false
description: Date search type, must be one of `op` (open date) and `cl` (close date)
schema:
type: string
enum: [op, cl]
- name: fd
in: query
required: false
description: Date to search from. Must be used in conjunction with `dk` (dd/mm/yyyy)
schema: { type: string }
- name: td
in: query
required: false
description: Date to search until. Must be used in conjunction with `dk` (dd/mm/yyyy)
schema: { type: string }
- name: at
in: query
required: false
description: Activity type. Must be one of the activity types available to the site.
schema: { type: string }
- name: ct
in: query
required: false
deprecated: true
description: >-
(deprecated) Legacy activity type. Must be one of `QuickConsult`
(Online Survey), `File` (Email/Postal Activity), `Document` (Offline
Activity), or `Link` (Link)
schema:
type: string
enum: [QuickConsult, File, Document, Link]
- name: fields
in: query
required: false
description: >-
Determines which groups of metadata fields about the activities will
be returned. Permissible values are 'basic', 'extended' and 'all'.
Omitting this parameter is equivalent to 'basic'.
schema:
type: string
enum: [basic, extended, all]
default: basic
responses:
'200':
description: A JSON array of activities matching the search.
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Activity'
/json_consultation_details:
get:
operationId: json_consultation_details
summary: Get one consultation activity by department and activity ID
description: >-
Returns a JSON structure containing the same fields as
json_search_results. If dept or id are not specified or do not exist, a
404 status code is returned.
tags: [Consultations]
parameters:
- name: dept
in: query
required: true
description: The ID of the department (eg 'parks-and-recreation')
schema: { type: string }
- name: id
in: query
required: true
description: The ID of the activity (eg 'spring-planting-in-kings-gardens')
schema: { type: string }
- name: fields
in: query
required: false
description: >-
Determines which groups of metadata fields about the activities will
be returned. Permissible values are 'basic', 'extended' and 'all'.
Omitting this parameter is equivalent to 'basic'.
schema:
type: string
enum: [basic, extended, all]
default: basic
responses:
'200':
description: The activity.
content:
application/json:
schema:
$ref: '#/components/schemas/Activity'
'404':
description: >-
Returned when dept or id are not specified or do not exist
(documented verbatim in the CAA API reference).
components:
schemas:
Activity:
type: object
title: Consultation activity
description: >-
A published consultation or engagement activity. Field groups follow the
`fields` parameter: basic fields are always present, fields marked
extended require fields=extended or above, fields marked all require
fields=all.
properties:
id:
type: string
description: The ID of the activity
title:
type: string
description: The title of the activity
url:
type: string
description: The URL of the activity
status:
type: string
enum: [open, forthcoming, closed]
description: 'State: one of `open`, `forthcoming` or `closed`'
overview:
type: string
description: Overview of the activity (HTML)
startdate:
type: string
description: The date the activity opens / opened on (observed format yyyy/mm/dd)
enddate:
type: string
description: The date the activity closes / closed on (observed format yyyy/mm/dd)
activity_type:
type: string
description: The activity type ID
workspace_title:
type: string
description: The title of the workspace that the activity belongs to (extended and above)
workspace_id:
type: string
description: The ID of the workspace that the activity belongs to (extended and above)
department:
type: string
deprecated: true
description: (deprecated) The name of the department that the activity belongs to (extended and above)
dept:
type: string
deprecated: true
description: (deprecated) The ID of the department that the activity belongs to (extended and above)
type_string:
type: string
description: Human readable activity type (extended and above)
type:
type: string
deprecated: true
description: (deprecated) The legacy type (extended and above)
participate_url:
type: string
x-doc-name: participation_url
description: >-
The direct URL to the participation method (survey etc), skipping the
overview page (extended and above). The published reference names this
field `participation_url`; the live 2.4 response emits
`participate_url` — verified 2026-07-28.
progress:
type: string
description: The current state of the activity (extended and above)
visibility:
type: string
enum: [public, private]
description: Either 'public' or 'private' depending on if the activity has been hidden from end users (extended and above)
why:
type: [string, 'null']
description: The contents of the 'why are we consulting?' field (all only)
what_happens_next:
type: [string, 'null']
description: The contents of the 'what happens next?' field (all only)
feedbackdate:
type: string
description: The date that activity feedback is/was expected (all only)
resultdate:
type: string
x-doc-name: resultsdate
description: >-
The date that activity results are/were expected (all only). The
published reference names this field `resultsdate`; the live 2.4
response emits `resultdate` — verified 2026-07-28.
contact_name:
type: string
description: The full name entered in the activity's contact details (all only)
contact_jobtitle:
type: string
description: The job title entered in the activity's contact details (all only)
contact_team:
type: string
description: The team name entered in the activity's contact details (all only)
contact_phone:
type: string
description: The phone number entered in the activity's contact details (all only)
contact_email:
type: string
description: The email address entered in the activity's contact details (all only)
related_links:
type: array
description: A list of related links (all only)
items:
$ref: '#/components/schemas/RelatedLink'
related_consultations:
type: array
description: A list of related activities (all only)
items:
$ref: '#/components/schemas/RelatedLink'
supporting_documents:
type: array
description: A list of supporting documents (all only)
items:
$ref: '#/components/schemas/SupportingDocument'
audiences:
type: array
description: A list of audiences this activity applies to (all only)
items:
$ref: '#/components/schemas/Term'
areas:
type: array
description: >-
A list of ids for areas this activity applies to. NB: This field is
omitted unless area support is installed (all only)
items:
$ref: '#/components/schemas/Term'
interests:
type: array
description: A list of ids for interests this activity applies to (all only)
items:
$ref: '#/components/schemas/Term'
RelatedLink:
type: object
properties:
url:
type: string
description: The absolute url to link to
title:
type: string
description: The human-readable title of the link. Used for display.
SupportingDocument:
type: object
properties:
url:
type: string
description: The absolute url to link to
title:
type: string
description: >-
The human-readable title of the document, or filename if title was not
specified. Used for display.
size:
type: string
description: The size of the document including units (eg kB, MB). Used for display.
Term:
type: object
description: An audience, area or interest term.
properties:
id:
type: string
description: The ID of the term. Used for searching.
name:
type: string
description: The human-readable name of the term. Used for display.