/* Options:
Date: 2026-04-18 07:41:47
Version: 8.53
Tip: To override a DTO option, remove "//" prefix before updating
BaseUrl: https://chinook.netcore.io

Package: myapp
//GlobalNamespace: dtos
//AddPropertyAccessors: True
//SettersReturnThis: True
//AddServiceStackTypes: True
//AddResponseStatus: False
//AddDescriptionAsComments: True
//AddImplicitVersion: 
//IncludeTypes: 
//ExcludeTypes: 
//TreatTypesAsStrings: 
//DefaultImports: java.math.*,java.util.*,java.io.InputStream,net.servicestack.client.*,com.google.gson.annotations.*,com.google.gson.reflect.*
*/

package myapp;

import java.math.*;
import java.util.*;
import java.io.InputStream;
import net.servicestack.client.*;
import com.google.gson.annotations.*;
import com.google.gson.reflect.*;

public class dtos
{

    @Route(Path="/hello")
    // @Route(Path="/hello/{Name}")
    public static class Hello implements IReturn<HelloResponse>
    {
        public String name = null;
        
        public String getName() { return name; }
        public Hello setName(String value) { this.name = value; return this; }
        private static Object responseType = HelloResponse.class;
        public Object getResponseType() { return responseType; }
    }

    @Route(Path="/albums", Verbs="GET")
    // @Route(Path="/albums/{AlbumId}", Verbs="GET")
    public static class QueryAlbums extends QueryDb<Albums> implements IReturn<QueryResponse<Albums>>, IGet
    {
        public Long albumId = null;
        
        public Long getAlbumId() { return albumId; }
        public QueryAlbums setAlbumId(Long value) { this.albumId = value; return this; }
        private static Object responseType = new TypeToken<QueryResponse<Albums>>(){}.getType();
        public Object getResponseType() { return responseType; }
    }

    @Route(Path="/artists", Verbs="GET")
    // @Route(Path="/artists/{ArtistId}", Verbs="GET")
    public static class QueryArtists extends QueryDb<Artists> implements IReturn<QueryResponse<Artists>>, IGet
    {
        public Long artistId = null;
        public ArrayList<Long> artistIdBetween = null;
        public String nameStartsWith = null;
        
        public Long getArtistId() { return artistId; }
        public QueryArtists setArtistId(Long value) { this.artistId = value; return this; }
        public ArrayList<Long> getArtistIdBetween() { return artistIdBetween; }
        public QueryArtists setArtistIdBetween(ArrayList<Long> value) { this.artistIdBetween = value; return this; }
        public String getNameStartsWith() { return nameStartsWith; }
        public QueryArtists setNameStartsWith(String value) { this.nameStartsWith = value; return this; }
        private static Object responseType = new TypeToken<QueryResponse<Artists>>(){}.getType();
        public Object getResponseType() { return responseType; }
    }

    @Route(Path="/genres", Verbs="GET")
    // @Route(Path="/genres/{GenreId}", Verbs="GET")
    public static class QueryGenres extends QueryDb<Genres> implements IReturn<QueryResponse<Genres>>, IGet
    {
        public Long genreId = null;
        
        public Long getGenreId() { return genreId; }
        public QueryGenres setGenreId(Long value) { this.genreId = value; return this; }
        private static Object responseType = new TypeToken<QueryResponse<Genres>>(){}.getType();
        public Object getResponseType() { return responseType; }
    }

    @Route(Path="/mediatypes", Verbs="GET")
    // @Route(Path="/mediatypes/{MediaTypeId}", Verbs="GET")
    public static class QueryMediaTypes extends QueryDb<MediaTypes> implements IReturn<QueryResponse<MediaTypes>>, IGet
    {
        public Long mediaTypeId = null;
        
        public Long getMediaTypeId() { return mediaTypeId; }
        public QueryMediaTypes setMediaTypeId(Long value) { this.mediaTypeId = value; return this; }
        private static Object responseType = new TypeToken<QueryResponse<MediaTypes>>(){}.getType();
        public Object getResponseType() { return responseType; }
    }

    @Route(Path="/playlists", Verbs="GET")
    // @Route(Path="/playlists/{PlaylistId}", Verbs="GET")
    public static class QueryPlaylists extends QueryDb<Playlists> implements IReturn<QueryResponse<Playlists>>, IGet
    {
        public Long playlistId = null;
        
        public Long getPlaylistId() { return playlistId; }
        public QueryPlaylists setPlaylistId(Long value) { this.playlistId = value; return this; }
        private static Object responseType = new TypeToken<QueryResponse<Playlists>>(){}.getType();
        public Object getResponseType() { return responseType; }
    }

    @Route(Path="/tracks", Verbs="GET")
    // @Route(Path="/tracks/{TrackId}", Verbs="GET")
    public static class QueryTracks extends QueryDb<Tracks> implements IReturn<QueryResponse<Tracks>>, IGet
    {
        public Long trackId = null;
        public String nameContains = null;
        
        public Long getTrackId() { return trackId; }
        public QueryTracks setTrackId(Long value) { this.trackId = value; return this; }
        public String getNameContains() { return nameContains; }
        public QueryTracks setNameContains(String value) { this.nameContains = value; return this; }
        private static Object responseType = new TypeToken<QueryResponse<Tracks>>(){}.getType();
        public Object getResponseType() { return responseType; }
    }

    @Route(Path="/customers", Verbs="GET")
    // @Route(Path="/customers/{CustomerId}", Verbs="GET")
    public static class QueryCustomers extends QueryDb<Customers> implements IReturn<QueryResponse<Customers>>, IGet
    {
        public Long customerId = null;
        
        public Long getCustomerId() { return customerId; }
        public QueryCustomers setCustomerId(Long value) { this.customerId = value; return this; }
        private static Object responseType = new TypeToken<QueryResponse<Customers>>(){}.getType();
        public Object getResponseType() { return responseType; }
    }

    @Route(Path="/employees", Verbs="GET")
    // @Route(Path="/employees/{EmployeeId}", Verbs="GET")
    public static class QueryEmployees extends QueryDb<Employees> implements IReturn<QueryResponse<Employees>>, IGet
    {
        public Long employeeId = null;
        
        public Long getEmployeeId() { return employeeId; }
        public QueryEmployees setEmployeeId(Long value) { this.employeeId = value; return this; }
        private static Object responseType = new TypeToken<QueryResponse<Employees>>(){}.getType();
        public Object getResponseType() { return responseType; }
    }

    @Route(Path="/invoiceitems", Verbs="GET")
    // @Route(Path="/invoiceitems/{InvoiceLineId}", Verbs="GET")
    public static class QueryInvoiceItems extends QueryDb<InvoiceItems> implements IReturn<QueryResponse<InvoiceItems>>, IGet
    {
        public Long invoiceLineId = null;
        
        public Long getInvoiceLineId() { return invoiceLineId; }
        public QueryInvoiceItems setInvoiceLineId(Long value) { this.invoiceLineId = value; return this; }
        private static Object responseType = new TypeToken<QueryResponse<InvoiceItems>>(){}.getType();
        public Object getResponseType() { return responseType; }
    }

    @Route(Path="/invoices", Verbs="GET")
    // @Route(Path="/invoices/{InvoiceId}", Verbs="GET")
    public static class QueryInvoices extends QueryDb<Invoices> implements IReturn<QueryResponse<Invoices>>, IGet
    {
        public Long invoiceId = null;
        
        public Long getInvoiceId() { return invoiceId; }
        public QueryInvoices setInvoiceId(Long value) { this.invoiceId = value; return this; }
        private static Object responseType = new TypeToken<QueryResponse<Invoices>>(){}.getType();
        public Object getResponseType() { return responseType; }
    }

    @Route(Path="/albums", Verbs="POST")
    public static class CreateAlbums implements IReturn<IdResponse>, IPost, ICreateDb<Albums>
    {
        @Validate(Validator="NotEmpty")
        public String title = null;

        @Validate(Validator="GreaterThan(0)")
        public Long artistId = null;
        
        public String getTitle() { return title; }
        public CreateAlbums setTitle(String value) { this.title = value; return this; }
        public Long getArtistId() { return artistId; }
        public CreateAlbums setArtistId(Long value) { this.artistId = value; return this; }
        private static Object responseType = IdResponse.class;
        public Object getResponseType() { return responseType; }
    }

    @Route(Path="/artists", Verbs="POST")
    public static class CreateArtists implements IReturn<IdResponse>, IPost, ICreateDb<Artists>
    {
        public String name = null;
        
        public String getName() { return name; }
        public CreateArtists setName(String value) { this.name = value; return this; }
        private static Object responseType = IdResponse.class;
        public Object getResponseType() { return responseType; }
    }

    @Route(Path="/genres", Verbs="POST")
    public static class CreateGenres implements IReturn<IdResponse>, IPost, ICreateDb<Genres>
    {
        public String name = null;
        
        public String getName() { return name; }
        public CreateGenres setName(String value) { this.name = value; return this; }
        private static Object responseType = IdResponse.class;
        public Object getResponseType() { return responseType; }
    }

    @Route(Path="/mediatypes", Verbs="POST")
    public static class CreateMediaTypes implements IReturn<IdResponse>, IPost, ICreateDb<MediaTypes>
    {
        public String name = null;
        
        public String getName() { return name; }
        public CreateMediaTypes setName(String value) { this.name = value; return this; }
        private static Object responseType = IdResponse.class;
        public Object getResponseType() { return responseType; }
    }

    @Route(Path="/playlists", Verbs="POST")
    public static class CreatePlaylists implements IReturn<IdResponse>, IPost, ICreateDb<Playlists>
    {
        public String name = null;
        
        public String getName() { return name; }
        public CreatePlaylists setName(String value) { this.name = value; return this; }
        private static Object responseType = IdResponse.class;
        public Object getResponseType() { return responseType; }
    }

    @Route(Path="/tracks", Verbs="POST")
    public static class CreateTracks implements IReturn<IdResponse>, IPost, ICreateDb<Tracks>
    {
        public String name = null;
        public Long albumId = null;
        public Long mediaTypeId = null;
        public Long genreId = null;
        public String composer = null;
        public Long milliseconds = null;
        public Long bytes = null;
        public BigDecimal unitPrice = null;
        
        public String getName() { return name; }
        public CreateTracks setName(String value) { this.name = value; return this; }
        public Long getAlbumId() { return albumId; }
        public CreateTracks setAlbumId(Long value) { this.albumId = value; return this; }
        public Long getMediaTypeId() { return mediaTypeId; }
        public CreateTracks setMediaTypeId(Long value) { this.mediaTypeId = value; return this; }
        public Long getGenreId() { return genreId; }
        public CreateTracks setGenreId(Long value) { this.genreId = value; return this; }
        public String getComposer() { return composer; }
        public CreateTracks setComposer(String value) { this.composer = value; return this; }
        public Long getMilliseconds() { return milliseconds; }
        public CreateTracks setMilliseconds(Long value) { this.milliseconds = value; return this; }
        public Long getBytes() { return bytes; }
        public CreateTracks setBytes(Long value) { this.bytes = value; return this; }
        public BigDecimal getUnitPrice() { return unitPrice; }
        public CreateTracks setUnitPrice(BigDecimal value) { this.unitPrice = value; return this; }
        private static Object responseType = IdResponse.class;
        public Object getResponseType() { return responseType; }
    }

    @Route(Path="/albums/{AlbumId}", Verbs="DELETE")
    public static class DeleteAlbums implements IReturn<IdResponse>, IDelete, IDeleteDb<Albums>
    {
        public Long albumId = null;
        
        public Long getAlbumId() { return albumId; }
        public DeleteAlbums setAlbumId(Long value) { this.albumId = value; return this; }
        private static Object responseType = IdResponse.class;
        public Object getResponseType() { return responseType; }
    }

    @Route(Path="/artists/{ArtistId}", Verbs="DELETE")
    public static class DeleteArtists implements IReturn<IdResponse>, IDelete, IDeleteDb<Artists>
    {
        public Long artistId = null;
        
        public Long getArtistId() { return artistId; }
        public DeleteArtists setArtistId(Long value) { this.artistId = value; return this; }
        private static Object responseType = IdResponse.class;
        public Object getResponseType() { return responseType; }
    }

    @Route(Path="/genres/{GenreId}", Verbs="DELETE")
    public static class DeleteGenres implements IReturn<IdResponse>, IDelete, IDeleteDb<Genres>
    {
        public Long genreId = null;
        
        public Long getGenreId() { return genreId; }
        public DeleteGenres setGenreId(Long value) { this.genreId = value; return this; }
        private static Object responseType = IdResponse.class;
        public Object getResponseType() { return responseType; }
    }

    @Route(Path="/mediatypes/{MediaTypeId}", Verbs="DELETE")
    public static class DeleteMediaTypes implements IReturn<IdResponse>, IDelete, IDeleteDb<MediaTypes>
    {
        public Long mediaTypeId = null;
        
        public Long getMediaTypeId() { return mediaTypeId; }
        public DeleteMediaTypes setMediaTypeId(Long value) { this.mediaTypeId = value; return this; }
        private static Object responseType = IdResponse.class;
        public Object getResponseType() { return responseType; }
    }

    @Route(Path="/playlists/{PlaylistId}", Verbs="DELETE")
    public static class DeletePlaylists implements IReturn<IdResponse>, IDelete, IDeleteDb<Playlists>
    {
        public Long playlistId = null;
        
        public Long getPlaylistId() { return playlistId; }
        public DeletePlaylists setPlaylistId(Long value) { this.playlistId = value; return this; }
        private static Object responseType = IdResponse.class;
        public Object getResponseType() { return responseType; }
    }

    @Route(Path="/tracks/{TrackId}", Verbs="DELETE")
    public static class DeleteTracks implements IReturn<IdResponse>, IDelete, IDeleteDb<Tracks>
    {
        public Long trackId = null;
        
        public Long getTrackId() { return trackId; }
        public DeleteTracks setTrackId(Long value) { this.trackId = value; return this; }
        private static Object responseType = IdResponse.class;
        public Object getResponseType() { return responseType; }
    }

    @Route(Path="/albums/{AlbumId}", Verbs="PATCH")
    public static class PatchAlbums implements IReturn<IdResponse>, IPatch, IPatchDb<Albums>
    {
        public Long albumId = null;
        public String title = null;
        public Long artistId = null;
        
        public Long getAlbumId() { return albumId; }
        public PatchAlbums setAlbumId(Long value) { this.albumId = value; return this; }
        public String getTitle() { return title; }
        public PatchAlbums setTitle(String value) { this.title = value; return this; }
        public Long getArtistId() { return artistId; }
        public PatchAlbums setArtistId(Long value) { this.artistId = value; return this; }
        private static Object responseType = IdResponse.class;
        public Object getResponseType() { return responseType; }
    }

    @Route(Path="/artists/{ArtistId}", Verbs="PATCH")
    public static class PatchArtists implements IReturn<IdResponse>, IPatch, IPatchDb<Artists>
    {
        public Long artistId = null;
        public String name = null;
        
        public Long getArtistId() { return artistId; }
        public PatchArtists setArtistId(Long value) { this.artistId = value; return this; }
        public String getName() { return name; }
        public PatchArtists setName(String value) { this.name = value; return this; }
        private static Object responseType = IdResponse.class;
        public Object getResponseType() { return responseType; }
    }

    @Route(Path="/genres/{GenreId}", Verbs="PATCH")
    public static class PatchGenres implements IReturn<IdResponse>, IPatch, IPatchDb<Genres>
    {
        public Long genreId = null;
        public String name = null;
        
        public Long getGenreId() { return genreId; }
        public PatchGenres setGenreId(Long value) { this.genreId = value; return this; }
        public String getName() { return name; }
        public PatchGenres setName(String value) { this.name = value; return this; }
        private static Object responseType = IdResponse.class;
        public Object getResponseType() { return responseType; }
    }

    @Route(Path="/mediatypes/{MediaTypeId}", Verbs="PATCH")
    public static class PatchMediaTypes implements IReturn<IdResponse>, IPatch, IPatchDb<MediaTypes>
    {
        public Long mediaTypeId = null;
        public String name = null;
        
        public Long getMediaTypeId() { return mediaTypeId; }
        public PatchMediaTypes setMediaTypeId(Long value) { this.mediaTypeId = value; return this; }
        public String getName() { return name; }
        public PatchMediaTypes setName(String value) { this.name = value; return this; }
        private static Object responseType = IdResponse.class;
        public Object getResponseType() { return responseType; }
    }

    @Route(Path="/playlists/{PlaylistId}", Verbs="PATCH")
    public static class PatchPlaylists implements IReturn<IdResponse>, IPatch, IPatchDb<Playlists>
    {
        public Long playlistId = null;
        public String name = null;
        
        public Long getPlaylistId() { return playlistId; }
        public PatchPlaylists setPlaylistId(Long value) { this.playlistId = value; return this; }
        public String getName() { return name; }
        public PatchPlaylists setName(String value) { this.name = value; return this; }
        private static Object responseType = IdResponse.class;
        public Object getResponseType() { return responseType; }
    }

    @Route(Path="/tracks/{TrackId}", Verbs="PATCH")
    public static class PatchTracks implements IReturn<IdResponse>, IPatch, IPatchDb<Tracks>
    {
        public Long trackId = null;
        public String name = null;
        public Long albumId = null;
        public Long mediaTypeId = null;
        public Long genreId = null;
        public String composer = null;
        public Long milliseconds = null;
        public Long bytes = null;
        public BigDecimal unitPrice = null;
        
        public Long getTrackId() { return trackId; }
        public PatchTracks setTrackId(Long value) { this.trackId = value; return this; }
        public String getName() { return name; }
        public PatchTracks setName(String value) { this.name = value; return this; }
        public Long getAlbumId() { return albumId; }
        public PatchTracks setAlbumId(Long value) { this.albumId = value; return this; }
        public Long getMediaTypeId() { return mediaTypeId; }
        public PatchTracks setMediaTypeId(Long value) { this.mediaTypeId = value; return this; }
        public Long getGenreId() { return genreId; }
        public PatchTracks setGenreId(Long value) { this.genreId = value; return this; }
        public String getComposer() { return composer; }
        public PatchTracks setComposer(String value) { this.composer = value; return this; }
        public Long getMilliseconds() { return milliseconds; }
        public PatchTracks setMilliseconds(Long value) { this.milliseconds = value; return this; }
        public Long getBytes() { return bytes; }
        public PatchTracks setBytes(Long value) { this.bytes = value; return this; }
        public BigDecimal getUnitPrice() { return unitPrice; }
        public PatchTracks setUnitPrice(BigDecimal value) { this.unitPrice = value; return this; }
        private static Object responseType = IdResponse.class;
        public Object getResponseType() { return responseType; }
    }

    @Route(Path="/albums/{AlbumId}", Verbs="PUT")
    public static class UpdateAlbums implements IReturn<IdResponse>, IPut, IUpdateDb<Albums>
    {
        public Long albumId = null;
        public String title = null;
        public Long artistId = null;
        
        public Long getAlbumId() { return albumId; }
        public UpdateAlbums setAlbumId(Long value) { this.albumId = value; return this; }
        public String getTitle() { return title; }
        public UpdateAlbums setTitle(String value) { this.title = value; return this; }
        public Long getArtistId() { return artistId; }
        public UpdateAlbums setArtistId(Long value) { this.artistId = value; return this; }
        private static Object responseType = IdResponse.class;
        public Object getResponseType() { return responseType; }
    }

    @Route(Path="/artists/{ArtistId}", Verbs="PUT")
    public static class UpdateArtists implements IReturn<IdResponse>, IPut, IUpdateDb<Artists>
    {
        public Long artistId = null;
        public String name = null;
        
        public Long getArtistId() { return artistId; }
        public UpdateArtists setArtistId(Long value) { this.artistId = value; return this; }
        public String getName() { return name; }
        public UpdateArtists setName(String value) { this.name = value; return this; }
        private static Object responseType = IdResponse.class;
        public Object getResponseType() { return responseType; }
    }

    @Route(Path="/genres/{GenreId}", Verbs="PUT")
    public static class UpdateGenres implements IReturn<IdResponse>, IPut, IUpdateDb<Genres>
    {
        public Long genreId = null;
        public String name = null;
        
        public Long getGenreId() { return genreId; }
        public UpdateGenres setGenreId(Long value) { this.genreId = value; return this; }
        public String getName() { return name; }
        public UpdateGenres setName(String value) { this.name = value; return this; }
        private static Object responseType = IdResponse.class;
        public Object getResponseType() { return responseType; }
    }

    @Route(Path="/mediatypes/{MediaTypeId}", Verbs="PUT")
    public static class UpdateMediaTypes implements IReturn<IdResponse>, IPut, IUpdateDb<MediaTypes>
    {
        public Long mediaTypeId = null;
        public String name = null;
        
        public Long getMediaTypeId() { return mediaTypeId; }
        public UpdateMediaTypes setMediaTypeId(Long value) { this.mediaTypeId = value; return this; }
        public String getName() { return name; }
        public UpdateMediaTypes setName(String value) { this.name = value; return this; }
        private static Object responseType = IdResponse.class;
        public Object getResponseType() { return responseType; }
    }

    @Route(Path="/playlists/{PlaylistId}", Verbs="PUT")
    public static class UpdatePlaylists implements IReturn<IdResponse>, IPut, IUpdateDb<Playlists>
    {
        public Long playlistId = null;
        public String name = null;
        
        public Long getPlaylistId() { return playlistId; }
        public UpdatePlaylists setPlaylistId(Long value) { this.playlistId = value; return this; }
        public String getName() { return name; }
        public UpdatePlaylists setName(String value) { this.name = value; return this; }
        private static Object responseType = IdResponse.class;
        public Object getResponseType() { return responseType; }
    }

    @Route(Path="/tracks/{TrackId}", Verbs="PUT")
    public static class UpdateTracks implements IReturn<IdResponse>, IPut, IUpdateDb<Tracks>
    {
        public Long trackId = null;
        public String name = null;
        public Long albumId = null;
        public Long mediaTypeId = null;
        public Long genreId = null;
        public String composer = null;
        public Long milliseconds = null;
        public Long bytes = null;
        public BigDecimal unitPrice = null;
        
        public Long getTrackId() { return trackId; }
        public UpdateTracks setTrackId(Long value) { this.trackId = value; return this; }
        public String getName() { return name; }
        public UpdateTracks setName(String value) { this.name = value; return this; }
        public Long getAlbumId() { return albumId; }
        public UpdateTracks setAlbumId(Long value) { this.albumId = value; return this; }
        public Long getMediaTypeId() { return mediaTypeId; }
        public UpdateTracks setMediaTypeId(Long value) { this.mediaTypeId = value; return this; }
        public Long getGenreId() { return genreId; }
        public UpdateTracks setGenreId(Long value) { this.genreId = value; return this; }
        public String getComposer() { return composer; }
        public UpdateTracks setComposer(String value) { this.composer = value; return this; }
        public Long getMilliseconds() { return milliseconds; }
        public UpdateTracks setMilliseconds(Long value) { this.milliseconds = value; return this; }
        public Long getBytes() { return bytes; }
        public UpdateTracks setBytes(Long value) { this.bytes = value; return this; }
        public BigDecimal getUnitPrice() { return unitPrice; }
        public UpdateTracks setUnitPrice(BigDecimal value) { this.unitPrice = value; return this; }
        private static Object responseType = IdResponse.class;
        public Object getResponseType() { return responseType; }
    }

    @Route(Path="/customers", Verbs="POST")
    public static class CreateCustomers implements IReturn<IdResponse>, IPost, ICreateDb<Customers>
    {
        public String firstName = null;
        public String lastName = null;
        public String company = null;
        public String address = null;
        public String city = null;
        public String state = null;
        public String country = null;
        public String postalCode = null;
        public String phone = null;
        public String fax = null;
        public String email = null;
        public Long supportRepId = null;
        
        public String getFirstName() { return firstName; }
        public CreateCustomers setFirstName(String value) { this.firstName = value; return this; }
        public String getLastName() { return lastName; }
        public CreateCustomers setLastName(String value) { this.lastName = value; return this; }
        public String getCompany() { return company; }
        public CreateCustomers setCompany(String value) { this.company = value; return this; }
        public String getAddress() { return address; }
        public CreateCustomers setAddress(String value) { this.address = value; return this; }
        public String getCity() { return city; }
        public CreateCustomers setCity(String value) { this.city = value; return this; }
        public String getState() { return state; }
        public CreateCustomers setState(String value) { this.state = value; return this; }
        public String getCountry() { return country; }
        public CreateCustomers setCountry(String value) { this.country = value; return this; }
        public String getPostalCode() { return postalCode; }
        public CreateCustomers setPostalCode(String value) { this.postalCode = value; return this; }
        public String getPhone() { return phone; }
        public CreateCustomers setPhone(String value) { this.phone = value; return this; }
        public String getFax() { return fax; }
        public CreateCustomers setFax(String value) { this.fax = value; return this; }
        public String getEmail() { return email; }
        public CreateCustomers setEmail(String value) { this.email = value; return this; }
        public Long getSupportRepId() { return supportRepId; }
        public CreateCustomers setSupportRepId(Long value) { this.supportRepId = value; return this; }
        private static Object responseType = IdResponse.class;
        public Object getResponseType() { return responseType; }
    }

    @Route(Path="/employees", Verbs="POST")
    public static class CreateEmployees implements IReturn<IdResponse>, IPost, ICreateDb<Employees>
    {
        public String lastName = null;
        public String firstName = null;
        public String title = null;
        public Long reportsTo = null;
        public Date birthDate = null;
        public Date hireDate = null;
        public String address = null;
        public String city = null;
        public String state = null;
        public String country = null;
        public String postalCode = null;
        public String phone = null;
        public String fax = null;
        public String email = null;
        
        public String getLastName() { return lastName; }
        public CreateEmployees setLastName(String value) { this.lastName = value; return this; }
        public String getFirstName() { return firstName; }
        public CreateEmployees setFirstName(String value) { this.firstName = value; return this; }
        public String getTitle() { return title; }
        public CreateEmployees setTitle(String value) { this.title = value; return this; }
        public Long getReportsTo() { return reportsTo; }
        public CreateEmployees setReportsTo(Long value) { this.reportsTo = value; return this; }
        public Date getBirthDate() { return birthDate; }
        public CreateEmployees setBirthDate(Date value) { this.birthDate = value; return this; }
        public Date getHireDate() { return hireDate; }
        public CreateEmployees setHireDate(Date value) { this.hireDate = value; return this; }
        public String getAddress() { return address; }
        public CreateEmployees setAddress(String value) { this.address = value; return this; }
        public String getCity() { return city; }
        public CreateEmployees setCity(String value) { this.city = value; return this; }
        public String getState() { return state; }
        public CreateEmployees setState(String value) { this.state = value; return this; }
        public String getCountry() { return country; }
        public CreateEmployees setCountry(String value) { this.country = value; return this; }
        public String getPostalCode() { return postalCode; }
        public CreateEmployees setPostalCode(String value) { this.postalCode = value; return this; }
        public String getPhone() { return phone; }
        public CreateEmployees setPhone(String value) { this.phone = value; return this; }
        public String getFax() { return fax; }
        public CreateEmployees setFax(String value) { this.fax = value; return this; }
        public String getEmail() { return email; }
        public CreateEmployees setEmail(String value) { this.email = value; return this; }
        private static Object responseType = IdResponse.class;
        public Object getResponseType() { return responseType; }
    }

    @Route(Path="/invoiceitems", Verbs="POST")
    public static class CreateInvoiceItems implements IReturn<IdResponse>, IPost, ICreateDb<InvoiceItems>
    {
        public Long invoiceId = null;
        public Long trackId = null;
        public BigDecimal unitPrice = null;
        public Long quantity = null;
        
        public Long getInvoiceId() { return invoiceId; }
        public CreateInvoiceItems setInvoiceId(Long value) { this.invoiceId = value; return this; }
        public Long getTrackId() { return trackId; }
        public CreateInvoiceItems setTrackId(Long value) { this.trackId = value; return this; }
        public BigDecimal getUnitPrice() { return unitPrice; }
        public CreateInvoiceItems setUnitPrice(BigDecimal value) { this.unitPrice = value; return this; }
        public Long getQuantity() { return quantity; }
        public CreateInvoiceItems setQuantity(Long value) { this.quantity = value; return this; }
        private static Object responseType = IdResponse.class;
        public Object getResponseType() { return responseType; }
    }

    @Route(Path="/invoices", Verbs="POST")
    public static class CreateInvoices implements IReturn<IdResponse>, IPost, ICreateDb<Invoices>
    {
        public Long customerId = null;
        public Date invoiceDate = null;
        public String billingAddress = null;
        public String billingCity = null;
        public String billingState = null;
        public String billingCountry = null;
        public String billingPostalCode = null;
        public BigDecimal total = null;
        
        public Long getCustomerId() { return customerId; }
        public CreateInvoices setCustomerId(Long value) { this.customerId = value; return this; }
        public Date getInvoiceDate() { return invoiceDate; }
        public CreateInvoices setInvoiceDate(Date value) { this.invoiceDate = value; return this; }
        public String getBillingAddress() { return billingAddress; }
        public CreateInvoices setBillingAddress(String value) { this.billingAddress = value; return this; }
        public String getBillingCity() { return billingCity; }
        public CreateInvoices setBillingCity(String value) { this.billingCity = value; return this; }
        public String getBillingState() { return billingState; }
        public CreateInvoices setBillingState(String value) { this.billingState = value; return this; }
        public String getBillingCountry() { return billingCountry; }
        public CreateInvoices setBillingCountry(String value) { this.billingCountry = value; return this; }
        public String getBillingPostalCode() { return billingPostalCode; }
        public CreateInvoices setBillingPostalCode(String value) { this.billingPostalCode = value; return this; }
        public BigDecimal getTotal() { return total; }
        public CreateInvoices setTotal(BigDecimal value) { this.total = value; return this; }
        private static Object responseType = IdResponse.class;
        public Object getResponseType() { return responseType; }
    }

    @Route(Path="/customers/{CustomerId}", Verbs="DELETE")
    public static class DeleteCustomers implements IReturn<IdResponse>, IDelete, IDeleteDb<Customers>
    {
        public Long customerId = null;
        
        public Long getCustomerId() { return customerId; }
        public DeleteCustomers setCustomerId(Long value) { this.customerId = value; return this; }
        private static Object responseType = IdResponse.class;
        public Object getResponseType() { return responseType; }
    }

    @Route(Path="/employees/{EmployeeId}", Verbs="DELETE")
    public static class DeleteEmployees implements IReturn<IdResponse>, IDelete, IDeleteDb<Employees>
    {
        public Long employeeId = null;
        
        public Long getEmployeeId() { return employeeId; }
        public DeleteEmployees setEmployeeId(Long value) { this.employeeId = value; return this; }
        private static Object responseType = IdResponse.class;
        public Object getResponseType() { return responseType; }
    }

    @Route(Path="/invoiceitems/{InvoiceLineId}", Verbs="DELETE")
    public static class DeleteInvoiceItems implements IReturn<IdResponse>, IDelete, IDeleteDb<InvoiceItems>
    {
        public Long invoiceLineId = null;
        
        public Long getInvoiceLineId() { return invoiceLineId; }
        public DeleteInvoiceItems setInvoiceLineId(Long value) { this.invoiceLineId = value; return this; }
        private static Object responseType = IdResponse.class;
        public Object getResponseType() { return responseType; }
    }

    @Route(Path="/invoices/{InvoiceId}", Verbs="DELETE")
    public static class DeleteInvoices implements IReturn<IdResponse>, IDelete, IDeleteDb<Invoices>
    {
        public Long invoiceId = null;
        
        public Long getInvoiceId() { return invoiceId; }
        public DeleteInvoices setInvoiceId(Long value) { this.invoiceId = value; return this; }
        private static Object responseType = IdResponse.class;
        public Object getResponseType() { return responseType; }
    }

    @Route(Path="/customers/{CustomerId}", Verbs="PATCH")
    public static class PatchCustomers implements IReturn<IdResponse>, IPatch, IPatchDb<Customers>
    {
        public Long customerId = null;
        public String firstName = null;
        public String lastName = null;
        public String company = null;
        public String address = null;
        public String city = null;
        public String state = null;
        public String country = null;
        public String postalCode = null;
        public String phone = null;
        public String fax = null;
        public String email = null;
        public Long supportRepId = null;
        
        public Long getCustomerId() { return customerId; }
        public PatchCustomers setCustomerId(Long value) { this.customerId = value; return this; }
        public String getFirstName() { return firstName; }
        public PatchCustomers setFirstName(String value) { this.firstName = value; return this; }
        public String getLastName() { return lastName; }
        public PatchCustomers setLastName(String value) { this.lastName = value; return this; }
        public String getCompany() { return company; }
        public PatchCustomers setCompany(String value) { this.company = value; return this; }
        public String getAddress() { return address; }
        public PatchCustomers setAddress(String value) { this.address = value; return this; }
        public String getCity() { return city; }
        public PatchCustomers setCity(String value) { this.city = value; return this; }
        public String getState() { return state; }
        public PatchCustomers setState(String value) { this.state = value; return this; }
        public String getCountry() { return country; }
        public PatchCustomers setCountry(String value) { this.country = value; return this; }
        public String getPostalCode() { return postalCode; }
        public PatchCustomers setPostalCode(String value) { this.postalCode = value; return this; }
        public String getPhone() { return phone; }
        public PatchCustomers setPhone(String value) { this.phone = value; return this; }
        public String getFax() { return fax; }
        public PatchCustomers setFax(String value) { this.fax = value; return this; }
        public String getEmail() { return email; }
        public PatchCustomers setEmail(String value) { this.email = value; return this; }
        public Long getSupportRepId() { return supportRepId; }
        public PatchCustomers setSupportRepId(Long value) { this.supportRepId = value; return this; }
        private static Object responseType = IdResponse.class;
        public Object getResponseType() { return responseType; }
    }

    @Route(Path="/employees/{EmployeeId}", Verbs="PATCH")
    public static class PatchEmployees implements IReturn<IdResponse>, IPatch, IPatchDb<Employees>
    {
        public Long employeeId = null;
        public String lastName = null;
        public String firstName = null;
        public String title = null;
        public Long reportsTo = null;
        public Date birthDate = null;
        public Date hireDate = null;
        public String address = null;
        public String city = null;
        public String state = null;
        public String country = null;
        public String postalCode = null;
        public String phone = null;
        public String fax = null;
        public String email = null;
        
        public Long getEmployeeId() { return employeeId; }
        public PatchEmployees setEmployeeId(Long value) { this.employeeId = value; return this; }
        public String getLastName() { return lastName; }
        public PatchEmployees setLastName(String value) { this.lastName = value; return this; }
        public String getFirstName() { return firstName; }
        public PatchEmployees setFirstName(String value) { this.firstName = value; return this; }
        public String getTitle() { return title; }
        public PatchEmployees setTitle(String value) { this.title = value; return this; }
        public Long getReportsTo() { return reportsTo; }
        public PatchEmployees setReportsTo(Long value) { this.reportsTo = value; return this; }
        public Date getBirthDate() { return birthDate; }
        public PatchEmployees setBirthDate(Date value) { this.birthDate = value; return this; }
        public Date getHireDate() { return hireDate; }
        public PatchEmployees setHireDate(Date value) { this.hireDate = value; return this; }
        public String getAddress() { return address; }
        public PatchEmployees setAddress(String value) { this.address = value; return this; }
        public String getCity() { return city; }
        public PatchEmployees setCity(String value) { this.city = value; return this; }
        public String getState() { return state; }
        public PatchEmployees setState(String value) { this.state = value; return this; }
        public String getCountry() { return country; }
        public PatchEmployees setCountry(String value) { this.country = value; return this; }
        public String getPostalCode() { return postalCode; }
        public PatchEmployees setPostalCode(String value) { this.postalCode = value; return this; }
        public String getPhone() { return phone; }
        public PatchEmployees setPhone(String value) { this.phone = value; return this; }
        public String getFax() { return fax; }
        public PatchEmployees setFax(String value) { this.fax = value; return this; }
        public String getEmail() { return email; }
        public PatchEmployees setEmail(String value) { this.email = value; return this; }
        private static Object responseType = IdResponse.class;
        public Object getResponseType() { return responseType; }
    }

    @Route(Path="/invoiceitems/{InvoiceLineId}", Verbs="PATCH")
    public static class PatchInvoiceItems implements IReturn<IdResponse>, IPatch, IPatchDb<InvoiceItems>
    {
        public Long invoiceLineId = null;
        public Long invoiceId = null;
        public Long trackId = null;
        public BigDecimal unitPrice = null;
        public Long quantity = null;
        
        public Long getInvoiceLineId() { return invoiceLineId; }
        public PatchInvoiceItems setInvoiceLineId(Long value) { this.invoiceLineId = value; return this; }
        public Long getInvoiceId() { return invoiceId; }
        public PatchInvoiceItems setInvoiceId(Long value) { this.invoiceId = value; return this; }
        public Long getTrackId() { return trackId; }
        public PatchInvoiceItems setTrackId(Long value) { this.trackId = value; return this; }
        public BigDecimal getUnitPrice() { return unitPrice; }
        public PatchInvoiceItems setUnitPrice(BigDecimal value) { this.unitPrice = value; return this; }
        public Long getQuantity() { return quantity; }
        public PatchInvoiceItems setQuantity(Long value) { this.quantity = value; return this; }
        private static Object responseType = IdResponse.class;
        public Object getResponseType() { return responseType; }
    }

    @Route(Path="/invoices/{InvoiceId}", Verbs="PATCH")
    public static class PatchInvoices implements IReturn<IdResponse>, IPatch, IPatchDb<Invoices>
    {
        public Long invoiceId = null;
        public Long customerId = null;
        public Date invoiceDate = null;
        public String billingAddress = null;
        public String billingCity = null;
        public String billingState = null;
        public String billingCountry = null;
        public String billingPostalCode = null;
        public BigDecimal total = null;
        
        public Long getInvoiceId() { return invoiceId; }
        public PatchInvoices setInvoiceId(Long value) { this.invoiceId = value; return this; }
        public Long getCustomerId() { return customerId; }
        public PatchInvoices setCustomerId(Long value) { this.customerId = value; return this; }
        public Date getInvoiceDate() { return invoiceDate; }
        public PatchInvoices setInvoiceDate(Date value) { this.invoiceDate = value; return this; }
        public String getBillingAddress() { return billingAddress; }
        public PatchInvoices setBillingAddress(String value) { this.billingAddress = value; return this; }
        public String getBillingCity() { return billingCity; }
        public PatchInvoices setBillingCity(String value) { this.billingCity = value; return this; }
        public String getBillingState() { return billingState; }
        public PatchInvoices setBillingState(String value) { this.billingState = value; return this; }
        public String getBillingCountry() { return billingCountry; }
        public PatchInvoices setBillingCountry(String value) { this.billingCountry = value; return this; }
        public String getBillingPostalCode() { return billingPostalCode; }
        public PatchInvoices setBillingPostalCode(String value) { this.billingPostalCode = value; return this; }
        public BigDecimal getTotal() { return total; }
        public PatchInvoices setTotal(BigDecimal value) { this.total = value; return this; }
        private static Object responseType = IdResponse.class;
        public Object getResponseType() { return responseType; }
    }

    @Route(Path="/customers/{CustomerId}", Verbs="PUT")
    public static class UpdateCustomers implements IReturn<IdResponse>, IPut, IUpdateDb<Customers>
    {
        public Long customerId = null;
        public String firstName = null;
        public String lastName = null;
        public String company = null;
        public String address = null;
        public String city = null;
        public String state = null;
        public String country = null;
        public String postalCode = null;
        public String phone = null;
        public String fax = null;
        public String email = null;
        public Long supportRepId = null;
        
        public Long getCustomerId() { return customerId; }
        public UpdateCustomers setCustomerId(Long value) { this.customerId = value; return this; }
        public String getFirstName() { return firstName; }
        public UpdateCustomers setFirstName(String value) { this.firstName = value; return this; }
        public String getLastName() { return lastName; }
        public UpdateCustomers setLastName(String value) { this.lastName = value; return this; }
        public String getCompany() { return company; }
        public UpdateCustomers setCompany(String value) { this.company = value; return this; }
        public String getAddress() { return address; }
        public UpdateCustomers setAddress(String value) { this.address = value; return this; }
        public String getCity() { return city; }
        public UpdateCustomers setCity(String value) { this.city = value; return this; }
        public String getState() { return state; }
        public UpdateCustomers setState(String value) { this.state = value; return this; }
        public String getCountry() { return country; }
        public UpdateCustomers setCountry(String value) { this.country = value; return this; }
        public String getPostalCode() { return postalCode; }
        public UpdateCustomers setPostalCode(String value) { this.postalCode = value; return this; }
        public String getPhone() { return phone; }
        public UpdateCustomers setPhone(String value) { this.phone = value; return this; }
        public String getFax() { return fax; }
        public UpdateCustomers setFax(String value) { this.fax = value; return this; }
        public String getEmail() { return email; }
        public UpdateCustomers setEmail(String value) { this.email = value; return this; }
        public Long getSupportRepId() { return supportRepId; }
        public UpdateCustomers setSupportRepId(Long value) { this.supportRepId = value; return this; }
        private static Object responseType = IdResponse.class;
        public Object getResponseType() { return responseType; }
    }

    @Route(Path="/employees/{EmployeeId}", Verbs="PUT")
    public static class UpdateEmployees implements IReturn<IdResponse>, IPut, IUpdateDb<Employees>
    {
        public Long employeeId = null;
        public String lastName = null;
        public String firstName = null;
        public String title = null;
        public Long reportsTo = null;
        public Date birthDate = null;
        public Date hireDate = null;
        public String address = null;
        public String city = null;
        public String state = null;
        public String country = null;
        public String postalCode = null;
        public String phone = null;
        public String fax = null;
        public String email = null;
        
        public Long getEmployeeId() { return employeeId; }
        public UpdateEmployees setEmployeeId(Long value) { this.employeeId = value; return this; }
        public String getLastName() { return lastName; }
        public UpdateEmployees setLastName(String value) { this.lastName = value; return this; }
        public String getFirstName() { return firstName; }
        public UpdateEmployees setFirstName(String value) { this.firstName = value; return this; }
        public String getTitle() { return title; }
        public UpdateEmployees setTitle(String value) { this.title = value; return this; }
        public Long getReportsTo() { return reportsTo; }
        public UpdateEmployees setReportsTo(Long value) { this.reportsTo = value; return this; }
        public Date getBirthDate() { return birthDate; }
        public UpdateEmployees setBirthDate(Date value) { this.birthDate = value; return this; }
        public Date getHireDate() { return hireDate; }
        public UpdateEmployees setHireDate(Date value) { this.hireDate = value; return this; }
        public String getAddress() { return address; }
        public UpdateEmployees setAddress(String value) { this.address = value; return this; }
        public String getCity() { return city; }
        public UpdateEmployees setCity(String value) { this.city = value; return this; }
        public String getState() { return state; }
        public UpdateEmployees setState(String value) { this.state = value; return this; }
        public String getCountry() { return country; }
        public UpdateEmployees setCountry(String value) { this.country = value; return this; }
        public String getPostalCode() { return postalCode; }
        public UpdateEmployees setPostalCode(String value) { this.postalCode = value; return this; }
        public String getPhone() { return phone; }
        public UpdateEmployees setPhone(String value) { this.phone = value; return this; }
        public String getFax() { return fax; }
        public UpdateEmployees setFax(String value) { this.fax = value; return this; }
        public String getEmail() { return email; }
        public UpdateEmployees setEmail(String value) { this.email = value; return this; }
        private static Object responseType = IdResponse.class;
        public Object getResponseType() { return responseType; }
    }

    @Route(Path="/invoiceitems/{InvoiceLineId}", Verbs="PUT")
    public static class UpdateInvoiceItems implements IReturn<IdResponse>, IPut, IUpdateDb<InvoiceItems>
    {
        public Long invoiceLineId = null;
        public Long invoiceId = null;
        public Long trackId = null;
        public BigDecimal unitPrice = null;
        public Long quantity = null;
        
        public Long getInvoiceLineId() { return invoiceLineId; }
        public UpdateInvoiceItems setInvoiceLineId(Long value) { this.invoiceLineId = value; return this; }
        public Long getInvoiceId() { return invoiceId; }
        public UpdateInvoiceItems setInvoiceId(Long value) { this.invoiceId = value; return this; }
        public Long getTrackId() { return trackId; }
        public UpdateInvoiceItems setTrackId(Long value) { this.trackId = value; return this; }
        public BigDecimal getUnitPrice() { return unitPrice; }
        public UpdateInvoiceItems setUnitPrice(BigDecimal value) { this.unitPrice = value; return this; }
        public Long getQuantity() { return quantity; }
        public UpdateInvoiceItems setQuantity(Long value) { this.quantity = value; return this; }
        private static Object responseType = IdResponse.class;
        public Object getResponseType() { return responseType; }
    }

    @Route(Path="/invoices/{InvoiceId}", Verbs="PUT")
    public static class UpdateInvoices implements IReturn<IdResponse>, IPut, IUpdateDb<Invoices>
    {
        public Long invoiceId = null;
        public Long customerId = null;
        public Date invoiceDate = null;
        public String billingAddress = null;
        public String billingCity = null;
        public String billingState = null;
        public String billingCountry = null;
        public String billingPostalCode = null;
        public BigDecimal total = null;
        
        public Long getInvoiceId() { return invoiceId; }
        public UpdateInvoices setInvoiceId(Long value) { this.invoiceId = value; return this; }
        public Long getCustomerId() { return customerId; }
        public UpdateInvoices setCustomerId(Long value) { this.customerId = value; return this; }
        public Date getInvoiceDate() { return invoiceDate; }
        public UpdateInvoices setInvoiceDate(Date value) { this.invoiceDate = value; return this; }
        public String getBillingAddress() { return billingAddress; }
        public UpdateInvoices setBillingAddress(String value) { this.billingAddress = value; return this; }
        public String getBillingCity() { return billingCity; }
        public UpdateInvoices setBillingCity(String value) { this.billingCity = value; return this; }
        public String getBillingState() { return billingState; }
        public UpdateInvoices setBillingState(String value) { this.billingState = value; return this; }
        public String getBillingCountry() { return billingCountry; }
        public UpdateInvoices setBillingCountry(String value) { this.billingCountry = value; return this; }
        public String getBillingPostalCode() { return billingPostalCode; }
        public UpdateInvoices setBillingPostalCode(String value) { this.billingPostalCode = value; return this; }
        public BigDecimal getTotal() { return total; }
        public UpdateInvoices setTotal(BigDecimal value) { this.total = value; return this; }
        private static Object responseType = IdResponse.class;
        public Object getResponseType() { return responseType; }
    }

    public static class HelloResponse
    {
        public String result = null;
        
        public String getResult() { return result; }
        public HelloResponse setResult(String value) { this.result = value; return this; }
    }

    @DataContract
    public static class QueryResponse<T>
    {
        @DataMember(Order=1)
        public Integer offset = null;

        @DataMember(Order=2)
        public Integer total = null;

        @DataMember(Order=3)
        public ArrayList<Albums> results = null;

        @DataMember(Order=4)
        public HashMap<String,String> meta = null;

        @DataMember(Order=5)
        public ResponseStatus responseStatus = null;
        
        public Integer getOffset() { return offset; }
        public QueryResponse<T> setOffset(Integer value) { this.offset = value; return this; }
        public Integer getTotal() { return total; }
        public QueryResponse<T> setTotal(Integer value) { this.total = value; return this; }
        public ArrayList<Albums> getResults() { return results; }
        public QueryResponse<T> setResults(ArrayList<Albums> value) { this.results = value; return this; }
        public HashMap<String,String> getMeta() { return meta; }
        public QueryResponse<T> setMeta(HashMap<String,String> value) { this.meta = value; return this; }
        public ResponseStatus getResponseStatus() { return responseStatus; }
        public QueryResponse<T> setResponseStatus(ResponseStatus value) { this.responseStatus = value; return this; }
    }

    @DataContract
    public static class IdResponse
    {
        @DataMember(Order=1)
        public String id = null;

        @DataMember(Order=2)
        public ResponseStatus responseStatus = null;
        
        public String getId() { return id; }
        public IdResponse setId(String value) { this.id = value; return this; }
        public ResponseStatus getResponseStatus() { return responseStatus; }
        public IdResponse setResponseStatus(ResponseStatus value) { this.responseStatus = value; return this; }
    }

    public static class QueryDb<T> extends QueryBase
    {
        
    }

    public static class Albums
    {
        public Long albumId = null;
        @Required()
        public String title = null;

        public Long artistId = null;
        
        public Long getAlbumId() { return albumId; }
        public Albums setAlbumId(Long value) { this.albumId = value; return this; }
        public String getTitle() { return title; }
        public Albums setTitle(String value) { this.title = value; return this; }
        public Long getArtistId() { return artistId; }
        public Albums setArtistId(Long value) { this.artistId = value; return this; }
    }

    public static class Artists
    {
        public Long artistId = null;
        public String name = null;
        
        public Long getArtistId() { return artistId; }
        public Artists setArtistId(Long value) { this.artistId = value; return this; }
        public String getName() { return name; }
        public Artists setName(String value) { this.name = value; return this; }
    }

    public static class Genres
    {
        public Long genreId = null;
        public String name = null;
        
        public Long getGenreId() { return genreId; }
        public Genres setGenreId(Long value) { this.genreId = value; return this; }
        public String getName() { return name; }
        public Genres setName(String value) { this.name = value; return this; }
    }

    public static class MediaTypes
    {
        public Long mediaTypeId = null;
        public String name = null;
        
        public Long getMediaTypeId() { return mediaTypeId; }
        public MediaTypes setMediaTypeId(Long value) { this.mediaTypeId = value; return this; }
        public String getName() { return name; }
        public MediaTypes setName(String value) { this.name = value; return this; }
    }

    public static class Playlists
    {
        public Long playlistId = null;
        public String name = null;
        
        public Long getPlaylistId() { return playlistId; }
        public Playlists setPlaylistId(Long value) { this.playlistId = value; return this; }
        public String getName() { return name; }
        public Playlists setName(String value) { this.name = value; return this; }
    }

    public static class Tracks
    {
        public Long trackId = null;
        @Required()
        public String name = null;

        @References(Type=Albums.class)
        public Long albumId = null;

        @References(Type=MediaTypes.class)
        public Long mediaTypeId = null;

        @References(Type=Genres.class)
        public Long genreId = null;

        public String composer = null;
        public Long milliseconds = null;
        public Long bytes = null;
        public BigDecimal unitPrice = null;
        public Albums album = null;
        public MediaTypes mediaType = null;
        public Genres genre = null;
        
        public Long getTrackId() { return trackId; }
        public Tracks setTrackId(Long value) { this.trackId = value; return this; }
        public String getName() { return name; }
        public Tracks setName(String value) { this.name = value; return this; }
        public Long getAlbumId() { return albumId; }
        public Tracks setAlbumId(Long value) { this.albumId = value; return this; }
        public Long getMediaTypeId() { return mediaTypeId; }
        public Tracks setMediaTypeId(Long value) { this.mediaTypeId = value; return this; }
        public Long getGenreId() { return genreId; }
        public Tracks setGenreId(Long value) { this.genreId = value; return this; }
        public String getComposer() { return composer; }
        public Tracks setComposer(String value) { this.composer = value; return this; }
        public Long getMilliseconds() { return milliseconds; }
        public Tracks setMilliseconds(Long value) { this.milliseconds = value; return this; }
        public Long getBytes() { return bytes; }
        public Tracks setBytes(Long value) { this.bytes = value; return this; }
        public BigDecimal getUnitPrice() { return unitPrice; }
        public Tracks setUnitPrice(BigDecimal value) { this.unitPrice = value; return this; }
        public Albums getAlbum() { return album; }
        public Tracks setAlbum(Albums value) { this.album = value; return this; }
        public MediaTypes getMediaType() { return mediaType; }
        public Tracks setMediaType(MediaTypes value) { this.mediaType = value; return this; }
        public Genres getGenre() { return genre; }
        public Tracks setGenre(Genres value) { this.genre = value; return this; }
    }

    public static class Customers
    {
        public Long customerId = null;
        @Computed()
        public String displayName = null;

        @Required()
        public String firstName = null;

        @Required()
        public String lastName = null;

        public Long supportRepId = null;
        public String company = null;
        public String address = null;
        public String city = null;
        public String state = null;
        public String country = null;
        public String postalCode = null;
        public String phone = null;
        public String fax = null;
        @Required()
        public String email = null;
        
        public Long getCustomerId() { return customerId; }
        public Customers setCustomerId(Long value) { this.customerId = value; return this; }
        public String getDisplayName() { return displayName; }
        public Customers setDisplayName(String value) { this.displayName = value; return this; }
        public String getFirstName() { return firstName; }
        public Customers setFirstName(String value) { this.firstName = value; return this; }
        public String getLastName() { return lastName; }
        public Customers setLastName(String value) { this.lastName = value; return this; }
        public Long getSupportRepId() { return supportRepId; }
        public Customers setSupportRepId(Long value) { this.supportRepId = value; return this; }
        public String getCompany() { return company; }
        public Customers setCompany(String value) { this.company = value; return this; }
        public String getAddress() { return address; }
        public Customers setAddress(String value) { this.address = value; return this; }
        public String getCity() { return city; }
        public Customers setCity(String value) { this.city = value; return this; }
        public String getState() { return state; }
        public Customers setState(String value) { this.state = value; return this; }
        public String getCountry() { return country; }
        public Customers setCountry(String value) { this.country = value; return this; }
        public String getPostalCode() { return postalCode; }
        public Customers setPostalCode(String value) { this.postalCode = value; return this; }
        public String getPhone() { return phone; }
        public Customers setPhone(String value) { this.phone = value; return this; }
        public String getFax() { return fax; }
        public Customers setFax(String value) { this.fax = value; return this; }
        public String getEmail() { return email; }
        public Customers setEmail(String value) { this.email = value; return this; }
    }

    public static class Employees
    {
        public Long employeeId = null;
        @Required()
        public String lastName = null;

        @Required()
        public String firstName = null;

        public String title = null;
        public Long reportsTo = null;
        public Date birthDate = null;
        public Date hireDate = null;
        public String address = null;
        public String city = null;
        public String state = null;
        public String country = null;
        public String postalCode = null;
        public String phone = null;
        public String fax = null;
        public String email = null;
        
        public Long getEmployeeId() { return employeeId; }
        public Employees setEmployeeId(Long value) { this.employeeId = value; return this; }
        public String getLastName() { return lastName; }
        public Employees setLastName(String value) { this.lastName = value; return this; }
        public String getFirstName() { return firstName; }
        public Employees setFirstName(String value) { this.firstName = value; return this; }
        public String getTitle() { return title; }
        public Employees setTitle(String value) { this.title = value; return this; }
        public Long getReportsTo() { return reportsTo; }
        public Employees setReportsTo(Long value) { this.reportsTo = value; return this; }
        public Date getBirthDate() { return birthDate; }
        public Employees setBirthDate(Date value) { this.birthDate = value; return this; }
        public Date getHireDate() { return hireDate; }
        public Employees setHireDate(Date value) { this.hireDate = value; return this; }
        public String getAddress() { return address; }
        public Employees setAddress(String value) { this.address = value; return this; }
        public String getCity() { return city; }
        public Employees setCity(String value) { this.city = value; return this; }
        public String getState() { return state; }
        public Employees setState(String value) { this.state = value; return this; }
        public String getCountry() { return country; }
        public Employees setCountry(String value) { this.country = value; return this; }
        public String getPostalCode() { return postalCode; }
        public Employees setPostalCode(String value) { this.postalCode = value; return this; }
        public String getPhone() { return phone; }
        public Employees setPhone(String value) { this.phone = value; return this; }
        public String getFax() { return fax; }
        public Employees setFax(String value) { this.fax = value; return this; }
        public String getEmail() { return email; }
        public Employees setEmail(String value) { this.email = value; return this; }
    }

    public static class InvoiceItems
    {
        public Long invoiceLineId = null;
        public Long invoiceId = null;
        public Long trackId = null;
        public BigDecimal unitPrice = null;
        public Long quantity = null;
        
        public Long getInvoiceLineId() { return invoiceLineId; }
        public InvoiceItems setInvoiceLineId(Long value) { this.invoiceLineId = value; return this; }
        public Long getInvoiceId() { return invoiceId; }
        public InvoiceItems setInvoiceId(Long value) { this.invoiceId = value; return this; }
        public Long getTrackId() { return trackId; }
        public InvoiceItems setTrackId(Long value) { this.trackId = value; return this; }
        public BigDecimal getUnitPrice() { return unitPrice; }
        public InvoiceItems setUnitPrice(BigDecimal value) { this.unitPrice = value; return this; }
        public Long getQuantity() { return quantity; }
        public InvoiceItems setQuantity(Long value) { this.quantity = value; return this; }
    }

    public static class Invoices
    {
        public Long invoiceId = null;
        public Long customerId = null;
        public Date invoiceDate = null;
        public BigDecimal total = null;
        public String billingAddress = null;
        public String billingCity = null;
        public String billingState = null;
        public String billingCountry = null;
        public String billingPostalCode = null;
        
        public Long getInvoiceId() { return invoiceId; }
        public Invoices setInvoiceId(Long value) { this.invoiceId = value; return this; }
        public Long getCustomerId() { return customerId; }
        public Invoices setCustomerId(Long value) { this.customerId = value; return this; }
        public Date getInvoiceDate() { return invoiceDate; }
        public Invoices setInvoiceDate(Date value) { this.invoiceDate = value; return this; }
        public BigDecimal getTotal() { return total; }
        public Invoices setTotal(BigDecimal value) { this.total = value; return this; }
        public String getBillingAddress() { return billingAddress; }
        public Invoices setBillingAddress(String value) { this.billingAddress = value; return this; }
        public String getBillingCity() { return billingCity; }
        public Invoices setBillingCity(String value) { this.billingCity = value; return this; }
        public String getBillingState() { return billingState; }
        public Invoices setBillingState(String value) { this.billingState = value; return this; }
        public String getBillingCountry() { return billingCountry; }
        public Invoices setBillingCountry(String value) { this.billingCountry = value; return this; }
        public String getBillingPostalCode() { return billingPostalCode; }
        public Invoices setBillingPostalCode(String value) { this.billingPostalCode = value; return this; }
    }

    @DataContract
    public static class QueryBase
    {
        @DataMember(Order=1)
        public Integer skip = null;

        @DataMember(Order=2)
        public Integer take = null;

        @DataMember(Order=3)
        public String orderBy = null;

        @DataMember(Order=4)
        public String orderByDesc = null;

        @DataMember(Order=5)
        public String include = null;

        @DataMember(Order=6)
        public String fields = null;

        @DataMember(Order=7)
        public HashMap<String,String> meta = null;
        
        public Integer getSkip() { return skip; }
        public QueryBase setSkip(Integer value) { this.skip = value; return this; }
        public Integer getTake() { return take; }
        public QueryBase setTake(Integer value) { this.take = value; return this; }
        public String getOrderBy() { return orderBy; }
        public QueryBase setOrderBy(String value) { this.orderBy = value; return this; }
        public String getOrderByDesc() { return orderByDesc; }
        public QueryBase setOrderByDesc(String value) { this.orderByDesc = value; return this; }
        public String getInclude() { return include; }
        public QueryBase setInclude(String value) { this.include = value; return this; }
        public String getFields() { return fields; }
        public QueryBase setFields(String value) { this.fields = value; return this; }
        public HashMap<String,String> getMeta() { return meta; }
        public QueryBase setMeta(HashMap<String,String> value) { this.meta = value; return this; }
    }

}
