Introduction
TripPin is a sample service based on OData V4. Generally speaking, TripPin provides a service that can manage people's trips. The service is designed for below purposes:
- Build a service that will cover as many features for OData V4 as possible.
- Build a more real world service, and will use it to build an end-to-end ecosystem.
- Make a service reference for developers to follow when they try to build an OData service. The source code will be published soon.
We are happy to announce that the source code of TripPin implemented using Web API OData is now available at GitHub. Please take a look and provide questions or feedback.
Please play with this new sample service for OData V4. You can use it either to know more about OData or build an application upon that. If you have any problems, suggestions, bug reports for TripPin, you can join OData Mailing List to discuss about it.
Model
The class diagram below describes the model design for TripPin
Feature Coverage
As we mentioned in the introduction part, TripPin tries to cover as many features as possible. Below are the main features we covered in TripPin.
- Basic entity / complex type and their collections
For instance,
Person
is an entity andCountry
is a complex type.People
is a collection of entity andAddressInfo
is a collection of complex type. - Navigation property
For instance,
Friends
is a navigation property. - Singleton
Me
is the Singleton - Collection property of primitive type
For instance,
Emails
is a collection property of primitive type string. - Derived entity type
For instance, entity type
Event
derives fromPlanItem
. - Derived complex type
For instance, complex type
EventLocation
derives fromLocation
- Open entity type
For instance,
Event
is an open entity type. - Open complex type
For instance,
Location
is an open complex type. - Containment
For instance,
Person
containsTrips
. - Functions and Actions (Bound and Unbound)
For instance, GetNearestAirport is an unbound function, GetInvolvedPeople is a function bound to
Trip
and ShareTrip is an action bound toPerson
. - Enum Property
Gender
is an enum property. - Spatial Property
Loc
is a spatial property. - Media Entity
For instance,
Photo
is a media entity - System query options ($select, $expand, $filter, $top, $skip, $count, $orderby, $search)
- Lambda operations (any, all)
- Create, Update, Delete
- Batch
- Etag
- Async request
- Annotations