Feature Requests

Feature, docs and use-case samples requests for ServiceStack. If you can, focus on the end-user benefit / use-case, rather than the technical details so we can focus on the end-goal and free us to work on how best to achieve it. Features can also include supporting content, e.g. a starter project on how to use ServiceStack with another product (e.g. SS + SharePoint).

I suggest you ...

You've used all your votes and won't be able to post a new idea, but you can still search and comment on existing ideas.

There are two ways to get more votes:

  • When an admin closes an idea you've voted on, you'll get your votes back from that idea.
  • You can remove your votes from an open idea you support.
  • To see ideas you have already voted on, select the "My feedback" filter and select "My open ideas".
(thinking…)

Enter your idea and we'll search to see if someone has already suggested it.

If a similar idea already exists, you can support and comment on it.

If it doesn't exist, you can post your idea so others can support it.

Enter your idea and we'll search to see if someone has already suggested it.

  1. Unions implementation for ORM Lite

    Hi

    In my application user can define multiple filters for specific type. I would like to somehow combine these queries in single one.

    SqlExpression<Notice> query1 = Db.From<Notice>(s=>s.param1 == 2);
    // ...queries are more complicated but result type is same
    SqlExpression<Notice> query2 = Db.From<Notice>(s=>s.param1 == 3 && s.param2 == 3);

    SqlExpression<Notice> unionAll = query1.UnionAll(query2);
    var result = Db.Select(unionAll);

    18 votes
    Vote
    Sign in
    (thinking…)
    Password icon
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    0 comments  ·  Flag idea as inappropriate…  ·  Admin →
  2. Support AWS S3 Versioning with VirtualFiles.WriteFile

    I believe we can retrieve specific versions of a file via the versionId querystring using VirtualFiles.... however VirtualFiles.WriteFile returns null so we cannot retrieve the x-amz-version-id header. It would be nice if the headers were in the response of VirtualFiles.WriteFile so we could retrieve that.

    3 votes
    Vote
    Sign in
    (thinking…)
    Password icon
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    0 comments  ·  Flag idea as inappropriate…  ·  Admin →
  3. AutoQuery Azure DocumentDB Data Source

    Azure DocumentDB should be added among existing AutoQuery data source.

    17 votes
    Vote
    Sign in
    (thinking…)
    Password icon
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    0 comments  ·  Flag idea as inappropriate…  ·  Admin →
  4. Add the ability to select the serialization mode(Array,Map) in plugin "MsgPack Format".

    To MsgPack was really comfortable as JSON, you must add the possibility of setting "Map" mode. This will give more compatibility when migrating from one version to another, when service is updated, but clients have not yet had time.

    9 votes
    Vote
    Sign in
    (thinking…)
    Password icon
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    0 comments  ·  Flag idea as inappropriate…  ·  Admin →
  5. Encrypted messaging javascript client

    We have message-level encryption and the corresponding .Net client library to use it. But I'd love to be able to call encrypted services from JavaScript. Ideally add to ss-utils.js, or because the encryption can get bulky, into a new ss-encrypt-utils.js.

    8 votes
    Vote
    Sign in
    (thinking…)
    Password icon
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    0 comments  ·  Flag idea as inappropriate…  ·  Admin →
  6. Allow Abstract Validators where generic is an Interface to run as part of request cycle.

    When creating a validator class that extends AbstractValidator<T>, the generic must be a concrete class for the validation to actually run once that validator is registered. It would be nice if I could define several interfaces for my messages that I want specific shared validation run against, and then just register a validator for that interface, and have the validation run against any message that comes in that implements that interface.

    I know there are ways to do this through request filters, as well as through attributes on the messages, but the attributes requires having to pull more dependencies into…

    4 votes
    Vote
    Sign in
    (thinking…)
    Password icon
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    1 comment  ·  Flag idea as inappropriate…  ·  Admin →
  7. Bug: gateway also changes razor view that will be selected

    I have the following code

    ```
    public class EditAccountAddressPageService : ServiceBase
    {
    public object Get(EditAccountAddressPage request)
    {
    return Gateway.Send(new GetAddress() { AddressId = request.Id });
    }
    }
    ```

    The problem is the razor view taken now is `GetAddress.cshtml`

    1 vote
    Vote
    Sign in
    (thinking…)
    Password icon
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    1 comment  ·  Flag idea as inappropriate…  ·  Admin →
  8. Localize Login redirect

    our site has the following route format: /[Locale]/RestOfPath

    The problem is that the redirect url always redirects to /Login instead of /[Locale]/Login. Could you turn AuthenticateAttribute.DoHtmlRedirectIfConfigured into a static Func instead of a static method so it is overridable?

    1 vote
    Vote
    Sign in
    (thinking…)
    Password icon
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    1 comment  ·  Flag idea as inappropriate…  ·  Admin →
  9. support F# data type for serialization and deserialization

    This is specially for option type and discriminated unions. Currently it is not supported by Servicestack.Text. It would be great to have support for that.

    For

    type City = Abad | Pune

    [<CLIMutableAttribute>]
    type Person = {
    FirstName:string
    LastName: string option
    City : City
    }

    let p1 = {FirstName = "Foo"; LastName = Some "Bar"; City = Pune}

    let jss = new JsonStringSerializer()
    let p1Str = jss.SerializeToString(p1)

    It is serializing
    "{"FirstName":"Foo","LastName":{"Value":"Bar"},"City":{"Tag":1,"IsAbad":false,"IsPune":true}}"

    Where is should be
    "{"FirstName":"Foo","LastName":"Bar","City":"Pune"}"

    For reference https://github.com/Microsoft/fsharplu/wiki/fsharplu.json is library by MSR.

    It would be great to have this feature so DTO can be written in F# types. Currently…

    14 votes
    Vote
    Sign in
    (thinking…)
    Password icon
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    1 comment  ·  Flag idea as inappropriate…  ·  Admin →
  10. pagination

    Add support for pagination in queries with dynamodb.

    Actually, when you set "limit" in Query or Scan methods, the first elements are obtained. This could be the first page. but there is no method that enables you obtain the second or third page.

    Maybe, you can add a GetPage method, that returns a collection wrapper, inherited from Collection<T>. This wrapper could have the last evaluated key.

    Then, GetPage method, could accept a query or scan expression, a page size and the last evaluated key

    This could be very usefull for applications that needs paginate some results but don't need retrieve…

    31 votes
    Vote
    Sign in
    (thinking…)
    Password icon
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    0 comments  ·  Flag idea as inappropriate…  ·  Admin →
  11. auto update http://github.servicestack.net/

    http://github.servicestack.net/ss_admin/autoquery/QueryRepoCommits

    seems not to be updated since 2015-09-26. Maybe put an auto pull on the git repos behind it?

    1 vote
    Vote
    Sign in
    (thinking…)
    Password icon
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    0 comments  ·  Flag idea as inappropriate…  ·  Admin →
  12. support caching in java AndroidServiceClient

    Using servicestack client in mobile development with Xamarin gives so much benefits and caching dramatically improves performance and user experience.
    It would be nice to have same caching support for all clients (.NET, JAVA, ..)

    2 votes
    Vote
    Sign in
    (thinking…)
    Password icon
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    0 comments  ·  Flag idea as inappropriate…  ·  Admin →
  13. Create Auto Crud

    Take a project like http://www.mattjcowan.com/funcoding/2013/05/11/restful-api-and-ui-for-typed-views-and-typed-lists/
    and lift it to the next level.
    Purpose: Point ActiveScaffold with AutoCrud to your database, and you get a half sensible CRUD web interface to maintain it. In other words, an instant backoffice.
    This is orthogonal to any other API usage of ServiceStack.

    Inspired by the Rails equivalent "https://github.com/activescaffold/active_scaffold&quot; that is very nicely designed, with both configuration and override possibilities.

    19 votes
    Vote
    Sign in
    (thinking…)
    Password icon
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    0 comments  ·  Flag idea as inappropriate…  ·  Admin →
  14. Redis Cache value compression

    Redis and clients are typically IO bound and the IO costs are typically at least 2 orders of magnitude in respect to the rest of the request/reply sequence. Smaller payloads will give you higher throughput and lower latencies.

    The ICacheClient interface should provide an option to enable compression. This will store a compressed string representation in the cache store (except in memory). Default should be false.

    Some interesting reads:
    http://stackoverflow.com/questions/6556631/compressing-strings-before-putting-them-in-redis-does-it-make-sense
    http://stackoverflow.com/questions/10909602/does-redis-db-has-built-in-compression-option

    2 votes
    Vote
    Sign in
    (thinking…)
    Password icon
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    0 comments  ·  Flag idea as inappropriate…  ·  Admin →
  15. Optionally decorate DTO's with OrmLite attributes

    For very small Xamarin Applications, it makes sense to use the same data models in the App as in the API backend.
    This could easily be achieved, if the OrmLite attributes such as [PrimaryKey], [Unique] and so on are exposed.
    This would of course be an opt-in behaviour, because by default those attributes are for internal usage.

    1 vote
    Vote
    Sign in
    (thinking…)
    Password icon
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    0 comments  ·  Flag idea as inappropriate…  ·  Admin →
  16. pagination bug mssql

    We have a view:

    `CREATE VIEW StockInformation AS SELECT dbo.Product.Code AS ItemCode, dbo.Warehouse.Code AS WarehouseCode, dbo.StockIndicator.Code AS StockIndicatorCode, dbo.Stock.StockOnShelve, dbo.Stock.StockAvailable,
    dbo.Stock.StockPurchaseBackorder, dbo.Stock.StockFirstPurchaseDeliveryDate
    FROM dbo.Stock INNER JOIN
    dbo.Warehouse ON dbo.Stock.WarehouseID = dbo.Warehouse.WarehouseID INNER JOIN
    dbo.StockIndicator ON dbo.Stock.StockIndicatorID = dbo.StockIndicator.StockIndicatorID RIGHT OUTER JOIN
    dbo.Product ON dbo.Stock.ProductID = dbo.Product.ProductID`

    and the following query:

    var stocks = con.Select<StockInformation>(con.From<StockInformation>().OrderBy(x=> x.ItemCode).Limit(pageSize * pageNumber, pageSize));

    The first page results into query:

    SELECT TOP [pageSize] ... FROM StockInformation.

    The second query looks like this:

    SELECT * FROM (SELECT "ItemCode", "WarehouseCode", "StockIndicatorCode", "StockOnShelve", "StockAvailable", "StockPurchaseBackorder", "StockFirstPurchaseDeliveryDate", ROW_NUMBER() OVER (ORDER BY "StockInformation"."ItemCode") As RowNum
    FROM "StockInformation") AS RowConstrainedResult WHERE RowNum…

    0 votes
    Vote
    Sign in
    (thinking…)
    Password icon
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    1 comment  ·  Flag idea as inappropriate…  ·  Admin →
  17. Parcelable in Android Studio auto-generated dtos

    Can you make parcelable the auto-generated dtos by Android plugin for Android Studio?

    3 votes
    Vote
    Sign in
    (thinking…)
    Password icon
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    0 comments  ·  Flag idea as inappropriate…  ·  Admin →
  18. Allow DateHandler to be specified at field level

    It is currently possible to serialize dates as ISO8601DateOnly and ISO8601.

    https://gist.github.com/georgehemmings/42d9841913d1da01e91b

    The date handler applies to all DateTime fields in the object.

    Where a DateTime field is representing only a date, it would be nice to emit this in ISO8601DateOnly but leaving any other DateTimes to emit in full ISO8601 format.

    1 vote
    Vote
    Sign in
    (thinking…)
    Password icon
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    0 comments  ·  Flag idea as inappropriate…  ·  Admin →
  19. Support Changing ViewPages directory

    Support Allowing Custom ViewPages directory
    Right now the convention of using a folder in root works great for the general case (We've been on service stack razor for at least a year). With that said we hit the point that we need to move the views into a subfolder to easier support a part of the subcontrol strategy.

    Would love to have the convention be default and a easy way to change the base folder for vies on the apphost configure method.

    6 votes
    Vote
    Sign in
    (thinking…)
    Password icon
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    0 comments  ·  Flag idea as inappropriate…  ·  Admin →
  20. Improvements for batched requests

    I've started working with request batching, which is a really nice feature. Everything works, but there two improvements I'd like to see.

    Firstly, for IReturnVoid requests there is SendAllOneWay, but there is no async version of that method.

    Secondly, I'd like to be able to specify a http Verb with the SendAll methods. The implementation should select the correct method in the service, both when calling a single request method multiple times, but also for the batched method. Right now the batched service methods always need to be Any(), it would be nice to be able to have Delete(OrderID[] orders).

    3 votes
    Vote
    Sign in
    (thinking…)
    Password icon
    Signed in as (Sign out)
    You have left! (?) (thinking…)
    0 comments  ·  Flag idea as inappropriate…  ·  Admin →
  • Don't see your idea?

Feature Requests

Feedback and Knowledge Base