{
  "format": "dataset-manifest/1",
  "slug": "travel-agency-trips",
  "version": 1,
  "seed": "travel-agency-trips:1",
  "spec": {
    "format": "dataset/1",
    "slug": "travel-agency-trips",
    "name": "Travel Agency Trips",
    "tagline": "Customer information, trip details, activities, itineraries, and payment records from a travel agency.",
    "description": "Travel agents coordinate trips for customers, managing everything from flights to accommodations and activities. Customers approach the agency with travel aspirations, and agents curate personalized itineraries that encompass a variety of travel elements. Each trip is more than just a booking; it represents a tailored experience that integrates flights, hotels, and local activities. Agents keep track of these trips and ensure all bookings are confirmed, payments processed, and itineraries adjusted as needed to meet customer preferences. \n\nThe relational structure of the data reflects this dynamic. The 'customers' table contains individual customer profiles, including personal details and travel history. The 'trips' table tracks each unique journey, linking back to the 'customers' table to identify who is traveling. Each trip further connects to the 'itineraries' table, which details the schedule of flights, accommodations, and activities. The 'activities' table lists various experiences available at the destination, which can be linked to specific trips. Finally, the 'payments' table records transactions made by customers, allowing for tracking payments made in installments towards their chosen trips.\n\nThis dataset allows you to explore various questions about customer behavior, trip preferences, and payment patterns. You can analyze how different demographics choose travel packages, the most popular activities booked, or how payment methods vary among different trips. Practicing on this data provides insight into the operational aspects of a travel agency, helping you understand customer interactions and financial transactions. The data you will be working with is synthetic, designed to replicate the real-world scenarios encountered in the travel industry while ensuring a safe and engaging learning experience.",
    "domain": "travel",
    "shape": "transactional",
    "useCases": [
      "api-mocking",
      "test-fixtures"
    ],
    "keywords": [
      "travel",
      "agency",
      "trips",
      "customers",
      "activities",
      "payments",
      "itineraries"
    ],
    "locale": "en",
    "license": "CC0-1.0",
    "version": 1,
    "tables": {
      "customers": {
        "description": "This table holds information about each customer, with unique identifiers and contact details. Each customer can have multiple trips.",
        "rows": 200,
        "columns": {
          "id": {
            "kind": "pk",
            "description": "Unique identifier for each customer."
          },
          "full_name": {
            "kind": "fullName",
            "description": "The full name of the customer."
          },
          "email": {
            "kind": "email",
            "from": "full_name",
            "description": "Email address of the customer."
          },
          "phone": {
            "kind": "phone",
            "description": "Contact phone number.",
            "nullable": true
          },
          "signup_date": {
            "kind": "date",
            "from": "2020-01-01",
            "to": "2023-12-31",
            "description": "Date when the customer signed up."
          }
        }
      },
      "trips": {
        "description": "This table contains details about each trip booked by customers, including the start and end dates and destination information.",
        "rows": 300,
        "columns": {
          "id": {
            "kind": "pk",
            "description": "Unique identifier for each trip."
          },
          "customer_id": {
            "kind": "fk",
            "ref": "customers.id",
            "description": "Reference to the customer who booked the trip."
          },
          "destination": {
            "kind": "words",
            "description": "The destination of the trip.",
            "nullable": true
          },
          "start_date": {
            "kind": "date",
            "from": "2023-01-01",
            "to": "2023-12-31",
            "description": "Start date of the trip."
          },
          "end_date": {
            "kind": "date",
            "from": "2023-01-02",
            "to": "2024-01-01",
            "description": "End date of the trip."
          }
        }
      },
      "activities": {
        "description": "This table lists activities included in each trip. Activities can be booked individually and are linked to specific trips.",
        "rows": {
          "per": "trips",
          "via": "trip_id",
          "min": 1,
          "max": 5,
          "skew": "long-tail"
        },
        "columns": {
          "id": {
            "kind": "pk",
            "description": "Unique identifier for each activity."
          },
          "trip_id": {
            "kind": "fk",
            "ref": "trips.id",
            "description": "Reference to the trip associated with the activity."
          },
          "activity_name": {
            "kind": "words",
            "description": "Name of the activity."
          },
          "activity_date": {
            "kind": "date",
            "after": "trip_id.start_date",
            "withinDays": 30,
            "description": "Date when the activity takes place.",
            "nullable": true
          }
        }
      },
      "itineraries": {
        "description": "This table contains detailed itineraries for each trip, including the sequence of activities and accommodations.",
        "rows": {
          "per": "trips",
          "via": "trip_id",
          "min": 1,
          "max": 3,
          "skew": "long-tail"
        },
        "columns": {
          "id": {
            "kind": "pk",
            "description": "Unique identifier for each itinerary."
          },
          "trip_id": {
            "kind": "fk",
            "ref": "trips.id",
            "description": "Reference to the trip associated with the itinerary."
          },
          "sequence": {
            "kind": "int",
            "min": 1,
            "max": 10,
            "description": "The order of activities in the itinerary."
          },
          "details": {
            "kind": "paragraph",
            "description": "Description of the itinerary segment.",
            "nullable": true
          }
        }
      },
      "payments": {
        "description": "This table tracks payments made by customers for their trips, including installment details.",
        "rows": {
          "per": "trips",
          "via": "trip_id",
          "min": 1,
          "max": 4,
          "skew": "long-tail"
        },
        "columns": {
          "id": {
            "kind": "pk",
            "description": "Unique identifier for each payment record."
          },
          "trip_id": {
            "kind": "fk",
            "ref": "trips.id",
            "description": "Reference to the trip associated with the payment."
          },
          "amount": {
            "kind": "decimal",
            "min": 50,
            "max": 5000,
            "scale": 2,
            "description": "Amount paid in this installment.",
            "nullable": true,
            "when": {
              "column": "status",
              "in": [
                "paid",
                "pending"
              ]
            }
          },
          "payment_date": {
            "kind": "date",
            "from": "2023-01-01",
            "to": "2023-12-31",
            "description": "Date when the payment was made.",
            "nullable": true,
            "when": {
              "column": "status",
              "in": [
                "paid"
              ]
            }
          },
          "status": {
            "kind": "enum",
            "values": [
              "paid",
              "pending",
              "failed"
            ],
            "description": "Status of the payment."
          }
        }
      }
    },
    "structure": "multi-table",
    "traits": [
      "categorical",
      "timestamped",
      "nullable"
    ],
    "analysisQuestions": [
      "How many trips does each customer have?",
      "What is the total cost of activities per trip?",
      "Which activities are the most popular based on bookings?",
      "What percentage of payments are completed on time?",
      "What are the common destinations among customers?"
    ],
    "suggestedQueries": [
      {
        "title": "Join Customers and Trips",
        "sql": "SELECT customers.full_name, trips.destination FROM customers JOIN trips ON customers.id = trips.customer_id;",
        "dialect": "postgres"
      },
      {
        "title": "Count Activities per Trip",
        "sql": "SELECT trip_id, COUNT(*) FROM activities GROUP BY trip_id;",
        "dialect": "postgres"
      },
      {
        "title": "Total Payments by Trip",
        "sql": "SELECT trip_id, SUM(amount) FROM payments GROUP BY trip_id;",
        "dialect": "postgres"
      },
      {
        "title": "Itinerary Details with Activities",
        "sql": "SELECT itineraries.trip_id, itineraries.details, activities.activity_name FROM itineraries JOIN activities ON itineraries.trip_id = activities.trip_id;",
        "dialect": "postgres"
      }
    ],
    "usageScenarios": [
      {
        "title": "API Development for Travel Bookings",
        "body": "Developers can use this dataset to simulate API endpoints for a travel booking application. They can create endpoints to retrieve customer data, trip details, and payment histories to test their application functionality without needing a live database."
      },
      {
        "title": "Testing Payment Processing Systems",
        "body": "Using the payments table, developers can test payment processing systems by simulating various payment statuses and amounts. This helps ensure that the payment systems can handle different scenarios, such as failed payments or partial payments."
      },
      {
        "title": "Data Analysis for Customer Insights",
        "body": "Analysts can use this dataset to explore customer behavior, such as trip frequency and preferred destinations. This analysis can inform marketing strategies and help tailor offers to specific customer segments."
      },
      {
        "title": "Mocking Travel Agency User Interfaces",
        "body": "UI/UX designers can utilize this dataset to create mockups and prototypes for a travel agency's user interface. By using realistic data, they can better visualize how users will interact with the travel booking platform."
      }
    ]
  },
  "counts": {
    "customers": 200,
    "trips": 300,
    "activities": 691,
    "itineraries": 470,
    "payments": 572
  },
  "stats": {
    "customers": {
      "rows": 200,
      "columns": {
        "id": {
          "nulls": 0,
          "distinct": 200,
          "min": 1,
          "max": 200
        },
        "full_name": {
          "nulls": 0,
          "distinct": 197,
          "min": "Alice Castro",
          "max": "Zoe Hassan"
        },
        "email": {
          "nulls": 0,
          "distinct": 199
        },
        "phone": {
          "nulls": 15,
          "distinct": 178
        },
        "signup_date": {
          "nulls": 0,
          "distinct": 188,
          "min": "2020-01-03",
          "max": "2023-12-21"
        }
      }
    },
    "trips": {
      "rows": 300,
      "columns": {
        "id": {
          "nulls": 0,
          "distinct": 300,
          "min": 1,
          "max": 300
        },
        "customer_id": {
          "nulls": 0,
          "distinct": 161,
          "min": 1,
          "max": 200
        },
        "destination": {
          "nulls": 31,
          "distinct": 269
        },
        "start_date": {
          "nulls": 0,
          "distinct": 202,
          "min": "2023-01-01",
          "max": "2023-12-31"
        },
        "end_date": {
          "nulls": 0,
          "distinct": 205,
          "min": "2023-01-02",
          "max": "2023-12-31"
        }
      }
    },
    "activities": {
      "rows": 691,
      "columns": {
        "id": {
          "nulls": 0,
          "distinct": 691,
          "min": 1,
          "max": 691
        },
        "trip_id": {
          "nulls": 0,
          "distinct": 300,
          "min": 1,
          "max": 300
        },
        "activity_name": {
          "nulls": 0,
          "distinct": 688
        },
        "activity_date": {
          "nulls": 62,
          "distinct": 299,
          "min": "2023-01-09",
          "max": "2024-01-24"
        }
      }
    },
    "itineraries": {
      "rows": 470,
      "columns": {
        "id": {
          "nulls": 0,
          "distinct": 470,
          "min": 1,
          "max": 470
        },
        "trip_id": {
          "nulls": 0,
          "distinct": 300,
          "min": 1,
          "max": 300
        },
        "sequence": {
          "nulls": 0,
          "distinct": 10,
          "min": 1,
          "max": 10
        },
        "details": {
          "nulls": 40,
          "distinct": 430
        }
      }
    },
    "payments": {
      "rows": 572,
      "columns": {
        "id": {
          "nulls": 0,
          "distinct": 572,
          "min": 1,
          "max": 572
        },
        "trip_id": {
          "nulls": 0,
          "distinct": 300,
          "min": 1,
          "max": 300
        },
        "amount": {
          "nulls": 201,
          "distinct": 370,
          "min": 76.54,
          "max": 4990.39
        },
        "payment_date": {
          "nulls": 366,
          "distinct": 156,
          "min": "2023-01-01",
          "max": "2023-12-28"
        },
        "status": {
          "nulls": 0,
          "distinct": 3,
          "min": "failed",
          "max": "pending"
        }
      }
    }
  },
  "artifacts": [
    {
      "file": "csv/customers.csv",
      "format": "csv",
      "table": "customers",
      "key": "datasets/travel-agency-trips/v1/csv/customers.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/travel-agency-trips/v1/csv/customers.csv",
      "bytes": 13361,
      "sha256": "2aafa1d4dda4e96e5fe8eccdf3f193f188b9042816279c6626e8f9d53c2d0ff2",
      "rows": 200,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/trips.csv",
      "format": "csv",
      "table": "trips",
      "key": "datasets/travel-agency-trips/v1/csv/trips.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/travel-agency-trips/v1/csv/trips.csv",
      "bytes": 16501,
      "sha256": "3aabb1760b9198601e12f0be2c898e77b4e3a6ae6d309ffdc63ce849b6b11d94",
      "rows": 300,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/activities.csv",
      "format": "csv",
      "table": "activities",
      "key": "datasets/travel-agency-trips/v1/csv/activities.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/travel-agency-trips/v1/csv/activities.csv",
      "bytes": 31191,
      "sha256": "1ecae8ea42de9b9abf228cc0f4eaa807eeab8de4bc50d344ee4c35c743277237",
      "rows": 691,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/itineraries.csv",
      "format": "csv",
      "table": "itineraries",
      "key": "datasets/travel-agency-trips/v1/csv/itineraries.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/travel-agency-trips/v1/csv/itineraries.csv",
      "bytes": 78140,
      "sha256": "b0f3666c4f0c6b7c03c4876b4a35b40e97b5b09788164b663e34323c781c17bf",
      "rows": 470,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "csv/payments.csv",
      "format": "csv",
      "table": "payments",
      "key": "datasets/travel-agency-trips/v1/csv/payments.csv",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/travel-agency-trips/v1/csv/payments.csv",
      "bytes": 14350,
      "sha256": "35baf117dd4b07ac678e3d080676f9cf968f20b63bac591bb12b8ecffeeb3629",
      "rows": 572,
      "contentType": "text/csv; charset=utf-8"
    },
    {
      "file": "travel-agency-trips.json",
      "format": "json",
      "table": null,
      "key": "datasets/travel-agency-trips/v1/travel-agency-trips.json",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/travel-agency-trips/v1/travel-agency-trips.json",
      "bytes": 372180,
      "sha256": "d8cbcec855b2736806addda9e941078d5e5db350d9aa9752915f0bbb8a1e3edf",
      "rows": null,
      "contentType": "application/json; charset=utf-8"
    },
    {
      "file": "sql/postgres.sql",
      "format": "sql-postgres",
      "table": null,
      "key": "datasets/travel-agency-trips/v1/sql/postgres.sql",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/travel-agency-trips/v1/sql/postgres.sql",
      "bytes": 188665,
      "sha256": "44868aabb6a7acaf73581fbd7c64b9545386b0e3cb420066fc2c3fdeb85400ec",
      "rows": null,
      "contentType": "application/sql; charset=utf-8"
    },
    {
      "file": "sql/mysql.sql",
      "format": "sql-mysql",
      "table": null,
      "key": "datasets/travel-agency-trips/v1/sql/mysql.sql",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/travel-agency-trips/v1/sql/mysql.sql",
      "bytes": 188108,
      "sha256": "e16188a442199c8ec110fc744b891870ed73d72d5b5a5653ee686f78542877db",
      "rows": null,
      "contentType": "application/sql; charset=utf-8"
    },
    {
      "file": "sql/mssql.sql",
      "format": "sql-mssql",
      "table": null,
      "key": "datasets/travel-agency-trips/v1/sql/mssql.sql",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/travel-agency-trips/v1/sql/mssql.sql",
      "bytes": 192616,
      "sha256": "2fa7e58c603181b2004fe4492ad69cf19219cc3f5ad97c0b987fc6f41cfa6fda",
      "rows": null,
      "contentType": "application/sql; charset=utf-8"
    },
    {
      "file": "sql/sqlite.sql",
      "format": "sql-sqlite",
      "table": null,
      "key": "datasets/travel-agency-trips/v1/sql/sqlite.sql",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/travel-agency-trips/v1/sql/sqlite.sql",
      "bytes": 187931,
      "sha256": "0dc8fb8c790098b1f6fff9054e53e537a390cf2b565c74b840b9a92c5c9bb468",
      "rows": null,
      "contentType": "application/sql; charset=utf-8"
    },
    {
      "file": "prisma/seed.ts",
      "format": "prisma-seed",
      "table": null,
      "key": "datasets/travel-agency-trips/v1/prisma/seed.ts",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/travel-agency-trips/v1/prisma/seed.ts",
      "bytes": 302937,
      "sha256": "ec564116790d81c09b54a59cc1337bbd1f3fef9209dc5d9cf8450b820204f9b1",
      "rows": null,
      "contentType": "application/typescript; charset=utf-8"
    },
    {
      "file": "django/fixtures.json",
      "format": "django-fixture",
      "table": null,
      "key": "datasets/travel-agency-trips/v1/django/fixtures.json",
      "url": "https://database-sample-website.s3.eu-north-1.amazonaws.com/datasets/travel-agency-trips/v1/django/fixtures.json",
      "bytes": 465944,
      "sha256": "6ad10450a63602d12887d8399bbb5dfb87ed77938f6703c049920d34c888753c",
      "rows": null,
      "contentType": "application/json; charset=utf-8"
    }
  ],
  "publishedAt": 1788768080266,
  "updatedAt": 1788768080266
}
