/* Options:
Date: 2026-07-24 15:13:25
Version: 8.53
Tip: To override a DTO option, remove "//" prefix before updating
BaseUrl: https://chinook.netcore.io

GlobalNamespace: MyApp
//MakePartial: True
//MakeVirtual: True
//MakeInternal: False
//MakeDataContractsExtensible: False
//AddNullableAnnotations: False
//AddReturnMarker: True
//AddDescriptionAsComments: True
//AddDataContractAttributes: False
//AddIndexesToDataMembers: False
//AddGeneratedCodeAttributes: False
//AddResponseStatus: False
//AddImplicitVersion: 
//InitializeCollections: False
//ExportValueTypes: False
//IncludeTypes: 
//ExcludeTypes: 
//AddNamespaces: 
//AddDefaultXmlNamespace: http://schemas.servicestack.net/types
*/

using System;
using System.IO;
using System.Collections;
using System.Collections.Generic;
using System.Runtime.Serialization;
using ServiceStack;
using ServiceStack.DataAnnotations;
using MyApp;

namespace MyApp
{
    [Route("/albums", "POST")]
    public partial class CreateAlbums
        : IReturn<IdResponse>, IPost, ICreateDb<Albums>
    {
        [Validate("NotEmpty")]
        public virtual string Title { get; set; }

        [Validate("GreaterThan(0)")]
        public virtual long ArtistId { get; set; }
    }

    [Route("/artists", "POST")]
    public partial class CreateArtists
        : IReturn<IdResponse>, IPost, ICreateDb<Artists>
    {
        public virtual string Name { get; set; }
    }

    [Route("/customers", "POST")]
    public partial class CreateCustomers
        : IReturn<IdResponse>, IPost, ICreateDb<Customers>
    {
        public virtual string FirstName { get; set; }
        public virtual string LastName { get; set; }
        public virtual string Company { get; set; }
        public virtual string Address { get; set; }
        public virtual string City { get; set; }
        public virtual string State { get; set; }
        public virtual string Country { get; set; }
        public virtual string PostalCode { get; set; }
        public virtual string Phone { get; set; }
        public virtual string Fax { get; set; }
        public virtual string Email { get; set; }
        public virtual long? SupportRepId { get; set; }
    }

    [Route("/employees", "POST")]
    public partial class CreateEmployees
        : IReturn<IdResponse>, IPost, ICreateDb<Employees>
    {
        public virtual string LastName { get; set; }
        public virtual string FirstName { get; set; }
        public virtual string Title { get; set; }
        public virtual long? ReportsTo { get; set; }
        public virtual DateTime? BirthDate { get; set; }
        public virtual DateTime? HireDate { get; set; }
        public virtual string Address { get; set; }
        public virtual string City { get; set; }
        public virtual string State { get; set; }
        public virtual string Country { get; set; }
        public virtual string PostalCode { get; set; }
        public virtual string Phone { get; set; }
        public virtual string Fax { get; set; }
        public virtual string Email { get; set; }
    }

    [Route("/genres", "POST")]
    public partial class CreateGenres
        : IReturn<IdResponse>, IPost, ICreateDb<Genres>
    {
        public virtual string Name { get; set; }
    }

    [Route("/invoiceitems", "POST")]
    public partial class CreateInvoiceItems
        : IReturn<IdResponse>, IPost, ICreateDb<InvoiceItems>
    {
        public virtual long InvoiceId { get; set; }
        public virtual long TrackId { get; set; }
        public virtual decimal UnitPrice { get; set; }
        public virtual long Quantity { get; set; }
    }

    [Route("/invoices", "POST")]
    public partial class CreateInvoices
        : IReturn<IdResponse>, IPost, ICreateDb<Invoices>
    {
        public virtual long CustomerId { get; set; }
        public virtual DateTime InvoiceDate { get; set; }
        public virtual string BillingAddress { get; set; }
        public virtual string BillingCity { get; set; }
        public virtual string BillingState { get; set; }
        public virtual string BillingCountry { get; set; }
        public virtual string BillingPostalCode { get; set; }
        public virtual decimal Total { get; set; }
    }

    [Route("/mediatypes", "POST")]
    public partial class CreateMediaTypes
        : IReturn<IdResponse>, IPost, ICreateDb<MediaTypes>
    {
        public virtual string Name { get; set; }
    }

    [Route("/playlists", "POST")]
    public partial class CreatePlaylists
        : IReturn<IdResponse>, IPost, ICreateDb<Playlists>
    {
        public virtual string Name { get; set; }
    }

    [Route("/tracks", "POST")]
    public partial class CreateTracks
        : IReturn<IdResponse>, IPost, ICreateDb<Tracks>
    {
        public virtual string Name { get; set; }
        public virtual long? AlbumId { get; set; }
        public virtual long MediaTypeId { get; set; }
        public virtual long? GenreId { get; set; }
        public virtual string Composer { get; set; }
        public virtual long Milliseconds { get; set; }
        public virtual long? Bytes { get; set; }
        public virtual decimal UnitPrice { get; set; }
    }

    [Route("/albums/{AlbumId}", "DELETE")]
    public partial class DeleteAlbums
        : IReturn<IdResponse>, IDelete, IDeleteDb<Albums>
    {
        public virtual long AlbumId { get; set; }
    }

    [Route("/artists/{ArtistId}", "DELETE")]
    public partial class DeleteArtists
        : IReturn<IdResponse>, IDelete, IDeleteDb<Artists>
    {
        public virtual long ArtistId { get; set; }
    }

    [Route("/customers/{CustomerId}", "DELETE")]
    public partial class DeleteCustomers
        : IReturn<IdResponse>, IDelete, IDeleteDb<Customers>
    {
        public virtual long CustomerId { get; set; }
    }

    [Route("/employees/{EmployeeId}", "DELETE")]
    public partial class DeleteEmployees
        : IReturn<IdResponse>, IDelete, IDeleteDb<Employees>
    {
        public virtual long EmployeeId { get; set; }
    }

    [Route("/genres/{GenreId}", "DELETE")]
    public partial class DeleteGenres
        : IReturn<IdResponse>, IDelete, IDeleteDb<Genres>
    {
        public virtual long GenreId { get; set; }
    }

    [Route("/invoiceitems/{InvoiceLineId}", "DELETE")]
    public partial class DeleteInvoiceItems
        : IReturn<IdResponse>, IDelete, IDeleteDb<InvoiceItems>
    {
        public virtual long InvoiceLineId { get; set; }
    }

    [Route("/invoices/{InvoiceId}", "DELETE")]
    public partial class DeleteInvoices
        : IReturn<IdResponse>, IDelete, IDeleteDb<Invoices>
    {
        public virtual long InvoiceId { get; set; }
    }

    [Route("/mediatypes/{MediaTypeId}", "DELETE")]
    public partial class DeleteMediaTypes
        : IReturn<IdResponse>, IDelete, IDeleteDb<MediaTypes>
    {
        public virtual long MediaTypeId { get; set; }
    }

    [Route("/playlists/{PlaylistId}", "DELETE")]
    public partial class DeletePlaylists
        : IReturn<IdResponse>, IDelete, IDeleteDb<Playlists>
    {
        public virtual long PlaylistId { get; set; }
    }

    [Route("/tracks/{TrackId}", "DELETE")]
    public partial class DeleteTracks
        : IReturn<IdResponse>, IDelete, IDeleteDb<Tracks>
    {
        public virtual long TrackId { get; set; }
    }

    [Route("/hello")]
    [Route("/hello/{Name}")]
    public partial class Hello
        : IReturn<HelloResponse>
    {
        public virtual string Name { get; set; }
    }

    public partial class HelloResponse
    {
        public virtual string Result { get; set; }
    }

    [Route("/albums/{AlbumId}", "PATCH")]
    public partial class PatchAlbums
        : IReturn<IdResponse>, IPatch, IPatchDb<Albums>
    {
        public virtual long AlbumId { get; set; }
        public virtual string Title { get; set; }
        public virtual long ArtistId { get; set; }
    }

    [Route("/artists/{ArtistId}", "PATCH")]
    public partial class PatchArtists
        : IReturn<IdResponse>, IPatch, IPatchDb<Artists>
    {
        public virtual long ArtistId { get; set; }
        public virtual string Name { get; set; }
    }

    [Route("/customers/{CustomerId}", "PATCH")]
    public partial class PatchCustomers
        : IReturn<IdResponse>, IPatch, IPatchDb<Customers>
    {
        public virtual long CustomerId { get; set; }
        public virtual string FirstName { get; set; }
        public virtual string LastName { get; set; }
        public virtual string Company { get; set; }
        public virtual string Address { get; set; }
        public virtual string City { get; set; }
        public virtual string State { get; set; }
        public virtual string Country { get; set; }
        public virtual string PostalCode { get; set; }
        public virtual string Phone { get; set; }
        public virtual string Fax { get; set; }
        public virtual string Email { get; set; }
        public virtual long? SupportRepId { get; set; }
    }

    [Route("/employees/{EmployeeId}", "PATCH")]
    public partial class PatchEmployees
        : IReturn<IdResponse>, IPatch, IPatchDb<Employees>
    {
        public virtual long EmployeeId { get; set; }
        public virtual string LastName { get; set; }
        public virtual string FirstName { get; set; }
        public virtual string Title { get; set; }
        public virtual long? ReportsTo { get; set; }
        public virtual DateTime? BirthDate { get; set; }
        public virtual DateTime? HireDate { get; set; }
        public virtual string Address { get; set; }
        public virtual string City { get; set; }
        public virtual string State { get; set; }
        public virtual string Country { get; set; }
        public virtual string PostalCode { get; set; }
        public virtual string Phone { get; set; }
        public virtual string Fax { get; set; }
        public virtual string Email { get; set; }
    }

    [Route("/genres/{GenreId}", "PATCH")]
    public partial class PatchGenres
        : IReturn<IdResponse>, IPatch, IPatchDb<Genres>
    {
        public virtual long GenreId { get; set; }
        public virtual string Name { get; set; }
    }

    [Route("/invoiceitems/{InvoiceLineId}", "PATCH")]
    public partial class PatchInvoiceItems
        : IReturn<IdResponse>, IPatch, IPatchDb<InvoiceItems>
    {
        public virtual long InvoiceLineId { get; set; }
        public virtual long InvoiceId { get; set; }
        public virtual long TrackId { get; set; }
        public virtual decimal UnitPrice { get; set; }
        public virtual long Quantity { get; set; }
    }

    [Route("/invoices/{InvoiceId}", "PATCH")]
    public partial class PatchInvoices
        : IReturn<IdResponse>, IPatch, IPatchDb<Invoices>
    {
        public virtual long InvoiceId { get; set; }
        public virtual long CustomerId { get; set; }
        public virtual DateTime InvoiceDate { get; set; }
        public virtual string BillingAddress { get; set; }
        public virtual string BillingCity { get; set; }
        public virtual string BillingState { get; set; }
        public virtual string BillingCountry { get; set; }
        public virtual string BillingPostalCode { get; set; }
        public virtual decimal Total { get; set; }
    }

    [Route("/mediatypes/{MediaTypeId}", "PATCH")]
    public partial class PatchMediaTypes
        : IReturn<IdResponse>, IPatch, IPatchDb<MediaTypes>
    {
        public virtual long MediaTypeId { get; set; }
        public virtual string Name { get; set; }
    }

    [Route("/playlists/{PlaylistId}", "PATCH")]
    public partial class PatchPlaylists
        : IReturn<IdResponse>, IPatch, IPatchDb<Playlists>
    {
        public virtual long PlaylistId { get; set; }
        public virtual string Name { get; set; }
    }

    [Route("/tracks/{TrackId}", "PATCH")]
    public partial class PatchTracks
        : IReturn<IdResponse>, IPatch, IPatchDb<Tracks>
    {
        public virtual long TrackId { get; set; }
        public virtual string Name { get; set; }
        public virtual long? AlbumId { get; set; }
        public virtual long MediaTypeId { get; set; }
        public virtual long? GenreId { get; set; }
        public virtual string Composer { get; set; }
        public virtual long Milliseconds { get; set; }
        public virtual long? Bytes { get; set; }
        public virtual decimal UnitPrice { get; set; }
    }

    [Route("/albums", "GET")]
    [Route("/albums/{AlbumId}", "GET")]
    public partial class QueryAlbums
        : QueryDb<Albums>, IReturn<QueryResponse<Albums>>, IGet
    {
        public virtual long? AlbumId { get; set; }
    }

    [Route("/artists", "GET")]
    [Route("/artists/{ArtistId}", "GET")]
    public partial class QueryArtists
        : QueryDb<Artists>, IReturn<QueryResponse<Artists>>, IGet
    {
        public virtual long? ArtistId { get; set; }
        public virtual long[] ArtistIdBetween { get; set; }
        public virtual string NameStartsWith { get; set; }
    }

    [Route("/customers", "GET")]
    [Route("/customers/{CustomerId}", "GET")]
    public partial class QueryCustomers
        : QueryDb<Customers>, IReturn<QueryResponse<Customers>>, IGet
    {
        public virtual long? CustomerId { get; set; }
    }

    [Route("/employees", "GET")]
    [Route("/employees/{EmployeeId}", "GET")]
    public partial class QueryEmployees
        : QueryDb<Employees>, IReturn<QueryResponse<Employees>>, IGet
    {
        public virtual long? EmployeeId { get; set; }
    }

    [Route("/genres", "GET")]
    [Route("/genres/{GenreId}", "GET")]
    public partial class QueryGenres
        : QueryDb<Genres>, IReturn<QueryResponse<Genres>>, IGet
    {
        public virtual long? GenreId { get; set; }
    }

    [Route("/invoiceitems", "GET")]
    [Route("/invoiceitems/{InvoiceLineId}", "GET")]
    public partial class QueryInvoiceItems
        : QueryDb<InvoiceItems>, IReturn<QueryResponse<InvoiceItems>>, IGet
    {
        public virtual long? InvoiceLineId { get; set; }
    }

    [Route("/invoices", "GET")]
    [Route("/invoices/{InvoiceId}", "GET")]
    public partial class QueryInvoices
        : QueryDb<Invoices>, IReturn<QueryResponse<Invoices>>, IGet
    {
        public virtual long? InvoiceId { get; set; }
    }

    [Route("/mediatypes", "GET")]
    [Route("/mediatypes/{MediaTypeId}", "GET")]
    public partial class QueryMediaTypes
        : QueryDb<MediaTypes>, IReturn<QueryResponse<MediaTypes>>, IGet
    {
        public virtual long? MediaTypeId { get; set; }
    }

    [Route("/playlists", "GET")]
    [Route("/playlists/{PlaylistId}", "GET")]
    public partial class QueryPlaylists
        : QueryDb<Playlists>, IReturn<QueryResponse<Playlists>>, IGet
    {
        public virtual long? PlaylistId { get; set; }
    }

    [Route("/tracks", "GET")]
    [Route("/tracks/{TrackId}", "GET")]
    public partial class QueryTracks
        : QueryDb<Tracks>, IReturn<QueryResponse<Tracks>>, IGet
    {
        public virtual long? TrackId { get; set; }
        public virtual string NameContains { get; set; }
    }

    [Route("/albums/{AlbumId}", "PUT")]
    public partial class UpdateAlbums
        : IReturn<IdResponse>, IPut, IUpdateDb<Albums>
    {
        public virtual long AlbumId { get; set; }
        public virtual string Title { get; set; }
        public virtual long ArtistId { get; set; }
    }

    [Route("/artists/{ArtistId}", "PUT")]
    public partial class UpdateArtists
        : IReturn<IdResponse>, IPut, IUpdateDb<Artists>
    {
        public virtual long ArtistId { get; set; }
        public virtual string Name { get; set; }
    }

    [Route("/customers/{CustomerId}", "PUT")]
    public partial class UpdateCustomers
        : IReturn<IdResponse>, IPut, IUpdateDb<Customers>
    {
        public virtual long CustomerId { get; set; }
        public virtual string FirstName { get; set; }
        public virtual string LastName { get; set; }
        public virtual string Company { get; set; }
        public virtual string Address { get; set; }
        public virtual string City { get; set; }
        public virtual string State { get; set; }
        public virtual string Country { get; set; }
        public virtual string PostalCode { get; set; }
        public virtual string Phone { get; set; }
        public virtual string Fax { get; set; }
        public virtual string Email { get; set; }
        public virtual long? SupportRepId { get; set; }
    }

    [Route("/employees/{EmployeeId}", "PUT")]
    public partial class UpdateEmployees
        : IReturn<IdResponse>, IPut, IUpdateDb<Employees>
    {
        public virtual long EmployeeId { get; set; }
        public virtual string LastName { get; set; }
        public virtual string FirstName { get; set; }
        public virtual string Title { get; set; }
        public virtual long? ReportsTo { get; set; }
        public virtual DateTime? BirthDate { get; set; }
        public virtual DateTime? HireDate { get; set; }
        public virtual string Address { get; set; }
        public virtual string City { get; set; }
        public virtual string State { get; set; }
        public virtual string Country { get; set; }
        public virtual string PostalCode { get; set; }
        public virtual string Phone { get; set; }
        public virtual string Fax { get; set; }
        public virtual string Email { get; set; }
    }

    [Route("/genres/{GenreId}", "PUT")]
    public partial class UpdateGenres
        : IReturn<IdResponse>, IPut, IUpdateDb<Genres>
    {
        public virtual long GenreId { get; set; }
        public virtual string Name { get; set; }
    }

    [Route("/invoiceitems/{InvoiceLineId}", "PUT")]
    public partial class UpdateInvoiceItems
        : IReturn<IdResponse>, IPut, IUpdateDb<InvoiceItems>
    {
        public virtual long InvoiceLineId { get; set; }
        public virtual long InvoiceId { get; set; }
        public virtual long TrackId { get; set; }
        public virtual decimal UnitPrice { get; set; }
        public virtual long Quantity { get; set; }
    }

    [Route("/invoices/{InvoiceId}", "PUT")]
    public partial class UpdateInvoices
        : IReturn<IdResponse>, IPut, IUpdateDb<Invoices>
    {
        public virtual long InvoiceId { get; set; }
        public virtual long CustomerId { get; set; }
        public virtual DateTime InvoiceDate { get; set; }
        public virtual string BillingAddress { get; set; }
        public virtual string BillingCity { get; set; }
        public virtual string BillingState { get; set; }
        public virtual string BillingCountry { get; set; }
        public virtual string BillingPostalCode { get; set; }
        public virtual decimal Total { get; set; }
    }

    [Route("/mediatypes/{MediaTypeId}", "PUT")]
    public partial class UpdateMediaTypes
        : IReturn<IdResponse>, IPut, IUpdateDb<MediaTypes>
    {
        public virtual long MediaTypeId { get; set; }
        public virtual string Name { get; set; }
    }

    [Route("/playlists/{PlaylistId}", "PUT")]
    public partial class UpdatePlaylists
        : IReturn<IdResponse>, IPut, IUpdateDb<Playlists>
    {
        public virtual long PlaylistId { get; set; }
        public virtual string Name { get; set; }
    }

    [Route("/tracks/{TrackId}", "PUT")]
    public partial class UpdateTracks
        : IReturn<IdResponse>, IPut, IUpdateDb<Tracks>
    {
        public virtual long TrackId { get; set; }
        public virtual string Name { get; set; }
        public virtual long? AlbumId { get; set; }
        public virtual long MediaTypeId { get; set; }
        public virtual long? GenreId { get; set; }
        public virtual string Composer { get; set; }
        public virtual long Milliseconds { get; set; }
        public virtual long? Bytes { get; set; }
        public virtual decimal UnitPrice { get; set; }
    }

    public partial class Albums
    {
        public virtual long AlbumId { get; set; }
        [Required]
        public virtual string Title { get; set; }

        public virtual long ArtistId { get; set; }
    }

    public partial class Artists
    {
        public virtual long ArtistId { get; set; }
        public virtual string Name { get; set; }
    }

    public partial class Customers
    {
        public virtual long CustomerId { get; set; }
        [Computed]
        public virtual string DisplayName { get; set; }

        [Required]
        public virtual string FirstName { get; set; }

        [Required]
        public virtual string LastName { get; set; }

        public virtual long? SupportRepId { get; set; }
        public virtual string Company { get; set; }
        public virtual string Address { get; set; }
        public virtual string City { get; set; }
        public virtual string State { get; set; }
        public virtual string Country { get; set; }
        public virtual string PostalCode { get; set; }
        public virtual string Phone { get; set; }
        public virtual string Fax { get; set; }
        [Required]
        public virtual string Email { get; set; }
    }

    public partial class Employees
    {
        public virtual long EmployeeId { get; set; }
        [Required]
        public virtual string LastName { get; set; }

        [Required]
        public virtual string FirstName { get; set; }

        public virtual string Title { get; set; }
        public virtual long? ReportsTo { get; set; }
        public virtual DateTime? BirthDate { get; set; }
        public virtual DateTime? HireDate { get; set; }
        public virtual string Address { get; set; }
        public virtual string City { get; set; }
        public virtual string State { get; set; }
        public virtual string Country { get; set; }
        public virtual string PostalCode { get; set; }
        public virtual string Phone { get; set; }
        public virtual string Fax { get; set; }
        public virtual string Email { get; set; }
    }

    public partial class Genres
    {
        public virtual long GenreId { get; set; }
        public virtual string Name { get; set; }
    }

    public partial class InvoiceItems
    {
        public virtual long InvoiceLineId { get; set; }
        public virtual long InvoiceId { get; set; }
        public virtual long TrackId { get; set; }
        public virtual decimal UnitPrice { get; set; }
        public virtual long Quantity { get; set; }
    }

    public partial class Invoices
    {
        public virtual long InvoiceId { get; set; }
        public virtual long CustomerId { get; set; }
        public virtual DateTime InvoiceDate { get; set; }
        public virtual decimal Total { get; set; }
        public virtual string BillingAddress { get; set; }
        public virtual string BillingCity { get; set; }
        public virtual string BillingState { get; set; }
        public virtual string BillingCountry { get; set; }
        public virtual string BillingPostalCode { get; set; }
    }

    public partial class MediaTypes
    {
        public virtual long MediaTypeId { get; set; }
        public virtual string Name { get; set; }
    }

    public partial class Playlists
    {
        public virtual long PlaylistId { get; set; }
        public virtual string Name { get; set; }
    }

    public partial class Tracks
    {
        public virtual long TrackId { get; set; }
        [Required]
        public virtual string Name { get; set; }

        [References(typeof(Albums))]
        public virtual long? AlbumId { get; set; }

        [References(typeof(MediaTypes))]
        public virtual long MediaTypeId { get; set; }

        [References(typeof(Genres))]
        public virtual long? GenreId { get; set; }

        public virtual string Composer { get; set; }
        public virtual long Milliseconds { get; set; }
        public virtual long? Bytes { get; set; }
        public virtual decimal UnitPrice { get; set; }
        public virtual Albums Album { get; set; }
        public virtual MediaTypes MediaType { get; set; }
        public virtual Genres Genre { get; set; }
    }

}

