Documentation Documentation

API Definitions

Get List of APIs

Property Description
Resource URL /api/apis/
Method GET
Type None
Body None
Param None

Sample Request

    GET /api/apis?p=0 HTTP/1.1
    Host: localhost:3000
    authorization: 7a7b140f-2480-4d5a-4e78-24049e3ba7f8

Sample Response

    {
        "apis": [
            {
                "api_model": {},
                "api_definition": {
                    "id": "54b53e47eba6db5c70000002",
                    "name": "Nitrous Test",
                    "api_id": "39d2c98be05c424371c600bd8b3e2242",
                    "org_id": "54b53d3aeba6db5c35000002",
                    "use_keyless": false,
                    "use_oauth2": false,
                    "oauth_meta": {
                        "allowed_access_types": [],
                        "allowed_authorize_types": [
                            "token"
                        ],
                        "auth_login_redirect": ""
                    },
                    "auth": {
                        "auth_header_name": "authorization"
                    },
                    "use_basic_auth": false,
                    "notifications": {
                        "shared_secret": "",
                        "oauth_on_keychange_url": ""
                    },
                    "enable_signature_checking": false,
                    "definition": {
                        "location": "header",
                        "key": ""
                    },
                    "version_data": {
                        "not_versioned": true,
                        "versions": {
                            "Default": {
                                "name": "Default",
                                "expires": "",
                                "paths": {
                                    "ignored": [],
                                    "white_list": [],
                                    "black_list": []
                                },
                                "use_extended_paths": false,
                                "extended_paths": {
                                    "ignored": [],
                                    "white_list": [],
                                    "black_list": []
                                }
                            }
                        }
                    },
                    "proxy": {
                        "listen_path": "/39d2c98be05c424371c600bd8b3e2242/",
                        "target_url": "http://tyk.io",
                        "strip_listen_path": true
                    },
                    "custom_middleware": {
                        "pre": null,
                        "post": null
                    },
                    "session_lifetime": 0,
                    "active": true,
                    "auth_provider": {
                        "name": "",
                        "storage_engine": "",
                        "meta": null
                    },
                    "session_provider": {
                        "name": "",
                        "storage_engine": "",
                        "meta": null
                    },
                    "event_handlers": {
                        "events": {}
                    },
                    "enable_batch_request_support": false,
                    "enable_ip_whitelisting": false,
                    "allowed_ips": [],
                    "expire_analytics_after": 0
                },
                "hook_references": []
            }
            ...
        ],
        "pages": 0
    }

Retrieve a single API by ID

Property Description
Resource URL /api/apis/{id}
Method GET
Type None
Body None
Param None

Sample request

    GET /api/apis/54c24242eba6db1c9a000002 HTTP/1.1
    Host: localhost
    authorization: 7a7b140f-2480-4d5a-4e78-24049e3ba7f8

Sample Response

    {
        "api_model": {},
        "api_definition": {
            "id": "54c24242eba6db1c9a000002",
            "name": "Test",
            "api_id": "bc2f8cfb7ab241504d9f3574fe407499",
            "org_id": "54b53d3aeba6db5c35000002",
            "use_keyless": false,
            "use_oauth2": false,
            "oauth_meta": {
                "allowed_access_types": [],
                "allowed_authorize_types": [
                    "token"
                ],
                "auth_login_redirect": ""
            },
            "auth": {
                "auth_header_name": "authorization"
            },
            "use_basic_auth": false,
            "notifications": {
                "shared_secret": "",
                "oauth_on_keychange_url": ""
            },
            "enable_signature_checking": false,
            "definition": {
                "location": "header",
                "key": ""
            },
            "version_data": {
                "not_versioned": true,
                "versions": {
                    "Default": {
                        "name": "Default",
                        "expires": "",
                        "paths": {
                            "ignored": [],
                            "white_list": [],
                            "black_list": []
                        },
                        "use_extended_paths": true,
                        "extended_paths": {
                            "ignored": [
                                {
                                    "path": "/test-path/",
                                    "method_actions": {
                                        "GET": {
                                            "action": "no_action",
                                            "code": 200,
                                            "data": "",
                                            "headers": {}
                                        }
                                    }
                                },
                                {
                                    "path": "/test-path/reply",
                                    "method_actions": {
                                        "GET": {
                                            "action": "reply",
                                            "code": 200,
                                            "data": "{"foo": "bar"}",
                                            "headers": {
                                                "x-test": "test"
                                            }
                                        }
                                    }
                                }
                            ],
                            "white_list": [],
                            "black_list": []
                        }
                    }
                }
            },
            "proxy": {
                "listen_path": "/bc2f8cfb7ab241504d9f3574fe407499/",
                "target_url": "http://httpbin.org/",
                "strip_listen_path": true
            },
            "custom_middleware": {
                "pre": [],
                "post": []
            },
            "session_lifetime": 0,
            "active": true,
            "auth_provider": {
                "name": "",
                "storage_engine": "",
                "meta": null
            },
            "session_provider": {
                "name": "",
                "storage_engine": "",
                "meta": null
            },
            "event_handlers": {
                "events": {
                    "QuotaExceeded": [
                        {
                            "handler_name": "eh_web_hook_handler",
                            "handler_meta": {
                                "_id": "54be6c0beba6db07a6000002",
                                "event_timeout": 60,
                                "header_map": {
                                    "x-tyk-test": "123456"
                                },
                                "method": "POST",
                                "name": "Test Post",
                                "org_id": "54b53d3aeba6db5c35000002",
                                "target_path": "http://httpbin.org/post",
                                "template_path": ""
                            }
                        }
                    ]
                }
            },
            "enable_batch_request_support": true,
            "enable_ip_whitelisting": true,
            "allowed_ips": [
                "127.0.0.1"
            ],
            "expire_analytics_after": 0
        },
        "hook_references": [
            {
                "event_name": "QuotaExceeded",
                "event_timeout": 60,
                "hook": {
                    "api_model": {},
                    "id": "54be6c0beba6db07a6000002",
                    "org_id": "54b53d3aeba6db5c35000002",
                    "name": "Test Post",
                    "method": "POST",
                    "target_path": "http://httpbin.org/post",
                    "template_path": "",
                    "header_map": {
                        "x-tyk-test": "123456"
                    },
                    "event_timeout": 0
                }
            }
        ]
    }

Create API Definition

Creating API definitions is slightly different to the core API, API definitions are wrapped inside an api_definition field and event handlers, such as web hooks are not embedded in the main api_defintion object (though they can be), webhooks are instead appended as references into the hook_references field, the API will embed the correct webhook data into the event handler interface.

Property Description
Resource URL /api/apis/
Method POST
Type None
Body Advanced API Definition
Param None

Sample Request

    POST /api/apis HTTP/1.1
    Host: localhost:3000
    Connection: keep-alive
    Content-Type: application/json
    Content-Length: 1356
    authorization: 7a7b140f-2480-4d5a-4e78-24049e3ba7f8
    
    {
        "api_definition": {
            "name": "Test",
            "auth": {
                "auth_header_name": "authorization"
            },
            "definition": {
                "location": "header",
                "key": ""
            },
            "proxy": {
                "target_url": "http://httpbin.org/"
            },
            "version_data": {
                "use_extended_paths": true,
                "not_versioned": true,
                "versions": {
                    "Default": {
                        "expires": "",
                        "name": "Default",
                        "paths": {
                            "ignored": [],
                            "white_list": [],
                            "black_list": []
                        },
                        "extended_paths": {
                            "ignored": [
                                {
                                    "path": "/test-path/",
                                    "method_actions": {
                                        "GET": {
                                            "action": "no_action",
                                            "code": 200,
                                            "data": "",
                                            "headers": {}
                                        }
                                    }
                                },
                                {
                                    "path": "/test-path/reply",
                                    "method_actions": {
                                        "GET": {
                                            "action": "reply",
                                            "code": 200,
                                            "data": "{"foo": "bar"}",
                                            "headers": {
                                                "x-test": "test"
                                            }
                                        }
                                    }
                                }
                            ],
                            "white_list": [],
                            "black_list": []
                        },
                        "use_extended_paths": true
                    }
                }
            },
            "use_oauth2": false,
            "oauth_meta": {
                "auth_login_redirect": "",
                "allowed_access_types": [],
                "allowed_authorize_types": [
                    "token"
                ]
            },
            "notifications": {
                "shared_secret": "",
                "oauth_on_keychange_url": ""
            },
            "enable_ip_whitelisting": true,
            "allowed_ips": [
                "127.0.0.1"
            ],
            "use_keyless": false,
            "enable_signature_checking": false,
            "use_basic_auth": false,
            "active": true,
            "enable_batch_request_support": true
        },
        "hook_references": [
            {
                "event_name": "QuotaExceeded",
                "hook": {
                    "api_model": {},
                    "id": "54be6c0beba6db07a6000002",
                    "org_id": "54b53d3aeba6db5c35000002",
                    "name": "Test Post",
                    "method": "POST",
                    "target_path": "http://httpbin.org/post",
                    "template_path": "",
                    "header_map": {
                        "x-tyk-test": "123456"
                    },
                    "event_timeout": 0
                },
                "event_timeout": 60
            }
        ]
    }

Sample Response

    {
        "Status": "OK",
        "Message": "API created",
        "Meta": "54c24242eba6db1c9a000002"
    }

Please note that Tyk matches the Ignored paths in the order in which they are specified in the ignored array. Subpaths of a route are matched automatically and so should be placed above parent routes if they need to be matched individually.

Update API Definition

APIs that are created using the advanced Dashboard API are referenced by their internal ID instead of their API-ID.

Property Description
Resource URL /api/apis/{internal_id}
Method PUT
Type None
Body Advanced API Definition
Param None

Sample Request

    PUT /api/apis/54c24242eba6db1c9a000002 HTTP/1.1
    Host: localhost:3000
    Connection: keep-alive
    Content-Type: application/json
    Content-Length: 1356
    authorization: 7a7b140f-2480-4d5a-4e78-24049e3ba7f8
    
    {
        "api_definition": {
            "id": "54c24242eba6db1c9a000002",
            "api_id": "bc2f8cfb7ab241504d9f3574fe407499",
            "name": "Test",
            "auth": {
                "auth_header_name": "authorization"
            },
            "definition": {
                "location": "header",
                "key": ""
            },
            "proxy": {
                "target_url": "http://httpbin.org/"
            },
            "version_data": {
                "use_extended_paths": true,
                "not_versioned": true,
                "versions": {
                    "Default": {
                        "expires": "",
                        "name": "Default",
                        "paths": {
                            "ignored": [],
                            "white_list": [],
                            "black_list": []
                        },
                        "extended_paths": {
                            "ignored": [
                                {
                                    "path": "/test-path/",
                                    "method_actions": {
                                        "GET": {
                                            "action": "no_action",
                                            "code": 200,
                                            "data": "",
                                            "headers": {}
                                        }
                                    }
                                },
                                {
                                    "path": "/test-path/reply",
                                    "method_actions": {
                                        "GET": {
                                            "action": "reply",
                                            "code": 200,
                                            "data": "{"foo": "bar"}",
                                            "headers": {
                                                "x-test": "test"
                                            }
                                        }
                                    }
                                }
                            ],
                            "white_list": [],
                            "black_list": []
                        },
                        "use_extended_paths": true
                    }
                }
            },
            "use_oauth2": false,
            "oauth_meta": {
                "auth_login_redirect": "",
                "allowed_access_types": [],
                "allowed_authorize_types": [
                    "token"
                ]
            },
            "notifications": {
                "shared_secret": "",
                "oauth_on_keychange_url": ""
            },
            "enable_ip_whitelisting": true,
            "allowed_ips": [
                "127.0.0.1"
            ],
            "use_keyless": false,
            "enable_signature_checking": false,
            "use_basic_auth": false,
            "active": true,
            "enable_batch_request_support": true
        },
        "hook_references": [
            {
                "event_name": "QuotaExceeded",
                "hook": {
                    "api_model": {},
                    "id": "54be6c0beba6db07a6000002",
                    "org_id": "54b53d3aeba6db5c35000002",
                    "name": "Test Post",
                    "method": "POST",
                    "target_path": "http://httpbin.org/post",
                    "template_path": "",
                    "header_map": {
                        "x-tyk-test": "123456"
                    },
                    "event_timeout": 0
                },
                "event_timeout": 60
            }
        ]
    }

Sample Response

    {
        "Status": "OK",
        "Message": "Api updated",
        "Meta": ""
    }