/api/uid/assign

This endpoint enables assigning UIDs to new metrics, tag names and tag values. Multiple types and names can be provided in a single call and the API will process each name individually, reporting which names were assigned UIDs successfully, along with the UID assigned, and which failed due to invalid characters or had already been assigned. Assignment can be performed via query string or content data.

Verbs

  • GET

  • POST

Requests

Each request must have one or more of the following fields:

Name

Data Type

Required

Description

Default

QS

RW

Example

metric

String

Optional

A list of metric names for assignment

metric

RW

sys.cpu.0

tagk

String

Optional

A list of tag names for assignment

tagk

RW

host

tagv

String

Optional

A list of tag values for assignment

tagv

RW

web01

When making a query string request, multiple names for a given type can be supplied in a comma separated fashion. E.g. metric=sys.cpu.0,sys.cpu.1,sys.cpu.2,sys.cpu.3. Naming conventions apply: see _______.

Example Request

Query String

http://localhost:4242/api/uid/assign?metric=sys.cpu.0,sys.cpu.1&tagk=host&tagv=web01,web02,web03

JSON Content

{
    "metric": [
        "sys.cpu.0",
        "sys.cpu.1",
        "illegal!character"
    ],
    "tagk": [
        "host"
    ],
    "tagv": [
        "web01",
        "web02",
        "web03"
    ]
}

Response

The response will contain a map of successful assignments along with the hex encoded UID value. If one or more values were not assigned, a separate map will contain a list of the values and the reason why they were not assigned. Maps with the type name and <type>_errors will be generated only if one or more values for that type were provided.

When all values are assigned, the endpoint returns a 200 status code but if any value failed assignment, it will return a 400.

Example Response

{
    "metric": {},
    "metric_errors": {
        "sys.cpu.0": "Name already exists with UID: 000042",
        "sys.cpu.1": "Name already exists with UID: 000043",
        "illegal!character": "Invalid metric (illegal!character): illegal character: !",
    },
    "tagv": {},
    "tagk_errors": {
        "host": "Name already exists with UID: 0007E5"
    },
    "tagk": {
        "web01": "000012",
        "web02": "000013",
        "web03": "000014"
    }
}