API/Methods

From TapTo Wiki

< API
Revision as of 03:11, 25 September 2024 by Wizzo (talk | contribs) (→‎Request)

Methods are used to execute actions and request data back from the API.

Launching

launch

Emulate the scanning of a token.

Parameters

This method accepts two types of parameters:

  • A single string, in which case the string will be treated as the token text.
  • Or an object with the following keys:
Key Type Required Description
type string No An internal category of the type of token being scanned. Not currently in use outside of logging.
uid string No* The UID of the token being scanner. For example, the UID of an NFC tag. Used for matching mappings.
text string No* The main text to be processed from a scan, should contain TapScript.
data string No* The raw data read from a token, converted to a hexadecimal string. Used in mappings and detection of NFC toys such as Amiibos and Lego Dimensions.

These parameters allow emulating a token exactly as it would be read directly from an attached reader on the server. A request's parameters must contain at least a populated uid, text or data value.

Result

This method returns null on success.

Currently, it is not reported if the launched TapScript encounters an error during launching.

Example

Request
{
    "jsonrpc": "2.0",
    "id": "52f6242e-7a5a-11ef-bf93-020304050607",
    "method": "launch",
    "params": {
        "text": "**launch.system:snes"
    }
}
Response
{
    "jsonrpc": "2.0",
    "id": "52f6242e-7a5a-11ef-bf93-020304050607",
    "result": null
}

stop

Kill any active launcher, if possible.

This method is highly dependant on the platform and specific launcher used. It's not guaranteed that a launcher is capable of killing playing media.

Parameters

None.

Result

This method returns null on success.

Currently, it is not reported if a process was killed or not.

Example

Request
{
    "jsonrpc": "2.0",
    "id": "176b4558-7a5b-11ef-b318-020304050607",
    "method": "stop"
}
Response
{
    "jsonrpc": "2.0",
    "id": "176b4558-7a5b-11ef-b318-020304050607",
    "result": null
}

history

Returns a list of the last recorded token launches.

Parameters

None.

Result

Key Type Required Description
entries LaunchEntry[] Yes A list of recorded token launches.
Launch entry object
Key Type Required Description
data string No Same as launch parameter.
success boolean Yes True if the launch was successful.
text string No Same as launch parameter.
time string Yes Timestamp of the launch time in RFC3339 format.
type string No Same as launch parameter.
uid string No Same as launch parameter.

Example

Request
{
    "jsonrpc": "2.0",
    "id": "5e9f3a0e-7a5b-11ef-8084-020304050607",
    "method": "history"
}
Response
{
    "jsonrpc": "2.0",
    "id": "5e9f3a0e-7a5b-11ef-8084-020304050607",
    "result": {
        "entries": [
            {
                "data": "",
                "success": true,
                "text": "**launch.system:snes",
                "time": "2024-09-24T17:49:42.938167429+08:00",
                "type": "",
                "uid": ""
            }
        ]
    }
}

Media

media.search

Query the media database and return all matching indexed media.

Parameters

An object:

Key Type Required Description
query string Yes Case-insensitive search by filename. By default, query is split by white space and results are found which contain every word.
system string[] No Case-sensitive list of system IDs to restrict search to. A missing key or empty list will search all systems.
maxResults number No Max number of results to return. Default is 250.

Result

Key Type Required Description
results Media[] Yes A list of all search results from the given query.
total number Yes Total number of search results.
Media object
Key Type Required Description
system System Yes System which the media has been indexed under.
name string Yes A human-readable version of the result's filename without a file extension.
path string Yes Path to the media file. If possible, this path will be compressed into the <system>/<path> launch format.
System object
Key Type Required Description
id string Yes Internal system ID for this system.
name string Yes Display name of the system.
category string Yes Category of system. This field is not yet formalised.

Example

Request
{
    "jsonrpc": "2.0",
    "id": "47f80537-7a5d-11ef-9c7b-020304050607",
    "method": "media.search",
    "params": {
        "query": "240p"
    }
}
Response
{
    "jsonrpc": "2.0",
    "id": "47f80537-7a5d-11ef-9c7b-020304050607",
    "result": {
        "results": [
            {
                "name": "240p Test Suite (PD) v0.03 tepples",
                "path": "Gameboy/240p Test Suite (PD) v0.03 tepples.gb",
                "system": {
                    "category": "Handheld",
                    "id": "Gameboy",
                    "name": "Gameboy"
                }
            }
        ],
        "total": 1
    }
}

media.index

Create a new media database index.

During an index, the server will emit media.indexing notifications showing progress of the index.

Parameters

This method can, optionally, accept an object:

Key Type Required Description
systems string[] No List of system IDs to restrict indexing to. Other system indexes will remain as is.

A missing or null value parameters key is also valid and will index every system.

Result

Returns null on success once indexing is complete.

Example

Request
{
    "jsonrpc": "2.0",
    "id": "6f20e07c-7a5e-11ef-84bb-020304050607",
    "method": "media.index"
}
Response
{
    "jsonrpc": "2.0",
    "id": "6f20e07c-7a5e-11ef-84bb-020304050607",
    "result": null
}

systems

List all currently indexed systems.

Parameters

None.

Result

Key Type Required Description
systems System[] Yes A list of all indexed systems.

See system object.

Example

Request
{
    "jsonrpc": "2.0",
    "id": "dbd312f3-7a5f-11ef-8f29-020304050607",
    "method": "systems"
}
Response
{
    "jsonrpc": "2.0",
    "id": "dbd312f3-7a5f-11ef-8f29-020304050607",
    "result": {
        "systems": [
            {
                "category": "Handheld",
                "id": "GameboyColor",
                "name": "Gameboy Color"
            },
            {
                "category": "Computer",
                "id": "EDSAC",
                "name": "EDSAC"
            }
        ]
    }
}

Settings

settings

List currently set configuration settings.

This method will list values set in the Config File. Values may be hidden which are not appropriate to be read remotely.

Parameters

None.

Result

Key Type Required Description
reader string[] Yes A list of manually configured reader driver connection strings. See reader.
audioFeedback boolean Yes
detectReaders boolean Yes
insertMode boolean Yes
insertModeBlocklist string[] Yes
insertModeExitDelay number Yes
consoleLogging boolean Yes
debug boolean Yes See debug.
systems Systems config Yes The systems section of the config file.
Systems config
Key Type Required Description
rootFolder string[] Yes

Example

Request
{
    "jsonrpc": "2.0",
    "id": "f208d996-7ae6-11ef-960e-020304050607",
    "method": "settings"
}
Response
{
    "jsonrpc": "2.0",
    "id": "f208d996-7ae6-11ef-960e-020304050607",
    "result": {
        "readers": ["pn532_uart:/dev/ttyUSB0"],
        "detectReaders": true,
        "audioFeedback": true,
        "insertMode": false,
        "insertModeBlocklist": ["DOS"],
        "insertModeExitDelay": 0,
        "consoleLogging": false,
        "debug": false,
        "systems": {
            "rootFolders": []
        }
    }
}

settings.update

Update one or more settings in-memory and save changes to disk.

This method will only write values which are supplied. Existing values will not be modified.

Parameters

An object:

Key Type Required Description
reader string[] Yes A list of manually configured reader driver connection strings. See reader.
audioFeedback boolean Yes
detectReaders boolean Yes
insertMode boolean Yes
insertModeBlocklist string[] Yes
insertModeExitDelay number Yes
consoleLogging boolean Yes
debug boolean Yes See debug.
systems Systems config Yes The systems section of the config file.
Systems config
Key Type Required Description
rootFolder string[] Yes

Result

Returns null on success.

Example

Request
{
    "jsonrpc": "2.0",
    "id": "562c0b60-7ae8-11ef-87d7-020304050607",
    "method": "settings.update",
    "params": {
        "debug": false
    }
}
Response
{
    "jsonrpc": "2.0",
    "id": "562c0b60-7ae8-11ef-87d7-020304050607",
    "result": null
}

Mappings

mappings

List all mappings.

Returns a list of all active and inactive mappings entries stored on server.

Parameters

Result

Example

mappings.new

Create a new mapping.

Parameters

Result

Example

mappings.delete

Delete an existing mapping.

Parameters

Result

Example

mappings.update

Change an existing mapping.

Parameters

Result

Example

Readers

readers

List all currently connected readers.

Parameters

Result

Example

readers.write

Attempt to write given text to the first available write-capable reader, if possible.

Parameters

Result

Example

Clients

Clients can only be managed through the API via a device-local connection.

clients

List all clients (including disconnected) and associated data.

Parameters

Result

Example

clients.new

Create a new client with a newly generated ID and secret.

Parameters

Result

Example

clients.delete

Delete an existing client.

Parameters

Result

Example

Service

version

Return server's current version and platform.

Parameters

Result

Example