Home

Awesome

REST Tagging

A REST interface for the Redis-Tagging module.

Use Redis-Tagging on other platforms (PHP, Ruby, Coldfusion, Python etc.) via this simple REST interface.

BREAKING MAJOR RELEASE 2.x

rest-tagging now uses redis-tagging@2.x
For migration update Node.js to >= 14.0.0
Routes did not change. Only the underlying code was ported from coffee script to typescript.

Installation

Methods

Redis Tagging uses the concept of buckets (you might call them namespaces). This way a single Redis Tagging instance can store ids and tags for multiple applications. A bucket name must be alphanumeric including - and _ and between 1 and 80 characters in length. There is no limit on ids and tags. They could include any character.

PUT /rt/id/:bucket/:id

Add or update an item. The URL contains the bucket (e.g. 'concerts') and the id for this item.

Parameters (as query parameters):

Example:

PUT /rt/id/concerts/571fc1ba4d?score=20130823&tags=["rock","stadium"]

Returns:

true

DELETE /rt/id/:bucket/:id

Delete an item and all its tag associations.

Example: DELETE /rt/id/concerts/12345

Returns:

true

GET /rt/tags/:bucket?queryparams

The main method. Return the IDs for one or more tags. When more than one tag is supplied the query can be an intersection (default) or a union. type=inter (default) only those IDs will be returned where all tags match. type=union all IDs where any tag matches will be returned.

Parameters:

Example:

GET /rt/tags/concerts?tags=["Berlin","rock"]&limit=2&offset=4&type=inter

Returns:

{
    "total_items":108,
    "items":["8167","25652"],
    "limit":2,
    "offset":4
}

The returned data is item no. 5 and 6. The first 4 got skipped (offset=4). You can now do a

SELECT * FROM Concerts WHERE ID IN (8167,25652) ORDER BY Timestamp DESC

GET /rt/toptags/:bucket/:amount

Get the top n tags of a bucket.

Example:

GET /rt/toptags/concerts/3

Returns:

{
    "total_items": 18374,
    "items":[
        {"tag":"rock", "count":1720},
        {"tag":"pop", "count":1585},
        {"tag":"New York", "count":720}
    ]
}

GET /rt/id/:bucket/:id

Get all associated tags for an item. Usually this operation is not needed as you will want to store all tags for an item in you database.

Example:

GET /rt/id/concerts/12345

Returns:

[
    "rock",
    "stadium",
    "miami"
]

GET /rt/allids/:bucket

Get all IDs saved in a bucket.

Example:

GET /rt/allids/concerts

Returns:

[
    "id123",
    "id456",
    "id789"
]

GET /rt/buckets

List all buckets. Note: This uses redis.keys. Use with care! It will slow down Redis when lots of keys are stored in Redis.

Example:

GET /rt/buckets

Returns:

[
    "concerts",
    "vacations",
    "users"
]

DELETE /rt/removebucket/:bucket

Remove a single bucket.

Example:

DELETE /rt/removebucket/concerts

Returns:

true