GBFS 정의

이 섹션을 진행하기 전에 아직 확인하지 않았다면 피드를 빌드할 지원되는 마이크로 모빌리티 시스템을 확인하세요.

다음 섹션에서 각 헤더의 형식은 Required|Optional|Conditionally required: Feed name (System supported)입니다. 다음 시스템이 지원됩니다.

  • 도킹된 시스템
  • 도크 없는 시스템
  • 도크형 및 도크 미포함 시스템

Google과 성공적으로 통합하려면 피드에서 설명하는 시스템에 필요한 파일만 제공하고 관련 섹션에 포함된 필수 필드를 지정하세요. 조건부 필수 필드의 경우 필드의 설명을 참고하세요. 정보를 추가하고 더 나은 사용자 환경을 제공하는 선택사항 필드를 지정할 수도 있습니다.

마이크로 모빌리티 피드의 필수 헤더

마이크로 모빌리티 피드는 이 도움말에 정의된 도킹 또는 도킹 해제 마이크로 모빌리티 구조화된 데이터를 포함하는 피드입니다.

모든 피드는 항상 JSON 객체의 최상위 수준에서 다음 표에 포함된 필드를 지정해야 합니다. 이러한 필드를 통칭하여 일반 GBFS 헤더라고 합니다.

필드 이름 유형 요구사항 설명
last_updated 타임스탬프 필수 1970년 1월 1일 00:00:00 UTC 이후의 초 수를 지정하는 POSIX 타임스탬프입니다.

피드의 데이터가 마지막으로 업데이트된 시간으로 설정됩니다.

ttl 비음수 정수 필수 피드를 업데이트할 때까지 남은 시간을 초 단위로 나타내는 음이 아닌 정수입니다.

일정한 비율로 데이터를 업데이트해야 하는 경우 이 값을 0으로 설정합니다.

data JSON 필수 개별 피드의 데이터 필드가 포함된 JSON입니다.

예를 들어 일반 GBFS 헤더를 지정하는 집계된 free_bike_status.json 피드는 다음과 같을 수 있습니다.

{
    "ttl": 30,
    "last_updated": 1576123774,
    "data": {
        "bikes": [ ... ]  // GBFS free bike status objects.
    }
}

필수: system_information.json (도크형 및 도크 비장착 시스템)

필요한 경우 GBFS 사양을 참고하세요.

이 피드는 시스템 운영자에 관한 세부정보를 제공합니다.

필드 이름 유형 요구사항 설명
system_id ID 필수 차량 공유 시스템의 전역적으로 고유한 식별자입니다. 이 값은 시스템 수명 동안 동일하게 유지되어야 합니다. 차량이 운행되는 각 개별 시스템 또는 지리적 영역에는 자체 system_id가 있어야 합니다(SHOULD). 시스템 ID는 무작위 문자열이 아닌 특정 시스템에 속하는 것으로 인식할 수 있어야 합니다(SHOULD)(예: bcycle_austin 또는 biketown_pdx).
name 문자열 필수 고객에게 표시되는 시스템 이름입니다.
rental_apps 객체 필수 각 필드에 Android 및 iOS용 렌탈 앱 정보가 포함된 JSON 객체입니다.
rental_apps.android 객체 조건부 필수 store_uridiscovery_uri 필드에 Android 플랫폼의 대여 앱 다운로드 및 앱 검색 정보가 포함됩니다. 시스템 제공업체에 Android 대여 앱이 있는 경우 이 필드는 필수입니다.
rental_apps.android.store_uri URI 필수 대여 Android 앱을 다운로드할 수 있는 URI입니다. 일반적으로 Google Play와 같은 앱 스토어의 URI입니다. URI가 Google Play와 같은 앱 스토어를 가리키는 경우 보기 앱이 웹사이트 대신 네이티브 앱 스토어 앱으로 URI를 직접 열 수 있도록 URI가 Android 권장사항을 따르는 것이 좋습니다.
rental_apps.android.discovery_uri URI 필수 your_custom_scheme://your/path/here 형식의 URI입니다. 이 URI는 PackageManager.queryIntentActivities()에서 기기에 대여 Android 앱이 설치되어 있는지 확인하는 데 사용할 수 있습니다.
rental_apps.ios 객체 조건부 필수 store_uridiscovery_uri 필드에 iOS 플랫폼의 대여 앱 다운로드 및 앱 검색 정보가 포함됩니다. 시스템 제공업체에 iOS 대여 앱이 있는 경우 이 필드는 필수입니다.
rental_apps.ios.store_uri URI 필수 대여 iOS 앱을 다운로드할 수 있는 URI입니다. 일반적으로 Apple App Store와 같은 앱 스토어의 URI입니다. URI가 Apple App Store와 같은 앱 스토어를 가리키는 경우 보기 앱이 웹사이트 대신 네이티브 앱 스토어 앱으로 URI를 직접 열 수 있도록 URI가 iOS 권장사항을 따르는 것이 좋습니다.
rental_apps.ios.discovery_uri URI 필수 your_custom_scheme:// 형식의 URI입니다. 이 URI는 UIApplication canOpenURL:에서 기기에 대여 iOS 앱이 설치되어 있는지 확인하는 데 사용할 수 있습니다.

필수: free_bike_status.json (도크리스 시스템)

필요한 경우 GBFS 사양을 참고하세요.

이 피드는 사용 가능한 독립형 차량의 위치와 속성을 정의합니다. 개인 정보 보호를 위해 활성 대여에 포함된 차량은 이 피드에 표시되지 않아야 합니다.

필드 이름 유형 요구사항 설명
bikes 배열 필수 현재 사용 가능하고 중지된 자전거의 배열입니다. 각 자전거는 객체입니다.
bikes[].bike_id ID 필수 자전거의 식별자입니다.

개인 정보를 보호하기 위해 이동 후에는 ID를 임의 문자열로 변경할 수 있습니다.

bikes[].lat 위도 필수 자전거의 WGS 84 위도(십진수 도 형식)입니다.
bikes[].lon 경도 필수 자전거의 WGS 84 경도(십진수 도 형식)입니다.
bikes[].is_reserved 불리언 필수 자전거가 현재 예약되어 있는지 여부입니다. 다음과 같습니다.
  • 자전거가 현재 예약된 경우 true로 설정합니다.
  • 자전거가 현재 예약되어 있지 않으면 false로 설정합니다.
bikes[].is_disabled 불리언 필수 자전거가 현재 사용 중지되었는지 또는 고장났는지 여부입니다. 다음과 같습니다.
  • 자전거가 현재 사용 중지된 경우 true로 설정합니다.
  • 자전거가 현재 사용 중지되어 있지 않으면 false로 설정합니다.
bikes[].rental_uris 객체 필수 각 필드에 Android, iOS, 웹의 대여 URI가 포함된 JSON 객체입니다.
bikes[].rental_uris.android URI 조건부 필수 Android 딥 링크를 지원하기 위해 android.intent.action.VIEW Android 인텐트가 포함된 Android 앱에 전달할 수 있는 URI입니다. 제공된 rental_uris Android 앱 링크여야 합니다. 그래야 사용자가 제공자 애플리케이션을 설치하지 않은 경우 보기 앱에서 사용자를 앱 스토어로 리디렉션하는 것을 수동으로 관리하지 않아도 됩니다.

이 URI는 두 대 이상의 자전거에 관한 정보가 포함된 일반적인 대여 페이지가 아닌 개별 자전거에 특화된 딥 링크여야 합니다. 딥 링크는 요청 메시지, 전면 페이지, 로그인 없이 곧바로 사용자를 자전거에 연결해야 합니다. 사용자가 애플리케이션을 연 적이 없더라도 자전거를 볼 수 있도록 합니다.

파트너가 각 자전거를 식별할 다른 수단이 있는 경우 URI에 자전거의 bike_id를 포함하지 않아도 됩니다. 예를 들어 대여 앱은 URI 내에서 다른 식별자를 사용하여 자전거를 고유하게 식별할 수 있습니다.

파트너에게 Android 대여 앱이 있는 경우 이 필드는 필수입니다.

Android App Links의 예:

https://www.example.com/app?sid=1234567890&platform=android

bikes[].rental_uris.ios URI 조건부 필수 iOS에서 자전거 대여 앱을 실행하는 데 사용할 수 있는 URI입니다. 자세한 내용은 iOS 맞춤 URL 스키마에 관한 Apple 도움말을 참고하세요. 제공된 rental_uris iOS 범용 링크여야 합니다. 그래야 사용자가 제공업체 애플리케이션을 설치하지 않은 경우 보기 앱에서 사용자를 앱 스토어로 리디렉션하는 것을 수동으로 관리하지 않아도 됩니다.

이 URI는 두 대 이상의 자전거에 관한 정보가 포함된 일반적인 대여 페이지가 아닌 개별 자전거에 특화된 딥 링크여야 합니다. 딥 링크는 요청 메시지, 전면 페이지, 로그인 없이 곧바로 사용자를 자전거에 연결해야 합니다. 사용자가 애플리케이션을 연 적이 없더라도 자전거를 볼 수 있도록 합니다.

파트너가 해당 자전거를 식별할 다른 수단이 있는 경우 URI에 자전거의 bike_id를 포함하지 않아도 됩니다. 예를 들어 대여 앱은 URI 내에서 다른 식별자를 사용하여 자전거를 고유하게 식별할 수 있습니다.

파트너에게 iOS 대여 앱이 있는 경우 이 필드는 필수입니다.

iOS 범용 링크 예:

https://www.example.com/app?sid=1234567890&platform=ios

bikes[].rental_uris.web URL 선택사항

웹브라우저에서 이 차량의 차량 대여에 관한 자세한 정보를 표시하는 데 사용할 수 있는 URL입니다.

이 URL은 두 대 이상의 자전거 정보가 포함된 일반적인 대여 페이지가 아닌 개별 자전거에 특화된 딥 링크여야 합니다. 딥 링크는 요청 메시지, 전면 페이지, 로그인 없이 곧바로 사용자를 자전거에 연결해야 합니다. 사용자가 애플리케이션을 연 적이 없더라도 자전거를 볼 수 있도록 합니다.

URL에 자전거의 bike_id를 포함하거나 Android 또는 iOS의 렌탈 URL의 의미 규칙을 따르지 않아도 됩니다. 대여 앱은 URL 내에서 자전거를 고유하게 식별하는 다른 식별자를 사용할 수 있습니다.

이 필드가 설정되지 않은 경우 웹브라우저에서 딥 링크가 지원되지 않는다는 의미입니다.

예시 값:

https://www.example.com/app?sid=1234567890

bikes[].vehicle_type_id ID 필수 vehicle_types.json 섹션에 설명된 차량의 vehicle_type_id입니다.
bikes[].pricing_plan_id ID 필수 이 차량 유형이 system_pricing_plans.json 섹션에 설명된 대로 대여될 때 적용되는 요금제의 식별자입니다.
bikes[].current_range_meters 비음수 부동 소수 조건부 필수 차량에 해당하는 vehicle_type 정의에 모터가 있는 경우 이 필드는 필수입니다.

차량의 현재 충전 또는 연료 수준을 고려할 때 재충전이나 재급유 없이 차량이 이동할 수 있는 가장 먼 거리를 미터 단위로 설정합니다.

bikes[].last_reported 타임스탬프 선택사항 차량이 운영자의 백엔드에 상태를 보고한 마지막 시간으로 설정됩니다.

다음은 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
}
]

필수: vehicle_types.json (도크형 및 도크리스 시스템)

필요한 경우 GBFS 사양을 참고하세요.

이 피드는 free_bike_status.json 섹션에 언급된 개별 차량 유형의 세부정보를 정의합니다.

필드 이름 유형 요구사항 설명
vehicle_types 배열 필수 객체의 배열입니다. 각 객체는 제공업체 카탈로그의 개별 차량 유형을 정의합니다. 지정된 차량 유형에는 객체가 하나만 있을 수 있습니다.
vehicle_types[].vehicle_type_id ID 필수 특정 차량 유형의 고유 식별자입니다.
vehicle_types[].form_factor 열거형 필수 현재 유효한 값 목록(다음 참고)에서 차량의 일반적인 폼 팩터를 나타내는 열거형입니다.
  • bicycle
  • scooter
  • other
vehicle_types[].propulsion_type 열거형 필수 현재 유효한 값 목록(다음)에서 차량의 기본 추진 유형을 나타내는 열거형입니다.
  • human: 페달 또는 발 추진
  • electric_assist: 인력 추진과 함께만 전원을 제공합니다.
  • electric: 배터리 구동 모터가 있는 스로틀 모드를 포함합니다.
  • combustion: 가솔린 엔진으로 구동되는 모터가 있는 스로틀 모드를 포함합니다.
vehicle_types[].max_range_meters 비음수 부동 소수 조건부 필수 propulsion_typehuman로 설정되지 않은 경우 차량에 모터가 있으므로 이 필드가 필요합니다.

차량이 완전히 연료를 채웠거나 완전히 충전되었을 때 재충전이나 재급유 없이 이동할 수 있는 가장 먼 거리를 미터 단위로 설정합니다.

다음은 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
  }
]

필수: system_pricing_plans.json (도크리스 시스템)

필요한 경우 GBFS 사양을 참고하세요.

이 피드는 독립형 차량의 요금제를 정의합니다. 제공업체는 독립형 차량의 가격 정보를 표시해야 합니다.

필드 이름 유형 요구사항 설명
plans 배열 필수 각 객체가 특정 요금제를 정의하는 객체의 배열입니다.
plans[].plan_id ID 필수 공급자가 제공하는 특정 요금제의 고유 식별자를 나타내는 문자열입니다.
plans[].url URL 선택사항 최종 사용자를 가격 계획에 관한 자세한 정보로 안내하는 URL입니다.
plans[].currency 문자열 필수 요금제의 ISO 4217 표준입니다.
plans[].price 비음수 부동 소수 필수

요금제는 등급이 지정되지 않은 요금제 또는 등급이 지정된 요금제로 정의해야 합니다.

등급이 지정되지 않은 요금제

이 요금제는 단일 정액 요금입니다.

다음 필드를 설정합니다.

  • price: 전체 여정의 고정 요금입니다.
평가된 요금제

이 요금제는 구간별 선형 요금 가격입니다.

다음 필드를 설정합니다.

  • price: 기본 가격으로, 이동당 정확히 한 번 청구됩니다.

다음 필드 중 하나 또는 둘 다를 설정합니다.

  • per_km_pricing: 킬로미터당 요율로 지정된 이동 가격입니다.
  • per_min_pricing: 분당 요율로 지정된 이동 가격입니다.
plans[].per_km_pricing 배열 조건부 필수

가격이 이동 거리에 따라 달라지고 이동 거리가 킬로미터로 표시되는 경우 이 필드가 필수입니다.

각 객체가 지정된 거리로 나눈 세그먼트를 정의하는 객체 배열입니다. 각 세그먼트의 start 값은 다음 세그먼트의 start 값보다 작거나 같아야 합니다.

지정된 요금제의 총 가격을 확인하려면 지정된 요금제의 plans[].price 값을 plans[].per_km_pricingplans[].per_min_pricing의 세그먼트에 대한 누적 가격에 추가합니다.

이 필드가 설정되지 않으면 거리에 따른 변동 가격이 없으므로 총 가격에 포함되지 않습니다.

plans[].per_km_pricing[].start 비음수 정수 필수 구간 요금이 청구되기 시작하는 거리(km)입니다. 이 필드는 세그먼트 범위의 시작인 포함 값으로 설정됩니다. 따라서 킬로미터 수가 경과하면 rate가 한 번 청구됩니다.
plans[].per_km_pricing[].rate 부동 소수점 수 필수 세그먼트의 start(포함)부터 시작되는 각 interval에 청구되는 요금입니다. 이 필드가 음수로 설정되면 여행자가 할인을 받습니다.
plans[].per_km_pricing[].interval 비음수 정수 필수

세그먼트의 end이 음이 아닌 정수로 설정되지 않는 한 세그먼트의 rate이 무기한 다시 적용되는 간격(단위: km)입니다.

rate는 각 interval 시작 시 한 번 다시 적용되며 거리의 반올림은 고려되지 않습니다.

세그먼트의 end이 음이 아닌 정수로 설정된 경우 세그먼트의 end 값까지(포함하지 않음) 세그먼트의 rate이 다시 적용됩니다.

이 필드가 0로 설정되면 rate이 세그먼트의 start에서 정확히 한 번 청구됩니다.

plans[].per_km_pricing[].end 비음수 정수 선택사항

세그먼트의 rate가 더 이상 적용되지 않는 지점의 킬로미터 수입니다. 이 필드는 세그먼트 범위의 끝을 나타내는 제외 값으로 설정됩니다. 예를 들어 end40로 설정되면 rate이 40km에서 더 이상 적용되지 않습니다.

이 필드가 설정되지 않았거나 비어 있으면 세그먼트의 rate가 이동이 종료될 때까지 청구되며, 그 뒤에 오는 추가 세그먼트도 마찬가지입니다.

plans[].per_min_pricing 배열 조건부 필수

가격이 경과된 시간(분 단위로 표시)에 따라 달라지는 경우 이 필드가 필수입니다.

각 객체가 지정된 시간으로 나눈 세그먼트를 정의하는 객체 배열입니다. 각 세그먼트의 start 값은 다음 세그먼트의 start 값보다 작거나 같아야 합니다.

지정된 요금제의 총 가격을 확인하려면 지정된 요금제의 plans[].price 값을 plans[].per_km_pricingplans[].per_min_pricing의 세그먼트에 대한 누적 가격에 추가합니다.

이 필드가 설정되지 않으면 시간에 따른 변동 가격이 없으므로 총가격에 포함되지 않습니다.

plans[].per_min_pricing[].start 부동 소수점 수 필수 세그먼트 요금이 청구되기 시작하는 시간(분)입니다. 이 필드는 세그먼트 범위의 시작인 포함 값으로 설정됩니다. 따라서 설정된 분이 경과하면 rate에 한 번 요금이 청구됩니다.
plans[].per_min_pricing[].rate 부동 소수점 수 필수 interval에 청구되는 요율입니다. 비율은 세그먼트의 start(포함)에서 시작됩니다. 이 필드가 음수로 설정되면 여행자가 할인을 받습니다.
plans[].per_min_pricing[].interval 비음수 정수 필수

세그먼트의 end이 음이 아닌 정수로 설정되지 않는 한 세그먼트의 rate이 무기한 다시 적용되는 간격(분)입니다.

rate는 각 interval 시작 시 한 번 다시 적용되며 이동 시간의 반올림은 고려되지 않습니다.

세그먼트의 end이 음이 아닌 정수로 설정된 경우 세그먼트의 end 값까지(포함하지 않음) 세그먼트의 rate이 다시 적용됩니다.

이 필드가 0로 설정되면 rate이 세그먼트의 start에서 정확히 한 번 청구됩니다.

plans[].per_min_pricing[].end 비음수 정수 선택사항

세그먼트의 rate가 더 이상 적용되지 않는 시간(분)입니다. 이 필드는 세그먼트 범위의 끝을 나타내는 제외 값으로 설정됩니다. 예를 들어 end20으로 설정된 경우 rate는 20분이 지나면 더 이상 적용되지 않습니다.

이 필드가 설정되지 않았거나 비어 있으면 세그먼트의 rate가 이동이 종료될 때까지 청구되며, 그 뒤에 오는 추가 세그먼트도 청구됩니다.

system_pricing_plans.json 예시

이 섹션에서는 유용한 system_pricing_plans.json 코드 샘플을 제공합니다. 각 예의 관련 세부정보와 결과도 제공됩니다.

system_pricing_plans.json의 예 1

다음 요금제 코드 샘플은 다음 간격의 이동 시간을 기준으로 요금을 보여줍니다.

  • [0,1): 2달러
    • 이동 시간이 1분 미만이면 사용자는 2달러를 지불합니다.
    • 예: 59초 여행
  • [1,2): 3달러
    • 여정이 1분 이상 2분 미만인 경우 사용자는 2달러 + 1달러 = 3달러를 지불합니다.
    • 예: 1분 여정, 1분 45초 여정
  • x가 2 이상인 경우의 x분: $3 + (($2 + $1) * (x - 2 + 1)) USD
    • 이동 시간이 2분 이상인 경우 사용자는 2분 미만의 이동 부분에 대해 3달러를 지불하고 2분 이후의 매분에 대해 (per_min_pricing 목록의 첫 번째 항목에서 계속) 1달러 + (per_min_pricing 목록의 두 번째 항목) 2달러를 지불합니다.
    • 예:
      • 2분 이동 비용은 3달러 + (2달러 + 1달러) = 6달러입니다.
      • 2분 30초 이동 비용은 3달러 + (2달러 + 1달러) = 6달러입니다.
      • 3분 이동 비용: 3달러 + (($2 + $1) * 2) = 9달러
      • 10분 이동 비용: 3달러 + (($2 + $1) * 9) = 30달러
{
  "plans": {
    "plan_id": "plan1",
    "currency": "USD",
    "price": 2,
    "per_min_pricing": [
      {
          "interval": 1,
          "rate": 1,
          "start": 1
      },
      {
          "interval": 1,
          "rate": 2,
          "start": 2
      }
    ],
  }
}

system_pricing_plans.json의 예 2

이 예에서는 분당 및 킬로미터당 요금이 청구되는 가격 요금제의 코드 샘플을 보여줍니다.

  • 구체적으로 최종 사용자에게는 km당 0.25캐나다달러와 분당 0.50캐나다달러가 청구됩니다.
  • 이 두 비율은 동시에 발생하며 서로 종속되지 않습니다.
  • 따라서 10분 동안 지속되는 1km 이동의 비용은 9캐나다달러입니다. 비용 분석은 다음과 같습니다.
    • 기본 가격 3달러
    • $0.25 * 2, 이동 시작 시 한 번, 1km 지점에서 한 번 청구됩니다.
    • $0.5 * 11, 매분 시작 시 1회 청구됩니다. 요금은 0초부터 시작되며 마지막 간격은 10분으로 청구됩니다.
{
  "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
    }]
  }
}

조건부 필수: geofencing_zones.json (도크형 및 도크 미장착 시스템)

필요한 경우 GBFS 사양을 참고하세요.

이 피드는 독립형 차량의 지오펜싱 데이터를 정의합니다. 지오펜싱 데이터에는 차량이 탑승을 시작하고 탑승을 종료할 수 있는 위치를 지정하는 지리적 경계와 차량이 이동할 수 있는 속도가 포함됩니다. 이 속도는 차량의 최대 속도 또는 차량이 주행하는 도로의 속도 제한 중 더 낮은 속도입니다. 운전자는 현지 법규를 준수해야 합니다.

이 데이터는 사용자가 특정 경로를 검색할 때 여행의 끝이 특정 지오펜스 밖에 있는 경우 마이크로 모빌리티 결과가 필터링되도록 하는 데 사용됩니다. 지오펜스가 제공되지 않으면 Google은 서비스에 경계 제한이 없는 것으로 간주합니다.

필드 이름 유형 요구사항 설명
geofencing_zones 객체 필수 IETF RFC 7946에 설명된 FeatureCollection 객체는 features라는 필드가 있는 객체입니다. features 값은 JSON 배열입니다. JSON 배열의 각 요소는 Feature 객체입니다.

각 지오펜스 영역, 연결된 규칙 및 속성, FeatureCollection 정의는 geofencing_zones.json 피드 정의의 일부로 여기에 지정됩니다.

geofencing_zones.type 문자열 필수 IETF RFC 7946에 설명된 대로 FeatureCollection으로 설정합니다.
geofencing_zones.features 배열 필수 JSON 배열입니다. JSON 배열의 각 요소는 Feature 객체입니다.
geofencing_zones.features[].type 문자열 필수 IETF RFC 7946에 설명된 대로 Feature으로 설정합니다.
geofencing_zones.features[].geometry GeoJSON Multipolygon 필수 기타 제한사항 외에도 차량이 시작, 종료, 통과할 수 없는 위치를 설명하는 GeoJSON Multipolygon입니다. 시계 방향으로 점을 배열하면 다각형으로 둘러싸인 영역이 정의되고, 시계 반대 방향으로 점을 배열하면 다각형 외부 영역이 정의됩니다. 자세한 내용은 오른손 법칙을 참고하세요.
geofencing_zones.features[].properties 객체 필수 여행 수당 및 제한을 정의하는 객체입니다.
geofencing_zones.features[].properties.rules 배열 선택사항 객체의 배열이며, 각 객체는 하나의 규칙만 정의합니다. 두 개 이상의 규칙이 중복되거나 충돌하거나 어떤 식으로든 충돌하는 경우 JSON 파일 순서에서 가장 먼저 정의된 규칙이 우선합니다.
geofencing_zones.features[].properties.rules[].vehicle_type_id 배열 선택사항 차량 유형 ID의 배열로, 각 요소는 제한사항이 적용되어야 하는 vehicle_type_id입니다. vehicle_type_id을 지정하지 않으면 제한사항이 모든 차량 유형에 적용됩니다.
geofencing_zones.features[].properties.rules[].ride_allowed 불리언 필수 다음과 같이 독립형 '도킹 해제' 자전거 타기가 해당 구역에서 시작하고 종료될 수 있는지 여부입니다.
  • 도킹 해제된 자전거를 해당 구역에서 시작하고 종료할 수 있는 경우 true로 설정합니다.
  • 도킹 해제된 자전거 라이딩이 해당 구역에서 시작하고 종료될 수 없는 경우 false로 설정합니다.

다음은 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]
      ]]]
    }
  }]
}

필수: station_information.json (도킹 시스템)

필요한 경우 GBFS 사양을 참고하세요.

이 피드는 공공 자전거 공유 스테이션에 관한 일반 정보를 정의합니다.

필드 이름 유형 요구사항 설명
stations 배열 필수 각 객체가 하나의 방송국만 정의하는 객체의 배열입니다.
stations[].station_id 문자열 필수 방송국의 식별자입니다.
stations[].name 문자열 필수 역이 위치한 도시의 현지 언어로 된 역의 공개 이름입니다. name은 역에 있는 표지판에 사용된 내용(사용 가능한 경우)을 준수해야 하며, 교차로 또는 지역 명소를 사용하여 역 위치를 반영해야 합니다. 표지판에 명시적으로 사용되지 않는 한 'Street'에 'St.'와 같은 약어를 사용하지 마세요. name는 장소 이름의 대문자 사용에 대한 현지 규칙을 따라 대소문자를 혼용해야 하며 모두 대문자로 표시하면 안 됩니다.
stations[].lat 위도 필수 정류장의 WGS 84 위도입니다(십진수 도 형식).
stations[].lon 경도 필수 정류장의 WGS 84 경도입니다(십진수 도 형식).
stations[].capacity 비음수 정수 선택사항 스테이션에 설치된 도킹 포인트의 총수를 나타내는 음수가 아닌 정수입니다(사용 가능한 도킹 포인트와 사용 불가능한 도킹 포인트 모두 포함).
stations[].rental_uris 객체 필수

각 필드에 Android, iOS, 웹의 대여 URI가 포함된 JSON 객체입니다.

이러한 URI가 지정되면 제공자가 온보딩될 때 설정된 기본 딥 링크가 재정의됩니다.

stations[].rental_uris.android URI 조건부 필수

android.intent.action.VIEW Android 인텐트가 포함된 Android 앱에 전달하여 Android 딥 링크를 지원할 수 있는 URI입니다. 제공된 rental_uris은 사용자가 제공자 애플리케이션을 설치하지 않은 경우 보기 앱이 사용자의 앱 스토어 리디렉션을 수동으로 관리하지 않아도 되도록 Android 앱 링크여야 합니다.

이 URI는 두 개 이상의 방송국 정보를 포함하는 일반 대여 페이지가 아닌 개별 방송국에 특화된 딥 링크여야 합니다. 딥 링크는 요청 메시지, 전면 페이지, 로그인 없이 곧바로 사용자를 방송국에 연결해야 합니다. 사용자가 애플리케이션을 연 적이 없더라도 방송국을 볼 수 있어야 합니다.

파트너가 각 방송국을 식별하는 다른 수단을 보유한 경우 방송국의 station_id를 URI에 포함하지 않아도 됩니다. 예를 들어 대여 앱은 URI 내에서 다른 식별자를 사용하여 방송국을 고유하게 식별할 수 있습니다.

파트너에게 Android 대여 앱이 있는 경우 이 필드는 필수입니다.

Android App Links의 예:

https://www.example.com/app?sid=1234567890&platform=android

stations[].rental_uris.ios URI 조건부 필수

iOS에서 역의 대여 앱을 실행하는 데 사용할 수 있는 URI입니다. 자세한 내용은 Apple의 iOS 맞춤 URL 스키마에 관한 도움말을 참고하세요. rental_urisiOS 범용 링크여야 합니다. 그래야 사용자가 제공업체 애플리케이션을 설치하지 않은 경우 보기 앱에서 사용자를 앱 스토어로 리디렉션하는 것을 수동으로 관리하지 않아도 됩니다.

이 URI는 두 개 이상의 방송국 정보를 포함하는 일반 대여 페이지가 아닌 개별 방송국에 특화된 딥 링크여야 합니다. 딥 링크는 요청 메시지, 전면 페이지, 로그인 없이 곧바로 사용자를 방송국에 연결해야 합니다. 사용자가 애플리케이션을 연 적이 없더라도 방송국을 볼 수 있어야 합니다.

URI에 방송국의 station_id를 포함하지 않아도 됩니다. 대여 앱은 URI 내에서 다른 식별자를 사용하여 방송국을 고유하게 식별할 수 있습니다.

파트너에게 iOS 대여 앱이 있는 경우 이 필드는 필수입니다.

iOS 범용 링크 예:

https://www.example.com/app?sid=1234567890&platform=ios

stations[].rental_uris.web URL 선택사항

웹브라우저에서 이 역에서 차량을 대여하는 방법에 관한 자세한 정보를 표시하는 데 사용할 수 있는 URL입니다.

이 URL은 두 개 이상의 방송국 정보가 포함된 일반 대여 페이지가 아닌 개별 방송국에 특화된 딥 링크여야 합니다. 딥 링크는 요청 메시지, 전면 페이지, 로그인 없이 곧바로 사용자를 방송국에 연결해야 합니다. 사용자가 애플리케이션을 연 적이 없더라도 방송국을 볼 수 있어야 합니다.

URL에 방송국의 station_id이 포함되거나 Android 또는 iOS의 대여 URL의 의미 규칙을 따르지 않아도 됩니다. 대여 앱은 URL 내에서 방송국을 고유하게 식별하는 다른 식별자를 사용할 수 있습니다.

이 필드가 설정되지 않은 경우 웹브라우저에서 딥 링크가 지원되지 않는다는 의미입니다.

예시 값:

https://www.example.com/app?sid=1234567890

다음은 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"
    }
  },
]

필수: station_status.json (도킹된 시스템)

필요한 경우 GBFS 사양을 참고하세요.

이 피드는 최신 상태의 공공 자전거 공유 스테이션을 정의합니다.

필드 이름 유형 요구사항 설명
stations 배열 필수 객체의 배열이며, 각 객체는 하나의 방송국만 정의합니다.
stations[].station_id 문자열 필수 방송국의 식별자입니다.
stations[].num_bikes_available 비음수 정수 필수

역에 실제로 있으며 대여용으로 제공될 수 있는 기능성 자전거의 수를 나타내는 음수가 아닌 정수입니다.

현재 대여 자전거가 있는 역을 확인하려면 역의 is_renting 필드를 검사하여 true 불리언 값을 찾아야 합니다.

stations[].vehicle_types_available 배열 선택사항

역에서 이용 가능한 개별 차량 유형별로 분류된 총 차량 수를 정의하는 객체의 배열입니다. 각 객체는 연결된 차량 유형의 총 차량 수를 모델링합니다. 이러한 각 객체의 총 차량 수는 num_bikes_available 필드에 지정된 값과 일치해야 합니다.

stations[].vehicle_types_available[].vehicle_type_id ID 필수

vehicle_types.json에 설명된 대로 정류장에서 사용할 수 있는 각 차량 유형의 vehicle_type_id입니다.

stations[].vehicle_types_available[].count 비음수 정수 필수

vehicle_types.json에 정의된 대로 해당 vehicle_type_id의 역에서 사용 가능한 차량의 총수입니다.

stations[].num_docks_available 비음수 정수 조건부 필수

이 필드는 스테이션의 도크 용량이 무제한이 아닌 경우 필수입니다. 예를 들어 가상 스테이션은 도킹 용량이 무제한이므로 필드가 필요하지 않습니다.

차량 반납을 수락할 수 있는 스테이션에 있는 기능 도크의 총수를 나타내는 음수가 아닌 정수입니다.

현재 대여소에서 자전거 반납을 허용하는지 확인하려면 대여소의 is_returning 필드를 검사하고 true 불리언 값을 찾아야 합니다.

stations[].is_installed 불리언 필수

현재 방송국이 거리에 설치되어 있는지 여부를 나타내는 불리언입니다.

스테이션이 거리에 설치된 경우 true로 설정합니다.

거리에 설치되지 않은 경우 false로 설정합니다.

stations[].is_renting 불리언 필수

역에서 현재 자전거를 대여하는지 여부를 나타내는 불리언입니다.

역에서 현재 자전거를 대여하는 경우 true로 설정합니다. 충전소가 비어 있더라도 대여를 허용하도록 설정된 경우 is_rentingtrue으로 설정됩니다.

현재 대여 자전거가 없는 경우 false로 설정합니다.

stations[].is_returning 불리언 필수

현재 대여점에서 자전거 반납을 허용하는지 여부를 나타내는 불리언입니다.

현재 스테이션에서 자전거 반납을 허용하는 경우 true로 설정합니다. 충전소가 가득 차 있지만 가득 차 있지 않다면 반납이 허용되는 경우 is_returningtrue로 설정됩니다.

현재 대여 자전거 반납을 허용하지 않는 경우 false로 설정합니다.

다음은 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
        },
]