record

Set or change metadata and/or status-bits of a record

Set or change metadata and/or status-bits of a record.

Data is sent as json in the BODY of the request.

  • metadatas is an array of simple “actions” that are applied in the same order as defined into json.
  • field can be specified by meta_struct_id or by name
  • field value (when relevant) can be specified by meta_id or by actual value
  • method to match a value can be (strict | ignore-case | regexp); default is “ignore-case”
  • to act on multi-values we must set an “action” (set | add | delete | replace); default is “set”
  • default action “set” and special value (null, arrays) allow to write simplified actions
  • the “replace” action is useful to set/add values only if a value already exists

Body examples :

mono-valued fields

set a mono-value field by its meta_struct_id

{
    "metadatas": [
        {
            "meta_struct_id": 1,
            "action": "set",
            "value": "A pretty string"
        }
    ]
}

same thing (because default action is “set”), by field name

{
    "metadatas": [
        {
            "field_name": "Author",
            "value": "John Doe"
        }
    ]
}

delete a mono-valued field

{
    "metadatas": [
        {
            "field_name": "Copyright",
            "action": "delete"
        }
    ]
}

same thing

{
    "metadatas": [
        {
            "field_name": "Copyright",
            "value": null
        }
    ]
}

multi-valued

replace a keyword if we know its meta-id

{
    "metadatas": [
        {
            "field_name": "Keywords",
            "meta_id": 678,
            "value": "Dog"
        }
    ]
}

delete a specific keyword by its meta-id (we could also set action : “delete”, omit value, …)

{
    "metadatas": [
        {
            "field_name": "Keywords",
            "meta_id": 345,
            "value": null
        }
    ]
}

delete a specific keyword by its value. Since we must pass the value (not null), we must set the action “delete”

nb : the default matching method is “ignore-case” so we can write the actual value all small letters

{
    "metadatas": [
        {
            "field_name": "Keywords",
            "action": "delete",
            "value": "doggy"
        }
    ]
}

delete all Keywords

{
    "metadatas": [
        {
            "field_name": "Keywords",
            "value": null
        }
    ]
}

add a keyword

{
    "metadatas": [
        {
            "field_name": "Keywords",
            "action": "add",
            "value": "Cat"
        }
    ]
}

replace all keywords by new ones

{
    "metadatas": [
        {
            "field_name": "Keywords",
            "value": null
        },
        {
            "field_name": "Keywords",
            "action": "add",
            "value": "Cat"
        },
        {
            "field_name": "Keywords",
            "action": "add",
            "value": "Dog"
        }
    ]
}

same thing using an array

{
    "metadatas": [
        {
            "field_name": "Keywords",
            "value": [
                    "Dog",
                    "Cat",
            ]
        }
    ]
}

simplification of multiple same actions with arrays as value

{
    "metadatas": [
        {
            "field_name": "Keywords",
            "action": "delete",
            "value": [
                    "cop",
                    "bobby",
                    "pig",
                    "nicks"
            ]
        },
        {
            "field_name": "Keywords",
            "action": "add",
            "value": [
                    "Policeman",
                    "Arrest"
            ]
        }
    ]
}

replacing a keyword by value can be 2 actions if we know that the bad value exists…

{
    "metadatas": [
        {
            "field_name": "Keywords",
            "action": "delete",
            "value": "cop"
        },
        {
            "field_name": "Keywords",
            "action": "add",
            "value": "Policeman"
        }
    ]
}

replace-if-exists

…but we can also use the “replace” action if we are not sure

{
    "metadatas": [
        {
            "field_name": "Keywords",
            "action": "replace",
            "value": "cop",
            "replace_with": "Policeman"
        }
    ]
}

fix spelling errors with regexp

{
    "metadatas": [
        {
            "field_name": "Persons",
            "action": "replace",
            "match_method": "regexp",
            "value": "/joh?nn?[i|y]\w+hall?[i|y]day/\w+in\w([0-9]{4})/i",
            "replace_with": "Johnny Halliday in $1"
        }
    ]
}

add translations for existing keywords (using “replace”)

nb : multi-values are kept unique so double replacement is not a pb.

{
    "metadatas": [
        {
            "field_name": "Keywords",
            "action": "replace",
            "value": "dog",
            "replace_with": [
                    "Dog",
                    "Chien"
            ]
        },
        {
            "field_name": "Keywords",
            "action": "replace",
            "value": "chien",
            "replace_with": [
                    "Dog",
                    "Chien"
            ]
        }
    ]
}

same thing using regexp

{
    "metadatas": [
        {
            "field_name": "Keywords",
            "action": "replace",
            "value": "/cop|bobby|pig|flic/i",
            "match_method": "regexp",
            "replace_with": [
                    "Policeman",
                    "Policier"
            ]
        }
    ]
}

Status-bits

sb can be changed with the same api.

To not get confused with "names", sb are referenced by bit number only 4…31

{
    "metadatas": [
            ...
    ],
    "status": [
        {
            "bit": 4,
            "state": true
        },
        {
            "bit": 5,
            "state": false
        },
        {
            "bit": 6,
            "state": false
        },
        {
            "bit": 7,
            "state": false
        }
    ]
}
patch/records/{sbas_id}/{record_id}

Path parameters

sbas_idID required— unresolved $ref

ID of the databox

record_idID required— unresolved $ref

ID of the record

Request body

RecordPatch required— unresolved $ref

Response

ok

ApiResponseRecord required— unresolved $ref

Changes