Skip to main content

API for CSV converted by udata-hydra

Project description

udata-hydra-csvapi

This connects to udata-hydra and serves the converted CSVs as an API.

Run locally

Start udata-hydra via docker compose.

Launch this project:

docker compose up

You can now access the raw postgrest API on http://localhost:8080.

Now you can launch the proxy (ie the app):

poetry install
poetry run adev runserver -p8005 udata_hydra_csvapi/app.py

And query postgrest via the proxy using a resource_id, cf below.

API

Meta informations on resource

curl http://localhost:8005/api/resources/60963939-6ada-46bc-9a29-b288b16d969b/
{
  "created_at": "2023-02-11T11:44:03.875615+00:00",
  "url": "https://data.toulouse-metropole.fr//explore/dataset/boulodromes/download?format=csv&timezone=Europe/Berlin&use_labels_for_header=false",
  "links": [
    {
      "href": "/api/resources/60963939-6ada-46bc-9a29-b288b16d969b/profile/",
      "type": "GET",
      "rel": "profile"
    },
    {
      "href": "/api/resources/60963939-6ada-46bc-9a29-b288b16d969b/data/",
      "type": "GET",
      "rel": "data"
    }
  ]
}

Profile (csv-detective output) for a resource

curl http://localhost:8005/api/resources/60963939-6ada-46bc-9a29-b288b16d969b/profile/
{
  "profile": {
    "header": [
        "geo_point_2d",
        "geo_shape",
        "ins_nom",
        "ins_complexe_nom_cplmt",
        "ins_codepostal",
        "secteur",
        "..."
    ]
  },
  "...": "..."
}

Data for a resource (ie resource API)

curl http://localhost:8005/api/resources/60963939-6ada-46bc-9a29-b288b16d969b/data/?limit=1
[
  {
    "__id": 1,
    "geo_point_2d": "43.58061543292057,1.401751073689455",
    "geo_shape": {
      "coordinates": [
        [
          1.401751073689455,
          43.58061543292057
        ]
      ],
      "type": "MultiPoint"
    },
    "ins_nom": "BOULODROME LOU BOSC",
    "ins_complexe_nom_cplmt": "COMPLEXE SPORTIF DU MIRAIL",
    "ins_codepostal": 31100,
    "secteur": "Toulouse Ouest",
    "quartier": 6.3,
    "acces_libre": null,
    "ins_nb_equ": 1,
    "ins_detail_equ": "",
    "ins_complexe_nom": "",
    "ins_adresse": "",
    "ins_commune": "",
    "acces_public_horaires": null,
    "acces_club_scol": null,
    "ins_nom_cplmt": "",
    "ins_id_install": ""
  }
]

On this endpoint you can use every neat stuff postgrest provides. Here we only want the ins_nom column where it icontains "maurice":

curl "http://localhost:8005/api/resources/60963939-6ada-46bc-9a29-b288b16d969b/data/?select=ins_nom&ins_nom=ilike.*maurice*"
[
  {
    "ins_nom": "BOULODROME MAURICE BECANNE"
  }
]

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

udata_hydra_csvapi-0.1.0.dev24.tar.gz (4.2 kB view hashes)

Uploaded Source

Built Distribution

udata_hydra_csvapi-0.1.0.dev24-py3-none-any.whl (4.7 kB view hashes)

Uploaded Python 3

Supported by

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