{"schemaVersion":"1.0.0","contentVersion":"transport-access-v1","contentUpdatedAt":null,"lastVerifiedAt":null,"checksum":"sha256--OgtPo9xDi4FhAY6HUNkjf6_jdoveQS2LIsEy-GzvAg","data":{"openapi":"3.1.0","info":{"title":"Bilig Transport Access API","version":"1.0.0","summary":"Reviewed tourist destinations, public places and qualified station candidates.","description":"A read-only, bounded projection of Bilig central transit and public place sources. This API does not calculate journeys, verify walking access, sell tickets or provide live departures. Coverage is an explicit pilot; geography and station proximity never imply an available service or interchange."},"servers":[{"url":"https://api.bilig.app/v1"}],"paths":{"/transport/destinations/index.json":{"get":{"summary":"List reviewed tourist destinations without downloading worldwide geometry","parameters":[{"name":"locale","in":"query","schema":{"enum":["en","tr","fr","ja","zh"]},"description":"Validates preferred language; responses retain available language dictionaries and English fallback."},{"name":"preview","in":"query","schema":{"enum":["0","1"]},"description":"Existing deployment namespace policy; explicit preview requests are never cached."}],"responses":{"200":{"description":"List reviewed tourist destinations without downloading worldwide geometry","headers":{"ETag":{"schema":{"type":"string"}},"X-Content-Revision":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","required":["schemaVersion","contentVersion","contentUpdatedAt","lastVerifiedAt","checksum","data"],"properties":{"schemaVersion":{"const":"1.0.0"},"contentVersion":{"type":"string"},"contentUpdatedAt":{"type":["string","null"],"format":"date-time"},"lastVerifiedAt":{"type":"null","description":"Source retrieval does not establish operator verification."},"checksum":{"type":"string"},"data":{"$ref":"#/components/schemas/DestinationIndex"}}}}}},"304":{"description":"Source revalidated; serialized response unchanged."},"400":{"description":"Unknown, repeated or invalid query.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Unknown reviewed destination or endpoint.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"405":{"description":"Read-only API; only GET and HEAD.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Per-worker concurrency budget exhausted; Retry-After: 1.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"A required source is unavailable, malformed, changed during evaluation or over budget. Never interpret this as absence of transport.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"head":{"summary":"Same source evaluation and headers as GET; no response body","responses":{"200":{"description":"Metadata only."},"304":{"description":"Source revalidated; serialized response unchanged."},"400":{"description":"Unknown, repeated or invalid query.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Unknown reviewed destination or endpoint.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"405":{"description":"Read-only API; only GET and HEAD.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Per-worker concurrency budget exhausted; Retry-After: 1.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"A required source is unavailable, malformed, changed during evaluation or over budget. Never interpret this as absence of transport.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"parameters":[{"name":"locale","in":"query","schema":{"enum":["en","tr","fr","ja","zh"]},"description":"Validates preferred language; responses retain available language dictionaries and English fallback."},{"name":"preview","in":"query","schema":{"enum":["0","1"]},"description":"Existing deployment namespace policy; explicit preview requests are never cached."}]}},"/transport/destinations/{destinationId}.json":{"get":{"summary":"Project live public places and source-qualified nearby station candidates","parameters":[{"name":"locale","in":"query","schema":{"enum":["en","tr","fr","ja","zh"]},"description":"Validates preferred language; responses retain available language dictionaries and English fallback."},{"name":"preview","in":"query","schema":{"enum":["0","1"]},"description":"Existing deployment namespace policy; explicit preview requests are never cached."},{"name":"destinationId","in":"path","required":true,"schema":{"type":"string","pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"}},{"name":"date","in":"query","schema":{"type":"string","format":"date"},"description":"Optional service-calendar date. Estimated service remains an estimate at every date; live availability is not evaluated."}],"responses":{"200":{"description":"Project live public places and source-qualified nearby station candidates","headers":{"ETag":{"schema":{"type":"string"}},"X-Content-Revision":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","required":["schemaVersion","contentVersion","contentUpdatedAt","lastVerifiedAt","checksum","data"],"properties":{"schemaVersion":{"const":"1.0.0"},"contentVersion":{"type":"string"},"contentUpdatedAt":{"type":["string","null"],"format":"date-time"},"lastVerifiedAt":{"type":"null","description":"Source retrieval does not establish operator verification."},"checksum":{"type":"string"},"data":{"$ref":"#/components/schemas/DestinationAccess"}}}}}},"304":{"description":"Source revalidated; serialized response unchanged."},"400":{"description":"Unknown, repeated or invalid query.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Unknown reviewed destination or endpoint.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"405":{"description":"Read-only API; only GET and HEAD.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Per-worker concurrency budget exhausted; Retry-After: 1.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"A required source is unavailable, malformed, changed during evaluation or over budget. Never interpret this as absence of transport.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"head":{"summary":"Same source evaluation and headers as GET; no response body","parameters":[{"name":"locale","in":"query","schema":{"enum":["en","tr","fr","ja","zh"]},"description":"Validates preferred language; responses retain available language dictionaries and English fallback."},{"name":"preview","in":"query","schema":{"enum":["0","1"]},"description":"Existing deployment namespace policy; explicit preview requests are never cached."},{"name":"destinationId","in":"path","required":true,"schema":{"type":"string","pattern":"^[a-z0-9]+(?:-[a-z0-9]+)*$"}},{"name":"date","in":"query","schema":{"type":"string","format":"date"},"description":"Optional service-calendar date. Estimated service remains an estimate at every date; live availability is not evaluated."}],"responses":{"200":{"description":"Metadata only."},"304":{"description":"Source revalidated; serialized response unchanged."},"400":{"description":"Unknown, repeated or invalid query.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Unknown reviewed destination or endpoint.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"405":{"description":"Read-only API; only GET and HEAD.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Per-worker concurrency budget exhausted; Retry-After: 1.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"A required source is unavailable, malformed, changed during evaluation or over budget. Never interpret this as absence of transport.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/transport/openapi.json":{"get":{"summary":"Read this OpenAPI 3.1 document in a Bilig content envelope","responses":{"200":{"description":"Machine-readable API contract","headers":{"ETag":{"schema":{"type":"string"}},"X-Content-Revision":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","required":["schemaVersion","contentVersion","contentUpdatedAt","lastVerifiedAt","checksum","data"],"properties":{"schemaVersion":{"const":"1.0.0"},"contentVersion":{"type":"string"},"contentUpdatedAt":{"type":["string","null"],"format":"date-time"},"lastVerifiedAt":{"type":"null","description":"Source retrieval does not establish operator verification."},"checksum":{"type":"string"},"data":{"type":"object"}}}}}},"400":{"description":"Unknown, repeated or invalid query.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Unknown reviewed destination or endpoint.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"405":{"description":"Read-only API; only GET and HEAD.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Per-worker concurrency budget exhausted; Retry-After: 1.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"A required source is unavailable, malformed, changed during evaluation or over budget. Never interpret this as absence of transport.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"head":{"summary":"Same source evaluation and headers as GET; no response body","responses":{"200":{"description":"Metadata only."},"304":{"description":"Source revalidated; serialized response unchanged."},"400":{"description":"Unknown, repeated or invalid query.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Unknown reviewed destination or endpoint.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"405":{"description":"Read-only API; only GET and HEAD.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Per-worker concurrency budget exhausted; Retry-After: 1.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"A required source is unavailable, malformed, changed during evaluation or over budget. Never interpret this as absence of transport.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"parameters":[]}}},"components":{"schemas":{"Error":{"type":"object","required":["error"],"properties":{"error":{"enum":["invalid_query","not_found","method_not_allowed","temporarily_busy","content_unavailable"]}}},"SourceRef":{"type":"object","required":["label","url"],"properties":{"label":{"type":"string"},"url":{"type":"string","format":"uri"},"provider":{"type":"string"},"recordId":{"type":"string"},"recordSha256":{"type":"string"},"license":{"type":"string"}},"additionalProperties":{"type":["string","number","boolean","null"]}},"Coordinate":{"type":"array","prefixItems":[{"type":"number","minimum":-180,"maximum":180},{"type":"number","minimum":-90,"maximum":90}],"minItems":2,"maxItems":2,"description":"WGS84 longitude, latitude; not a verified entrance."},"Destination":{"type":"object","required":["id","name","countryCode","center","bounds","sourceRefs","communityContext"],"properties":{"id":{"type":"string"},"name":{"type":"object","required":["en"],"additionalProperties":{"type":"string"}},"countryCode":{"type":"string","pattern":"^[A-Z]{2}$"},"center":{"type":"array","prefixItems":[{"type":"number","minimum":-180,"maximum":180},{"type":"number","minimum":-90,"maximum":90}],"minItems":2,"maxItems":2,"description":"WGS84 longitude, latitude; not a verified entrance."},"bounds":{"type":"array","items":{"type":"number"},"minItems":4,"maxItems":4},"sourceRefs":{"type":"array","items":{"type":"object","required":["label","url"],"properties":{"label":{"type":"string"},"url":{"type":"string","format":"uri"},"provider":{"type":"string"},"recordId":{"type":"string"},"recordSha256":{"type":"string"},"license":{"type":"string"}},"additionalProperties":{"type":["string","number","boolean","null"]}}},"communityContext":{"type":"object","properties":{"countryId":{"type":"string"},"cityId":{"type":"string"}}}}},"DestinationIndex":{"type":"object","required":["items","catalogRevision","routeCalculation","coverageEvaluation","limitations"],"properties":{"items":{"type":"array","items":{"type":"object","required":["id","name","detailUrl","catalogNetworkCandidateCount"],"properties":{"id":{"type":"string"},"name":{"type":"object","required":["en"],"additionalProperties":{"type":"string"}},"detailUrl":{"type":"string"},"catalogNetworkCandidateCount":{"type":"integer","minimum":0,"description":"Bounding-box overlap only; not service readiness."}}}},"catalogRevision":{"type":"integer"},"routeCalculation":{"const":"not_evaluated"},"coverageEvaluation":{"const":"not_evaluated"},"limitations":{"type":"array","items":{"type":"string"}}}},"ServiceQualification":{"type":"object","required":["routeId","admission","calendarStatus","reason"],"properties":{"routeId":{"type":"string"},"mode":{"type":"string"},"admission":{"enum":["physical_only","estimated","scheduled"]},"calendarStatus":{"enum":["not_scheduled","not_yet_valid","expired","date_unverified","reviewed_closed","no_reviewed_call_on_date","within_reviewed_calendar"]},"serviceDate":{"type":["string","null"],"format":"date"},"timeZone":{"type":"string"},"lastReviewedAt":{"type":["string","null"]},"reason":{"type":"string"}}},"StationCandidate":{"type":"object","required":["datasetId","datasetRevision","stopId","coordinate","straightLineDistanceMeters","distanceKind","accessEvidence","routeIds","serviceQualifications"],"properties":{"datasetId":{"type":"string"},"datasetRevision":{"type":"integer"},"stopId":{"type":"string"},"name":{"type":"object","required":["en"],"additionalProperties":{"type":"string"}},"coordinate":{"type":"array","prefixItems":[{"type":"number","minimum":-180,"maximum":180},{"type":"number","minimum":-90,"maximum":90}],"minItems":2,"maxItems":2,"description":"WGS84 longitude, latitude; not a verified entrance."},"straightLineDistanceMeters":{"type":"number","minimum":0,"maximum":1800},"distanceKind":{"const":"straight_line"},"accessEvidence":{"const":"candidate_only"},"routeIds":{"type":"object","properties":{"physicalOnly":{"type":"array","items":{"type":"string"}},"estimated":{"type":"array","items":{"type":"string"}},"scheduled":{"type":"array","items":{"type":"string"}}}},"serviceQualifications":{"type":"array","items":{"$ref":"#/components/schemas/ServiceQualification"}}}},"Place":{"type":"object","required":["id","placeId","name","coordinate","sourceRefs","verificationLevel","stationCandidates","coverageStatus"],"properties":{"id":{"type":"string","description":"Public place-entity UUID or independently sourced osm:/wikidata: identifier. Distinct namespaces do not assert identity equivalence."},"placeId":{"type":"string"},"communityPlaceEntityId":{"type":["string","null"],"format":"uuid"},"communityLocaleEntityIds":{"type":"object","maxProperties":16,"propertyNames":{"pattern":"^[a-z]{2}(?:-[A-Za-z]{2,8})?$"},"additionalProperties":{"type":"string","format":"uuid"},"description":"Explicit localized source entity UUIDs; they remain separate identities. Canonical communityPlaceEntityId uses the actual English row when available, otherwise lexical UUID."},"sourceSnapshotAt":{"type":["string","null"],"format":"date-time","description":"Source capture time, distinct from operator or coordinate verification."},"name":{"type":"object","required":["en"],"additionalProperties":{"type":"string"}},"coordinate":{"type":"array","prefixItems":[{"type":"number","minimum":-180,"maximum":180},{"type":"number","minimum":-90,"maximum":90}],"minItems":2,"maxItems":2,"description":"WGS84 longitude, latitude; not a verified entrance."},"pointType":{"type":["string","null"]},"sourceRefs":{"type":"array","items":{"type":"object","required":["label","url"],"properties":{"label":{"type":"string"},"url":{"type":"string","format":"uri"},"provider":{"type":"string"},"recordId":{"type":"string"},"recordSha256":{"type":"string"},"license":{"type":"string"}},"additionalProperties":{"type":["string","number","boolean","null"]}}},"verificationLevel":{"type":"string"},"verifiedAt":{"type":["string","null"]},"coordinateVerifiedAt":{"type":["string","null"]},"stationCandidates":{"type":"array","maxItems":3,"items":{"$ref":"#/components/schemas/StationCandidate"}},"stationCandidateCount":{"type":"integer","minimum":0},"stationCandidatesTruncated":{"type":"boolean"},"coverageStatus":{"enum":["candidate_access","insufficient_data"]}}},"DestinationAccess":{"type":"object","required":["destination","places","routeCalculation","evaluationComplete","coverageStatus","evaluatedAt","sourceEvaluation","sourceSnapshots","attributions","limitations"],"properties":{"destination":{"$ref":"#/components/schemas/Destination"},"places":{"type":"array","maxItems":20,"items":{"$ref":"#/components/schemas/Place"}},"routeCalculation":{"const":"not_evaluated"},"evaluationComplete":{"type":"boolean","description":"Completeness within bounded sources, not whole-city/worldwide transport coverage."},"coverageStatus":{"enum":["candidate_access","insufficient_data"]},"evaluatedAt":{"type":"string","format":"date-time","description":"Evaluation minute, not operator verification time."},"requestedDate":{"type":["string","null"],"format":"date"},"sourceEvaluation":{"type":"object","description":"Source limits, withdrawals, inventory rows and omitted/unlocated counts."},"sourceSnapshots":{"type":"array","items":{"type":"object"}},"attributions":{"type":"array","items":{"type":"object"}},"limitations":{"type":"array","items":{"type":"string"}}}}}},"x-bilig-limits":{"selectedDatasets":8,"concurrentDatasetReads":3,"places":20,"candidatesPerPlace":3,"stationRadiusMeters":1800,"publicInventoryRowsIncludingLocales":20,"publicInventoryResponseBytes":1048576,"responseBytes":1048576,"sourceTimeoutSeconds":8,"concurrentRequestsPerWorker":8,"immutableGeometryCacheEntries":12,"immutableGeometryCacheBytes":8388608}}}