Skip to main content

A Python client library for the Street Manager API

Project description

Street Manager Python Client

A Python client library for the Street Manager API, providing access to work, geojson, lookup, party, event, and reporting endpoints.

Installation

uv add streetmanager

Usage

# Import the client modules
from streetmanager.work import swagger_client as work_client
from streetmanager.geojson import swagger_client as geojson_client
from streetmanager.lookup import swagger_client as lookup_client
from streetmanager.party import swagger_client as party_client
from streetmanager.event import swagger_client as event_client
from streetmanager.reporting import swagger_client as reporting_client

# Create API client instances
work_api = work_client.DefaultApi()
geojson_api = geojson_client.DefaultApi()
lookup_api = lookup_client.DefaultApi()
party_api = party_client.DefaultApi()
event_api = event_client.DefaultApi()
reporting_api = reporting_client.DefaultApi()

# Use the APIs
# Example: Get work details
work_response = work_api.get_work(work_id="123")

# Example: Get GeoJSON data
geojson_response = geojson_api.get_work_geojson(work_id="123")

# Example: Lookup street details
street_response = lookup_api.get_street(usrn="123456")

# Example: Get party details
party_response = party_api.get_party(party_id="123")

# Example: Get works updates
works_updates = event_api.get_works_updates()

# Example: Get reporting data
reporting_data = reporting_api.get_reports()

Authentication

To authenticate with the Street Manager API, you'll need to provide your credentials and use the authentication flow:

import os
from streetmanager.work import swagger_client as streetmanager_client
from streetmanager.work.swagger_client.rest import ApiException

class StreetManagerAPI:
    def __init__(self, base_url: str, username: str, password: str):
        self.base_url = base_url
        self.username = username
        self.password = password
        self.auth_response = self._perform_authentication()

    def _perform_authentication(self):
        # Initial configuration for authentication
        configuration = streetmanager_client.Configuration()
        configuration.host = self.base_url

        # Create API client for authentication
        api_client = streetmanager_client.ApiClient(configuration)
        auth_api_instance = streetmanager_client.DefaultApi(api_client)

        # Create authentication request
        auth_request = streetmanager_client.AuthenticationRequest(
            email_address=self.username, password=self.password
        )

        try:
            response = auth_api_instance.authenticate(auth_request)
            return response
        except ApiException as e:
            if e.body:
                print("Response body:", e.body)
            raise

    def get_api_instance(self) -> streetmanager_client.DefaultApi:
        if not self.auth_response:
            raise Exception("Authentication response not available. Ensure authentication was successful.")

        # Create a new configuration for the specific API calls
        configuration = streetmanager_client.Configuration()
        configuration.host = self.base_url

        # Configure for id_token
        configuration.api_key["token"] = self.auth_response.id_token
        configuration.api_key_prefix["token"] = ""

        # Create API client with the token-specific configuration
        api_client = streetmanager_client.ApiClient(configuration)
        return streetmanager_client.DefaultApi(api_client)

# Configuration
BASE_URL = "https://api.sandbox.manage-roadworks.service.gov.uk/v6/work"
USERNAME = "your-email@example.com"
PASSWORD = os.getenv("STREETMANAGER_PASSWORD")  # Store your password securely in environment variables

# Initialize the API Handler
sm_api_handler = StreetManagerAPI(BASE_URL, USERNAME, PASSWORD)

# Get an authenticated API instance
api_instance = sm_api_handler.get_api_instance()

# Now you can use the API instance for authenticated requests
work_response = api_instance.get_work(work_id="123")

Features

  • Work API client for managing street works
  • GeoJSON API client for accessing geographical data
  • Lookup API client for street information
  • Party API client for managing party information
  • Event API client for getting works updates
  • Reporting API client for reporting functionality

Requirements

  • Python 3.12 or higher
  • Dependencies are automatically installed with the package

https://department-for-transport-streetmanager.github.io/street-manager-docs/api-documentation/V6/V6.0/json/geojson-swagger.json

https://department-for-transport-streetmanager.github.io/street-manager-docs/api-documentation/V6/V6.0/json/work-swagger.json

https://department-for-transport-streetmanager.github.io/street-manager-docs/api-documentation/V6/V6.0/json/lookup-swagger.json

https://department-for-transport-streetmanager.github.io/street-manager-docs/api-documentation/V6/V6.0/json/party-swagger.json

https://department-for-transport-streetmanager.github.io/street-manager-docs/api-documentation/V6/V6.0/json/event-swagger.json

https://department-for-transport-streetmanager.github.io/street-manager-docs/api-documentation/V6/V6.0/json/reporting-swagger.json

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

streetmanager-0.2.0.tar.gz (834.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

streetmanager-0.2.0-py3-none-any.whl (2.0 MB view details)

Uploaded Python 3

File details

Details for the file streetmanager-0.2.0.tar.gz.

File metadata

  • Download URL: streetmanager-0.2.0.tar.gz
  • Upload date:
  • Size: 834.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.7.13

File hashes

Hashes for streetmanager-0.2.0.tar.gz
Algorithm Hash digest
SHA256 412155395ddf2c38c5b2e5830117891014f08c94aa6f8265b808476d28a5cc62
MD5 d1dbd36f992a38748ec73eb0ac0de99d
BLAKE2b-256 a13627bbd027ff424dc2ae163c964df8273dbd21b3fa9d1106011afca6ef0428

See more details on using hashes here.

File details

Details for the file streetmanager-0.2.0-py3-none-any.whl.

File metadata

File hashes

Hashes for streetmanager-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 df35f4749618492a37418e9336c7ce21d0c5e33936c4998f1a303920c8f5b10a
MD5 171b4063da6830bcec36235623034bae
BLAKE2b-256 51a20676e333a626b2ad3fd8fd7eb75c6f816ffaf73168d941753b38a6cafec8

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page