MFS - Map File Service Development Guide

Current MFS version: 1.2.0

The Map File Service provides a service to list, view, create, and modify mapfiles as well as a service to get, create, and delete supporting files.

Requests available for each version:

1.0.0: GetMapFile, PutMapFile, ListMapFiles (list by app key)
1.1.0: GetMapFile, PutMapFile, ListMapFiles (list by app key, list by project, list by mapfile), GetFile
1.2.0: GetMapFile, PutMapFile, ListMapFiles (list by app key, list by project, list by mapfile) , GetFile, PutFile, DeleteFile

File types supported for GetFile, DeleteFile, and PutFile:

jpg, png, svg, ttf, font, sym, js

MFS ListMapFiles request by appkey

An operation which lists all map files available on the server in a metadata document for a specific AppKey.

Required parameters:

service: name of Maptimus 2 service to which a request will be made (MFS)
request: name of Maptimus 2 request operation (ListMapFiles)
version: protocol (MFS) version number (1.0.0, 1.1.0, 1.2.0)

URL example:

https://maptimus.certusview.com/api/v2/mapfile?service=mfs&version=1.1.0&request=ListMapFiles

Output example :

{
    "response": "success",
    "message": [
        {
            "project": "tests",
            "id": 2,
            "map_name": "osm-tests-wfs",
            "map_description": "OSM map test",
            "service_id": 7,
            "enabled_flag": true,
            "create_user": "DB0400",
            "create_timestamp": "2021-04-13T09:41:00",
            "last_update_user": "unit-test",
            "last_update_timestamp": "2021-08-20T10:11:27",
            "map_project_id": 1,
            "map_editable": false,
            "app_enabled": true,
            "support_files": [
                {
                    "ms_errorfile": "osm-tests-wfs.log",
                    "fontset": {},
                    "symbolset": {},
                    "headers": null,
                    "templates": null,
                    "footers": null
                }
            ]
        },
           ...
        {
            "project": "attca",
            "id": 371,
            "map_name": "attca-plant",
            "map_description": "ATT plant map for WMTS",
            "service_id": 7,
            "enabled_flag": true,
            "create_user": "DB0400",
            "create_timestamp": "2022-09-26T16:39:40",
            "last_update_user": "DB0400",
            "last_update_timestamp": "2022-09-26T16:39:40",
            "map_project_id": 8,
            "map_editable": true,
            "app_enabled": true,
            "support_files": [
                {
                    "ms_errorfile": null,
                    "fontset": null,
                    "symbolset": null,
                    "headers": null,
                    "templates": null,
                    "footers": null
                }
            ]
        },
        {
            "project": "demo",
            "id": 372,
            "map_name": "dannys-changed-map",
            "map_description": "This is a test map updated",
            "service_id": 7,
            "enabled_flag": true,
            "create_user": "DB0095",
            "create_timestamp": "2022-10-05T12:56:16",
            "last_update_user": "DB0095",
            "last_update_timestamp": "2022-10-05T13:01:30",
            "map_project_id": 12,
            "map_editable": null,
            "app_enabled": true,
            "support_files": [
                {
                    "ms_errorfile": null,
                    "fontset": null,
                    "symbolset": null,
                    "headers": null,
                    "templates": null,
                    "footers": null
                }
            ]
        },
        {
            "project": "tests",
            "id": 373,
            "map_name": "my-new-map-testing1",
            "map_description": "This is a new test map for QA",
            "service_id": 7,
            "enabled_flag": true,
            "create_user": "DB0400",
            "create_timestamp": "2022-10-10T13:50:58",
            "last_update_user": "DB0400",
            "last_update_timestamp": "2022-10-10T13:50:58",
            "map_project_id": 1,
            "map_editable": null,
            "app_enabled": true,
            "support_files": [
                {
                    "ms_errorfile": null,
                    "fontset": null,
                    "symbolset": null,
                    "headers": null,
                    "templates": null,
                    "footers": null
                }
            ]
        },
        {
            "project": "pge",
            "id": 376,
            "map_name": "pge-plant-wms",
            "map_description": "PGE Plant map",
            "service_id": 7,
            "enabled_flag": true,
            "create_user": "DB0400",
            "create_timestamp": "2022-10-15T00:01:37",
            "last_update_user": "DB0400",
            "last_update_timestamp": "2022-10-15T00:01:37",
            "map_project_id": 15,
            "map_editable": null,
            "app_enabled": true,
            "support_files": [
                {
                    "ms_errorfile": null,
                    "fontset": null,
                    "symbolset": null,
                    "headers": null,
                    "templates": null,
                    "footers": null
                }
            ]
        }
    ]
}

MFS ListMapFiles request by project

An operation which lists all map files available on the server in a metadata document for a specific AppKey.

Required parameters:

service: name of Maptimus 2 service to which a request will be made (MFS)
request: name of Maptimus 2 request operation (ListMapFiles)
version: protocol (MFS) version number (1.1.0)
project: name of directory where mapfile exists

URL example:

https://maptimus.certusview.com/api/v2/mapfile?service=mfs&version=1.1.0&request=ListMapFiles&project=tests

Output example :

{
    "response": "success",
    "message": [
        {
            "project": "tests",
            "mapfile": "test-stringify.map",
            "supporting files": {
                "ms_errorfile": null,
                "fontset": {},
                "symbolset": {},
                "headers": null,
                "templates": null,
                "footers": null
            }
        },
        {
            "project": "tests",
            "mapfile": "map-test-edit-name.map",
            "supporting files": {
                "ms_errorfile": "osm-tests-wms.log",
                "fontset": "/img/shared/shared.font",
                "symbolset": "/img/shared/shared.sym",
                "headers": null,
                "templates": [
                    "osm-tests-wms.html"
                ],
                "footers": null
            }
        },
        {
            "project": "tests",
            "mapfile": "osm-tests-wfs.map",
            "supporting files": {
                "ms_errorfile": "osm-tests-wfs.log",
                "fontset": {},
                "symbolset": {},
                "headers": null,
                "templates": null,
                "footers": null
            }
        },

        ...

        {
            "project": "tests",
            "mapfile": "osm-tests-wms.map",
            "supporting files": {
                "ms_errorfile": "osm-tests-wms.log",
                "fontset": "/img/shared/shared.font",
                "symbolset": "/img/shared/shared.sym",
                "headers": null,
                "templates": [
                    "osm-tests-wms.html"
                ],
                "footers": null
            }
        }
    ]
}

MFS ListMapFiles request by mapfile

An operation which lists all map files available on the server in a metadata document for a specific AppKey.

Required parameters:

service: name of Maptimus 2 service to which a request will be made (MFS)
request: name of Maptimus 2 request operation (ListMapFiles)
version: protocol (MFS) version number (1.1.0)
project: name of directory where mapfile exists
map: name of mapfile to be used in request

URL example:

https://maptimus.certusview.com/api/v2/mapfile?service=mfs&version=1.1.0&request=ListMapFiles&map=osm-tests-wms&project=tests

Output example :

{
    "response": "success",
    "message": {
        "mapfile": "osm-tests-wms.map",
        "supporting files": {
            "ms_errorfile": "osm-tests-wms.log",
            "fontset": "/img/shared/shared.font",
            "symbolset": "/img/shared/shared.sym",
            "headers": null,
            "templates": [
                "osm-tests-wms.html"
            ],
            "footers": null
        }
    }
}

MFS GetMapFile request

An operation which returns the map file as text

The following formats can be an output of the GetMap request:
Plain Text: format=text/plain (this is default)
JSON: format=application/json

Required parameters:

project: name of directory where mapfile exists
map: name of mapfile to be used in request
service: name of Maptimus 2 service to which a request will be made (MFS)
request: name of Maptimus 2 request operation (GetMapFile)
version: Maptimus 2 service (MFS) version number (1.0.0)

Optional parameters:

format: output format of the response to a GetMapFile operation

URL example:

```url
https://maptimus.certusview.com/api/v2/mapfile?service=mfs&version=1.0.0&request=GetMapFile&project=tests&map=osm-tests-wms&format=text/plain

#### Output example :   

```text  
MAP
    NAME "OSM_Basemap"
    STATUS ON
    SIZE 256 256
    SYMBOLSET "/img/shared/symbols/test.sym"

...

                WIDTH 2
            END # STYLE
        END # CLASS
    END # LAYER
END # MAP

MFS PutMapFile request

An operation which creates a new map or edits an existing map file on the server

Required parameters:

project: name of directory where mapfile exists
map: name of mapfile to be used in request
service: name of Maptimus 2 service to which a request will be made (MFS)
request: name of Maptimus 2 request operation (PutMapFile)
version: Maptimus 2 service (MFS) version number (1.0.0)

URL example for creating a new mapfile:

https://maptimus.certusview.com/api/v2/mapfile?service=mfs&version=1.0.0&request=PutMapFile&project=tests&map=map-test1

Output example for creating a new mapfile:

{
  "response": "success", 
  "message": "New map file map-test1 created in tests project"
}

URL example for editing an existing mapfile:

https://maptimus.certusview.com/api/v2/mapfile?service=mfs&version=1.0.0&request=PutMapFile&project=tests&map=map-test-edit-name&newmapname=map-test-edit-name2  

Output example for editing an existing mapfile:

{
  "response": "success", 
  "message": "Map file map-test-edit-name was edited"
}

MFS ValidateMap request

An operation which returns validation errors from a mapfile

The following formats can be an output of the ValidateMap request:
JSON: format=application/json

Required parameters:

service: name of Maptimus 2 service to which a request will be made (MFS)
request: name of Maptimus 2 request operation (ValidateMap)
version: Maptimus 2 service (MFS) version number (1.1.0)

Required body (example mapfile contents in raw body):

MAP
    NAME "OSM_Basemap"
    STATUS ON
    SIZE 256 256
    SYMBOLSET "/img/shared/symbols/test.sym"

...

                WIDTH 2
            END # STYLE
        END # CLASS
    END # LAYER
END # MAP

Output example for a successful map validation:

{
    "response": "success",
    "validation_errors": []
}

Output example for a map validation with errors:

{
    "response": "success",
    "validation_errors": [
        {
            "error": "'linex' is not one of ['chart', 'circle', 'line', 'point', 'polygon', 'raster', 'query', 'annotation']",
            "message": "ERROR: Invalid value in TYPE"
        }
    ]
}

MFS GetFile request

An operation which returns the file as either binary data or human-readable data

Required parameters:

project: name of directory where file exists
file: name of file to be used in request
service: name of Maptimus 2 service to which a request will be made (MFS)
request: name of Maptimus 2 request operation (GetFile)
version: Maptimus 2 service (MFS) version number (1.1.0)

URL example:

```url
https://maptimus.certusview.com/api/v2/api/v2/mapfile?service=mfs&version=1.1.0&request=GetFile&project=tests&file=test.png

___

### MFS PutFile request  
An operation which creates a new file on the server  

#### Required parameters:

**project:** name of directory where file will be created
**service:** name of Maptimus 2 service to which a request will be made (MFS)   
**request:** name of Maptimus 2 request operation (PutFile)  
**version:** Maptimus 2 service (MFS) version number (1.2.0)

**Body:**

Use form-data, with **file** as the key and select valid file in **Select Files**


#### URL example for creating a new file:    

```url
https://maptimus.certusview.com/api/v2/mapfile?service=mfs&version=1.2.0&request=PutFile&project=tests

Body example for creating a new file:

form-data:
file (Key)
test.jpg (Value)

MFS DeleteFile request

An operation which deletes a file on the server

Required parameters:

project: name of directory where file will be deleted
service: name of Maptimus 2 service to which a request will be made (MFS)
request: name of Maptimus 2 request operation (DeleteFile)
version: Maptimus 2 service (MFS) version number (1.2.0)

URL example for deleting a new file:

https://maptimus.certusview.com/api/v2/mapfile?service=mfs&version=1.2.0&request=DeleteFile&project=tests&file=test.sym