{
  "info": {
    "name": "Seferya External API v1",
    "_postman_id": "c0f2a5f3-8c0f-4cc3-a5d5-7d1a1e4e7f11",
    "description": "Seferya dış API v1 collection. Partner login, quote, reservation and token flows.",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
  },
  "item": [
    {
      "name": "Auth",
      "item": [
        {
          "name": "Login",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Accept",
                "value": "application/json"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"username\": \"partner.user\",\n  \"password\": \"secret-password\"\n}"
            },
            "url": {
              "raw": "{{base_url}}/api/external/v1/auth/login",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "external",
                "v1",
                "auth",
                "login"
              ]
            },
            "description": "Partner kullanıcı ile giriş yapar ve Sanctum token döner."
          },
          "response": []
        },
        {
          "name": "Me",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{token}}"
              }
            ],
            "url": {
              "raw": "{{base_url}}/api/external/v1/auth/me",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "external",
                "v1",
                "auth",
                "me"
              ]
            },
            "description": "Aktif partner kullanıcı ve bağlı cari bilgilerini döner."
          },
          "response": []
        },
        {
          "name": "Refresh",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{token}}"
              }
            ],
            "url": {
              "raw": "{{base_url}}/api/external/v1/auth/refresh",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "external",
                "v1",
                "auth",
                "refresh"
              ]
            },
            "description": "Mevcut tokenı iptal eder ve aynı yetkilerle yeni token üretir."
          },
          "response": []
        },
        {
          "name": "Logout",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{token}}"
              }
            ],
            "url": {
              "raw": "{{base_url}}/api/external/v1/auth/logout",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "external",
                "v1",
                "auth",
                "logout"
              ]
            },
            "description": "Aktif partner tokenını siler."
          },
          "response": []
        }
      ]
    },
    {
      "name": "Quotes",
      "item": [
        {
          "name": "Search",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{token}}"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"from\": {\n    \"name\": \"Fatih\",\n    \"address\": \"Fatih / Istanbul\",\n    \"google_place_id\": \"ChIJxxxxxxxxxxxx\",\n    \"latitude\": 41.0082,\n    \"longitude\": 28.9784\n  },\n  \"to\": {\n    \"name\": \"Sabiha Gokcen Airport\",\n    \"address\": \"Pendik / Istanbul\",\n    \"google_place_id\": \"ChIJyyyyyyyyyyyy\",\n    \"latitude\": 40.976,\n    \"longitude\": 29.079\n  },\n  \"transfer_date\": \"2026-08-30\",\n  \"transfer_time\": \"14:30\",\n  \"passenger_count\": 2,\n  \"car_category_id\": 1,\n  \"currency_code\": \"EUR\",\n  \"notes\": \"Optional note for audit.\"\n}"
            },
            "url": {
              "raw": "{{base_url}}/api/external/v1/quotes/search",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "external",
                "v1",
                "quotes",
                "search"
              ]
            },
            "description": "Resolve polygon-based pricing from nested from/to payloads and returns pricing options for the route. Optional location metadata can be included to persist a location record."
          },
          "response": []
        },
        {
          "name": "Show",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{token}}"
              }
            ],
            "url": {
              "raw": "{{base_url}}/api/external/v1/quotes/{{quote_identifier}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "external",
                "v1",
                "quotes",
                "{{quote_identifier}}"
              ]
            },
            "description": "Returns a stored quote by price_mark or quote_id."
          },
          "response": []
        },
        {
          "name": "Validate",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{token}}"
              }
            ],
            "url": {
              "raw": "{{base_url}}/api/external/v1/quotes/{{quote_identifier}}/validate",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "external",
                "v1",
                "quotes",
                "{{quote_identifier}}",
                "validate"
              ]
            },
            "description": "Checks whether a stored quote is still active and unexpired."
          },
          "response": []
        },
        {
          "name": "Refresh",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{token}}"
              }
            ],
            "url": {
              "raw": "{{base_url}}/api/external/v1/quotes/{{quote_identifier}}/refresh",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "external",
                "v1",
                "quotes",
                "{{quote_identifier}}",
                "refresh"
              ]
            },
            "description": "Reprices a stored quote and returns a new price mark."
          },
          "response": []
        }
      ],
      "description": "Price query endpoint."
    },
    {
      "name": "Reservations",
      "item": [
        {
          "name": "Create",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{token}}"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"price_mark\": \"{{price_mark}}\",\n  \"car_category_id\": 1,\n  \"transfer_type\": \"oneway\",\n  \"operation_type\": \"transfer\",\n  \"operation_name\": \"Fatih to Airport\",\n  \"customer_reference\": \"PARTNER-2026-0001\",\n  \"transfer_date\": \"2026-08-30\",\n  \"transfer_time\": \"14:30\",\n  \"name\": \"John Doe\",\n  \"phone\": \"+905555555555\",\n  \"email\": \"john@example.com\",\n  \"whatsapp\": \"+905555555555\",\n  \"passenger_count\": 2,\n  \"passengers\": [\n    {\n      \"name\": \"John Doe\",\n      \"phone\": \"+905555555555\",\n      \"email\": \"john@example.com\",\n      \"identity_no\": \"12345678901\",\n      \"gender\": \"M\",\n      \"nationality\": \"TR\"\n    }\n  ],\n  \"flight_code\": \"TK123\",\n  \"flight_date\": \"2026-08-30\",\n  \"flight_time\": \"14:30\",\n  \"notes\": \"Optional note for audit.\",\n  \"driver_notes\": null\n}"
            },
            "url": {
              "raw": "{{base_url}}/api/external/v1/reservations",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "external",
                "v1",
                "reservations"
              ]
            },
            "description": "Creates a partner-facing reservation while creating the internal Operation from an active price mark. Operation-style fields are used; payment and nested passenger counter fields are not accepted. operation_event_id, status and source_id are managed internally and are ignored if sent."
          },
          "response": []
        },
        {
          "name": "Update Information",
          "request": {
            "method": "PATCH",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{token}}"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"name\": \"John Doe\",\n  \"phone\": \"+905555555555\",\n  \"email\": \"john@example.com\",\n  \"whatsapp\": \"+905555555555\",\n  \"passenger_count\": 2,\n  \"passengers\": [\n    {\n      \"name\": \"John Doe\",\n      \"phone\": \"+905555555555\",\n      \"email\": \"john@example.com\",\n      \"identity_no\": \"12345678901\",\n      \"gender\": \"M\",\n      \"nationality\": \"TR\"\n    }\n  ],\n  \"flight_code\": \"TK123\",\n  \"flight_date\": \"2026-08-30\",\n  \"flight_time\": \"14:30\",\n  \"notes\": \"Updated note.\"\n}"
            },
            "url": {
              "raw": "{{base_url}}/api/external/v1/reservations/{{reservation_code}}/information",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "external",
                "v1",
                "reservations",
                "{{reservation_code}}",
                "information"
              ]
            },
            "description": "Updates low-risk Operation information without changing route, date or time."
          },
          "response": []
        },
        {
          "name": "Update Reservation",
          "request": {
            "method": "PATCH",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{token}}"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"price_mark\": \"{{price_mark}}\",\n  \"car_category_id\": 1,\n  \"transfer_type\": \"roundtrip\",\n  \"operation_type\": \"transfer\",\n  \"transfer_date\": \"2026-08-30\",\n  \"transfer_time\": \"14:30\",\n  \"name\": \"John Doe\",\n  \"phone\": \"+905555555555\",\n  \"email\": \"john@example.com\",\n  \"passenger_count\": 2,\n  \"passengers\": [\n    {\n      \"name\": \"John Doe\"\n    }\n  ],\n  \"flight_code\": \"TK123\",\n  \"flight_date\": \"2026-08-30\",\n  \"flight_time\": \"14:30\",\n  \"return_transfer_date\": \"2026-08-31\",\n  \"return_transfer_time\": \"10:00\",\n  \"notes\": \"Approved change.\"\n}"
            },
            "url": {
              "raw": "{{base_url}}/api/external/v1/reservations/{{reservation_code}}",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "external",
                "v1",
                "reservations",
                "{{reservation_code}}"
              ]
            },
            "description": "Performs a comprehensive Operation update using a fresh price mark."
          },
          "response": []
        },
        {
          "name": "Cancel",
          "request": {
            "method": "POST",
            "header": [
              {
                "key": "Content-Type",
                "value": "application/json"
              },
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{token}}"
              }
            ],
            "body": {
              "mode": "raw",
              "raw": "{\n  \"reason\": \"Customer requested cancellation.\"\n}"
            },
            "url": {
              "raw": "{{base_url}}/api/external/v1/reservations/{{reservation_code}}/cancel",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "external",
                "v1",
                "reservations",
                "{{reservation_code}}",
                "cancel"
              ]
            },
            "description": "Cancels the underlying Operation while keeping the partner-facing reservation contract."
          },
          "response": []
        },
        {
          "name": "Summary",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{token}}"
              }
            ],
            "url": {
              "raw": "{{base_url}}/api/external/v1/reservations/{{reservation_code}}/summary",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "external",
                "v1",
                "reservations",
                "{{reservation_code}}",
                "summary"
              ]
            },
            "description": "Returns partner-safe summary data including status, car, driver and tracking availability."
          },
          "response": []
        },
        {
          "name": "Live Location",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{token}}"
              }
            ],
            "url": {
              "raw": "{{base_url}}/api/external/v1/reservations/{{reservation_code}}/live-location",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "external",
                "v1",
                "reservations",
                "{{reservation_code}}",
                "live-location"
              ]
            },
            "description": "Returns the latest live location and route context."
          },
          "response": []
        },
        {
          "name": "Live Location History",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{token}}"
              }
            ],
            "url": {
              "raw": "{{base_url}}/api/external/v1/reservations/{{reservation_code}}/live-location/history?start_date=&end_date=&limit=",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "external",
                "v1",
                "reservations",
                "{{reservation_code}}",
                "live-location",
                "history"
              ],
              "query": [
                {
                  "key": "start_date",
                  "value": ""
                },
                {
                  "key": "end_date",
                  "value": ""
                },
                {
                  "key": "limit",
                  "value": ""
                }
              ]
            },
            "description": "Returns historical location points for the reservation."
          },
          "response": []
        }
      ],
      "description": "Partner reservation contract backed by internal Operation create, update and cancel handling."
    },
    {
      "name": "Metadata",
      "item": [
        {
          "name": "Operation Events",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{token}}"
              }
            ],
            "url": {
              "raw": "{{base_url}}/api/external/v1/metadata/operation-events",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "external",
                "v1",
                "metadata",
                "operation-events"
              ]
            },
            "description": "Returns internal operation event definitions and next transition links."
          },
          "response": []
        },
        {
          "name": "Operation Statuses",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{token}}"
              }
            ],
            "url": {
              "raw": "{{base_url}}/api/external/v1/metadata/operation-statuses",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "external",
                "v1",
                "metadata",
                "operation-statuses"
              ]
            },
            "description": "Returns external-safe operation status dictionary."
          },
          "response": []
        },
        {
          "name": "Operation Types",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{token}}"
              }
            ],
            "url": {
              "raw": "{{base_url}}/api/external/v1/metadata/operation-types",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "external",
                "v1",
                "metadata",
                "operation-types"
              ]
            },
            "description": "Returns operation type dictionary."
          },
          "response": []
        },
        {
          "name": "Transfer Types",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{token}}"
              }
            ],
            "url": {
              "raw": "{{base_url}}/api/external/v1/metadata/transfer-types",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "external",
                "v1",
                "metadata",
                "transfer-types"
              ]
            },
            "description": "Returns partner-facing transfer type options."
          },
          "response": []
        },
        {
          "name": "Genders",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{token}}"
              }
            ],
            "url": {
              "raw": "{{base_url}}/api/external/v1/metadata/genders",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "external",
                "v1",
                "metadata",
                "genders"
              ]
            },
            "description": "Returns basic passenger gender options."
          },
          "response": []
        },
        {
          "name": "Nationalities",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{token}}"
              }
            ],
            "url": {
              "raw": "{{base_url}}/api/external/v1/metadata/nationalities?q=",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "external",
                "v1",
                "metadata",
                "nationalities"
              ],
              "query": [
                {
                  "key": "q",
                  "value": ""
                }
              ]
            },
            "description": "Returns nationality lookup data backed by countries."
          },
          "response": []
        },
        {
          "name": "Car Categories",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{token}}"
              }
            ],
            "url": {
              "raw": "{{base_url}}/api/external/v1/metadata/car-categories",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "external",
                "v1",
                "metadata",
                "car-categories"
              ]
            },
            "description": "Returns available car categories for quote and reservation flows."
          },
          "response": []
        },
        {
          "name": "Currencies",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{token}}"
              }
            ],
            "url": {
              "raw": "{{base_url}}/api/external/v1/metadata/currencies",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "external",
                "v1",
                "metadata",
                "currencies"
              ]
            },
            "description": "Returns supported currency list."
          },
          "response": []
        },
        {
          "name": "Countries",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{token}}"
              }
            ],
            "url": {
              "raw": "{{base_url}}/api/external/v1/metadata/countries?q=",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "external",
                "v1",
                "metadata",
                "countries"
              ],
              "query": [
                {
                  "key": "q",
                  "value": ""
                }
              ]
            },
            "description": "Returns country records for nationality and address flows."
          },
          "response": []
        },
        {
          "name": "Cities",
          "request": {
            "method": "GET",
            "header": [
              {
                "key": "Accept",
                "value": "application/json"
              },
              {
                "key": "Authorization",
                "value": "Bearer {{token}}"
              }
            ],
            "url": {
              "raw": "{{base_url}}/api/external/v1/metadata/cities?country_id=&q=",
              "host": [
                "{{base_url}}"
              ],
              "path": [
                "api",
                "external",
                "v1",
                "metadata",
                "cities"
              ],
              "query": [
                {
                  "key": "country_id",
                  "value": ""
                },
                {
                  "key": "q",
                  "value": ""
                }
              ]
            },
            "description": "Returns cities filtered by country when needed."
          },
          "response": []
        }
      ],
      "description": "External API metadata and lookup endpoints."
    },
    {
      "name": "Webhooks",
      "item": [],
      "description": "Partner webhook uçları bu gruba eklenecek."
    }
  ],
  "variable": [
    {
      "key": "base_url",
      "value": "https://vittaxi.com"
    },
    {
      "key": "token",
      "value": ""
    },
    {
      "key": "quote_identifier",
      "value": ""
    },
    {
      "key": "price_mark",
      "value": ""
    },
    {
      "key": "reservation_code",
      "value": ""
    }
  ]
}
