Antes de continuar com esta seção, se ainda não tiver feito isso, verifique os sistemas de micromobilidade compatíveis para os quais você está criando o feed.
Nas seções a seguir, cada cabeçalho tem o seguinte formato:
Required|Optional|Conditionally required: Feed name (System supported)
. Os seguintes sistemas são compatíveis:
- Sistema encaixado
- Sistema sem base
- Sistema com e sem estação de ancoragem
Para fazer a integração com o Google, forneça apenas os arquivos necessários para o sistema descrito no feed e especifique os campos obrigatórios incluídos nas seções relevantes. Para campos obrigatórios sob certas condições, consulte a descrição do campo para receber orientações. Você também pode especificar campos opcionais que adicionam informações e proporcionam uma melhor experiência do usuário.
Cabeçalho obrigatório para feeds de micromobilidade
Os feeds de micromobilidade contêm dados estruturados de micromobilidade com ou sem dock, conforme definido neste artigo.
Todos os feeds precisam especificar os campos incluídos na tabela a seguir no nível superior do objeto JSON, conhecido coletivamente como o cabeçalho comum do GBFS.
Nome do campo | Tipo | Requisito | Descrição |
---|---|---|---|
last_updated |
Carimbo de data/hora | Obrigatório | Um carimbo de data/hora POSIX, que especifica um número de segundos desde 1º de janeiro de 1970 00:00:00 UTC.
Definido como a última vez que os dados no feed foram atualizados. |
ttl |
Número inteiro não negativo | Obrigatório | Um número inteiro não negativo que representa o número de segundos que
restam até a atualização do feed.
Se os dados precisarem ser atualizados a uma taxa constante, defina esse valor como
|
data |
JSON | Obrigatório | JSON que contém os campos de dados do feed individual. |
Por exemplo, um feed free_bike_status.json
agregado que especifica o cabeçalho GBFS comum pode ser assim:
{
"ttl": 30,
"last_updated": 1576123774,
"data": {
"bikes": [ ... ] // GBFS free bike status objects.
}
}
Obrigatório: system_information.json (sistema com e sem dock)
Consulte a especificação do GBFS conforme necessário.
Este feed fornece detalhes sobre o operador do sistema.
Nome do campo | Tipo | Requisito | Descrição |
---|---|---|---|
system_id |
ID | Obrigatório | Um identificador globalmente exclusivo para o sistema de compartilhamento de veículos. Esse valor deve permanecer o mesmo durante a vida útil do sistema. Cada sistema ou área geográfica distinta em que os veículos são operados DEVE ter seu próprio system_id. Os IDs de sistema PRECISAM ser reconhecíveis como pertencentes a um sistema específico, em vez de strings aleatórias. Por exemplo, bcycle_austin ou biketown_pdx. |
name |
String | Obrigatório | Nome do sistema, que é exibido aos clientes. |
rental_apps |
Objeto | Obrigatório | Um objeto JSON que contém as informações do app de aluguel para Android e iOS nos respectivos campos. |
rental_apps.android |
Objeto | Obrigatório sob certas condições |
Contém informações de download e descoberta de apps de aluguel para a plataforma
Android nos campos store_uri e discovery_uri . Se o provedor do sistema tiver um app de aluguel para Android, esse campo será obrigatório.
|
rental_apps.android.store_uri |
URI | Obrigatório | URI em que o app Android de aluguel pode ser baixado. Normalmente, é um URI para uma app store, como o Google Play. Se o URI apontar para uma loja de apps, como o Google Play, recomendamos que ele siga as práticas recomendadas do Android para que o app de visualização possa abrir diretamente o URI para o app nativo da loja de apps em vez de um site. |
rental_apps.android.discovery_uri |
URI | Obrigatório | URI que tem o formato your_custom_scheme://your/path/here .
O URI pode ser usado pelo PackageManager.queryIntentActivities()
para descobrir se o app Android de aluguel está instalado no dispositivo.
|
rental_apps.ios |
Objeto | Obrigatório sob certas condições | Contém informações de download e descoberta de apps de aluguel para a plataforma iOS nos campos store_uri e discovery_uri . Se o provedor do sistema tiver um app de aluguel para iOS, esse campo será
obrigatório.
|
rental_apps.ios.store_uri |
URI | Obrigatório | URI em que o app iOS de aluguel pode ser baixado. Normalmente, é um URI para uma app store, como a Apple App Store. Se o URI apontar para uma loja de apps, como a Apple App Store, recomendamos que ele siga as práticas recomendadas do iOS para que o app de visualização possa abrir diretamente o URI na loja de apps nativa em vez de um site. |
rental_apps.ios.discovery_uri |
URI | Obrigatório | URI que tem o formato your_custom_scheme:// . O URI pode ser
usado pelo UIApplication canOpenURL: para descobrir se o
app de aluguel para iOS está instalado no dispositivo.
|
Obrigatório: free_bike_status.json (sistema sem dock)
Consulte a especificação do GBFS conforme necessário.
Esse feed define os locais e atributos dos veículos autônomos disponíveis. Por motivos de privacidade, os veículos que fazem parte de uma locação ativa não podem aparecer neste feed.
Nome do campo | Tipo | Requisito | Descrição |
---|---|---|---|
bikes |
Matriz | Obrigatório | Uma matriz de bicicletas paradas e disponíveis no momento, em que cada bicicleta é um objeto. |
bikes[].bike_id |
ID | Obrigatório | O identificador de uma bicicleta.
Para proteger a privacidade, o ID pode ser mudado para uma string aleatória após cada viagem. |
bikes[].lat |
Latitude | Obrigatório | A latitude WGS 84 da bicicleta, em formato de graus decimais. |
bikes[].lon |
Longitude | Obrigatório | A longitude WGS 84 da bicicleta, em formato de graus decimais. |
bikes[].is_reserved |
Booleano | Obrigatório | Indica se a bicicleta está reservada no momento, da seguinte forma:
|
bikes[].is_disabled |
Booleano | Obrigatório | Se a bicicleta está desativada ou quebrada, da seguinte forma:
|
bikes[].rental_uris |
Objeto | Obrigatório | Um objeto JSON que contém URIs de aluguel para Android, iOS e Web nos respectivos campos. |
bikes[].rental_uris.android |
URI | Obrigatório sob certas condições | Um URI que pode ser transmitido para um app Android com uma intent
android.intent.action.VIEW do Android para oferecer suporte a
links diretos do Android. O rental_uris fornecido precisa ser um
Android App Link para que o app de visualização não precise gerenciar manualmente
o redirecionamento do usuário para a app store caso ele não tenha o aplicativo do provedor instalado.
O URI precisa ser um link direto específico para a bicicleta individual, não uma página geral de aluguel que inclua informações de mais de uma bicicleta. O link direto precisa levar o usuário diretamente à bicicleta sem solicitações, páginas intersticiais ou logins. Confira se os usuários podem ver a bicicleta, mesmo que nunca tenham aberto o aplicativo. Os URIs não precisam necessariamente incluir o Se o parceiro tiver um app de aluguel para Android, esse campo será obrigatório. Exemplo de link do app Android:
|
bikes[].rental_uris.ios |
URI | Obrigatório sob certas condições | Um URI que pode ser usado no iOS para iniciar o app de aluguel da bicicleta.
Para mais informações, consulte o artigo da Apple sobre
esquemas de URL personalizados do iOS.
O rental_uris fornecido precisa ser um
link universal do iOS para que o app de visualização não precise gerenciar manualmente
o redirecionamento do usuário para a app store caso ele não tenha o aplicativo do provedor instalado.
O URI precisa ser um link direto específico para a bicicleta individual, não uma página geral de aluguel que inclua informações de mais de uma bicicleta. O link direto precisa levar o usuário diretamente à bicicleta sem solicitações, páginas intersticiais ou logins. Confira se os usuários podem ver a bicicleta, mesmo que nunca tenham aberto o aplicativo. Os URIs não precisam incluir o bike_id da bicicleta, desde que o parceiro tenha outros meios de identificar a bicicleta. Por exemplo, o app de aluguel pode usar outros identificadores no URI para identificar a bicicleta de forma exclusiva. Se o parceiro tiver um app de aluguel para iOS, esse campo será obrigatório. Exemplo de link universal para iOS:
|
bikes[].rental_uris.web |
URL | Opcional | Um URL que pode ser usado por um navegador da Web para mostrar mais informações sobre o aluguel de um veículo neste local. O URL precisa ser um link direto específico para a bicicleta, não uma página geral de aluguel que inclua informações de mais de uma bicicleta. O link direto precisa levar o usuário diretamente à bicicleta sem solicitações, páginas intersticiais ou logins. Confira se os usuários podem ver a bicicleta, mesmo que nunca tenham aberto o aplicativo. Não é necessário que os URLs incluam o Se esse campo não estiver definido, isso significa que os links diretos não são compatíveis com o navegador da Web. Exemplo de valor:
|
bikes[].vehicle_type_id |
ID | Obrigatório | O vehicle_type_id do veículo, conforme descrito na seção
vehicle_types.json .
|
bikes[].pricing_plan_id |
ID | Obrigatório | Identificador do plano de preços aplicado quando este tipo de veículo é alugado, conforme descrito na seção system_pricing_plans.json .
|
bikes[].current_range_meters |
Valor flutuante não negativo | Obrigatório sob certas condições | Se a definição de vehicle_type que corresponde ao veículo tiver um motor, esse campo será obrigatório.
Definido como a maior distância em metros que o veículo pode percorrer sem precisar de recarga ou reabastecimento, considerando o nível atual de carga ou combustível do veículo. |
bikes[].last_reported |
Carimbo de data/hora | Opcional | Definido como a última vez que o veículo informou o status ao back-end do operador. |
Confira abaixo um exemplo de free_bike_status.json
:
"bikes": [{
"bike_id": "xyz123",
"lat": 12.34,
"lon": 56.78,
"is_reserved": true,
"is_disabled": false,
"rental_uris":{
"android": "https://www.example.com/app?sid=1234567890&platform=android",
"ios": "https://www.example.com/app?sid=1234567890&platform=ios",
"web": "https://www.example.com/app?sid=1234567890"
},
"vehicle_type_id": "scooter_electric",
"pricing_plan_id": "sydneyPlan1",
"current_range_meters": 4500,
"last_reported": 1434054678
},
{
"bike_id": "abc123",
"lat": 1.34,
"lon": 146.78,
"is_reserved": false,
"is_disabled": true,
"rental_uris":{
"android": "https://www.example.com/app?sid=1234567890&platform=android",
"ios": "https://www.example.com/app?sid=1234567890&platform=ios",
"web": "https://www.example.com/app?sid=1234567890"
},
"vehicle_type_id": "bike_manual",
"pricing_plan_id": "sydneyPlan1",
"last_reported": 1434054241
}
]
Obrigatório: vehicle_types.json (sistema com e sem estação)
Consulte a especificação do GBFS conforme necessário.
Esse feed define os detalhes dos tipos de veículos individuais, conforme mencionado na seção
free_bike_status.json
.
Nome do campo | Tipo | Requisito | Descrição |
---|---|---|---|
vehicle_types |
Matriz | Obrigatório | Uma matriz de objetos, em que cada objeto define um tipo de veículo distinto no catálogo do provedor. Só pode haver um objeto para um determinado tipo de veículo. |
vehicle_types[].vehicle_type_id |
ID | Obrigatório | Um identificador exclusivo para um determinado tipo de veículo. |
vehicle_types[].form_factor |
Enumeração | Obrigatório | Um enum que representa o formato geral do veículo, da
seguinte lista de valores válidos no momento:
|
vehicle_types[].propulsion_type |
Enumeração | Obrigatório | Um enum que representa o tipo de propulsão principal do veículo, da
seguinte lista de valores válidos no momento:
|
vehicle_types[].max_range_meters |
Valor flutuante não negativo | Obrigatório sob certas condições | Se propulsion_type não estiver definido como human , o veículo terá um motor, e esse campo será obrigatório.
Definido como a maior distância em metros que o veículo pode percorrer sem precisar de recarga ou reabastecimento, quando o veículo está totalmente abastecido ou totalmente carregado. |
Confira abaixo um exemplo de vehicle_types.json
:
"vehicle_types": [
{
"vehicle_type_id": "bike_manual",
"form_factor": "bicycle",
"propulsion_type": "human"
},
{
"vehicle_type_id": "scooter_electric",
"form_factor": "scooter",
"propulsion_type": "electric",
"max_range_meters": 10000
}
]
Obrigatório: system_pricing_plans.json (sistema sem dock)
Consulte a especificação do GBFS conforme necessário.
Esse feed define os planos de preços para veículos autônomos. Exigimos que os provedores mostrem informações de preços para veículos autônomos.
Nome do campo | Tipo | Requisito | Descrição |
---|---|---|---|
plans |
Matriz | Obrigatório | Uma matriz de objetos em que cada objeto define um determinado plano de preços. |
plans[].plan_id |
ID | Obrigatório | Uma string que representa um identificador exclusivo do plano de preços oferecido pelo provedor. |
plans[].url |
URL | Opcional | O URL que direciona os usuários finais para mais informações sobre o plano de preços. |
plans[].currency |
String | Obrigatório | O padrão ISO 4217 para o plano de preços. |
plans[].price |
Valor flutuante não negativo | Obrigatório |
O plano de preços precisa ser definido como um plano não classificado ou classificado:
|
plans[].per_km_pricing |
Matriz | Obrigatório sob certas condições |
Se o preço for uma função da distância percorrida, exibida em quilômetros, esse campo será obrigatório. Uma matriz de objetos em que cada objeto define um segmento dividido por distância. O valor de Para determinar o preço total do plano, adicione o valor Se esse campo não estiver definido, não haverá preços variáveis com base na distância e, portanto, nenhum será incluído como parte do preço total. |
plans[].per_km_pricing[].start |
Número inteiro não negativo | Obrigatório |
O número de quilômetros em que a taxa de segmento começa a ser cobrada.
Esse campo é definido como o valor inclusivo que inicia o intervalo do segmento. Assim, quando o número de quilômetros for atingido, o rate será cobrado uma vez.
|
plans[].per_km_pricing[].rate |
Ponto flutuante | Obrigatório | A taxa cobrada por interval , que começa no start inclusivo do segmento. Se esse campo for definido como um número negativo, o viajante vai receber um desconto.
|
plans[].per_km_pricing[].interval |
Número inteiro não negativo | Obrigatório |
O intervalo em quilômetros em que o O Se o Se esse campo estiver definido como |
plans[].per_km_pricing[].end |
Número inteiro não negativo | Opcional |
O número de quilômetros em que o Se esse campo não estiver definido ou estiver vazio, a |
plans[].per_min_pricing |
Matriz | Obrigatório sob certas condições |
Se o preço for uma função do tempo decorrido, exibido em minutos, esse campo será obrigatório. Uma matriz de objetos em que cada objeto define um segmento dividido por tempo. O valor de Para determinar o preço total do plano, adicione o valor Se esse campo não estiver definido, não haverá preços variáveis com base no tempo e, portanto, nenhum será incluído como parte do preço total. |
plans[].per_min_pricing[].start |
Ponto flutuante | Obrigatório |
O número de minutos em que a taxa do segmento começa a ser cobrada.
Esse campo é definido como o valor inclusivo que inicia o intervalo do segmento. Assim, quando o número definido de minutos
expirar, o rate será cobrado uma vez.
|
plans[].per_min_pricing[].rate |
Ponto flutuante | Obrigatório | A taxa cobrada por interval . A taxa começa no start inclusivo do segmento. Se esse campo for definido como um número negativo, o viajante vai receber um desconto.
|
plans[].per_min_pricing[].interval |
Número inteiro não negativo | Obrigatório |
O intervalo em minutos em que o O Se o Se esse campo estiver definido como |
plans[].per_min_pricing[].end |
Número inteiro não negativo | Opcional |
O número de minutos em que o Se esse campo não estiver definido ou estiver vazio, a
|
Exemplos para system_pricing_plans.json
Esta seção fornece exemplos de código system_pricing_plans.json
informativos. Os detalhes e resultados relevantes de cada exemplo também são fornecidos.
Exemplo 1 para system_pricing_plans.json
A amostra de código do plano de preços a seguir mostra cobranças com base no tempo de viagem para os seguintes intervalos:
- [0,1): US$ 2
- Se a viagem durar menos de um minuto, o usuário vai pagar US $2.
- Exemplo: viagem de 59 segundos
- [1,2): US$ 3
- Se o trajeto durar um minuto ou mais, mas menos de dois minutos, o usuário paga US $2 + US $1 = US $3.
- Exemplos: viagem de 1 minuto; viagem de 1 minuto e 45 segundos
- Número x de minutos em que x é maior ou igual a 2:
$3 + (($2 + $1) * (x - 2 + 1))
USD
- Se o trajeto for maior ou igual a dois minutos, o usuário paga US $3 pela parte do trajeto com menos de dois minutos e (US$ 1 [continuando da primeira entrada da lista
per_min_pricing
] + US $2 [a segunda entrada da listaper_min_pricing
]) por minuto após e incluindo dois minutos. - Exemplos:
- Uma viagem de dois minutos custa US $3 + (US$ 2 + US $1) = US $6
- Uma viagem de 2 minutos e 30 segundos custa R $3 + (R$ 2 + R $1) = R $6
- Uma viagem de 3 minutos custa R $3 + (($2 + $1) * 2) = R $9
- Uma viagem de 10 minutos custa R $3 + (($2 + $1) * 9) = R $30
- Se o trajeto for maior ou igual a dois minutos, o usuário paga US $3 pela parte do trajeto com menos de dois minutos e (US$ 1 [continuando da primeira entrada da lista
{
"plans": {
"plan_id": "plan1",
"currency": "USD",
"price": 2,
"per_min_pricing": [
{
"interval": 1,
"rate": 1,
"start": 1
},
{
"interval": 1,
"rate": 2,
"start": 2
}
],
}
}
Exemplo 2 para system_pricing_plans.json
Neste exemplo, mostramos uma amostra de código para um plano de preços cobrado por uma taxa de minutos e quilômetros:
- Especificamente, o usuário final recebe uma cobrança de US $0,25 CAD por km e US $0,50 CAD por minuto.
- As duas taxas acontecem simultaneamente e não dependem uma da outra.
- Portanto, uma viagem de um quilômetro que dura 10 minutos custa R $9 CAD. A
divisão do custo é a seguinte:
- US$ 3, preço base
- US$ 0,25 * 2, cobrados uma vez no início da viagem e outra no marco de 1 km.
- US$ 0,5 * 11, cobrado uma vez no início de cada minuto. As cobranças começam em 0 segundos, e o último intervalo é cobrado em 10 minutos.
{
"plans": {
"plan_id": "plan2",
"currency": "CAD",
"price": 3,
"per_km_pricing": [{
"start": 0,
"rate": 0.25,
"interval": 1
}],
"per_min_pricing": [{
"start": 0,
"rate": 0.50,
"interval": 1
}]
}
}
Condicionalmente obrigatório: geofencing_zones.json (sistema com e sem dock)
Consulte a especificação do GBFS conforme necessário.
Esse feed define os dados de geocercas para veículos autônomos. Os dados de geocercas incluem os limites geográficos que especificam onde os veículos podem começar e terminar a viagem, além da velocidade máxima permitida. Essa velocidade é a máxima do veículo ou o limite da via em que ele está, o que for menor. Os motoristas precisam obedecer às leis e regulamentações locais.
Usamos esses dados para que, quando um usuário pesquisar um determinado trajeto, se o fim da viagem estiver fora dos geofences específicos, o resultado de micromobilidade seja filtrado. Se as geocercas não forem fornecidas, o Google vai tratar o serviço como se não tivesse restrições de limite.
Nome do campo | Tipo | Requisito | Descrição |
---|---|---|---|
geofencing_zones |
Objeto | Obrigatório | Um objeto FeatureCollection , conforme descrito pela
IETF RFC 7946, é um objeto que tem um campo chamado features . O valor de features é uma matriz JSON.
Cada elemento da matriz JSON é um objeto Feature .
Cada zona de geocerca, as regras e os atributos associados e as definições de |
geofencing_zones.type |
String | Obrigatório | Definido como FeatureCollection , conforme descrito pelo
IETF RFC 7946. |
geofencing_zones.features |
Matriz | Obrigatório | Uma matriz JSON, em que cada elemento é um objeto Feature . |
geofencing_zones.features[].type |
String | Obrigatório | Definido como Feature , conforme descrito pelo
IETF RFC 7946. |
geofencing_zones.features[].geometry |
Multipolígono GeoJSON | Obrigatório | Um MultiPolygon GeoJSON que descreve onde as viagens não podem começar, terminar ou passar, além de outras limitações. Uma disposição no sentido horário de pontos define a área delimitada pelo polígono, enquanto uma ordem no sentido anti-horário define a área fora do polígono. Para mais informações sobre isso, consulte a regra da mão direita. |
geofencing_zones.features[].properties |
Objeto | Obrigatório | Um objeto que define as permissões e limitações de viagem. |
geofencing_zones.features[].properties.rules |
Matriz | Opcional | Uma matriz de objetos, em que cada objeto define uma e apenas uma regra. Se duas ou mais regras se sobrepuserem, entrarem em conflito ou tiverem algum outro tipo de conflito, a regra definida primeiro na ordem do arquivo JSON terá precedência. |
geofencing_zones.features[].properties.rules[].vehicle_type_id |
Matriz | Opcional | Uma matriz de IDs de tipo de veículo, em que cada elemento é um
vehicle_type_id , para o qual as restrições precisam ser aplicadas.
Se nenhum vehicle_type_id for especificado, as restrições vão se aplicar a todos os tipos de veículos. |
geofencing_zones.features[].properties.rules[].ride_allowed |
Booleano | Obrigatório | Se o passeio de bicicleta independente "sem dock" pode começar e terminar na zona, da seguinte forma:
|
Confira abaixo um exemplo de geofencing_zones.json
:
"geofencing_zones":{
"type":"FeatureCollection",
"features":[{
"type":"Feature",
"properties":{
"rules":[{
"vehicle_type_id":"scooter",
"ride_allowed": false
}]
},
"geometry":{
"type":"MultiPolygon",
"coordinates":[[[
[-122.66780376434326, 45.49896266763551],
[-122.66810417175292, 45.49824825558575],
[-122.66830801963805, 45.49632305799116],
[-122.66780376434326, 45.49896266763551]
]]]
}
}]
}
Obrigatório: station_information.json (sistema com dock)
Consulte a especificação do GBFS conforme necessário.
Este feed define as informações gerais sobre estações públicas de compartilhamento de bicicletas.
Nome do campo | Tipo | Requisito | Descrição |
---|---|---|---|
stations |
Matriz | Obrigatório | Uma matriz de objetos em que cada objeto define uma única estação. |
stations[].station_id |
String | Obrigatório | O identificador da estação. |
stations[].name |
String | Obrigatório |
O nome público da estação no idioma local da cidade em que ela está localizada. O name precisa seguir o que é usado
nas placas da estação, quando disponíveis, ou ser um reflexo do
local da estação usando uma rua transversal ou um ponto de referência local.
Não use abreviações como "R." para "Rua", a menos que seja usado explicitamente em placas. O name precisa estar em letras maiúsculas e minúsculas, seguindo as convenções locais para nomes de lugares, e não em letras maiúsculas.
|
stations[].lat |
Latitude | Obrigatório | A latitude WGS 84 da estação, em formato de graus decimais. |
stations[].lon |
Longitude | Obrigatório | A longitude WGS 84 da estação, em formato de graus decimais. |
stations[].capacity |
Número inteiro não negativo | Opcional | Um número inteiro não negativo que representa o número total de pontos de encaixe instalados na estação, disponíveis e indisponíveis. |
stations[].rental_uris |
Objeto | Obrigatório |
Um objeto JSON que contém URIs de aluguel para Android, iOS e Web nos respectivos campos. Se esses URIs forem especificados, eles vão substituir os links diretos padrão definidos quando o provedor foi integrado. |
stations[].rental_uris.android |
URI | Obrigatório sob certas condições |
Um URI que pode ser transmitido para um app Android com uma intent
O URI precisa ser um link direto específico para a estação individual, não uma página geral de aluguel que inclua informações de mais de uma estação. O link direto precisa levar o usuário diretamente à estação sem solicitações, páginas intersticiais ou logins. Confira se os usuários podem ver a estação mesmo que nunca tenham aberto o app. Não é necessário que os URIs incluam o Se o parceiro tiver um app de aluguel para Android, esse campo será obrigatório. Exemplo de link do app Android:
|
stations[].rental_uris.ios |
URI | Obrigatório sob certas condições |
Um URI que pode ser usado no iOS para iniciar o app de aluguel da estação.
Para mais informações, consulte o artigo da Apple sobre
esquemas de URL personalizados do iOS.
O O URI precisa ser um link direto específico para a estação individual, não uma página geral de aluguel que inclua informações de mais de uma estação. O link direto precisa levar o usuário diretamente à estação sem solicitações, páginas intersticiais ou logins. Confira se os usuários podem ver a estação mesmo que nunca tenham aberto o app. Não é necessário que os URIs incluam o Se o parceiro tiver um app de aluguel para iOS, esse campo será obrigatório. Exemplo de link universal para iOS:
|
stations[].rental_uris.web |
URL | Opcional | Um URL que pode ser usado por um navegador da Web para mostrar mais informações sobre como alugar um veículo nessa estação. Esse URL precisa ser um link direto específico para a estação individual, não uma página geral de aluguel que inclua informações de mais de uma estação. O link direto precisa levar o usuário diretamente à estação, sem solicitações, páginas intersticiais ou logins. Confira se os usuários podem ver a estação mesmo que nunca tenham aberto o aplicativo. Não é necessário que os URLs incluam o Se esse campo não estiver definido, isso significa que os links diretos não são compatíveis com o navegador da Web. Exemplo de valor:
|
Confira abaixo um exemplo de station_information.json
:
"stations": [
{
"station_id": "597",
"name": "Silverthorne Road, Battersea",
"lat": 51.472865,
"lon": -0.148059,
"capacity": 10,
"rental_uris": {
"android": "https://www.example.com/app?sid=1234567890&platform=android",
"ios": "https://www.exampleexample.com/app?sid=1234567890&platform=ios",
"web": "https://www.example.com/app?sid=1234567890&platform=web"
}
},
]
Obrigatório: station_status.json (sistema encaixado)
Consulte a especificação do GBFS conforme necessário.
Esse feed define o status atualizado das estações públicas de compartilhamento de bicicletas.
Nome do campo | Tipo | Requisito | Descrição |
---|---|---|---|
stations |
Matriz | Obrigatório | Uma matriz de objetos, em que cada objeto define uma única estação. |
stations[].station_id |
String | Obrigatório | O identificador da estação. |
stations[].num_bikes_available |
Número inteiro não negativo | Obrigatório |
Um número inteiro não negativo que representa o número de bicicletas funcionais que estão fisicamente na estação e podem ser oferecidas para locação. Para determinar se a estação aluga bicicletas no momento, inspecione o campo |
stations[].vehicle_types_available |
Matriz | Opcional |
Uma matriz de objetos que define o número total de veículos, categorizados pelo tipo de veículo individual disponível em uma estação. Cada objeto modela o número total de veículos para o tipo de veículo associado. O número total de veículos de cada um desses objetos precisa corresponder ao valor especificado no campo |
stations[].vehicle_types_available[].vehicle_type_id |
ID | Obrigatório |
O |
stations[].vehicle_types_available[].count |
Número inteiro não negativo | Obrigatório |
O número total de veículos disponíveis para o |
stations[].num_docks_available |
Número inteiro não negativo | Obrigatório sob certas condições |
O campo é obrigatório, a menos que a estação tenha capacidade ilimitada de encaixe. Por exemplo, as estações virtuais têm capacidade ilimitada de encaixe, e o campo não é obrigatório. Um número inteiro não negativo que representa o número total de estações de recarga funcionais na estação que podem aceitar devoluções de veículos. Para determinar se a estação aceita devoluções de bicicletas, inspecione o campo |
stations[].is_installed |
Booleano | Obrigatório |
Um booleano que indica se a estação está na rua e instalada. Se a estação estiver instalada na rua, defina como Se a estação não estiver instalada na rua, defina como |
stations[].is_renting |
Booleano | Obrigatório |
Um booleano que indica se é verdade que a estação aluga bicicletas no momento. Se a estação aluga bicicletas, defina como Se a estação não alugar bicicletas no momento, defina como |
stations[].is_returning |
Booleano | Obrigatório |
Um booleano que indica se é verdade que a estação aceita devoluções de bicicletas no momento. Se a estação aceita devoluções de bicicletas, defina como Se a estação não aceitar devoluções de bicicletas no momento, defina como |
Confira abaixo um exemplo de station_status.json
:
"stations": [
{
"station_id": "2",
"num_bikes_available": 6,
"vehicle_types_available": [
{
"vehicle_type_id" : "scooter_electric",
"count" : 2
},
{
"vehicle_type_id" : "bike_manual",
"count" : 4
}
],
"num_docks_available": 30,
"is_installed": true,
"is_renting": true,
"is_returning": true,
"last_reported": 1576119631
},
]