Sprint 106
All our products have been updated on Feb 26, 2024 with the releases associated to this Sprint 106.
Chouette
Manage Contracts
The user can manage Contracts. A Contract is defined by:
a name
a Company
one or several Lines
associated codes
Contracts can be managed independently in every Workbench.
This first version will be complete in the future with additional features like validity period, contract type, associated documents, etc.
Import Contracts via GTFS attributions
Chouette provides a way to define Contracts from particular GTFS attributions:
When a GTFS file defines a GTFS attributions with:
an Organisation name with matches an existing Chouette Company
a GTFS Route matching an existing Chouette Line
is_producer
with the value1
is_operator/is_authority
has no value (or0
)trip_id
has no value
All GTFS attributions associated to the same Chouette Company are used to create/update a single Contract in the Workbench, grouping all lines into this contract.
For example, these two GTFS attributions:
attribution_id,route_id,organization_name,is_producer
1,AB,Contract Operator,1
2,BFC,Contract Operator,1
will create or update a Contract associated to a Company “Contract Operator” and two lines.
To import/export Contracts, the NeTEx format will provide a more complete solution
Export Contracts via GTFS attributions
When a Contract exists, the GTFS export creates a GTFS annotation for each Line associated to the Contract with:
the Company name as organisation name
the Line code as
route_id
the attribute
is_producer
with the value1
To import/export Contracts, the NeTEx format will provide a more complete solution
Specify a Default Company for GTFS import
When the user has a GTFS file with invalid GTFS agency (like files created by some software vendors), he can start a Chouette GTFS import by specifying an existing Company to be used in place of the default GTFS agency:
In this case, all imported GTFS Routes as Chouette Lines are associated to this Company.
Control absence of Vehicle Journeys for disable lines
The user can control that no service is present in a Dataset outside the associated Line validity period:
NB: Lines without validity period are ignored. These lines can be controlled via the dedicated “Model status” Control.
Control code uniqueness
The user can control that a code has a unique value into the given scope:
The user can define:
the target model (Stop Area, Company, Line, Document, Entrance, Point Of Interest, Shape)
the target code space
the uniqueness scope: Provider, Workbench, Workgroup
Retrieve Route Stop Points in GraphQL
The user can retrieve Route Stop Points via a GraphQL like:
{
lines {
nodes {
registrationNumber
routes {
nodes {
name
wayback
stopPoints {
nodes {
position
stopArea {
name
registrationNumber
}
}
}
}
}
}
}
}
The Chouette GraphQL Publication API will return a JSON payload like:
{
"data": {
"lines": {
"nodes": [
{
"registrationNumber": "AB",
"routes": {
"nodes": [
{
"name": "to Bullfrog",
"wayback": "outbound",
"stopPoints": {
"nodes": [
{
"position": 0,
"stopArea": {
"name": "Nye County Airport (Demo)",
"registrationNumber": "BEATTY_AIRPORT"
}
},
{
"position": 1,
"stopArea": {
"name": "Bullfrog (Demo)",
"registrationNumber": "BULLFROG"
}
}
]
}
},
This behavior is described into the Chouette API GraphQL - Lines > Routes > Stop Points.
Ara
Update Vehicle occupancy attributes via Partner GraphQL API
The user can add the GraphQL connector (graphql-server
) to a Partner. By default, the Partner won't be able to modify the data model.
Via the dedicated setting, the user can open permissions on specific attributes:
By using one of the tokens associated to this Partner, the specified attributes can be modified by mutation GraphQL requests.
By performing GraphQL requests with the required token, on the GraphQL endpoint of the associated referential (for example: https://ara.enroute.mobi/test/graphql), an external software can complete the Ara real-time data model.
For example, to update the current occupancyStatus
of a Vehicle:
Multiple mutations can be performed into a single request by using the GraphQL multiple queries mechanism.
The model updates are taken into account instantly. The next requests will broadcast the new values.
Collect Situations with SIRI Situation Exchange subscriptions
The user can use the connector SIRI Situation Exchange Subscription Collector to use SIRI Subscriptions to collect Situations.
Some examples of SIRI Situation Subscription Requests, Responses and Notifications:
Collect Situations by adding internal tags
When the user defines the setting collect.situations.internal_tags
with one or several tags (like tag1
or tag1,tag2
), all Situations collected via this Partner are created/updated with this list of internal tags.
Broadcast only Situations with specified internal tags
When the user defines the setting broadcast.situations.only_internal_tags
with one or several tags (like tag1
or tag1,tag2
), only Situation with an internal tag matching this list is broadcast via this Partner.
More flexible update mechanism for SIRI Situations
To provide a more flexible update mechanism than the SIRI Situation Exchange defines (the collected Version
must change on every update), Ara updates a Situation when:
when the collected
RecordedAt
is newer than the model valuewhen the collected
Version
is different from the model value
Ara uses as Situation RecordedAt
the following SIRI attributes:
PtSituationElement
/VersionedAtTime
PtSituationElement
/CreationTime