Ofcom · Arazzo Workflow

Ofcom postcode connectivity profile

Version 1.0.0

Build a complete connectivity picture for one UK postcode by calling both Ofcom Connected Nations APIs — fixed broadband availability and mobile coverage across all four UK operators — and joining the two premises-level result sets on UPRN. Ofcom exposes no combined operation, so this stitching is the consumer's job; this workflow is that job written down. Each API needs its own approved Azure APIM subscription key.

1 workflow 2 source APIs 1 provider
View Spec View on GitHub TelecommunicationsUnited KingdomRegulatorBroadbandMobile Network CoverageSpectrumOpen DataConnected NationsArazzoWorkflows

Provider

ofcom

Workflows

postcode-connectivity-profile
Fetch fixed and mobile coverage for a UK postcode and join on UPRN.
Two independent read-only lookups against the same postcode. Both are safe to retry; neither has a request body or any parameter other than the postcode.
2 steps inputs: postCode outputs: fixedAvailability, mobileAvailability, postCode
1
fixed-coverage
$sourceDescriptions.broadband.CoverageByPostCodeGet
Predicted fixed broadband availability for every premises in the postcode. Speed fields use -1 as the "no prediction available" sentinel.
2
mobile-coverage
$sourceDescriptions.mobile.CoverageByPostCodeGet
Predicted mobile coverage for the same postcode across EE, H3 (Three), TF (Virgin Media O2) and VO (Vodafone). Note this API returns an ARRAY of postcode envelopes, unlike the broadband API.

Source API Descriptions

Arazzo Workflow Specification

Raw ↑
arazzo: 1.0.1
info:
  title: Ofcom postcode connectivity profile
  version: 1.0.0
  description: >-
    Build a complete connectivity picture for one UK postcode by calling both Ofcom
    Connected Nations APIs — fixed broadband availability and mobile coverage across
    all four UK operators — and joining the two premises-level result sets on UPRN.
    Ofcom exposes no combined operation, so this stitching is the consumer's job;
    this workflow is that job written down. Each API needs its own approved Azure
    APIM subscription key.
sourceDescriptions:
  - name: broadband
    url: ../openapi/ofcom-connected-nations-broadband-api-openapi.yml
    type: openapi
  - name: mobile
    url: ../openapi/ofcom-connected-nations-mobile-api-openapi.yml
    type: openapi
workflows:
  - workflowId: postcode-connectivity-profile
    summary: Fetch fixed and mobile coverage for a UK postcode and join on UPRN.
    description: >-
      Two independent read-only lookups against the same postcode. Both are safe to
      retry; neither has a request body or any parameter other than the postcode.
    inputs:
      type: object
      required:
        - postCode
      properties:
        postCode:
          type: string
          description: >-
            UK postcode, uppercase with whitespace removed, e.g. SW1A1AA. This is the
            only input either API accepts.
          example: SW1A1AA
    steps:
      - stepId: fixed-coverage
        description: >-
          Predicted fixed broadband availability for every premises in the postcode.
          Speed fields use -1 as the "no prediction available" sentinel.
        operationId: $sourceDescriptions.broadband.CoverageByPostCodeGet
        parameters:
          - name: PostCode
            in: path
            value: $inputs.postCode
        successCriteria:
          - condition: $statusCode == 200
        outputs:
          fixedPostCode: $response.body#/PostCode
          fixedAvailability: $response.body#/Availability
      - stepId: mobile-coverage
        description: >-
          Predicted mobile coverage for the same postcode across EE, H3 (Three),
          TF (Virgin Media O2) and VO (Vodafone). Note this API returns an ARRAY of
          postcode envelopes, unlike the broadband API.
        operationId: $sourceDescriptions.mobile.CoverageByPostCodeGet
        parameters:
          - name: PostCode
            in: path
            value: $inputs.postCode
        successCriteria:
          - condition: $statusCode == 200
        outputs:
          mobileAvailability: $response.body#/0/Availability
    outputs:
      postCode: $inputs.postCode
      fixedAvailability: $steps.fixed-coverage.outputs.fixedAvailability
      mobileAvailability: $steps.mobile-coverage.outputs.mobileAvailability
x-apievangelist:
  generated: '2026-07-25'
  method: generated
  operationIds_verified: true
  note: >-
    Both steps use the operationId CoverageByPostCodeGet, which exists verbatim in
    both source specs — they are distinguished only by sourceDescription and base
    URL. Joining the two result sets on UPRN happens client-side after the workflow.