---
title: "Compute path properties"
method: POST
path: "/infra/{infra_id}/path_properties"
tags: ["pathfinding"]
---

# Compute path properties

`POST /infra/{infra_id}/path_properties`

## Request

- Base URL: `https://demo.osrd.fr/api`
- URL: `https://demo.osrd.fr/api/infra/{infra_id}/path_properties`
- Auth: none declared

## Path parameters

- `infra_id` integer, required

## Request body

- PathPropertiesInput
  - `track_section_ranges` CoreTrackRange[], required: List of track sections
    - `begin` integer, required: The beginning of the range in mm.
    - `direction` 'START_TO_STOP' | 'STOP_TO_START', required
    - `end` integer, required: The end of the range in mm.
    - `track_section` string, required: The track section identifier.

## Response `200`

Path properties

- PathProperties: Properties along a path. Each property is optional since it depends on what the user requests.
  - `curves` object, required: Property f64 values along a path. Each value is associated to a range of the path.
    - `boundaries` integer[], required: List of `n` boundaries of the ranges. A boundary is a distance from the beginning of the path in mm.
    - `values` number[], required: List of `n+1` values associated to the ranges
  - `electrifications` object, required: Electrification property along a path. Each value is associated to a range of the path.
    - `boundaries` integer[], required: List of `n` boundaries of the ranges. A boundary is a distance from the beginning of the path in mm.
    - `values` union[], required: List of `n+1` values associated to the ranges
      - union
        - object: Electrified section with a given voltage
          - `type` 'electrification', required
          - `voltage` string, required
        - object: Neutral section with a lower pantograph instruction or just a dead section
          - `lower_pantograph` boolean, required
          - `type` 'neutral_section', required
        - object: Non electrified section
          - `type` 'non_electrified', required
  - `geom_projection` CorePropertyGeometryProjection, required: Describes a monotonic curve to be used to project topological offset to geometric offset (or reversed). For example on a path: * Coordinates of the points are built by cumulating **track-section's** ranges lengths (respectively topological or geometric) along the path. * `topo_offsets` and `geom_offsets` are the same size, both start with `0` and both end with path's lengths (respectively topological or geometric).
    - `geom_offsets` integer[], required: Geometric offsets in millimeters, processed using haversine formula. Starts with 0 and is increasing.
    - `topo_offsets` integer[], required: Topological offsets in millimeters. Starts with 0 and is increasing.
  - `geometry` GeoJsonLineString, required
    - `coordinates` GeoJsonPointValue[], required
      - number[]
    - `type` 'LineString', required
  - `operational_points` CoreOperationalPointOnPath[], required: Operational points along the path
    - `country_code` string, required
    - `id` string, required: Id of the operational point
    - `is_passenger_station` boolean, required
    - `main_code` string, required
    - `name` string, required
    - `part` OperationalPointPart, required
      - `extensions` OperationalPointPartExtension
        - `sncf` OperationalPointPartSncfExtension
          - `kp` string, required
      - `local_track_name` string, required
      - `position` number, double, required: Offset on the track section, in m
      - `track` string, required
    - `plc` string, nullable: Primary Location Code : https://rne.eu/it/products/ccs/crd/
    - `position` integer, required: Distance from the beginning of the path in mm
    - `secondary_code` string
    - `secondary_name` string, nullable
    - `uic` integer, nullable
    - `weight` integer, nullable, required: Importance of the operational point
  - `slopes` object, required: Property f64 values along a path. Each value is associated to a range of the path.
    - `boundaries` integer[], required: List of `n` boundaries of the ranges. A boundary is a distance from the beginning of the path in mm.
    - `values` number[], required: List of `n+1` values associated to the ranges
  - `zones` object, required: Zones along a path. Each value is associated to a range of the path.
    - `boundaries` integer[], required: List of `n` boundaries of the ranges. A boundary is a distance from the beginning of the path in mm.
    - `values` string[], required: List of `n+1` values associated to the ranges

## Changes

- **2026-10-07** `8c6a084090af`: 1 info
  - added the required property `geom_projection` to the response with the `200` status
- **2026-10-07** `2164e74a5225`: 1 breaking
  - removed the required property `geom_projection` from the response with the `200` status
- **2026-10-06** `5cbd3c961c6b`: 1 info
  - added the required property `geom_projection` to the response with the `200` status
- **2026-06-29** `9153ef0cc720`: 1 breaking
  - removed the required property `geom_projection` from the response with the `200` status
- **2026-06-29** `42420aaf2312`: 1 info
  - added the required property `geom_projection` to the response with the `200` status

[Operation history](https://skmtc.dev/openrailassociation/apis/osrd-editoast/changes/infra/:infra_id/path_properties/post.md)

---

[API](https://skmtc.dev/openrailassociation/apis/osrd-editoast.md) - [All operations](https://skmtc.dev/openrailassociation/apis/osrd-editoast/llms.txt) - [OpenAPI document](https://skmtc.dev/openrailassociation/apis/osrd-editoast/revisions/7c72c5e1bc0e?raw)
