diff --git a/datastore/common/models/catalog.json b/datastore/common/models/catalog.json index 8886983..b2f9a7b 100644 --- a/datastore/common/models/catalog.json +++ b/datastore/common/models/catalog.json @@ -26,6 +26,7 @@ "title": "string" }, "sandbox": "boolean", + "space-enabled": "boolean", "title": "string", "url": "string", "snapshot-id": { @@ -36,4 +37,4 @@ "relations": {}, "acls": [], "methods": {} -} \ No newline at end of file +} diff --git a/datastore/common/models/optimizedData.js b/datastore/common/models/optimizedData.js index f1df9f2..b4ca229 100644 --- a/datastore/common/models/optimizedData.js +++ b/datastore/common/models/optimizedData.js @@ -143,6 +143,7 @@ function ripCTX(ctx) { ctx.instance['plan-registration'].apis = []; // old list, wipe it locals.product = ctx.instance['plan-registration'].product; locals.plan = {}; + locals.spaces = ctx.instance['plan-registration'].spaces || []; if (ctx.instance['plan-registration'].plan) { locals.plan.name = ctx.instance['plan-registration'].plan.name; @@ -392,6 +393,11 @@ function createOptimizedDataEntry(app, pieces, isWildcard, cb) { var createTestApp = pieces.catalog['test-app-enabled'] && pieces.catalog['test-app-credentials'] && pieces.catalog.sandbox; + var spaceEnabled = pieces.catalog['space-enabled']; + var regSpaceId = []; + if (spaceEnabled && pieces.spaces && pieces.spaces.length) { + regSpaceId = pieces.spaces.map(function(space) { return space.id; }); + } async.each( pieces.application.credentials, @@ -406,6 +412,10 @@ function createOptimizedDataEntry(app, pieces, isWildcard, cb) { var apiNameVer = apiName + ':' + apiVersion; var apiId = api.id; logger.debug('apiNameVer:', apiNameVer, ' apiId:', apiId); + var spaceId = regSpaceId; + if (spaceEnabled && spaceId.length === 0 && api.spaces && api.spaces.length) { + spaceId = api.spaces.map(function(space) { return space.id; }); + } // Find the named property (in the plan) for this API var apiProperty; @@ -602,6 +612,7 @@ function createOptimizedDataEntry(app, pieces, isWildcard, cb) { 'catalog-name': 'string', 'organization-id': 'string', 'organization-name': 'string', + 'space-id': [], 'product-id': 'string', 'product-name': 'string', 'plan-id': 'string', @@ -654,6 +665,7 @@ function createOptimizedDataEntry(app, pieces, isWildcard, cb) { 'catalog-name': pieces.catalog.name, 'organization-id': pieces.org.id, 'organization-name': pieces.org.name, + 'space-id': spaceId, 'api-id': api.id, 'api-document': api['document-wo-assembly'], 'api-document-resolved': api['document-resolved'], diff --git a/datastore/common/models/optimizedData.json b/datastore/common/models/optimizedData.json index 63ace4d..e153ffe 100644 --- a/datastore/common/models/optimizedData.json +++ b/datastore/common/models/optimizedData.json @@ -18,6 +18,7 @@ "catalog-name": "string", "organization-id": "string", "organization-name": "string", + "space-id": [], "product-id": "string", "product-name": "string", "plan-id": "string", diff --git a/datastore/common/models/subscription.json b/datastore/common/models/subscription.json index c4c1bab..076c20f 100644 --- a/datastore/common/models/subscription.json +++ b/datastore/common/models/subscription.json @@ -43,6 +43,14 @@ "id": { "type": "string" }, + "spaces": [ + { + "id": "string", + "name": "string", + "description": "string", + "title": "string" + } + ], "organization": { "id": "string", "name": "string", @@ -121,4 +129,4 @@ "relations": {}, "acls": [], "methods": {} -} \ No newline at end of file +} diff --git a/lib/analytics.js b/lib/analytics.js index bd9c17d..3debbbf 100644 --- a/lib/analytics.js +++ b/lib/analytics.js @@ -89,6 +89,7 @@ function processActivity(req, res, duration, opts) { "requestBody" : "", "source" : "9.20.85.122", "orgId" : "542016d6e4b0f87216fdc806", + "spaceId" : [], "timeToServeRequest" : 2989, "requestHttpHeaders" : [], "planId" : "54201a9de4b0f87216fdc8d3", @@ -139,6 +140,7 @@ function buildApiEvent(req, res, duration) { bytesReceived: req.socket.bytesRead ? req.socket.bytesRead : req.socket._bytesRead, apiVersion: ctx.get('api.version'), orgId: ctx.get('api.org.id') || '', + spaceId: ctx.get('_apis.spaceId') || [], envId: process.env[env.APIMANAGER_CATALOG] || '', apiId: ctx.get('_.api.id') || '', appId: ctx.get('client.app.id') || '', diff --git a/lib/security-check/index.js b/lib/security-check/index.js index 5e940ec..35da3af 100644 --- a/lib/security-check/index.js +++ b/lib/security-check/index.js @@ -235,6 +235,7 @@ function buildPreflowContext(EntryMatch, PathMatch, MethodMatch) { rateLimits: MethodMatch['observed-rate-limit'], rateLimitScope: MethodMatch['rate-limit-scope'], testAppEnabled: EntryMatch['test-app-enabled'], + spaceId: EntryMatch['space-id'], isPreflight: MethodMatch.isPreflight }; return context; diff --git a/test/definitions/spaces/cert.pem b/test/definitions/spaces/cert.pem new file mode 100644 index 0000000..efc5bba --- /dev/null +++ b/test/definitions/spaces/cert.pem @@ -0,0 +1,18 @@ +-----BEGIN CERTIFICATE----- +MIIC2jCCAkOgAwIBAgIEXAWA7zANBgkqhkiG9w0BAQUFADBSMQswCQYDVQQGEwJV +UzELMAkGA1UECBMCTUExEjAQBgNVBAcTCUNhbWJyaWRnZTESMBAGA1UEChMJRGF0 +YVBvd2VyMQ4wDAYDVQQDEwVBbGljZTAeFw0wNjA5MjgwMTI1MDZaFw0xNjA5MjUw +MTI1MDZaMFIxCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJNQTESMBAGA1UEBxMJQ2Ft +YnJpZGdlMRIwEAYDVQQKEwlEYXRhUG93ZXIxDjAMBgNVBAMTBUFsaWNlMIGfMA0G +CSqGSIb3DQEBAQUAA4GNADCBiQKBgQDhfHY/tcY2U74oRyXb8Y/o08HnAMiG55Ey +M0Qad/GVnlIpKndZPnGaYPMB7nA2J3Y/fOtKi3rQClqPMM+Wd54lYG37TwjHde67 +YT2TjYncpKOrgScl9GAYyXGcMB/nBERFo0LIiWTQp1gHokCtglxdHqfAJWg7mC08 +NeNDvv/xyQIDAQABo4G8MIG5MAwGA1UdEwQFMAMBAf8wHQYDVR0OBBYEFMERS5af +Hx/fIu1OqYpyJ4SDWhUEMH0GA1UdIwR2MHSAFMERS5afHx/fIu1OqYpyJ4SDWhUE +oVakVDBSMQswCQYDVQQGEwJVUzELMAkGA1UECBMCTUExEjAQBgNVBAcTCUNhbWJy +aWRnZTESMBAGA1UEChMJRGF0YVBvd2VyMQ4wDAYDVQQDEwVBbGljZYIEXAWA7zAL +BgNVHQ8EBAMCArwwDQYJKoZIhvcNAQEFBQADgYEAjA+44l1rYsQl9uIyKQz4+xJ5 +YR3aiuPonmI8PfDTpc/e9jYZJFYKWgEI6/o1gZ61Fnr85QbJQSE4f7xptcuIaBU9 +gkgg6/vBW8AmbNFHMMg3W60cImp8NvCO70AHymkGNidJVg4h4zwjs562JdiHUDP1 +ygBCd5ZBhwEHKNs26nY= +-----END CERTIFICATE----- diff --git a/test/definitions/spaces/key.pem b/test/definitions/spaces/key.pem new file mode 100644 index 0000000..68db350 --- /dev/null +++ b/test/definitions/spaces/key.pem @@ -0,0 +1,15 @@ +-----BEGIN RSA PRIVATE KEY----- +MIICXQIBAAKBgQDhfHY/tcY2U74oRyXb8Y/o08HnAMiG55EyM0Qad/GVnlIpKndZ +PnGaYPMB7nA2J3Y/fOtKi3rQClqPMM+Wd54lYG37TwjHde67YT2TjYncpKOrgScl +9GAYyXGcMB/nBERFo0LIiWTQp1gHokCtglxdHqfAJWg7mC08NeNDvv/xyQIDAQAB +AoGBAK8zsAWszchkpTpSnf4Z4gG8l8tP9n+r6kuhPed7DwF8NMa7smRreoXDks4L +YLETVHPcMk6HtfN0OA1Old2KMBvRRUIreAqorngSOvVQ14ZAG7wAmVmNNoroHZ1b +uuAVEF8wl4RI8T5Y8RxWdLAr77npJ2cZnKMaeI3KVCA03ISpAkEA8Ne9R7HTGib7 +osSwTVq+gnxeRlphdbqqdTRDy+jU0QNT/NYaCbYqvxBLyCasjSVQ+ko9EtKe8E3/ +tng//Mt14wJBAO+tT3MajlIkba9a4IRR3vZV7y/5bebXa/un8lxZ69edJK6vlJsa +fLZ2YXQK1AVQHUK2p52uVSRUWdUk10rQKWMCQQDLEXyc6MjP8jKVyTXF409igi6T +Lz2hoGR9MjY/xe861I2KT5PgwGJGex0Kg+FVmTMv9kyMhF5Sy9FiLv30zjB1AkBB +udEzy3CD7iF2GQHAx4LRIre4/Dm7OBAQrvmzgaU/N4S7ssKZ1iWlE8mdvOpvmoyr +otNMVmZa1BbecH/psDPpAkAo96tZAIQggfphaNEIfK32MHcRQBornvLG5LgScsN6 +LJ6MFF4HkmArnVI4LOHm/ijvQUmUuT647Sr/1c6lXK2w +-----END RSA PRIVATE KEY----- diff --git a/test/definitions/spaces/v1/catalogs/564b48aae4b0869c782edc2b/apis b/test/definitions/spaces/v1/catalogs/564b48aae4b0869c782edc2b/apis new file mode 100644 index 0000000..f8e848d --- /dev/null +++ b/test/definitions/spaces/v1/catalogs/564b48aae4b0869c782edc2b/apis @@ -0,0 +1,609 @@ +[ + { + "catalog": { + "default": false, + "id": "564b48aae4b0869c782edc2b", + "name": "sb", + "sandbox": true, + "title": "Sandbox", + "url": "https://sjsldev249.dev.ciondemand.com/v1/catalogs/564b48aae4b0869c782edc2b" + }, + "document": { + "info": { + "version": "1.0.0", + "title": "invoke", + "x-ibm-name": "invoke" + }, + "securityDefinitions": null, + "basePath": "/invoke", + "swagger": "2.0", + "schemes": [ + "http" + ], + "paths": { + "/basic": { + "post": { + "responses": { + "200": { + "description": "200 OK" + } + } + }, + "get": { + "responses": { + "200": { + "description": "200 OK" + } + } + }, + "head": { + "responses": { + "200": { + "description": "200 OK" + } + } + } + }, + "/encode": { + "post": { + "responses": { + "200": { + "description": "200 OK" + } + } + } + }, + "/decode": { + "get": { + "responses": { + "200": { + "description": "200 OK" + } + } + } + }, + "/dynHost": { + "get": { + "responses": { + "200": { + "description": "200 OK" + } + } + } + }, + "/testStatusCode": { + "get": { + "responses": { + "200": { + "description": "200 OK" + } + } + } + }, + "/testTLS": { + "get": { + "responses": { + "200": { + "description": "200 OK" + } + } + } + }, + "/testCompression": { + "post": { + "responses": { + "200": { + "description": "200 OK" + } + } + } + }, + "/useChunks": { + "post": { + "responses": { + "200": { + "description": "200 OK" + } + } + } + }, + "/timeout5Sec": { + "get": { + "responses": { + "200": { + "description": "200 OK" + } + } + } + }, + "/testInput": { + "post": { + "responses": { + "200": { + "description": "200 OK" + } + } + } + }, + "/testOutput": { + "get": { + "responses": { + "200": { + "description": "200 OK" + } + } + } + }, + "/testContentLength": { + "get": { + "responses": { + "200": { + "description": "200 OK" + } + } + } + }, + "/testJSON": { + "get": { + "responses": { + "200": { + "description": "200 OK" + } + } + } + }, + "/ignoreAllErrors": { + "get": { + "responses": { + "200": { + "description": "200 OK" + } + } + } + }, + "/stopOnOperationError": { + "get": { + "responses": { + "200": { + "description": "200 OK" + } + } + } + } + }, + "x-ibm-configuration": { + "assembly": { + "execute": [ + { + "operation-switch": { + "case": [ + { + "operations": [ + { + "path": "/basic", + "verb": "POST" + }, + { + "path": "/basic", + "verb": "HEAD" + }, + { + "path": "/basic", + "verb": "GET" + }, + { + "path": "/encode", + "verb": "POST" + } + ], + "execute": [ + { + "invoke": { + "target-url": "http://localhost:8889/$(request.path)" + } + } + ] + }, + { + "operations": [ + { + "path": "/decode", + "verb": "GET" + } + ], + "execute": [ + { + "invoke": { + "target-url": "http://localhost:8889/form-urlencoded" + } + }, + { + "if": { + "condition": "request.headers['x-test-postflow'] !== 'yes'", + "execute": [ + { + "set-variable": { + "actions": [ + { + "set": "message.body", + "value": "Found the parameter 'baz'=$(message.body.baz) in the message.body" + } + ] + } + } + ] + } + } + ] + }, + { + "operations": [ + { + "path": "/dynHost", + "verb": "GET" + } + ], + "execute": [ + { + "invoke": { + "target-url": "http://$(request.headers.x-test-hostname):8889/$(request.path)" + } + }, + { + "set-variable": { + "actions": [ + { + "set": "message.status.code", + "value": 200 + }, + { + "set": "message.body", + "value": "Overwrite the invoke response" + } + ] + } + } + ] + }, + { + "operations": [ + { + "path": "/testStatusCode", + "verb": "GET" + } + ], + "execute": [ + { + "invoke": { + "target-url": "http://localhost:8889/?status=$(request.headers.x-code)" + } + }, + { + "set-variable": { + "actions": [ + { + "add": "message.headers.x-after-invoke", + "value": "this is the post-invoke header" + } + ] + } + } + ] + }, + { + "operations": [ + { + "path": "/ignoreAllErrors", + "verb": "GET" + } + ], + "execute": [ + { + "invoke": { + "target-url": "http://localhost:8889/?status=$(request.headers.x-code)", + "timeout": 5, + "stop-on-error": [] + } + }, + { + "set-variable": { + "actions": [ + { + "set": "message.body", + "value": "All errors should be ignored, this must be executed after the invoke." + } + ] + } + } + ] + }, + { + "operations": [ + { + "path": "/stopOnOperationError", + "verb": "GET" + } + ], + "execute": [ + { + "invoke": { + "target-url": "http://localhost:8889/?status=$(request.headers.x-code)", + "stop-on-error": [ "SOAPError", "OperationError" ] + } + }, + { + "set-variable": { + "actions": [ + { + "set": "message.body", + "value": "Only non-operationError can reach here!" + } + ] + } + } + ] + }, + { + "operations": [ + { + "path": "/testTLS", + "verb": "POST" + }, + { + "path": "/testTLS", + "verb": "GET" + } + ], + "execute": [ + { + "invoke": { + "target-url": "https://localhost:$(request.headers.x-https-port)/$(request.path)", + "tls-profile": "$(request.headers.x-tls-profile)" + } + } + ] + }, + { + "operations": [ + { + "path": "/testCompression", + "verb": "POST" + } + ], + "execute": [ + { + "set-variable": { + "actions": [ + { + "set": "message.body", + "value": "$(request.headers.x-raw-data)" + } + ] + } + }, + { + "invoke": { + "target-url": "http://localhost:8889/$(request.path)", + "compression": true + } + } + ] + }, + { + "operations": [ + { + "path": "/useChunks", + "verb": "POST" + } + ], + "execute": [ + { + "invoke": { + "target-url": "http://localhost:8889/$(request.path)", + "chunked-upload": true + } + } + ] + }, + { + "operations": [ + { + "path": "/timeout5Sec", + "verb": "GET" + } + ], + "execute": [ + { + "invoke": { + "target-url": "http://localhost:8889/$(request.path)", + "timeout": 5 + } + } + ] + }, + { + "operations": [ + { + "path": "/testInput", + "verb": "POST" + } + ], + "execute": [ + { + "set-variable": { + "actions": [ + { + "set": "foo.bar", + "value": { + "body" : "This is a custom body message for the invoke policy", + "headers" : { + "X-SECRET-MSG1": "test 123", + "X-SECRET-MSG2": "hello amigo" + } + } + } + ] + } + }, + { + "invoke": { + "target-url": "http://localhost:8889/$(request.path)", + "input": "foo.bar" + } + } + ] + }, + { + "operations": [ + { + "path": "/testOutput", + "verb": "GET" + } + ], + "execute": [ + { + "invoke": { + "target-url": "http://localhost:8889/testOutput", + "output": "foo.bar" + } + }, + { + "set-variable": { + "actions": [ + { + "set": "message.body", + "value": "$(foo.bar.body)" + }, + { + "set": "message.headers", + "value": "$(foo.bar.headers)" + }, + { + "set": "message.status.code", + "value": "$(foo.bar.status.code)" + }, + { + "set": "message.status.reason", + "value": "$(foo.bar.status.reason)" + } + ] + } + } + ] + }, + { + "operations": [ + { + "path": "/testContentLength", + "verb": "GET" + } + ], + "execute": [ + { + "invoke": { + "target-url": "http://localhost:8889/noChunks", + "output": "foo" + } + }, + { + "set-variable": { + "actions": [ + { + "set": "message.body", + "value": "This is a very long message, longer than the foo.body. Just to test the mismatch Content-Length" + }, + { + "set": "message.headers", + "value": "$(foo.headers)" + } + ] + } + } + ] + }, + { + "operations": [ + { + "path": "/testJSON", + "verb": "GET" + } + ], + "execute": [ + { + "invoke": { + "target-url": "http://localhost:8889/json", + "output": "foo" + } + }, + { + "set-variable": { + "actions": [ + { + "set": "message.body", + "value": "The quantity is $(foo.body.qty) and the price is $(foo.body.price)" + } + ] + } + } + ] + } + ] + } + } + ], + "catch": [ + { + "errors": [ "OperationError" ], + "execute": [ + { + "set-variable": { + "actions": [ + { + "set": "message.body", + "value": "'$(error.name)' $(error.message) is caught!" + } + ] + } + } + ] + }, + { + "errors": [ "PropertyError" ], + "execute": [ + { + "set-variable": { + "actions": [ + { + "set": "message.body", + "value": "Unexpect '$(error.name)' $(error.message)" + }, + { + "set": "message.status.code", + "value": 299 + } + ] + } + } + ] + } + ] + } + } }, + "id": "564b7b3ae4b0869c782eddae", + "organization": { + "id": "564b48a9e4b0869c782edc24", + "name": "apim", + "title": "Climb On" + }, + "state": "running", + "spaces": [ + { + "id": "57e06e0dd4c6430588e566a6", + "name": "new-space", + "description": "Automatically created space", + "title": "New Space" + } + ], + "url": "https://sjsldev249.dev.ciondemand.com/v1/catalogs/564b48aae4b0869c782edc2b/apis/564b7b3ae4b0869c782eddae" + } +] diff --git a/test/definitions/spaces/v1/catalogs/564b48aae4b0869c782edc2b/products b/test/definitions/spaces/v1/catalogs/564b48aae4b0869c782edc2b/products new file mode 100644 index 0000000..d129e44 --- /dev/null +++ b/test/definitions/spaces/v1/catalogs/564b48aae4b0869c782edc2b/products @@ -0,0 +1,73 @@ +[ + { + "id": "564b7b3ae4b0869c782eddaf", + "url": "https://sjsldev249.dev.ciondemand.com/v1/catalogs/564b48aae4b0869c782edc2b/products/564b7b3ae4b0869c782eddaf", + "state": "published", + "visibility": { + "view": { + "enabled": true, + "type": "public", + "tags": [], + "orgs": [] + }, + "subscribe": { + "enabled": true, + "type": "authenticated", + "tags": [], + "orgs": [] + } + }, + "organization": { + "id": "564b48a9e4b0869c782edc24", + "name": "apim", + "title": "Climb On" + }, + "catalog": { + "id": "564b48aae4b0869c782edc2b", + "url": "https://sjsldev249.dev.ciondemand.com/v1/catalogs/564b48aae4b0869c782edc2b", + "name": "sb", + "title": "Sandbox", + "sandbox": true, + "default": false + }, + "document": { + "product": "1.0.0", + "info": { + "name": "uber", + "title": "Uber Product", + "version": "1.0.0" + }, + "visibility": { + "view": { + "enabled": true, + "type": "public", + "tags": [], + "orgs": [] + }, + "subscribe": { + "enabled": true, + "type": "authenticated", + "tags": [], + "orgs": [] + } + }, + "apis": { + "invoke_1": { + "name": "invoke:1.0.0" + } + }, + "plans": { + "gold": { + "title": "Gold Plan", + "rate-limit": { + "hard-limit": false, + "value": "1/sec" + }, + "apis": { + "invoke_1": {} + } + } + } + } + } +] diff --git a/test/definitions/spaces/v1/catalogs/564b48aae4b0869c782edc2b/registries b/test/definitions/spaces/v1/catalogs/564b48aae4b0869c782edc2b/registries new file mode 100644 index 0000000..fe51488 --- /dev/null +++ b/test/definitions/spaces/v1/catalogs/564b48aae4b0869c782edc2b/registries @@ -0,0 +1 @@ +[] diff --git a/test/definitions/spaces/v1/catalogs/564b48aae4b0869c782edc2b/subscriptions b/test/definitions/spaces/v1/catalogs/564b48aae4b0869c782edc2b/subscriptions new file mode 100644 index 0000000..242db1a --- /dev/null +++ b/test/definitions/spaces/v1/catalogs/564b48aae4b0869c782edc2b/subscriptions @@ -0,0 +1,1981 @@ +[{ + "id": "564bbfe3e4b0869c782ee3fa", + "url": "https://sjsldev249.dev.ciondemand.com/v1/catalogs/564b48aae4b0869c782edc2b/subscriptions/564bbfe3e4b0869c782ee3fa", + "organization": { + "id": "564b48a9e4b0869c782edc24", + "name": "apim", + "title": "Climb On" + }, + "catalog": { + "id": "564b48aae4b0869c782edc2b", + "url": "https://sjsldev249.dev.ciondemand.com/v1/catalogs/564b48aae4b0869c782edc2b", + "name": "sb", + "title": "Sandbox", + "sandbox": true, + "default": false + }, + "active": true, + "application": { + "id": "564b7d14e4b0869c782ee055", + "title": "test app", + "enabled": false, + "state": "ACTIVE", + "description": "", + "oauth-redirection-uri": "https://localhost", + "app-credentials": [{ + "id": "564b7d14e4b0869c782ee056", + "client-id": "default", + "client-secret": "CRexOpCRkV1UtjNvRZCVOczkUrNmGyHzhkGKJXiDswo=" + }], + "test-app": false + }, + "developer-organization": { + "id": "564b7c28e4b0869c782edfc1", + "name": "co1", + "title": "CO1" + }, + "plan-registration": { + "id": "apim:1.0.0:trial", + "spaces": [ + { + "id": "57e06e0dd4c6430588e566a6", + "name": "new-space", + "description": "Automatically created space", + "title": "New Space" + } + ], + "product": { + "id": "564b7b3ae4b0869c782eddaf", + "state": "published", + "visibility": { + "view": { + "enabled": true, + "type": "public", + "tags": [], + "orgs": [] + }, + "subscribe": { + "enabled": true, + "type": "authenticated", + "tags": [], + "orgs": [] + } + }, + "document": { + "product": "1.0.0", + "info": { + "name": "apim", + "version": "1.0.0", + "title": "ClimbOn", + "contact": { + "name": "George O Jungle", + "email": "george.o.jungle@apim.com", + "url": "http://www.apim.com" + }, + "license": { + "name": "Free for all climbers", + "url": "http://www.apim.com/user-agreement" + }, + "termsOfService": "Thy shalt not weigh more than thy fridge." + }, + "visibility": { + "view": { + "enabled": true, + "type": "public", + "tags": [], + "orgs": [] + }, + "subscribe": { + "enabled": true, + "type": "custom", + "tags": [], + "orgs": [] + } + }, + "apis": + { + "invoke_1": {"name": "invoke_1:1.0.0"} + }, + "plans": { + "gold": { + "title": "Gold Plan", + "description": "blah blah", + "approval": true, + "rate-limit": { + "hard-limit": false, + "value": "1/sec" + }, + "apis": + { + "invoke_1": {} + } + } + } + } + }, + "plan": { + "name": "gold", + "title": "Gold Plan" + }, + "apis": [ + { + "id": "564b7b3ae4b0869c782eddae", + "url": "https://sjsldev249.dev.ciondemand.com/v1/catalogs/564b48aae4b0869c782edc2b/apis/564b7b3ae4b0869c782eddae", + "state": "running", + "organization": { + "id": "564b48a9e4b0869c782edc24", + "name": "apim", + "title": "Climb On" + }, + "catalog": { + "id": "564b48aae4b0869c782edc2b", + "url": "https://sjsldev249.dev.ciondemand.com/v1/catalogs/564b48aae4b0869c782edc2b", + "name": "sb", + "title": "Sandbox", + "sandbox": true, + "default": false + }, + "document": { + "swagger": "2.0", + "info": { + "title": "invoke_1", + "version": "1.0.0", + "description": "invoke_1", + "termsOfService": "The Terms of Service for the API are ...", + "contact": { + "name": "Joe API Developer", + "url": "http://developer.acme.com/contacturl", + "email": "joedeveloper@someemailservice.com" + }, + "license": { + "name": "License Name Goes Here...", + "url": "http://developer.acme.com/licenseurl" + }, + "x-ibm-name": "invoke_1" + }, + "host": "localhost:3000", + "basePath": "/api", + "paths": { + "/invoke_1": { + "get": { + "operationId": "note.count", + "responses": { + "200": { + "description": "200 OK" + } + } + } + } + }, + "definitions": { + }, + "schemes": ["https"], + "consumes": ["application/json"], + "produces": ["application/json"], + "x-ibm-configuration": { + "phase": "realized", + "testable": true, + "enforced": true, + "cors": { + "enabled": true + } + } + } + } + ] + } +}, +{ + "id": "564bbfe3e4b0869c782ee3fa", + "url": "https://sjsldev249.dev.ciondemand.com/v1/catalogs/564b48aae4b0869c782edc2b/subscriptions/564bbfe3e4b0869c782ee3fa", + "organization": { + "id": "564b48a9e4b0869c782edc24", + "name": "apim", + "title": "Climb On" + }, + "catalog": { + "id": "564b48aae4b0869c782edc2b", + "url": "https://sjsldev249.dev.ciondemand.com/v1/catalogs/564b48aae4b0869c782edc2b", + "name": "sb", + "title": "Sandbox", + "sandbox": true, + "default": false + }, + "active": true, + "application": { + "id": "564b7d14e4b0869c782ee055", + "title": "test app", + "enabled": false, + "state": "ACTIVE", + "description": "", + "oauth-redirection-uri": "https://localhost", + "app-credentials": [{ + "id": "564b7d14e4b0869c782ee056", + "client-id": "default", + "client-secret": "CRexOpCRkV1UtjNvRZCVOczkUrNmGyHzhkGKJXiDswo=" + }], + "test-app": false + }, + "developer-organization": { + "id": "564b7c28e4b0869c782edfc1", + "name": "co1", + "title": "CO1" + }, + "plan-registration": { + "id": "apim:1.0.0:trial", + "spaces": [ + { + "id": "57e06e0dd4c6430588e566a6", + "name": "new-space", + "description": "Automatically created space", + "title": "New Space" + } + ], + "product": { + "id": "564b7b3ae4b0869c782eddaf", + "state": "published", + "visibility": { + "view": { + "enabled": true, + "type": "public", + "tags": [], + "orgs": [] + }, + "subscribe": { + "enabled": true, + "type": "authenticated", + "tags": [], + "orgs": [] + } + }, + "document": { + "product": "1.0.0", + "info": { + "name": "apim", + "version": "1.0.0", + "title": "ClimbOn", + "contact": { + "name": "George O Jungle", + "email": "george.o.jungle@apim.com", + "url": "http://www.apim.com" + }, + "license": { + "name": "Free for all climbers", + "url": "http://www.apim.com/user-agreement" + }, + "termsOfService": "Thy shalt not weigh more than thy fridge." + }, + "visibility": { + "view": { + "enabled": true, + "type": "public", + "tags": [], + "orgs": [] + }, + "subscribe": { + "enabled": true, + "type": "custom", + "tags": [], + "orgs": [] + } + }, + "apis": + { + "joinedIds": {"name": "joinedIds:1.0.0"} + }, + "plans": { + "gold": { + "title": "Gold Plan", + "description": "blah blah", + "approval": true, + "rate-limit": { + "hard-limit": false, + "value": "1/sec" + }, + "apis": + { + "joinedIds": {} + } + } + } + } + }, + "plan": { + "name": "gold", + "title": "Gold Plan" + }, + "apis": [ + { + "id": "564b7b3ae4b0869c782eddae", + "url": "https://sjsldev249.dev.ciondemand.com/v1/catalogs/564b48aae4b0869c782edc2b/apis/564b7b3ae4b0869c782eddae", + "state": "running", + "organization": { + "id": "564b48a9e4b0869c782edc24", + "name": "apim", + "title": "Climb On" + }, + "catalog": { + "id": "564b48aae4b0869c782edc2b", + "url": "https://sjsldev249.dev.ciondemand.com/v1/catalogs/564b48aae4b0869c782edc2b", + "name": "sb", + "title": "Sandbox", + "sandbox": true, + "default": false + }, + "document": { + "swagger": "2.0", + "info": { + "title": "joinedIds", + "version": "1.0.0", + "description": "joinedIds", + "termsOfService": "The Terms of Service for the API are ...", + "contact": { + "name": "Joe API Developer", + "url": "http://developer.acme.com/contacturl", + "email": "joedeveloper@someemailservice.com" + }, + "license": { + "name": "License Name Goes Here...", + "url": "http://developer.acme.com/licenseurl" + }, + "x-ibm-name": "joinedIds" + }, + "host": "localhost:3000", + "basePath": "/api", + "paths": { + "/joinedIds": { + "get": { + "operationId": "note.count", + "responses": { + "200": { + "description": "200 OK" + } + } + } + } + }, + "definitions": { + }, + "schemes": ["https"], + "security": [ + { + "apikeyHeaderID": [], + "apikeyQueryParameterID": [] + } + ], + "securityDefinitions": { + "apikeyHeaderID": { + "in": "header", + "name": "X-IBM-Client-Id", + "type": "apiKey" + }, + "apikeyQueryParameterID": { + "in": "query", + "name": "client_id", + "type": "apiKey" + }, + "apikeyHeaderSecret": { + "in": "header", + "name": "X-IBM-Client-Secret", + "type": "apiKey" + }, + "apikeyQueryParameterSecret": { + "in": "query", + "name": "client_secret", + "type": "apiKey" + } + }, + "consumes": ["application/json"], + "produces": ["application/json"], + "x-ibm-configuration": { + "phase": "realized", + "testable": true, + "enforced": true, + "cors": { + "enabled": true + } + } + } + } + ] + } +}, +{ + "id": "564bbfe3e4b0869c782ee3fa", + "url": "https://sjsldev249.dev.ciondemand.com/v1/catalogs/564b48aae4b0869c782edc2b/subscriptions/564bbfe3e4b0869c782ee3fa", + "organization": { + "id": "564b48a9e4b0869c782edc24", + "name": "apim", + "title": "Climb On" + }, + "catalog": { + "id": "564b48aae4b0869c782edc2b", + "url": "https://sjsldev249.dev.ciondemand.com/v1/catalogs/564b48aae4b0869c782edc2b", + "name": "sb", + "title": "Sandbox", + "sandbox": true, + "default": false + }, + "active": true, + "application": { + "id": "564b7d14e4b0869c782ee055", + "title": "test app", + "enabled": false, + "state": "ACTIVE", + "description": "", + "oauth-redirection-uri": "https://localhost", + "app-credentials": [{ + "id": "564b7d14e4b0869c782ee056", + "client-id": "default", + "client-secret": "CRexOpCRkV1UtjNvRZCVOczkUrNmGyHzhkGKJXiDswo=" + }], + "test-app": false + }, + "developer-organization": { + "id": "564b7c28e4b0869c782edfc1", + "name": "co1", + "title": "CO1" + }, + "plan-registration": { + "id": "apim:1.0.0:trial", + "spaces": [ + { + "id": "57e06e0dd4c6430588e566a6", + "name": "new-space", + "description": "Automatically created space", + "title": "New Space" + } + ], + "product": { + "id": "564b7b3ae4b0869c782eddaf", + "state": "published", + "visibility": { + "view": { + "enabled": true, + "type": "public", + "tags": [], + "orgs": [] + }, + "subscribe": { + "enabled": true, + "type": "authenticated", + "tags": [], + "orgs": [] + } + }, + "document": { + "product": "1.0.0", + "info": { + "name": "apim", + "version": "1.0.0", + "title": "ClimbOn", + "contact": { + "name": "George O Jungle", + "email": "george.o.jungle@apim.com", + "url": "http://www.apim.com" + }, + "license": { + "name": "Free for all climbers", + "url": "http://www.apim.com/user-agreement" + }, + "termsOfService": "Thy shalt not weigh more than thy fridge." + }, + "visibility": { + "view": { + "enabled": true, + "type": "public", + "tags": [], + "orgs": [] + }, + "subscribe": { + "enabled": true, + "type": "custom", + "tags": [], + "orgs": [] + } + }, + "apis": + { + "tooManySchemes": {"name": "tooManySchemes:1.0.0"} + }, + "plans": { + "gold": { + "title": "Gold Plan", + "description": "blah blah", + "approval": true, + "rate-limit": { + "hard-limit": false, + "value": "1/sec" + }, + "apis": + { + "tooManySchemes": {} + } + } + } + } + }, + "plan": { + "name": "gold", + "title": "Gold Plan" + }, + "apis": [ + { + "id": "564b7b3ae4b0869c782eddae", + "url": "https://sjsldev249.dev.ciondemand.com/v1/catalogs/564b48aae4b0869c782edc2b/apis/564b7b3ae4b0869c782eddae", + "state": "running", + "organization": { + "id": "564b48a9e4b0869c782edc24", + "name": "apim", + "title": "Climb On" + }, + "catalog": { + "id": "564b48aae4b0869c782edc2b", + "url": "https://sjsldev249.dev.ciondemand.com/v1/catalogs/564b48aae4b0869c782edc2b", + "name": "sb", + "title": "Sandbox", + "sandbox": true, + "default": false + }, + "document": { + "swagger": "2.0", + "info": { + "title": "tooManySchemes", + "version": "1.0.0", + "description": "tooManySchemes", + "termsOfService": "The Terms of Service for the API are ...", + "contact": { + "name": "Joe API Developer", + "url": "http://developer.acme.com/contacturl", + "email": "joedeveloper@someemailservice.com" + }, + "license": { + "name": "License Name Goes Here...", + "url": "http://developer.acme.com/licenseurl" + }, + "x-ibm-name": "tooManySchemes" + }, + "host": "localhost:3000", + "basePath": "/api", + "paths": { + "/tooManySchemes": { + "get": { + "operationId": "note.count", + "responses": { + "200": { + "description": "200 OK" + } + } + } + } + }, + "definitions": { + }, + "schemes": ["https"], + "security": [ + { + "apikeyHeaderID": [], + "apikeyQueryParameterID": [], + "apikeyQueryParameterOther": [] + } + ], + "securityDefinitions": { + "apikeyHeaderID": { + "in": "header", + "name": "X-IBM-Client-Id", + "type": "apiKey" + }, + "apikeyQueryParameterID": { + "in": "query", + "name": "client_id", + "type": "apiKey" + }, + "apikeyHeaderSecret": { + "in": "header", + "name": "X-IBM-Client-Secret", + "type": "apiKey" + }, + "apikeyQueryParameterSecret": { + "in": "query", + "name": "client_secret", + "type": "apiKey" + }, + "apikeyHeaderOther": { + "in": "header", + "name": "headerOther", + "type": "apiKey" + }, + "apikeyQueryParameterOther": { + "in": "query", + "name": "queryOther", + "type": "apiKey" + } + }, + "consumes": ["application/json"], + "produces": ["application/json"], + "x-ibm-configuration": { + "phase": "realized", + "testable": true, + "enforced": true, + "cors": { + "enabled": true + } + } + } + } + ] + } +}, +{ + "id": "564bbfe3e4b0869c782ee3fa", + "url": "https://sjsldev249.dev.ciondemand.com/v1/catalogs/564b48aae4b0869c782edc2b/subscriptions/564bbfe3e4b0869c782ee3fa", + "organization": { + "id": "564b48a9e4b0869c782edc24", + "name": "apim", + "title": "Climb On" + }, + "catalog": { + "id": "564b48aae4b0869c782edc2b", + "url": "https://sjsldev249.dev.ciondemand.com/v1/catalogs/564b48aae4b0869c782edc2b", + "name": "sb", + "title": "Sandbox", + "sandbox": true, + "default": false + }, + "active": true, + "application": { + "id": "564b7d14e4b0869c782ee055", + "title": "test app", + "enabled": false, + "state": "ACTIVE", + "description": "", + "oauth-redirection-uri": "https://localhost", + "app-credentials": [{ + "id": "564b7d14e4b0869c782ee056", + "client-id": "default", + "client-secret": "CRexOpCRkV1UtjNvRZCVOczkUrNmGyHzhkGKJXiDswo=" + }], + "test-app": false + }, + "developer-organization": { + "id": "564b7c28e4b0869c782edfc1", + "name": "co1", + "title": "CO1" + }, + "plan-registration": { + "id": "apim:1.0.0:trial", + "spaces": [ + { + "id": "57e06e0dd4c6430588e566a6", + "name": "new-space", + "description": "Automatically created space", + "title": "New Space" + } + ], + "product": { + "id": "564b7b3ae4b0869c782eddaf", + "state": "published", + "visibility": { + "view": { + "enabled": true, + "type": "public", + "tags": [], + "orgs": [] + }, + "subscribe": { + "enabled": true, + "type": "authenticated", + "tags": [], + "orgs": [] + } + }, + "document": { + "product": "1.0.0", + "info": { + "name": "apim", + "version": "1.0.0", + "title": "ClimbOn", + "contact": { + "name": "George O Jungle", + "email": "george.o.jungle@apim.com", + "url": "http://www.apim.com" + }, + "license": { + "name": "Free for all climbers", + "url": "http://www.apim.com/user-agreement" + }, + "termsOfService": "Thy shalt not weigh more than thy fridge." + }, + "visibility": { + "view": { + "enabled": true, + "type": "public", + "tags": [], + "orgs": [] + }, + "subscribe": { + "enabled": true, + "type": "custom", + "tags": [], + "orgs": [] + } + }, + "apis": + { + "badInType": {"name": "badInType:1.0.0"} + }, + "plans": { + "gold": { + "title": "Gold Plan", + "description": "blah blah", + "approval": true, + "rate-limit": { + "hard-limit": false, + "value": "1/sec" + }, + "apis": + { + "badInType": {} + } + } + } + } + }, + "plan": { + "name": "gold", + "title": "Gold Plan" + }, + "apis": [ + { + "id": "564b7b3ae4b0869c782eddae", + "url": "https://sjsldev249.dev.ciondemand.com/v1/catalogs/564b48aae4b0869c782edc2b/apis/564b7b3ae4b0869c782eddae", + "state": "running", + "organization": { + "id": "564b48a9e4b0869c782edc24", + "name": "apim", + "title": "Climb On" + }, + "catalog": { + "id": "564b48aae4b0869c782edc2b", + "url": "https://sjsldev249.dev.ciondemand.com/v1/catalogs/564b48aae4b0869c782edc2b", + "name": "sb", + "title": "Sandbox", + "sandbox": true, + "default": false + }, + "document": { + "swagger": "2.0", + "info": { + "title": "badInType", + "version": "1.0.0", + "description": "badInType", + "termsOfService": "The Terms of Service for the API are ...", + "contact": { + "name": "Joe API Developer", + "url": "http://developer.acme.com/contacturl", + "email": "joedeveloper@someemailservice.com" + }, + "license": { + "name": "License Name Goes Here...", + "url": "http://developer.acme.com/licenseurl" + }, + "x-ibm-name": "badInType" + }, + "host": "localhost:3000", + "basePath": "/api", + "paths": { + "/badInType": { + "get": { + "operationId": "note.count", + "responses": { + "200": { + "description": "200 OK" + } + } + } + } + }, + "definitions": { + }, + "schemes": ["https"], + "security": [ + { + "apikeyHeaderID": [], + "apikeyOther": [] + } + ], + "securityDefinitions": { + "apikeyHeaderID": { + "in": "header", + "name": "X-IBM-Client-Id", + "type": "apiKey" + }, + "apikeyQueryParameterID": { + "in": "query", + "name": "client_id", + "type": "apiKey" + }, + "apikeyHeaderSecret": { + "in": "header", + "name": "X-IBM-Client-Secret", + "type": "apiKey" + }, + "apikeyQueryParameterSecret": { + "in": "query", + "name": "client_secret", + "type": "apiKey" + }, + "apikeyHeaderOther": { + "in": "header", + "name": "headerOther", + "type": "apiKey" + }, + "apikeyQueryParameterOther": { + "in": "query", + "name": "queryOther", + "type": "apiKey" + }, + "apikeyOther": { + "in": "other", + "name": "queryOther", + "type": "apiKey" + } + }, + "consumes": ["application/json"], + "produces": ["application/json"], + "x-ibm-configuration": { + "phase": "realized", + "testable": true, + "enforced": true, + "cors": { + "enabled": true + } + } + } + } + ] + } +}, +{ + "id": "564bbfe3e4b0869c782ee3fa", + "url": "https://sjsldev249.dev.ciondemand.com/v1/catalogs/564b48aae4b0869c782edc2b/subscriptions/564bbfe3e4b0869c782ee3fa", + "organization": { + "id": "564b48a9e4b0869c782edc24", + "name": "apim", + "title": "Climb On" + }, + "catalog": { + "id": "564b48aae4b0869c782edc2b", + "url": "https://sjsldev249.dev.ciondemand.com/v1/catalogs/564b48aae4b0869c782edc2b", + "name": "sb", + "title": "Sandbox", + "sandbox": true, + "default": false + }, + "active": true, + "application": { + "id": "564b7d14e4b0869c782ee055", + "title": "test app", + "enabled": false, + "state": "ACTIVE", + "description": "", + "oauth-redirection-uri": "https://localhost", + "app-credentials": [{ + "id": "564b7d14e4b0869c782ee056", + "client-id": "default", + "client-secret": "CRexOpCRkV1UtjNvRZCVOczkUrNmGyHzhkGKJXiDswo=" + }], + "test-app": false + }, + "developer-organization": { + "id": "564b7c28e4b0869c782edfc1", + "name": "co1", + "title": "CO1" + }, + "plan-registration": { + "id": "apim:1.0.0:trial", + "spaces": [ + { + "id": "57e06e0dd4c6430588e566a6", + "name": "new-space", + "description": "Automatically created space", + "title": "New Space" + } + ], + "product": { + "id": "564b7b3ae4b0869c782eddaf", + "state": "published", + "visibility": { + "view": { + "enabled": true, + "type": "public", + "tags": [], + "orgs": [] + }, + "subscribe": { + "enabled": true, + "type": "authenticated", + "tags": [], + "orgs": [] + } + }, + "document": { + "product": "1.0.0", + "info": { + "name": "apim", + "version": "1.0.0", + "title": "ClimbOn", + "contact": { + "name": "George O Jungle", + "email": "george.o.jungle@apim.com", + "url": "http://www.apim.com" + }, + "license": { + "name": "Free for all climbers", + "url": "http://www.apim.com/user-agreement" + }, + "termsOfService": "Thy shalt not weigh more than thy fridge." + }, + "visibility": { + "view": { + "enabled": true, + "type": "public", + "tags": [], + "orgs": [] + }, + "subscribe": { + "enabled": true, + "type": "custom", + "tags": [], + "orgs": [] + } + }, + "apis": + { + "missingSecurityDef": {"name": "missingSecurityDef:1.0.0"} + }, + "plans": { + "gold": { + "title": "Gold Plan", + "description": "blah blah", + "approval": true, + "rate-limit": { + "hard-limit": false, + "value": "1/sec" + }, + "apis": + { + "missingSecurityDef": {} + } + } + } + } + }, + "plan": { + "name": "gold", + "title": "Gold Plan" + }, + "apis": [ + { + "id": "564b7b3ae4b0869c782eddae", + "url": "https://sjsldev249.dev.ciondemand.com/v1/catalogs/564b48aae4b0869c782edc2b/apis/564b7b3ae4b0869c782eddae", + "state": "running", + "organization": { + "id": "564b48a9e4b0869c782edc24", + "name": "apim", + "title": "Climb On" + }, + "catalog": { + "id": "564b48aae4b0869c782edc2b", + "url": "https://sjsldev249.dev.ciondemand.com/v1/catalogs/564b48aae4b0869c782edc2b", + "name": "sb", + "title": "Sandbox", + "sandbox": true, + "default": false + }, + "document": { + "swagger": "2.0", + "info": { + "title": "missingSecurityDef", + "version": "1.0.0", + "description": "missingSecurityDef", + "termsOfService": "The Terms of Service for the API are ...", + "contact": { + "name": "Joe API Developer", + "url": "http://developer.acme.com/contacturl", + "email": "joedeveloper@someemailservice.com" + }, + "license": { + "name": "License Name Goes Here...", + "url": "http://developer.acme.com/licenseurl" + }, + "x-ibm-name": "missingSecurityDef" + }, + "host": "localhost:3000", + "basePath": "/api", + "paths": { + "/missingSecurityDef": { + "get": { + "operationId": "note.count", + "responses": { + "200": { + "description": "200 OK" + } + } + } + } + }, + "definitions": { + }, + "schemes": ["https"], + "security": [ + { + "apikeyHeaderID": [], + "apikeyOther": [] + } + ], + "securityDefinitions": { + "apikeyHeaderID": { + "in": "header", + "name": "X-IBM-Client-Id", + "type": "apiKey" + }, + "apikeyQueryParameterID": { + "in": "query", + "name": "client_id", + "type": "apiKey" + }, + "apikeyHeaderSecret": { + "in": "header", + "name": "X-IBM-Client-Secret", + "type": "apiKey" + }, + "apikeyQueryParameterSecret": { + "in": "query", + "name": "client_secret", + "type": "apiKey" + }, + "apikeyHeaderOther": { + "in": "header", + "name": "headerOther", + "type": "apiKey" + }, + "apikeyQueryParameterOther": { + "in": "query", + "name": "queryOther", + "type": "apiKey" + } + }, + "consumes": ["application/json"], + "produces": ["application/json"], + "x-ibm-configuration": { + "phase": "realized", + "testable": true, + "enforced": true, + "cors": { + "enabled": true + } + } + } + } + ] + } +}, +{ + "id": "564bbfe3e4b0869c782ee3fa", + "url": "https://sjsldev249.dev.ciondemand.com/v1/catalogs/564b48aae4b0869c782edc2b/subscriptions/564bbfe3e4b0869c782ee3fa", + "organization": { + "id": "564b48a9e4b0869c782edc24", + "name": "apim", + "title": "Climb On" + }, + "catalog": { + "id": "564b48aae4b0869c782edc2b", + "url": "https://sjsldev249.dev.ciondemand.com/v1/catalogs/564b48aae4b0869c782edc2b", + "name": "sb", + "title": "Sandbox", + "sandbox": true, + "default": false + }, + "active": true, + "application": { + "id": "564b7d14e4b0869c782ee055", + "title": "test app", + "enabled": false, + "state": "ACTIVE", + "description": "", + "oauth-redirection-uri": "https://localhost", + "app-credentials": [{ + "id": "564b7d14e4b0869c782ee056", + "client-id": "default", + "client-secret": "CRexOpCRkV1UtjNvRZCVOczkUrNmGyHzhkGKJXiDswo=" + }], + "test-app": false + }, + "developer-organization": { + "id": "564b7c28e4b0869c782edfc1", + "name": "co1", + "title": "CO1" + }, + "plan-registration": { + "id": "apim:1.0.0:trial", + "spaces": [ + { + "id": "57e06e0dd4c6430588e566a6", + "name": "new-space", + "description": "Automatically created space", + "title": "New Space" + } + ], + "product": { + "id": "564b7b3ae4b0869c782eddaf", + "state": "published", + "visibility": { + "view": { + "enabled": true, + "type": "public", + "tags": [], + "orgs": [] + }, + "subscribe": { + "enabled": true, + "type": "authenticated", + "tags": [], + "orgs": [] + } + }, + "document": { + "product": "1.0.0", + "info": { + "name": "apim", + "version": "1.0.0", + "title": "ClimbOn", + "contact": { + "name": "George O Jungle", + "email": "george.o.jungle@apim.com", + "url": "http://www.apim.com" + }, + "license": { + "name": "Free for all climbers", + "url": "http://www.apim.com/user-agreement" + }, + "termsOfService": "Thy shalt not weigh more than thy fridge." + }, + "visibility": { + "view": { + "enabled": true, + "type": "public", + "tags": [], + "orgs": [] + }, + "subscribe": { + "enabled": true, + "type": "custom", + "tags": [], + "orgs": [] + } + }, + "apis": + { + "missingHeaderID": {"name": "missingHeaderID:1.0.0"} + }, + "plans": { + "gold": { + "title": "Gold Plan", + "description": "blah blah", + "approval": true, + "rate-limit": { + "hard-limit": false, + "value": "1/sec" + }, + "apis": + { + "missingHeaderID": {} + } + } + } + } + }, + "plan": { + "name": "gold", + "title": "Gold Plan" + }, + "apis": [ + { + "id": "564b7b3ae4b0869c782eddae", + "url": "https://sjsldev249.dev.ciondemand.com/v1/catalogs/564b48aae4b0869c782edc2b/apis/564b7b3ae4b0869c782eddae", + "state": "running", + "organization": { + "id": "564b48a9e4b0869c782edc24", + "name": "apim", + "title": "Climb On" + }, + "catalog": { + "id": "564b48aae4b0869c782edc2b", + "url": "https://sjsldev249.dev.ciondemand.com/v1/catalogs/564b48aae4b0869c782edc2b", + "name": "sb", + "title": "Sandbox", + "sandbox": true, + "default": false + }, + "document": { + "swagger": "2.0", + "info": { + "title": "missingHeaderID", + "version": "1.0.0", + "description": "missingHeaderID", + "termsOfService": "The Terms of Service for the API are ...", + "contact": { + "name": "Joe API Developer", + "url": "http://developer.acme.com/contacturl", + "email": "joedeveloper@someemailservice.com" + }, + "license": { + "name": "License Name Goes Here...", + "url": "http://developer.acme.com/licenseurl" + }, + "x-ibm-name": "missingHeaderID" + }, + "host": "localhost:3000", + "basePath": "/api", + "paths": { + "/missingHeaderID": { + "get": { + "operationId": "note.count", + "responses": { + "200": { + "description": "200 OK" + } + } + } + } + }, + "definitions": { + }, + "schemes": ["https"], + "security": [ + { + "apikeyHeaderSecret": [] + } + ], + "securityDefinitions": { + "apikeyHeaderID": { + "in": "header", + "name": "X-IBM-Client-Id", + "type": "apiKey" + }, + "apikeyQueryParameterID": { + "in": "query", + "name": "client_id", + "type": "apiKey" + }, + "apikeyHeaderSecret": { + "in": "header", + "name": "X-IBM-Client-Secret", + "type": "apiKey" + }, + "apikeyQueryParameterSecret": { + "in": "query", + "name": "client_secret", + "type": "apiKey" + }, + "apikeyHeaderOther": { + "in": "header", + "name": "headerOther", + "type": "apiKey" + }, + "apikeyQueryParameterOther": { + "in": "query", + "name": "queryOther", + "type": "apiKey" + } + }, + "consumes": ["application/json"], + "produces": ["application/json"], + "x-ibm-configuration": { + "phase": "realized", + "testable": true, + "enforced": true, + "cors": { + "enabled": true + } + } + } + } + ] + } +}, +{ + "id": "564bbfe3e4b0869c782ee3fa", + "url": "https://sjsldev249.dev.ciondemand.com/v1/catalogs/564b48aae4b0869c782edc2b/subscriptions/564bbfe3e4b0869c782ee3fa", + "organization": { + "id": "564b48a9e4b0869c782edc24", + "name": "apim", + "title": "Climb On" + }, + "catalog": { + "id": "564b48aae4b0869c782edc2b", + "url": "https://sjsldev249.dev.ciondemand.com/v1/catalogs/564b48aae4b0869c782edc2b", + "name": "sb", + "title": "Sandbox", + "sandbox": true, + "default": false + }, + "active": true, + "application": { + "id": "564b7d14e4b0869c782ee055", + "title": "test app", + "enabled": false, + "state": "ACTIVE", + "description": "", + "oauth-redirection-uri": "https://localhost", + "app-credentials": [{ + "id": "564b7d14e4b0869c782ee056", + "client-id": "default", + "client-secret": "CRexOpCRkV1UtjNvRZCVOczkUrNmGyHzhkGKJXiDswo=" + }], + "test-app": false + }, + "developer-organization": { + "id": "564b7c28e4b0869c782edfc1", + "name": "co1", + "title": "CO1" + }, + "plan-registration": { + "id": "apim:1.0.0:trial", + "spaces": [ + { + "id": "57e06e0dd4c6430588e566a6", + "name": "new-space", + "description": "Automatically created space", + "title": "New Space" + } + ], + "product": { + "id": "564b7b3ae4b0869c782eddaf", + "state": "published", + "visibility": { + "view": { + "enabled": true, + "type": "public", + "tags": [], + "orgs": [] + }, + "subscribe": { + "enabled": true, + "type": "authenticated", + "tags": [], + "orgs": [] + } + }, + "document": { + "product": "1.0.0", + "info": { + "name": "apim", + "version": "1.0.0", + "title": "ClimbOn", + "contact": { + "name": "George O Jungle", + "email": "george.o.jungle@apim.com", + "url": "http://www.apim.com" + }, + "license": { + "name": "Free for all climbers", + "url": "http://www.apim.com/user-agreement" + }, + "termsOfService": "Thy shalt not weigh more than thy fridge." + }, + "visibility": { + "view": { + "enabled": true, + "type": "public", + "tags": [], + "orgs": [] + }, + "subscribe": { + "enabled": true, + "type": "custom", + "tags": [], + "orgs": [] + } + }, + "apis": + { + "missingQueryParameterID": {"name": "missingQueryParameterID:1.0.0"} + }, + "plans": { + "gold": { + "title": "Gold Plan", + "description": "blah blah", + "approval": true, + "rate-limit": { + "hard-limit": false, + "value": "1/sec" + }, + "apis": + { + "missingQueryParameterID": {} + } + } + } + } + }, + "plan": { + "name": "gold", + "title": "Gold Plan" + }, + "apis": [ + { + "id": "564b7b3ae4b0869c782eddae", + "url": "https://sjsldev249.dev.ciondemand.com/v1/catalogs/564b48aae4b0869c782edc2b/apis/564b7b3ae4b0869c782eddae", + "state": "running", + "organization": { + "id": "564b48a9e4b0869c782edc24", + "name": "apim", + "title": "Climb On" + }, + "catalog": { + "id": "564b48aae4b0869c782edc2b", + "url": "https://sjsldev249.dev.ciondemand.com/v1/catalogs/564b48aae4b0869c782edc2b", + "name": "sb", + "title": "Sandbox", + "sandbox": true, + "default": false + }, + "document": { + "swagger": "2.0", + "info": { + "title": "missingQueryParameterID", + "version": "1.0.0", + "description": "missingQueryParameterID", + "termsOfService": "The Terms of Service for the API are ...", + "contact": { + "name": "Joe API Developer", + "url": "http://developer.acme.com/contacturl", + "email": "joedeveloper@someemailservice.com" + }, + "license": { + "name": "License Name Goes Here...", + "url": "http://developer.acme.com/licenseurl" + }, + "x-ibm-name": "missingQueryParameterID" + }, + "host": "localhost:3000", + "basePath": "/api", + "paths": { + "/missingQueryParameterID": { + "get": { + "operationId": "note.count", + "responses": { + "200": { + "description": "200 OK" + } + } + } + } + }, + "definitions": { + }, + "schemes": ["https"], + "security": [ + { + "apikeyQueryParameterSecret": [] + } + ], + "securityDefinitions": { + "apikeyHeaderID": { + "in": "header", + "name": "X-IBM-Client-Id", + "type": "apiKey" + }, + "apikeyQueryParameterID": { + "in": "query", + "name": "client_id", + "type": "apiKey" + }, + "apikeyHeaderSecret": { + "in": "header", + "name": "X-IBM-Client-Secret", + "type": "apiKey" + }, + "apikeyQueryParameterSecret": { + "in": "query", + "name": "client_secret", + "type": "apiKey" + }, + "apikeyHeaderOther": { + "in": "header", + "name": "headerOther", + "type": "apiKey" + }, + "apikeyQueryParameterOther": { + "in": "query", + "name": "queryOther", + "type": "apiKey" + } + }, + "consumes": ["application/json"], + "produces": ["application/json"], + "x-ibm-configuration": { + "phase": "realized", + "testable": true, + "enforced": true, + "cors": { + "enabled": true + } + } + } + } + ] + } +}, +{ + "id": "564bbfe3e4b0869c782ee3fa", + "url": "https://sjsldev249.dev.ciondemand.com/v1/catalogs/564b48aae4b0869c782edc2b/subscriptions/564bbfe3e4b0869c782ee3fa", + "organization": { + "id": "564b48a9e4b0869c782edc24", + "name": "apim", + "title": "Climb On" + }, + "catalog": { + "id": "564b48aae4b0869c782edc2b", + "url": "https://sjsldev249.dev.ciondemand.com/v1/catalogs/564b48aae4b0869c782edc2b", + "name": "sb", + "title": "Sandbox", + "sandbox": true, + "default": false + }, + "active": true, + "application": { + "id": "564b7d14e4b0869c782ee055", + "title": "test app", + "enabled": false, + "state": "ACTIVE", + "description": "", + "oauth-redirection-uri": "https://localhost", + "app-credentials": [{ + "id": "564b7d14e4b0869c782ee056", + "client-id": "default", + "client-secret": "CRexOpCRkV1UtjNvRZCVOczkUrNmGyHzhkGKJXiDswo=" + }], + "test-app": false + }, + "developer-organization": { + "id": "564b7c28e4b0869c782edfc1", + "name": "co1", + "title": "CO1" + }, + "plan-registration": { + "id": "apim:1.0.0:trial", + "spaces": [ + { + "id": "57e06e0dd4c6430588e566a6", + "name": "new-space", + "description": "Automatically created space", + "title": "New Space" + } + ], + "product": { + "id": "564b7b3ae4b0869c782eddaf", + "state": "published", + "visibility": { + "view": { + "enabled": true, + "type": "public", + "tags": [], + "orgs": [] + }, + "subscribe": { + "enabled": true, + "type": "authenticated", + "tags": [], + "orgs": [] + } + }, + "document": { + "product": "1.0.0", + "info": { + "name": "apim", + "version": "1.0.0", + "title": "ClimbOn", + "contact": { + "name": "George O Jungle", + "email": "george.o.jungle@apim.com", + "url": "http://www.apim.com" + }, + "license": { + "name": "Free for all climbers", + "url": "http://www.apim.com/user-agreement" + }, + "termsOfService": "Thy shalt not weigh more than thy fridge." + }, + "visibility": { + "view": { + "enabled": true, + "type": "public", + "tags": [], + "orgs": [] + }, + "subscribe": { + "enabled": true, + "type": "custom", + "tags": [], + "orgs": [] + } + }, + "apis": + { + "twoClientIDs": {"name": "twoClientIDs:1.0.0"} + }, + "plans": { + "gold": { + "title": "Gold Plan", + "description": "blah blah", + "approval": true, + "rate-limit": { + "hard-limit": false, + "value": "1/sec" + }, + "apis": + { + "twoClientIDs": {} + } + } + } + } + }, + "plan": { + "name": "gold", + "title": "Gold Plan" + }, + "apis": [ + { + "id": "564b7b3ae4b0869c782eddae", + "url": "https://sjsldev249.dev.ciondemand.com/v1/catalogs/564b48aae4b0869c782edc2b/apis/564b7b3ae4b0869c782eddae", + "state": "running", + "organization": { + "id": "564b48a9e4b0869c782edc24", + "name": "apim", + "title": "Climb On" + }, + "catalog": { + "id": "564b48aae4b0869c782edc2b", + "url": "https://sjsldev249.dev.ciondemand.com/v1/catalogs/564b48aae4b0869c782edc2b", + "name": "sb", + "title": "Sandbox", + "sandbox": true, + "default": false + }, + "document": { + "swagger": "2.0", + "info": { + "title": "twoClientIDs", + "version": "1.0.0", + "description": "twoClientIDs", + "termsOfService": "The Terms of Service for the API are ...", + "contact": { + "name": "Joe API Developer", + "url": "http://developer.acme.com/contacturl", + "email": "joedeveloper@someemailservice.com" + }, + "license": { + "name": "License Name Goes Here...", + "url": "http://developer.acme.com/licenseurl" + }, + "x-ibm-name": "twoClientIDs" + }, + "host": "localhost:3000", + "basePath": "/api", + "paths": { + "/twoClientIDs": { + "get": { + "operationId": "note.count", + "responses": { + "200": { + "description": "200 OK" + } + } + } + } + }, + "definitions": { + }, + "schemes": ["https"], + "security": [ + { + "apikeyHeaderID": [], + "apikeyQueryParameterID": [] + } + ], + "securityDefinitions": { + "apikeyHeaderID": { + "in": "header", + "name": "X-IBM-Client-Id", + "type": "apiKey" + }, + "apikeyQueryParameterID": { + "in": "query", + "name": "client_id", + "type": "apiKey" + }, + "apikeyHeaderSecret": { + "in": "header", + "name": "X-IBM-Client-Secret", + "type": "apiKey" + }, + "apikeyQueryParameterSecret": { + "in": "query", + "name": "client_secret", + "type": "apiKey" + }, + "apikeyHeaderOther": { + "in": "header", + "name": "headerOther", + "type": "apiKey" + }, + "apikeyQueryParameterOther": { + "in": "query", + "name": "queryOther", + "type": "apiKey" + } + }, + "consumes": ["application/json"], + "produces": ["application/json"], + "x-ibm-configuration": { + "phase": "realized", + "testable": true, + "enforced": true, + "cors": { + "enabled": true + } + } + } + } + ] + } +}, +{ + "id": "564bbfe3e4b0869c782ee3fa", + "url": "https://sjsldev249.dev.ciondemand.com/v1/catalogs/564b48aae4b0869c782edc2b/subscriptions/564bbfe3e4b0869c782ee3fa", + "organization": { + "id": "564b48a9e4b0869c782edc24", + "name": "apim", + "title": "Climb On" + }, + "catalog": { + "id": "564b48aae4b0869c782edc2b", + "url": "https://sjsldev249.dev.ciondemand.com/v1/catalogs/564b48aae4b0869c782edc2b", + "name": "sb", + "title": "Sandbox", + "sandbox": true, + "default": false + }, + "active": true, + "application": { + "id": "564b7d14e4b0869c782ee055", + "title": "test app", + "enabled": false, + "state": "ACTIVE", + "description": "", + "oauth-redirection-uri": "https://localhost", + "app-credentials": [{ + "id": "564b7d14e4b0869c782ee056", + "client-id": "default", + "client-secret": "CRexOpCRkV1UtjNvRZCVOczkUrNmGyHzhkGKJXiDswo=" + }], + "test-app": false + }, + "developer-organization": { + "id": "564b7c28e4b0869c782edfc1", + "name": "co1", + "title": "CO1" + }, + "plan-registration": { + "id": "apim:1.0.0:trial", + "spaces": [ + { + "id": "57e06e0dd4c6430588e566a6", + "name": "new-space", + "description": "Automatically created space", + "title": "New Space" + } + ], + "product": { + "id": "564b7b3ae4b0869c782eddaf", + "state": "published", + "visibility": { + "view": { + "enabled": true, + "type": "public", + "tags": [], + "orgs": [] + }, + "subscribe": { + "enabled": true, + "type": "authenticated", + "tags": [], + "orgs": [] + } + }, + "document": { + "product": "1.0.0", + "info": { + "name": "apim", + "version": "1.0.0", + "title": "ClimbOn", + "contact": { + "name": "George O Jungle", + "email": "george.o.jungle@apim.com", + "url": "http://www.apim.com" + }, + "license": { + "name": "Free for all climbers", + "url": "http://www.apim.com/user-agreement" + }, + "termsOfService": "Thy shalt not weigh more than thy fridge." + }, + "visibility": { + "view": { + "enabled": true, + "type": "public", + "tags": [], + "orgs": [] + }, + "subscribe": { + "enabled": true, + "type": "custom", + "tags": [], + "orgs": [] + } + }, + "apis": + { + "twoClientSecrets": {"name": "twoClientSecrets:1.0.0"} + }, + "plans": { + "gold": { + "title": "Gold Plan", + "description": "blah blah", + "approval": true, + "rate-limit": { + "hard-limit": false, + "value": "1/sec" + }, + "apis": + { + "twoClientSecrets": {} + } + } + } + } + }, + "plan": { + "name": "gold", + "title": "Gold Plan" + }, + "apis": [ + { + "id": "564b7b3ae4b0869c782eddae", + "url": "https://sjsldev249.dev.ciondemand.com/v1/catalogs/564b48aae4b0869c782edc2b/apis/564b7b3ae4b0869c782eddae", + "state": "running", + "organization": { + "id": "564b48a9e4b0869c782edc24", + "name": "apim", + "title": "Climb On" + }, + "catalog": { + "id": "564b48aae4b0869c782edc2b", + "url": "https://sjsldev249.dev.ciondemand.com/v1/catalogs/564b48aae4b0869c782edc2b", + "name": "sb", + "title": "Sandbox", + "sandbox": true, + "default": false + }, + "document": { + "swagger": "2.0", + "info": { + "title": "twoClientSecrets", + "version": "1.0.0", + "description": "twoClientSecrets", + "termsOfService": "The Terms of Service for the API are ...", + "contact": { + "name": "Joe API Developer", + "url": "http://developer.acme.com/contacturl", + "email": "joedeveloper@someemailservice.com" + }, + "license": { + "name": "License Name Goes Here...", + "url": "http://developer.acme.com/licenseurl" + }, + "x-ibm-name": "twoClientSecrets" + }, + "host": "localhost:3000", + "basePath": "/api", + "paths": { + "/twoClientSecrets": { + "get": { + "operationId": "note.count", + "responses": { + "200": { + "description": "200 OK" + } + } + } + } + }, + "definitions": { + }, + "schemes": ["https"], + "security": [ + { + "apikeyHeaderSecret": [], + "apikeyQueryParameterSecret": [] + } + ], + "securityDefinitions": { + "apikeyHeaderID": { + "in": "header", + "name": "X-IBM-Client-Id", + "type": "apiKey" + }, + "apikeyQueryParameterID": { + "in": "query", + "name": "client_id", + "type": "apiKey" + }, + "apikeyHeaderSecret": { + "in": "header", + "name": "X-IBM-Client-Secret", + "type": "apiKey" + }, + "apikeyQueryParameterSecret": { + "in": "query", + "name": "client_secret", + "type": "apiKey" + }, + "apikeyHeaderOther": { + "in": "header", + "name": "headerOther", + "type": "apiKey" + }, + "apikeyQueryParameterOther": { + "in": "query", + "name": "queryOther", + "type": "apiKey" + } + }, + "consumes": ["application/json"], + "produces": ["application/json"], + "x-ibm-configuration": { + "phase": "realized", + "testable": true, + "enforced": true, + "cors": { + "enabled": true + } + } + } + } + ] + } +}] diff --git a/test/definitions/spaces/v1/catalogs/564b48aae4b0869c782edc2b/tls-profiles b/test/definitions/spaces/v1/catalogs/564b48aae4b0869c782edc2b/tls-profiles new file mode 100644 index 0000000..698c20b --- /dev/null +++ b/test/definitions/spaces/v1/catalogs/564b48aae4b0869c782edc2b/tls-profiles @@ -0,0 +1,286 @@ +[ + { + "id": "56bbb472e4b0f70000000000", + "url": "https://foo.com/v1/catalogs/564b48aae4b0869c782edc2b/tls-profiles/56bbb472e4b0f70000000000", + "name": "tls-profile-simple", + "title": "tlsProfileSimple", + "description": "A simple and insecured TLS Profile", + "public": false, + "ciphers": [], + "protocols": [], + "certs": [], + "mutual-auth": false + }, + { + "id": "56bbb472e4b0f70000000001", + "url": "https://foo.com/v1/catalogs/564b48aae4b0869c782edc2b/tls-profiles/56bbb472e4b0f70000000001", + "name": "tls-profile-serverSarah-1", + "title": "tlsProfile4ServerSarah", + "description": "Use the ROOT CA's certificate to validate the server Sarah", + "public": false, + "ciphers": [], + "protocols": [], + "certs": [ + { + "name": "TheRootCAOfTheServerSarah", + "cert": "-----BEGIN CERTIFICATE-----\nMIIFuDCCA6CgAwIBAgIJAO3d5EMR7suOMA0GCSqGSIb3DQEBBQUAMEYxCzAJBgNV\nBAYTAlVTMRMwEQYDVQQIEwpTb21lLVN0YXRlMQwwCgYDVQQKEwNJQk0xFDASBgNV\nBAMTC1RoZSBSb290IENBMB4XDTE2MDIyNjAxNTU0MFoXDTM2MDIyMTAxNTU0MFow\nRjELMAkGA1UEBhMCVVMxEzARBgNVBAgTClNvbWUtU3RhdGUxDDAKBgNVBAoTA0lC\nTTEUMBIGA1UEAxMLVGhlIFJvb3QgQ0EwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw\nggIKAoICAQC3OsefORCVPPsouOjNRtiul5/B2IvlDMhRzC7XWTHb+9ebx35eekC2\njzP1MkdgO3+FrBDUWDtO1gkKjuDzvvRja5u2qUGao6WMwc+sbj7pVJVBmGT3ZH8K\nvlYiC1mIiLpOy8/8WAy8RCFzgWEDw42WHZQpQ4zti+MN48gBen2leVuTOBHqD8TQ\nOW6b3AapdUoolWovCdwu7w0Q4Qi5+n3Io8myXFF6xL2Rt3iv/WNK3FKjhFL7EfSa\n4MdOxJsi2xd68r0FEfk7Fzfrk3ZijoHQEFexMfXvp7VwSqzq6l1SE3QW73EYqe+2\nHFmtq8qgWJCUu/jFqPKpM7FW5z4N7Ok2DQPJEjhX/zShGrXuN+uQmDaCgyYuDahp\nDGOsM7P79c24BSxPfFCH6e0UjuXP4YZ3xXPBdhiIXsDoIdW4enRl7b6zcGYac3qF\nsm700Mv4jdI/TflnInawSXiWoxbDfxvX2oog8hPrRTHEEvp/MPeIgl7nUvh61S/i\n42a+FeJWXBgSlfCw+TMVowPXtG62spRYBAnsxotIeQHBwMLgREeNhTKjqS84wyxV\n5PAV83+EbrOi7qstygzvo37QOdjLdtpTO3oLvZLsllvt+WH0IFBDwtoKkpetzCEz\n1xJKfjaOwPpV64pT/dyTh53LXYRndPFYz+XIP1MOf8ifKzLTb+gYjwIDAQABo4Go\nMIGlMB0GA1UdDgQWBBQO4y3wlSXsRcmD8dJKbSfyNWtdrDB2BgNVHSMEbzBtgBQO\n4y3wlSXsRcmD8dJKbSfyNWtdrKFKpEgwRjELMAkGA1UEBhMCVVMxEzARBgNVBAgT\nClNvbWUtU3RhdGUxDDAKBgNVBAoTA0lCTTEUMBIGA1UEAxMLVGhlIFJvb3QgQ0GC\nCQDt3eRDEe7LjjAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBBQUAA4ICAQBHajhH\nwBGMJcjwndgaQbAr8B9Z+//ISGzP+QTznIPGhrl9YtfWqRVPbPE/+QOMdD0CsPjf\ngzSUMBbRBRi+hyHzD68EDvj+yG+CmZ5eXqomGtsWvBIMUzf3szJrffK/prC+Ll0M\nsd9B2NT/86WGlfXlV1wVpUhLC1i+6yFOxIW/PUfsev4ZHccylmKZlTmnKHnDf3y0\nHyZRLjoOFokrc7kMlq/bbUqPE4VklaRhTY1CtzEP5jPYYH3X27WfFrsDbwN3MRFr\nA18pq+D96L1Rlj4Eg2LT+T5Hnrofi1gig/s2mb812ZNxY31Ekl9yXd9fjILGfDOS\nWt02ZYPk7MfNYp9NiSFkNuBn1gUAxOt7EZeoTaiA6NjHpXyUUm9wWSM9rkUfL42q\nmeMAzgKAjbmwQGUbiudgrQg1n17/gDpWYbb1PFwfrLOgJv0eviFFvJnP9zQN6v6I\nJbkf37D/66vifx7dHGc+wwpPkfv1y8Z+EQ/emSSpctTBOgtdOSxputK7uYbjXUWF\nynKkIWGTi2kzdcmsnpfOR1rHot9/ifXSoG79ckAj6Sq+MrSJcazNSCyv7utQsq8m\n0H+Mw/5ljyQOd/zUB470JzYNyS2f6gEp1L37onyPjBFvVcXLmAvlKfXhi1PXsMz9\nYbRc2OojbpD9MEI4LZrNZKzkCXNVAe10Bfz5tQ==\n-----END CERTIFICATE-----\n", + "cert-type": "CLIENT", + "cert-id": "56bbb4d7e4b0f7b17cf00000" + } + ], + "mutual-auth": false + }, + { + "id": "56bbb472e4b0f70000000002", + "url": "https://foo.com/v1/catalogs/564b48aae4b0869c782edc2b/tls-profiles/56bbb472e4b0f70000000002", + "name": "tls-profile-serverSarah-2", + "title": "tlsProfile4ServerSarah", + "description": "Use Sarah's own certificate to validate the server Sarah", + "public": false, + "ciphers": [], + "protocols": [], + "certs": [ + { + "name": "TheCertificateOfSarahHerself", + "cert": "-----BEGIN CERTIFICATE-----\nMIIFBTCCAu0CAQEwDQYJKoZIhvcNAQEFBQAwRjELMAkGA1UEBhMCVVMxEzARBgNV\nBAgTClNvbWUtU3RhdGUxDDAKBgNVBAoTA0lCTTEUMBIGA1UEAxMLVGhlIFJvb3Qg\nQ0EwHhcNMTYwMjI2MDIyODAyWhcNMzYwMjIxMDIyODAyWjBLMQswCQYDVQQGEwJV\nUzELMAkGA1UECBMCTUExDDAKBgNVBAoTA0lCTTENMAsGA1UECxMEQVBJbTESMBAG\nA1UEAxMJbG9jYWxob3N0MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA\nzbeWUQCTB4UJ7lsiKvS+milhQLRUM9Yt4/4H9/2F5m541Wf3n6W6OhO9bHyc+U8g\nFgoLwpBVxMtKN+S3VZiVtogKTxLfcBp9EYz0ZywfnYY+CNFDq/pQyVLvEeievZ8f\ncxu+UnGl57aZu0OHlridniCD6oUzpIhbBxs6XZzDc/t9IS8JkHchVwAB+y2sfJj1\nUpvEe69ouUndRM+eOhzyjbwqTLGydUx+bHm77gcXPIznqsYoZdDp9+UQUwaJW5QU\n0MRRoLrzImdTy9HBAVjNN2hp4Ih0Lg4vJ5W0SYIoYzQQJZwH5DR8foI2ax5toBOi\nY96kC6uxvmWfGAJFskDw9ZQMyFcUrdviMqLx8YaaX0uvXm+Kt+FALR2ylLurMMMk\nezrwO2eFbOIeijOrt4MzmzLc85/xgKGAp0ruPMP40gnVN+QQzSlsQFTNSAa2kxzk\nODiTWnimVqRK5KxpQv7V5hmbw68XLDpVHyn/YFSdYcoxzI0nY2Vn/ncif6GarDDG\nGg/D/HjZLeQ4OVPbttSfeGKwP8Vuw33iYXizAPu4NUMD2g24e28eOtWkeB48vHxz\nDTL2om8860O6MfjKBR93nddTt8uhiHGR/o8nprTu92nK242ytACgcYqcQnyaVn4c\n9YEhTuE4iKjRIiGtrra2jtPdaE3NBWnLyne4oY99Bz8CAwEAATANBgkqhkiG9w0B\nAQUFAAOCAgEAZ3ngcnvh89LHoxsBy8mq4mn8FVGKkgFcndyRdFZ31I9xHAkLTJHr\ny7vN0jlN8y1kZxagNacaT1wKHeKLvX4h1jiY/DvXk38IMS4+qagkOnLPbbUOT0fj\nlugqPHOYp6soUTGm0zOg+owoyazRLIShv93jG6v8Yz1t8JlYwEYxlPg8nlP5JsTd\nmAxprP1c5rIuv2Wu2+BiOAQzerW+Bj+1u7fPacgkx49Lem+RFD+/fA/rVw7CnoVF\nIGDTxUmAJb9Mh5m5AmHxKT18H1GPfpRid2u9pFjp17b9Y21RTpCIm/CAI24L0rMp\nrdHhkzNOa3Rei1IkL5NLGh+zp68rpTVeI1e2TYdV/Xw2E0fINZhLZaHcsSInLgWv\n/vtjeheochixLmBU1Wwgf9nXqNqSvKIwdGTczcnmsje+CtURYfnwDBNkYR4o/dkz\naHsjMM+9w5fdYgRon9sqUhhmNgCxmaYo5n7Bv0tl9AfoCPeL0IG+evV+5XXLbn21\nZkL0Yj//zcEdXV7VY67aOOKcRNkyf6LV3KJmHe/Qb8I8KpovpAy0wGhFdYJF6bdY\nLMyImzniIeMh5vZqcg9bXM6jPvviOch3NNxcloppscqdy8pmiHb7AcG3njwgSKf4\nwhGnlDQb4sU7y7mIhcNMHR7LIDI13QRkI6uxTkiJ6Vt8W7pPAiJv93s=\n-----END CERTIFICATE-----\n", + "cert-type": "CLIENT", + "cert-id": "56bbb4d7e4b0f7b17cf00000" + } + ], + "mutual-auth": false + }, + { + "id": "56bbb472e4b0f70000000003", + "url": "https://foo.com/v1/catalogs/564b48aae4b0869c782edc2b/tls-profiles/56bbb472e4b0f70000000003", + "name": "tls-profile-require-tls10", + "title": "tlsProfileRequiresProtocolTLSv10", + "description": "Require the secure protocol to be TLSv10", + "public": false, + "ciphers": [], + "protocols": [ + "TLSv1" + ], + "certs": [ + { + "name": "TheRootCAOfTheServerSarah", + "cert": "-----BEGIN CERTIFICATE-----\nMIIFuDCCA6CgAwIBAgIJAO3d5EMR7suOMA0GCSqGSIb3DQEBBQUAMEYxCzAJBgNV\nBAYTAlVTMRMwEQYDVQQIEwpTb21lLVN0YXRlMQwwCgYDVQQKEwNJQk0xFDASBgNV\nBAMTC1RoZSBSb290IENBMB4XDTE2MDIyNjAxNTU0MFoXDTM2MDIyMTAxNTU0MFow\nRjELMAkGA1UEBhMCVVMxEzARBgNVBAgTClNvbWUtU3RhdGUxDDAKBgNVBAoTA0lC\nTTEUMBIGA1UEAxMLVGhlIFJvb3QgQ0EwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw\nggIKAoICAQC3OsefORCVPPsouOjNRtiul5/B2IvlDMhRzC7XWTHb+9ebx35eekC2\njzP1MkdgO3+FrBDUWDtO1gkKjuDzvvRja5u2qUGao6WMwc+sbj7pVJVBmGT3ZH8K\nvlYiC1mIiLpOy8/8WAy8RCFzgWEDw42WHZQpQ4zti+MN48gBen2leVuTOBHqD8TQ\nOW6b3AapdUoolWovCdwu7w0Q4Qi5+n3Io8myXFF6xL2Rt3iv/WNK3FKjhFL7EfSa\n4MdOxJsi2xd68r0FEfk7Fzfrk3ZijoHQEFexMfXvp7VwSqzq6l1SE3QW73EYqe+2\nHFmtq8qgWJCUu/jFqPKpM7FW5z4N7Ok2DQPJEjhX/zShGrXuN+uQmDaCgyYuDahp\nDGOsM7P79c24BSxPfFCH6e0UjuXP4YZ3xXPBdhiIXsDoIdW4enRl7b6zcGYac3qF\nsm700Mv4jdI/TflnInawSXiWoxbDfxvX2oog8hPrRTHEEvp/MPeIgl7nUvh61S/i\n42a+FeJWXBgSlfCw+TMVowPXtG62spRYBAnsxotIeQHBwMLgREeNhTKjqS84wyxV\n5PAV83+EbrOi7qstygzvo37QOdjLdtpTO3oLvZLsllvt+WH0IFBDwtoKkpetzCEz\n1xJKfjaOwPpV64pT/dyTh53LXYRndPFYz+XIP1MOf8ifKzLTb+gYjwIDAQABo4Go\nMIGlMB0GA1UdDgQWBBQO4y3wlSXsRcmD8dJKbSfyNWtdrDB2BgNVHSMEbzBtgBQO\n4y3wlSXsRcmD8dJKbSfyNWtdrKFKpEgwRjELMAkGA1UEBhMCVVMxEzARBgNVBAgT\nClNvbWUtU3RhdGUxDDAKBgNVBAoTA0lCTTEUMBIGA1UEAxMLVGhlIFJvb3QgQ0GC\nCQDt3eRDEe7LjjAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBBQUAA4ICAQBHajhH\nwBGMJcjwndgaQbAr8B9Z+//ISGzP+QTznIPGhrl9YtfWqRVPbPE/+QOMdD0CsPjf\ngzSUMBbRBRi+hyHzD68EDvj+yG+CmZ5eXqomGtsWvBIMUzf3szJrffK/prC+Ll0M\nsd9B2NT/86WGlfXlV1wVpUhLC1i+6yFOxIW/PUfsev4ZHccylmKZlTmnKHnDf3y0\nHyZRLjoOFokrc7kMlq/bbUqPE4VklaRhTY1CtzEP5jPYYH3X27WfFrsDbwN3MRFr\nA18pq+D96L1Rlj4Eg2LT+T5Hnrofi1gig/s2mb812ZNxY31Ekl9yXd9fjILGfDOS\nWt02ZYPk7MfNYp9NiSFkNuBn1gUAxOt7EZeoTaiA6NjHpXyUUm9wWSM9rkUfL42q\nmeMAzgKAjbmwQGUbiudgrQg1n17/gDpWYbb1PFwfrLOgJv0eviFFvJnP9zQN6v6I\nJbkf37D/66vifx7dHGc+wwpPkfv1y8Z+EQ/emSSpctTBOgtdOSxputK7uYbjXUWF\nynKkIWGTi2kzdcmsnpfOR1rHot9/ifXSoG79ckAj6Sq+MrSJcazNSCyv7utQsq8m\n0H+Mw/5ljyQOd/zUB470JzYNyS2f6gEp1L37onyPjBFvVcXLmAvlKfXhi1PXsMz9\nYbRc2OojbpD9MEI4LZrNZKzkCXNVAe10Bfz5tQ==\n-----END CERTIFICATE-----\n", + "cert-type": "CLIENT", + "cert-id": "56bbb4d7e4b0f7b17cf00000" + } + ], + "mutual-auth": false + }, + { + "id": "56bbb472e4b0f70000000004", + "url": "https://foo.com/v1/catalogs/564b48aae4b0869c782edc2b/tls-profiles/56bbb472e4b0f70000000004", + "name": "tls-profile-require-tls12", + "title": "tlsProfileRequiresProtocolTLSv12", + "description": "Require the secure protocol to be TLSv12", + "public": false, + "ciphers": [], + "protocols": [ + "SSLv3", + "TLSv12" + ], + "certs": [ + { + "name": "TheRootCAOfTheServerSarah", + "cert": "-----BEGIN CERTIFICATE-----\nMIIFuDCCA6CgAwIBAgIJAO3d5EMR7suOMA0GCSqGSIb3DQEBBQUAMEYxCzAJBgNV\nBAYTAlVTMRMwEQYDVQQIEwpTb21lLVN0YXRlMQwwCgYDVQQKEwNJQk0xFDASBgNV\nBAMTC1RoZSBSb290IENBMB4XDTE2MDIyNjAxNTU0MFoXDTM2MDIyMTAxNTU0MFow\nRjELMAkGA1UEBhMCVVMxEzARBgNVBAgTClNvbWUtU3RhdGUxDDAKBgNVBAoTA0lC\nTTEUMBIGA1UEAxMLVGhlIFJvb3QgQ0EwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw\nggIKAoICAQC3OsefORCVPPsouOjNRtiul5/B2IvlDMhRzC7XWTHb+9ebx35eekC2\njzP1MkdgO3+FrBDUWDtO1gkKjuDzvvRja5u2qUGao6WMwc+sbj7pVJVBmGT3ZH8K\nvlYiC1mIiLpOy8/8WAy8RCFzgWEDw42WHZQpQ4zti+MN48gBen2leVuTOBHqD8TQ\nOW6b3AapdUoolWovCdwu7w0Q4Qi5+n3Io8myXFF6xL2Rt3iv/WNK3FKjhFL7EfSa\n4MdOxJsi2xd68r0FEfk7Fzfrk3ZijoHQEFexMfXvp7VwSqzq6l1SE3QW73EYqe+2\nHFmtq8qgWJCUu/jFqPKpM7FW5z4N7Ok2DQPJEjhX/zShGrXuN+uQmDaCgyYuDahp\nDGOsM7P79c24BSxPfFCH6e0UjuXP4YZ3xXPBdhiIXsDoIdW4enRl7b6zcGYac3qF\nsm700Mv4jdI/TflnInawSXiWoxbDfxvX2oog8hPrRTHEEvp/MPeIgl7nUvh61S/i\n42a+FeJWXBgSlfCw+TMVowPXtG62spRYBAnsxotIeQHBwMLgREeNhTKjqS84wyxV\n5PAV83+EbrOi7qstygzvo37QOdjLdtpTO3oLvZLsllvt+WH0IFBDwtoKkpetzCEz\n1xJKfjaOwPpV64pT/dyTh53LXYRndPFYz+XIP1MOf8ifKzLTb+gYjwIDAQABo4Go\nMIGlMB0GA1UdDgQWBBQO4y3wlSXsRcmD8dJKbSfyNWtdrDB2BgNVHSMEbzBtgBQO\n4y3wlSXsRcmD8dJKbSfyNWtdrKFKpEgwRjELMAkGA1UEBhMCVVMxEzARBgNVBAgT\nClNvbWUtU3RhdGUxDDAKBgNVBAoTA0lCTTEUMBIGA1UEAxMLVGhlIFJvb3QgQ0GC\nCQDt3eRDEe7LjjAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBBQUAA4ICAQBHajhH\nwBGMJcjwndgaQbAr8B9Z+//ISGzP+QTznIPGhrl9YtfWqRVPbPE/+QOMdD0CsPjf\ngzSUMBbRBRi+hyHzD68EDvj+yG+CmZ5eXqomGtsWvBIMUzf3szJrffK/prC+Ll0M\nsd9B2NT/86WGlfXlV1wVpUhLC1i+6yFOxIW/PUfsev4ZHccylmKZlTmnKHnDf3y0\nHyZRLjoOFokrc7kMlq/bbUqPE4VklaRhTY1CtzEP5jPYYH3X27WfFrsDbwN3MRFr\nA18pq+D96L1Rlj4Eg2LT+T5Hnrofi1gig/s2mb812ZNxY31Ekl9yXd9fjILGfDOS\nWt02ZYPk7MfNYp9NiSFkNuBn1gUAxOt7EZeoTaiA6NjHpXyUUm9wWSM9rkUfL42q\nmeMAzgKAjbmwQGUbiudgrQg1n17/gDpWYbb1PFwfrLOgJv0eviFFvJnP9zQN6v6I\nJbkf37D/66vifx7dHGc+wwpPkfv1y8Z+EQ/emSSpctTBOgtdOSxputK7uYbjXUWF\nynKkIWGTi2kzdcmsnpfOR1rHot9/ifXSoG79ckAj6Sq+MrSJcazNSCyv7utQsq8m\n0H+Mw/5ljyQOd/zUB470JzYNyS2f6gEp1L37onyPjBFvVcXLmAvlKfXhi1PXsMz9\nYbRc2OojbpD9MEI4LZrNZKzkCXNVAe10Bfz5tQ==\n-----END CERTIFICATE-----\n", + "cert-type": "CLIENT", + "cert-id": "56bbb4d7e4b0f7b17cf00000" + } + ], + "mutual-auth": false + }, + { + "id": "56bbb472e4b0f70000000005", + "url": "https://foo.com/v1/catalogs/564b48aae4b0869c782edc2b/tls-profiles/56bbb472e4b0f70000000005", + "name": "use-cipher-TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256", + "title": "tlsProfileUseCipher_TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256", + "description": "Use the cipher TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256", + "public": false, + "ciphers": [ + "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256" + ], + "certs": [ + { + "name": "TheRootCAOfTheServerSarah", + "cert": "-----BEGIN CERTIFICATE-----\nMIIFuDCCA6CgAwIBAgIJAO3d5EMR7suOMA0GCSqGSIb3DQEBBQUAMEYxCzAJBgNV\nBAYTAlVTMRMwEQYDVQQIEwpTb21lLVN0YXRlMQwwCgYDVQQKEwNJQk0xFDASBgNV\nBAMTC1RoZSBSb290IENBMB4XDTE2MDIyNjAxNTU0MFoXDTM2MDIyMTAxNTU0MFow\nRjELMAkGA1UEBhMCVVMxEzARBgNVBAgTClNvbWUtU3RhdGUxDDAKBgNVBAoTA0lC\nTTEUMBIGA1UEAxMLVGhlIFJvb3QgQ0EwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw\nggIKAoICAQC3OsefORCVPPsouOjNRtiul5/B2IvlDMhRzC7XWTHb+9ebx35eekC2\njzP1MkdgO3+FrBDUWDtO1gkKjuDzvvRja5u2qUGao6WMwc+sbj7pVJVBmGT3ZH8K\nvlYiC1mIiLpOy8/8WAy8RCFzgWEDw42WHZQpQ4zti+MN48gBen2leVuTOBHqD8TQ\nOW6b3AapdUoolWovCdwu7w0Q4Qi5+n3Io8myXFF6xL2Rt3iv/WNK3FKjhFL7EfSa\n4MdOxJsi2xd68r0FEfk7Fzfrk3ZijoHQEFexMfXvp7VwSqzq6l1SE3QW73EYqe+2\nHFmtq8qgWJCUu/jFqPKpM7FW5z4N7Ok2DQPJEjhX/zShGrXuN+uQmDaCgyYuDahp\nDGOsM7P79c24BSxPfFCH6e0UjuXP4YZ3xXPBdhiIXsDoIdW4enRl7b6zcGYac3qF\nsm700Mv4jdI/TflnInawSXiWoxbDfxvX2oog8hPrRTHEEvp/MPeIgl7nUvh61S/i\n42a+FeJWXBgSlfCw+TMVowPXtG62spRYBAnsxotIeQHBwMLgREeNhTKjqS84wyxV\n5PAV83+EbrOi7qstygzvo37QOdjLdtpTO3oLvZLsllvt+WH0IFBDwtoKkpetzCEz\n1xJKfjaOwPpV64pT/dyTh53LXYRndPFYz+XIP1MOf8ifKzLTb+gYjwIDAQABo4Go\nMIGlMB0GA1UdDgQWBBQO4y3wlSXsRcmD8dJKbSfyNWtdrDB2BgNVHSMEbzBtgBQO\n4y3wlSXsRcmD8dJKbSfyNWtdrKFKpEgwRjELMAkGA1UEBhMCVVMxEzARBgNVBAgT\nClNvbWUtU3RhdGUxDDAKBgNVBAoTA0lCTTEUMBIGA1UEAxMLVGhlIFJvb3QgQ0GC\nCQDt3eRDEe7LjjAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBBQUAA4ICAQBHajhH\nwBGMJcjwndgaQbAr8B9Z+//ISGzP+QTznIPGhrl9YtfWqRVPbPE/+QOMdD0CsPjf\ngzSUMBbRBRi+hyHzD68EDvj+yG+CmZ5eXqomGtsWvBIMUzf3szJrffK/prC+Ll0M\nsd9B2NT/86WGlfXlV1wVpUhLC1i+6yFOxIW/PUfsev4ZHccylmKZlTmnKHnDf3y0\nHyZRLjoOFokrc7kMlq/bbUqPE4VklaRhTY1CtzEP5jPYYH3X27WfFrsDbwN3MRFr\nA18pq+D96L1Rlj4Eg2LT+T5Hnrofi1gig/s2mb812ZNxY31Ekl9yXd9fjILGfDOS\nWt02ZYPk7MfNYp9NiSFkNuBn1gUAxOt7EZeoTaiA6NjHpXyUUm9wWSM9rkUfL42q\nmeMAzgKAjbmwQGUbiudgrQg1n17/gDpWYbb1PFwfrLOgJv0eviFFvJnP9zQN6v6I\nJbkf37D/66vifx7dHGc+wwpPkfv1y8Z+EQ/emSSpctTBOgtdOSxputK7uYbjXUWF\nynKkIWGTi2kzdcmsnpfOR1rHot9/ifXSoG79ckAj6Sq+MrSJcazNSCyv7utQsq8m\n0H+Mw/5ljyQOd/zUB470JzYNyS2f6gEp1L37onyPjBFvVcXLmAvlKfXhi1PXsMz9\nYbRc2OojbpD9MEI4LZrNZKzkCXNVAe10Bfz5tQ==\n-----END CERTIFICATE-----\n", + "cert-type": "CLIENT", + "cert-id": "56bbb4d7e4b0f7b17cf00000" + } + ], + "mutual-auth": false + }, + { + "id": "56bbb472e4b0f70000000006", + "url": "https://foo.com/v1/catalogs/564b48aae4b0869c782edc2b/tls-profiles/56bbb472e4b0f70000000006", + "name": "use-cipher-TLS_RSA_WITH_3DES_EDE_CBC_SHA", + "title": "tlsProfileUseCipher_TLS_RSA_WITH_3DES_EDE_CBC_SHA", + "description": "Use the cipher TLS_RSA_WITH_3DES_EDE_CBC_SHA", + "public": false, + "ciphers": [ + "TLS_RSA_WITH_3DES_EDE_CBC_SHA" + ], + "certs": [ + { + "name": "TheRootCAOfTheServerSarah", + "cert": "-----BEGIN CERTIFICATE-----\nMIIFuDCCA6CgAwIBAgIJAO3d5EMR7suOMA0GCSqGSIb3DQEBBQUAMEYxCzAJBgNV\nBAYTAlVTMRMwEQYDVQQIEwpTb21lLVN0YXRlMQwwCgYDVQQKEwNJQk0xFDASBgNV\nBAMTC1RoZSBSb290IENBMB4XDTE2MDIyNjAxNTU0MFoXDTM2MDIyMTAxNTU0MFow\nRjELMAkGA1UEBhMCVVMxEzARBgNVBAgTClNvbWUtU3RhdGUxDDAKBgNVBAoTA0lC\nTTEUMBIGA1UEAxMLVGhlIFJvb3QgQ0EwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw\nggIKAoICAQC3OsefORCVPPsouOjNRtiul5/B2IvlDMhRzC7XWTHb+9ebx35eekC2\njzP1MkdgO3+FrBDUWDtO1gkKjuDzvvRja5u2qUGao6WMwc+sbj7pVJVBmGT3ZH8K\nvlYiC1mIiLpOy8/8WAy8RCFzgWEDw42WHZQpQ4zti+MN48gBen2leVuTOBHqD8TQ\nOW6b3AapdUoolWovCdwu7w0Q4Qi5+n3Io8myXFF6xL2Rt3iv/WNK3FKjhFL7EfSa\n4MdOxJsi2xd68r0FEfk7Fzfrk3ZijoHQEFexMfXvp7VwSqzq6l1SE3QW73EYqe+2\nHFmtq8qgWJCUu/jFqPKpM7FW5z4N7Ok2DQPJEjhX/zShGrXuN+uQmDaCgyYuDahp\nDGOsM7P79c24BSxPfFCH6e0UjuXP4YZ3xXPBdhiIXsDoIdW4enRl7b6zcGYac3qF\nsm700Mv4jdI/TflnInawSXiWoxbDfxvX2oog8hPrRTHEEvp/MPeIgl7nUvh61S/i\n42a+FeJWXBgSlfCw+TMVowPXtG62spRYBAnsxotIeQHBwMLgREeNhTKjqS84wyxV\n5PAV83+EbrOi7qstygzvo37QOdjLdtpTO3oLvZLsllvt+WH0IFBDwtoKkpetzCEz\n1xJKfjaOwPpV64pT/dyTh53LXYRndPFYz+XIP1MOf8ifKzLTb+gYjwIDAQABo4Go\nMIGlMB0GA1UdDgQWBBQO4y3wlSXsRcmD8dJKbSfyNWtdrDB2BgNVHSMEbzBtgBQO\n4y3wlSXsRcmD8dJKbSfyNWtdrKFKpEgwRjELMAkGA1UEBhMCVVMxEzARBgNVBAgT\nClNvbWUtU3RhdGUxDDAKBgNVBAoTA0lCTTEUMBIGA1UEAxMLVGhlIFJvb3QgQ0GC\nCQDt3eRDEe7LjjAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBBQUAA4ICAQBHajhH\nwBGMJcjwndgaQbAr8B9Z+//ISGzP+QTznIPGhrl9YtfWqRVPbPE/+QOMdD0CsPjf\ngzSUMBbRBRi+hyHzD68EDvj+yG+CmZ5eXqomGtsWvBIMUzf3szJrffK/prC+Ll0M\nsd9B2NT/86WGlfXlV1wVpUhLC1i+6yFOxIW/PUfsev4ZHccylmKZlTmnKHnDf3y0\nHyZRLjoOFokrc7kMlq/bbUqPE4VklaRhTY1CtzEP5jPYYH3X27WfFrsDbwN3MRFr\nA18pq+D96L1Rlj4Eg2LT+T5Hnrofi1gig/s2mb812ZNxY31Ekl9yXd9fjILGfDOS\nWt02ZYPk7MfNYp9NiSFkNuBn1gUAxOt7EZeoTaiA6NjHpXyUUm9wWSM9rkUfL42q\nmeMAzgKAjbmwQGUbiudgrQg1n17/gDpWYbb1PFwfrLOgJv0eviFFvJnP9zQN6v6I\nJbkf37D/66vifx7dHGc+wwpPkfv1y8Z+EQ/emSSpctTBOgtdOSxputK7uYbjXUWF\nynKkIWGTi2kzdcmsnpfOR1rHot9/ifXSoG79ckAj6Sq+MrSJcazNSCyv7utQsq8m\n0H+Mw/5ljyQOd/zUB470JzYNyS2f6gEp1L37onyPjBFvVcXLmAvlKfXhi1PXsMz9\nYbRc2OojbpD9MEI4LZrNZKzkCXNVAe10Bfz5tQ==\n-----END CERTIFICATE-----\n", + "cert-type": "CLIENT", + "cert-id": "56bbb4d7e4b0f7b17cf00000" + } + ], + "mutual-auth": false + }, + { + "id": "56bbb472e4b0f70000000007", + "url": "https://foo.com/v1/catalogs/564b48aae4b0869c782edc2b/tls-profiles/56bbb472e4b0f70000000007", + "name": "use-cipher-PSK_WITH_CAMELLIA_128_CBC_SHA256", + "title": "tlsProfileUseCipher_PSK_WITH_CAMELLIA_128_CBC_SHA256", + "description": "Use the cipher PSK_WITH_CAMELLIA_128_CBC_SHA256", + "public": false, + "ciphers": [ + "PSK_WITH_CAMELLIA_128_CBC_SHA256" + ], + "certs": [ + { + "name": "TheRootCAOfTheServerSarah", + "cert": "-----BEGIN CERTIFICATE-----\nMIIFuDCCA6CgAwIBAgIJAO3d5EMR7suOMA0GCSqGSIb3DQEBBQUAMEYxCzAJBgNV\nBAYTAlVTMRMwEQYDVQQIEwpTb21lLVN0YXRlMQwwCgYDVQQKEwNJQk0xFDASBgNV\nBAMTC1RoZSBSb290IENBMB4XDTE2MDIyNjAxNTU0MFoXDTM2MDIyMTAxNTU0MFow\nRjELMAkGA1UEBhMCVVMxEzARBgNVBAgTClNvbWUtU3RhdGUxDDAKBgNVBAoTA0lC\nTTEUMBIGA1UEAxMLVGhlIFJvb3QgQ0EwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw\nggIKAoICAQC3OsefORCVPPsouOjNRtiul5/B2IvlDMhRzC7XWTHb+9ebx35eekC2\njzP1MkdgO3+FrBDUWDtO1gkKjuDzvvRja5u2qUGao6WMwc+sbj7pVJVBmGT3ZH8K\nvlYiC1mIiLpOy8/8WAy8RCFzgWEDw42WHZQpQ4zti+MN48gBen2leVuTOBHqD8TQ\nOW6b3AapdUoolWovCdwu7w0Q4Qi5+n3Io8myXFF6xL2Rt3iv/WNK3FKjhFL7EfSa\n4MdOxJsi2xd68r0FEfk7Fzfrk3ZijoHQEFexMfXvp7VwSqzq6l1SE3QW73EYqe+2\nHFmtq8qgWJCUu/jFqPKpM7FW5z4N7Ok2DQPJEjhX/zShGrXuN+uQmDaCgyYuDahp\nDGOsM7P79c24BSxPfFCH6e0UjuXP4YZ3xXPBdhiIXsDoIdW4enRl7b6zcGYac3qF\nsm700Mv4jdI/TflnInawSXiWoxbDfxvX2oog8hPrRTHEEvp/MPeIgl7nUvh61S/i\n42a+FeJWXBgSlfCw+TMVowPXtG62spRYBAnsxotIeQHBwMLgREeNhTKjqS84wyxV\n5PAV83+EbrOi7qstygzvo37QOdjLdtpTO3oLvZLsllvt+WH0IFBDwtoKkpetzCEz\n1xJKfjaOwPpV64pT/dyTh53LXYRndPFYz+XIP1MOf8ifKzLTb+gYjwIDAQABo4Go\nMIGlMB0GA1UdDgQWBBQO4y3wlSXsRcmD8dJKbSfyNWtdrDB2BgNVHSMEbzBtgBQO\n4y3wlSXsRcmD8dJKbSfyNWtdrKFKpEgwRjELMAkGA1UEBhMCVVMxEzARBgNVBAgT\nClNvbWUtU3RhdGUxDDAKBgNVBAoTA0lCTTEUMBIGA1UEAxMLVGhlIFJvb3QgQ0GC\nCQDt3eRDEe7LjjAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBBQUAA4ICAQBHajhH\nwBGMJcjwndgaQbAr8B9Z+//ISGzP+QTznIPGhrl9YtfWqRVPbPE/+QOMdD0CsPjf\ngzSUMBbRBRi+hyHzD68EDvj+yG+CmZ5eXqomGtsWvBIMUzf3szJrffK/prC+Ll0M\nsd9B2NT/86WGlfXlV1wVpUhLC1i+6yFOxIW/PUfsev4ZHccylmKZlTmnKHnDf3y0\nHyZRLjoOFokrc7kMlq/bbUqPE4VklaRhTY1CtzEP5jPYYH3X27WfFrsDbwN3MRFr\nA18pq+D96L1Rlj4Eg2LT+T5Hnrofi1gig/s2mb812ZNxY31Ekl9yXd9fjILGfDOS\nWt02ZYPk7MfNYp9NiSFkNuBn1gUAxOt7EZeoTaiA6NjHpXyUUm9wWSM9rkUfL42q\nmeMAzgKAjbmwQGUbiudgrQg1n17/gDpWYbb1PFwfrLOgJv0eviFFvJnP9zQN6v6I\nJbkf37D/66vifx7dHGc+wwpPkfv1y8Z+EQ/emSSpctTBOgtdOSxputK7uYbjXUWF\nynKkIWGTi2kzdcmsnpfOR1rHot9/ifXSoG79ckAj6Sq+MrSJcazNSCyv7utQsq8m\n0H+Mw/5ljyQOd/zUB470JzYNyS2f6gEp1L37onyPjBFvVcXLmAvlKfXhi1PXsMz9\nYbRc2OojbpD9MEI4LZrNZKzkCXNVAe10Bfz5tQ==\n-----END CERTIFICATE-----\n", + "cert-type": "CLIENT", + "cert-id": "56bbb4d7e4b0f7b17cf00000" + } + ], + "mutual-auth": false + }, + { + "id": "56bbb472e4b0f7b17cfaaaa0", + "url": "https://foo.com/v1/catalogs/564b48aae4b0869c782edc2b/tls-profiles/56bbb472e4b0f7b17cfaaaa0", + "name": "tls-profile-alice-0", + "title": "TLSProfileOfAlice-0", + "description": "Insecure TLS Profile", + "public": false, + "certs": [], + "mutual-auth": false + }, + { + "id": "56bbb472e4b0f7b17cfaaaa1", + "url": "https://foo.com/v1/catalogs/564b48aae4b0869c782edc2b/tls-profiles/56bbb472e4b0f7b17cfaaaa1", + "name": "tls-profile-alice-1", + "title": "TLSProfileOfAlice-1", + "description": "Use the 'root' CA to authenticate the server", + "public": false, + "certs": [ + { + "name": "TheRootCAOfTheServerSarah", + "cert": "-----BEGIN CERTIFICATE-----\nMIIFuDCCA6CgAwIBAgIJAO3d5EMR7suOMA0GCSqGSIb3DQEBBQUAMEYxCzAJBgNV\nBAYTAlVTMRMwEQYDVQQIEwpTb21lLVN0YXRlMQwwCgYDVQQKEwNJQk0xFDASBgNV\nBAMTC1RoZSBSb290IENBMB4XDTE2MDIyNjAxNTU0MFoXDTM2MDIyMTAxNTU0MFow\nRjELMAkGA1UEBhMCVVMxEzARBgNVBAgTClNvbWUtU3RhdGUxDDAKBgNVBAoTA0lC\nTTEUMBIGA1UEAxMLVGhlIFJvb3QgQ0EwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw\nggIKAoICAQC3OsefORCVPPsouOjNRtiul5/B2IvlDMhRzC7XWTHb+9ebx35eekC2\njzP1MkdgO3+FrBDUWDtO1gkKjuDzvvRja5u2qUGao6WMwc+sbj7pVJVBmGT3ZH8K\nvlYiC1mIiLpOy8/8WAy8RCFzgWEDw42WHZQpQ4zti+MN48gBen2leVuTOBHqD8TQ\nOW6b3AapdUoolWovCdwu7w0Q4Qi5+n3Io8myXFF6xL2Rt3iv/WNK3FKjhFL7EfSa\n4MdOxJsi2xd68r0FEfk7Fzfrk3ZijoHQEFexMfXvp7VwSqzq6l1SE3QW73EYqe+2\nHFmtq8qgWJCUu/jFqPKpM7FW5z4N7Ok2DQPJEjhX/zShGrXuN+uQmDaCgyYuDahp\nDGOsM7P79c24BSxPfFCH6e0UjuXP4YZ3xXPBdhiIXsDoIdW4enRl7b6zcGYac3qF\nsm700Mv4jdI/TflnInawSXiWoxbDfxvX2oog8hPrRTHEEvp/MPeIgl7nUvh61S/i\n42a+FeJWXBgSlfCw+TMVowPXtG62spRYBAnsxotIeQHBwMLgREeNhTKjqS84wyxV\n5PAV83+EbrOi7qstygzvo37QOdjLdtpTO3oLvZLsllvt+WH0IFBDwtoKkpetzCEz\n1xJKfjaOwPpV64pT/dyTh53LXYRndPFYz+XIP1MOf8ifKzLTb+gYjwIDAQABo4Go\nMIGlMB0GA1UdDgQWBBQO4y3wlSXsRcmD8dJKbSfyNWtdrDB2BgNVHSMEbzBtgBQO\n4y3wlSXsRcmD8dJKbSfyNWtdrKFKpEgwRjELMAkGA1UEBhMCVVMxEzARBgNVBAgT\nClNvbWUtU3RhdGUxDDAKBgNVBAoTA0lCTTEUMBIGA1UEAxMLVGhlIFJvb3QgQ0GC\nCQDt3eRDEe7LjjAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBBQUAA4ICAQBHajhH\nwBGMJcjwndgaQbAr8B9Z+//ISGzP+QTznIPGhrl9YtfWqRVPbPE/+QOMdD0CsPjf\ngzSUMBbRBRi+hyHzD68EDvj+yG+CmZ5eXqomGtsWvBIMUzf3szJrffK/prC+Ll0M\nsd9B2NT/86WGlfXlV1wVpUhLC1i+6yFOxIW/PUfsev4ZHccylmKZlTmnKHnDf3y0\nHyZRLjoOFokrc7kMlq/bbUqPE4VklaRhTY1CtzEP5jPYYH3X27WfFrsDbwN3MRFr\nA18pq+D96L1Rlj4Eg2LT+T5Hnrofi1gig/s2mb812ZNxY31Ekl9yXd9fjILGfDOS\nWt02ZYPk7MfNYp9NiSFkNuBn1gUAxOt7EZeoTaiA6NjHpXyUUm9wWSM9rkUfL42q\nmeMAzgKAjbmwQGUbiudgrQg1n17/gDpWYbb1PFwfrLOgJv0eviFFvJnP9zQN6v6I\nJbkf37D/66vifx7dHGc+wwpPkfv1y8Z+EQ/emSSpctTBOgtdOSxputK7uYbjXUWF\nynKkIWGTi2kzdcmsnpfOR1rHot9/ifXSoG79ckAj6Sq+MrSJcazNSCyv7utQsq8m\n0H+Mw/5ljyQOd/zUB470JzYNyS2f6gEp1L37onyPjBFvVcXLmAvlKfXhi1PXsMz9\nYbRc2OojbpD9MEI4LZrNZKzkCXNVAe10Bfz5tQ==\n-----END CERTIFICATE-----\n", + "cert-type": "CLIENT", + "cert-id": "56bbb4d7e4b0f7b17cf00000" + } + ], + "mutual-auth": false + }, + { + "id": "56bbb472e4b0f7b17cfaaaa2", + "url": "https://foo.com/v1/catalogs/564b48aae4b0869c782edc2b/tls-profiles/56bbb472e4b0f7b17cfaaaa2", + "name": "tls-profile-alice-2", + "title": "TLSProfileOfAlice-2", + "description": "Alice as the client and use the 'root' CA to authenticate the server", + "public": false, + "ciphers": [], + "protocols": [], + "certs": [ + { + "name": "TheRootCAOfTheServerSarah", + "cert": "-----BEGIN CERTIFICATE-----\nMIIFuDCCA6CgAwIBAgIJAO3d5EMR7suOMA0GCSqGSIb3DQEBBQUAMEYxCzAJBgNV\nBAYTAlVTMRMwEQYDVQQIEwpTb21lLVN0YXRlMQwwCgYDVQQKEwNJQk0xFDASBgNV\nBAMTC1RoZSBSb290IENBMB4XDTE2MDIyNjAxNTU0MFoXDTM2MDIyMTAxNTU0MFow\nRjELMAkGA1UEBhMCVVMxEzARBgNVBAgTClNvbWUtU3RhdGUxDDAKBgNVBAoTA0lC\nTTEUMBIGA1UEAxMLVGhlIFJvb3QgQ0EwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw\nggIKAoICAQC3OsefORCVPPsouOjNRtiul5/B2IvlDMhRzC7XWTHb+9ebx35eekC2\njzP1MkdgO3+FrBDUWDtO1gkKjuDzvvRja5u2qUGao6WMwc+sbj7pVJVBmGT3ZH8K\nvlYiC1mIiLpOy8/8WAy8RCFzgWEDw42WHZQpQ4zti+MN48gBen2leVuTOBHqD8TQ\nOW6b3AapdUoolWovCdwu7w0Q4Qi5+n3Io8myXFF6xL2Rt3iv/WNK3FKjhFL7EfSa\n4MdOxJsi2xd68r0FEfk7Fzfrk3ZijoHQEFexMfXvp7VwSqzq6l1SE3QW73EYqe+2\nHFmtq8qgWJCUu/jFqPKpM7FW5z4N7Ok2DQPJEjhX/zShGrXuN+uQmDaCgyYuDahp\nDGOsM7P79c24BSxPfFCH6e0UjuXP4YZ3xXPBdhiIXsDoIdW4enRl7b6zcGYac3qF\nsm700Mv4jdI/TflnInawSXiWoxbDfxvX2oog8hPrRTHEEvp/MPeIgl7nUvh61S/i\n42a+FeJWXBgSlfCw+TMVowPXtG62spRYBAnsxotIeQHBwMLgREeNhTKjqS84wyxV\n5PAV83+EbrOi7qstygzvo37QOdjLdtpTO3oLvZLsllvt+WH0IFBDwtoKkpetzCEz\n1xJKfjaOwPpV64pT/dyTh53LXYRndPFYz+XIP1MOf8ifKzLTb+gYjwIDAQABo4Go\nMIGlMB0GA1UdDgQWBBQO4y3wlSXsRcmD8dJKbSfyNWtdrDB2BgNVHSMEbzBtgBQO\n4y3wlSXsRcmD8dJKbSfyNWtdrKFKpEgwRjELMAkGA1UEBhMCVVMxEzARBgNVBAgT\nClNvbWUtU3RhdGUxDDAKBgNVBAoTA0lCTTEUMBIGA1UEAxMLVGhlIFJvb3QgQ0GC\nCQDt3eRDEe7LjjAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBBQUAA4ICAQBHajhH\nwBGMJcjwndgaQbAr8B9Z+//ISGzP+QTznIPGhrl9YtfWqRVPbPE/+QOMdD0CsPjf\ngzSUMBbRBRi+hyHzD68EDvj+yG+CmZ5eXqomGtsWvBIMUzf3szJrffK/prC+Ll0M\nsd9B2NT/86WGlfXlV1wVpUhLC1i+6yFOxIW/PUfsev4ZHccylmKZlTmnKHnDf3y0\nHyZRLjoOFokrc7kMlq/bbUqPE4VklaRhTY1CtzEP5jPYYH3X27WfFrsDbwN3MRFr\nA18pq+D96L1Rlj4Eg2LT+T5Hnrofi1gig/s2mb812ZNxY31Ekl9yXd9fjILGfDOS\nWt02ZYPk7MfNYp9NiSFkNuBn1gUAxOt7EZeoTaiA6NjHpXyUUm9wWSM9rkUfL42q\nmeMAzgKAjbmwQGUbiudgrQg1n17/gDpWYbb1PFwfrLOgJv0eviFFvJnP9zQN6v6I\nJbkf37D/66vifx7dHGc+wwpPkfv1y8Z+EQ/emSSpctTBOgtdOSxputK7uYbjXUWF\nynKkIWGTi2kzdcmsnpfOR1rHot9/ifXSoG79ckAj6Sq+MrSJcazNSCyv7utQsq8m\n0H+Mw/5ljyQOd/zUB470JzYNyS2f6gEp1L37onyPjBFvVcXLmAvlKfXhi1PXsMz9\nYbRc2OojbpD9MEI4LZrNZKzkCXNVAe10Bfz5tQ==\n-----END CERTIFICATE-----\n", + "cert-type": "CLIENT", + "cert-id": "56bbb4d7e4b0f7b17cf00000" + }, + { + "name": "CertificateOfTheClientAlice", + "cert": "-----BEGIN CERTIFICATE-----\nMIIFATCCAukCAQIwDQYJKoZIhvcNAQEFBQAwRjELMAkGA1UEBhMCVVMxEzARBgNV\nBAgTClNvbWUtU3RhdGUxDDAKBgNVBAoTA0lCTTEUMBIGA1UEAxMLVGhlIFJvb3Qg\nQ0EwHhcNMTYwMjI2MDIwMDE1WhcNMzYwMjIxMDIwMDE1WjBHMQswCQYDVQQGEwJV\nUzELMAkGA1UECBMCTUExDDAKBgNVBAoTA0lCTTENMAsGA1UECxMEQVBJbTEOMAwG\nA1UEAxMFQWxpY2UwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDSS4IJ\ndpsloZNGUl2erMVy+cWzzoUH0pRirLGGOOwYtmqwDSY6/9jXUtVJpBX81n6X22Ux\nTBp7bD8yCxYVTLh0soXuvtp7Mbth4L0xbJbl4UHpryKIHx8QkuhgnkV2+FF7NY59\nnWvBijXHC63zNccR6VPDvsO+lYVCCyfV+QmvZzz7mF+yYn9IwiCV77OGJPovmHTv\n5NLyLWg01WzILxG/LwPc4pehISdtalh5ifmKWnXyxvcQBW8M3zMjogoIv4P647+/\nhpfBdjV1aQp7NIQg2l5OJ361Mq3ateLh4WYrl3FbkwI6mA4dZVxZSbJCM2bCJmRu\n8/+yusP3FtfGogaO0wCTPnXJ19ddpNLRPbfa8kFN6Jft8F7w0dW4dwLrW6YFAeRa\nv30QeBWKBYo6o3HhAj25Pwfp1Nad7bKhIQkD5XSuMoDbqaC79DQBP9wdqSpdGWQW\nyY4IQ31C/gvFttE4vQ9/GRqi/AGl8iS/9UNoHAfzHUa0MVhao1Fggt4q3KBmV2Mr\n9hn3M1XWr2rcc4Lf9GTr1acc58OIT8aIr5tLk2o5qCiWIe2MLxpI1Sq+shvJ/ePr\nPN4jnZNm13Z6Gw+HFEjZK1ZX6xniEe9+fzLis3s+X85S+gzCe6BzaawnQUYVp9L9\nEcqIpaivMTRltCUVyS9EklhT9r02XoEVNHNbkQIDAQABMA0GCSqGSIb3DQEBBQUA\nA4ICAQBd+/HvcGa7GOUDgrsjMgb8i4V4Zp4QrHQDSrZbs9JzHgmUgXUEvRPpGppF\nbwP3+YkvZSoA9ejO7qdaPQwxNxYc9pcQQOqp5eR5gOmBuxtrtSDkvQ78+RfqEa/5\n8RhWvxuJBJa7mN0KidolUMUEgSvltOOPm/PZu/EqS/JycP+1eMDqYW0ba+VOnrWk\nVWcQRkpY3Cl3KzTjMzDn7Io0zTYNSi71BannBqQvY3IGxMdbHyXBnBmTepReNqwv\nF2UapDwUHPqFunGcpgjmEuT8BvOaObKnA12Y8kW0mwb1DLlpKARc1rmbYpbKx6mY\nUwjGRawbfXOe4ue1HNyOP3HFVMw+oHalTAgP319d1PdLT5+YAjeu3BDG8u9zZIy3\nn7wd09qt+mCJcxnBRRgM651v3ZJbaGR8oFM7QUfWVemCAB8ETpBvlrF5jIiTPYgv\npAHN5ys7anxFZInk6/ySGyb3UxmqoAAcWFYlgGtxLSGaNuxf/8qDRsW/zouolvpc\nFJ/dsI83XQoxoH5KpHx1OcMSKkoonNCU4YGyz72wOW8Cufg+G0j0g4ClSuXxwZCG\nZd1bPYfv5X/W45jI/99pYd2ZsIYBoUZU6D+pKj3GkGz4g8YgLxpOTJ2rtbu/M6uH\njbkmBZInA25xt/bu5riSrpbbdRmfuikuUCqxTuNtYevH069CNA==\n-----END CERTIFICATE-----\n", + "cert-type": "PUBLIC", + "cert-id": "56bbb4d7e4b0f7b17cfaaaaa" + } + ], + "mutual-auth": true, + "private-key": "-----BEGIN RSA PRIVATE KEY-----\n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\n-----END RSA PRIVATE KEY-----\n" + }, + { + "id": "56bbb472e4b0f7b17cfbbbb2", + "url": "https://foo.com/v1/catalogs/564b48aae4b0869c782edc2b/tls-profiles/56bbb472e4b0f7b17cfbbbb2", + "name": "tls-profile-bob-2", + "title": "TLSProfileOfBob-2", + "description": "Bob as the client and use the 'root' CA to authenticate the server", + "public": false, + "ciphers": [], + "protocols": [], + "certs": [ + { + "name": "TheRootCAOfTheServerSarah", + "cert": "-----BEGIN CERTIFICATE-----\nMIIFuDCCA6CgAwIBAgIJAO3d5EMR7suOMA0GCSqGSIb3DQEBBQUAMEYxCzAJBgNV\nBAYTAlVTMRMwEQYDVQQIEwpTb21lLVN0YXRlMQwwCgYDVQQKEwNJQk0xFDASBgNV\nBAMTC1RoZSBSb290IENBMB4XDTE2MDIyNjAxNTU0MFoXDTM2MDIyMTAxNTU0MFow\nRjELMAkGA1UEBhMCVVMxEzARBgNVBAgTClNvbWUtU3RhdGUxDDAKBgNVBAoTA0lC\nTTEUMBIGA1UEAxMLVGhlIFJvb3QgQ0EwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw\nggIKAoICAQC3OsefORCVPPsouOjNRtiul5/B2IvlDMhRzC7XWTHb+9ebx35eekC2\njzP1MkdgO3+FrBDUWDtO1gkKjuDzvvRja5u2qUGao6WMwc+sbj7pVJVBmGT3ZH8K\nvlYiC1mIiLpOy8/8WAy8RCFzgWEDw42WHZQpQ4zti+MN48gBen2leVuTOBHqD8TQ\nOW6b3AapdUoolWovCdwu7w0Q4Qi5+n3Io8myXFF6xL2Rt3iv/WNK3FKjhFL7EfSa\n4MdOxJsi2xd68r0FEfk7Fzfrk3ZijoHQEFexMfXvp7VwSqzq6l1SE3QW73EYqe+2\nHFmtq8qgWJCUu/jFqPKpM7FW5z4N7Ok2DQPJEjhX/zShGrXuN+uQmDaCgyYuDahp\nDGOsM7P79c24BSxPfFCH6e0UjuXP4YZ3xXPBdhiIXsDoIdW4enRl7b6zcGYac3qF\nsm700Mv4jdI/TflnInawSXiWoxbDfxvX2oog8hPrRTHEEvp/MPeIgl7nUvh61S/i\n42a+FeJWXBgSlfCw+TMVowPXtG62spRYBAnsxotIeQHBwMLgREeNhTKjqS84wyxV\n5PAV83+EbrOi7qstygzvo37QOdjLdtpTO3oLvZLsllvt+WH0IFBDwtoKkpetzCEz\n1xJKfjaOwPpV64pT/dyTh53LXYRndPFYz+XIP1MOf8ifKzLTb+gYjwIDAQABo4Go\nMIGlMB0GA1UdDgQWBBQO4y3wlSXsRcmD8dJKbSfyNWtdrDB2BgNVHSMEbzBtgBQO\n4y3wlSXsRcmD8dJKbSfyNWtdrKFKpEgwRjELMAkGA1UEBhMCVVMxEzARBgNVBAgT\nClNvbWUtU3RhdGUxDDAKBgNVBAoTA0lCTTEUMBIGA1UEAxMLVGhlIFJvb3QgQ0GC\nCQDt3eRDEe7LjjAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBBQUAA4ICAQBHajhH\nwBGMJcjwndgaQbAr8B9Z+//ISGzP+QTznIPGhrl9YtfWqRVPbPE/+QOMdD0CsPjf\ngzSUMBbRBRi+hyHzD68EDvj+yG+CmZ5eXqomGtsWvBIMUzf3szJrffK/prC+Ll0M\nsd9B2NT/86WGlfXlV1wVpUhLC1i+6yFOxIW/PUfsev4ZHccylmKZlTmnKHnDf3y0\nHyZRLjoOFokrc7kMlq/bbUqPE4VklaRhTY1CtzEP5jPYYH3X27WfFrsDbwN3MRFr\nA18pq+D96L1Rlj4Eg2LT+T5Hnrofi1gig/s2mb812ZNxY31Ekl9yXd9fjILGfDOS\nWt02ZYPk7MfNYp9NiSFkNuBn1gUAxOt7EZeoTaiA6NjHpXyUUm9wWSM9rkUfL42q\nmeMAzgKAjbmwQGUbiudgrQg1n17/gDpWYbb1PFwfrLOgJv0eviFFvJnP9zQN6v6I\nJbkf37D/66vifx7dHGc+wwpPkfv1y8Z+EQ/emSSpctTBOgtdOSxputK7uYbjXUWF\nynKkIWGTi2kzdcmsnpfOR1rHot9/ifXSoG79ckAj6Sq+MrSJcazNSCyv7utQsq8m\n0H+Mw/5ljyQOd/zUB470JzYNyS2f6gEp1L37onyPjBFvVcXLmAvlKfXhi1PXsMz9\nYbRc2OojbpD9MEI4LZrNZKzkCXNVAe10Bfz5tQ==\n-----END CERTIFICATE-----\n", + "cert-type": "CLIENT", + "cert-id": "56bbb4d7e4b0f7b17cf00000" + }, + { + "name": "CertificateOfTheClientBob", + "cert": "-----BEGIN CERTIFICATE-----\nMIIE/zCCAucCAQMwDQYJKoZIhvcNAQEFBQAwRjELMAkGA1UEBhMCVVMxEzARBgNV\nBAgTClNvbWUtU3RhdGUxDDAKBgNVBAoTA0lCTTEUMBIGA1UEAxMLVGhlIFJvb3Qg\nQ0EwHhcNMTYwMjI2MDIwMDM2WhcNMzYwMjIxMDIwMDM2WjBFMQswCQYDVQQGEwJV\nUzELMAkGA1UECBMCTUExDDAKBgNVBAoTA0lCTTENMAsGA1UECxMEQVBJbTEMMAoG\nA1UEAxMDQm9iMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA2bef+qhT\nsgykoazgwCmmoF63EXC96fBo4BOsthbJMebPEXIacOxi1Q0T2Bfoa6+q0wlq4enZ\nhRHBE3sNVHSoR2CuzDSHRCDWjaBnmNvVqNZADV2uI/93heYbiZILyjSWUXzgz7F3\nMg2pdzWUGby/AMJmBhzpB0PhixcB7M2G7l7ylnxu3G/I7WbcTI+DQQS2FglKYQzn\noDR220ngtpxAdWgJD2tExXsEBjdC2IMhkPSMmLQzF+IWL1o5/q3Rka0IXFQ510Ut\nmngJliohlzT6guVhyOoIs7pPcA1Cgqrc28Cv04uuYhTRL9Zp1XALbyn/K2h+HXzJ\nUfWR6nINeCAbnp/nWvoNkrYUAcP3tcTabNxRQJmyaTdOYlPgTFAS6861uFNhbZ4M\n8c5MZviKEwkUuV9NjVS0dy9yljUMuO91aO4z/1QA3bUAlxNzPpOYv9gB+VN4Wt1I\n5xKVzeia04gFCjlsGF3TJEMBkWJKrlITr6n0rGsSSS7NllR8FPZdpvDCzoUfz04P\nedCILQeZjN2+S5c72EkqRU8atvI3fxHv50MJEFCL7URw2ZU0yGxK8BqOquc6vEbh\ntD72WUz0vb24ppa+OBQWtp7q103IgZAciv5KqPDglxIO8PUAWIiuALAL2rwJi10A\n2uGVZVHWW7FT6JN6PKC7pvjfvUtxfoYVI7UCAwEAATANBgkqhkiG9w0BAQUFAAOC\nAgEAmgZmjVAu8nyZcWms1PydtPA4j1ZMcHH4Q5z/sqSzEN0LMMQNDeNRAMc9XM9R\ny3PYYDjWH5PoTMleeHJJiUYrJt3setPp6x7A9KpoQV0aTnQQ0QEdmWTtYddXb6Wl\nSOFdBtGR8q+2r50HhbtZEZk7x5oV/TQISqIQK5RDp/76H5BCvQqMPCRFJvpvp/q7\nfTnSH99ZEC1knDnk5yXVrQiXrwGKycHY1C+3TNAbQwxHZ5Kft643m8PI7TFfxXnD\nyEHXtXvtUr6aqtqOrP4MGEfUdU8Txi6vsuRosn2E7uhoFeHOprFokoM9nX/hVMvT\nXl64KDlK6l6VHQWQzCMv7ynx3Rhh3SaluGkeEnRkCwFaqT9TiOGlKZuF9sOHoCmC\nix3Y6hPeXRw6+195Xel88/BWRP+qAIMjs0lGCAJwn1xbCjeYv7ltFFa6bkT14IUG\nzlH8DEmmd49hz3byxnFeeZeVsEoYmZW4RQTEBb0+07HzxCh2zSdzsqRt6f61bS/F\nKqwjq2Ai0aMa7dD+XKcbU4EnFKitjkSvuGaTO85glVaIq5yDHRetyZLNoVcuLhza\n6/JnwLVAeZZiave2oT0fRxOS2NOjGQfKLu+XAOmUdRmDA9ae7Tk2PVuHoWyHhlMW\nWUmawDgnGxbprZuW3y2SwaBpYO+uMGQbvXPtsG+cXbjXQMI=\n-----END CERTIFICATE-----\n", + "cert-type": "PUBLIC", + "cert-id": "56bbb4d7e4b0f7b17cfbbbbb" + } + ], + "mutual-auth": true, + "private-key": "-----BEGIN RSA PRIVATE KEY-----\n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\n-----END RSA PRIVATE KEY-----\n" + }, + { + "id": "56bbb472e4b0f7b17cfcccc2", + "url": "https://foo.com/v1/catalogs/564b48aae4b0869c782edc2b/tls-profiles/56bbb472e4b0f7b17cfcccc2", + "name": "tls-profile-carol-2", + "title": "TLSProfileOfCarol-2", + "description": "Carol as the client and use the 'root' CA to authenticate the server", + "public": false, + "ciphers": [], + "protocols": [], + "certs": [ + { + "name": "TheRootCAOfTheServerSarah", + "cert": "-----BEGIN CERTIFICATE-----\nMIIFuDCCA6CgAwIBAgIJAO3d5EMR7suOMA0GCSqGSIb3DQEBBQUAMEYxCzAJBgNV\nBAYTAlVTMRMwEQYDVQQIEwpTb21lLVN0YXRlMQwwCgYDVQQKEwNJQk0xFDASBgNV\nBAMTC1RoZSBSb290IENBMB4XDTE2MDIyNjAxNTU0MFoXDTM2MDIyMTAxNTU0MFow\nRjELMAkGA1UEBhMCVVMxEzARBgNVBAgTClNvbWUtU3RhdGUxDDAKBgNVBAoTA0lC\nTTEUMBIGA1UEAxMLVGhlIFJvb3QgQ0EwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw\nggIKAoICAQC3OsefORCVPPsouOjNRtiul5/B2IvlDMhRzC7XWTHb+9ebx35eekC2\njzP1MkdgO3+FrBDUWDtO1gkKjuDzvvRja5u2qUGao6WMwc+sbj7pVJVBmGT3ZH8K\nvlYiC1mIiLpOy8/8WAy8RCFzgWEDw42WHZQpQ4zti+MN48gBen2leVuTOBHqD8TQ\nOW6b3AapdUoolWovCdwu7w0Q4Qi5+n3Io8myXFF6xL2Rt3iv/WNK3FKjhFL7EfSa\n4MdOxJsi2xd68r0FEfk7Fzfrk3ZijoHQEFexMfXvp7VwSqzq6l1SE3QW73EYqe+2\nHFmtq8qgWJCUu/jFqPKpM7FW5z4N7Ok2DQPJEjhX/zShGrXuN+uQmDaCgyYuDahp\nDGOsM7P79c24BSxPfFCH6e0UjuXP4YZ3xXPBdhiIXsDoIdW4enRl7b6zcGYac3qF\nsm700Mv4jdI/TflnInawSXiWoxbDfxvX2oog8hPrRTHEEvp/MPeIgl7nUvh61S/i\n42a+FeJWXBgSlfCw+TMVowPXtG62spRYBAnsxotIeQHBwMLgREeNhTKjqS84wyxV\n5PAV83+EbrOi7qstygzvo37QOdjLdtpTO3oLvZLsllvt+WH0IFBDwtoKkpetzCEz\n1xJKfjaOwPpV64pT/dyTh53LXYRndPFYz+XIP1MOf8ifKzLTb+gYjwIDAQABo4Go\nMIGlMB0GA1UdDgQWBBQO4y3wlSXsRcmD8dJKbSfyNWtdrDB2BgNVHSMEbzBtgBQO\n4y3wlSXsRcmD8dJKbSfyNWtdrKFKpEgwRjELMAkGA1UEBhMCVVMxEzARBgNVBAgT\nClNvbWUtU3RhdGUxDDAKBgNVBAoTA0lCTTEUMBIGA1UEAxMLVGhlIFJvb3QgQ0GC\nCQDt3eRDEe7LjjAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBBQUAA4ICAQBHajhH\nwBGMJcjwndgaQbAr8B9Z+//ISGzP+QTznIPGhrl9YtfWqRVPbPE/+QOMdD0CsPjf\ngzSUMBbRBRi+hyHzD68EDvj+yG+CmZ5eXqomGtsWvBIMUzf3szJrffK/prC+Ll0M\nsd9B2NT/86WGlfXlV1wVpUhLC1i+6yFOxIW/PUfsev4ZHccylmKZlTmnKHnDf3y0\nHyZRLjoOFokrc7kMlq/bbUqPE4VklaRhTY1CtzEP5jPYYH3X27WfFrsDbwN3MRFr\nA18pq+D96L1Rlj4Eg2LT+T5Hnrofi1gig/s2mb812ZNxY31Ekl9yXd9fjILGfDOS\nWt02ZYPk7MfNYp9NiSFkNuBn1gUAxOt7EZeoTaiA6NjHpXyUUm9wWSM9rkUfL42q\nmeMAzgKAjbmwQGUbiudgrQg1n17/gDpWYbb1PFwfrLOgJv0eviFFvJnP9zQN6v6I\nJbkf37D/66vifx7dHGc+wwpPkfv1y8Z+EQ/emSSpctTBOgtdOSxputK7uYbjXUWF\nynKkIWGTi2kzdcmsnpfOR1rHot9/ifXSoG79ckAj6Sq+MrSJcazNSCyv7utQsq8m\n0H+Mw/5ljyQOd/zUB470JzYNyS2f6gEp1L37onyPjBFvVcXLmAvlKfXhi1PXsMz9\nYbRc2OojbpD9MEI4LZrNZKzkCXNVAe10Bfz5tQ==\n-----END CERTIFICATE-----\n", + "cert-type": "CLIENT", + "cert-id": "56bbb4d7e4b0f7b17cf00000" + }, + { + "name": "CertificateOfTheClientCarol", + "cert": "-----BEGIN CERTIFICATE-----\nMIIFATCCAukCAQQwDQYJKoZIhvcNAQEFBQAwRjELMAkGA1UEBhMCVVMxEzARBgNV\nBAgTClNvbWUtU3RhdGUxDDAKBgNVBAoTA0lCTTEUMBIGA1UEAxMLVGhlIFJvb3Qg\nQ0EwHhcNMTYwMjI2MDIwMTA0WhcNMzYwMjIxMDIwMTA0WjBHMQswCQYDVQQGEwJV\nUzELMAkGA1UECBMCTUExDDAKBgNVBAoTA0lCTTENMAsGA1UECxMEQVBJbTEOMAwG\nA1UEAxMFQ2Fyb2wwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCsoQRb\nxkclfbMV4SFJaCUqZGBvFopLSSw1A2JJYFz093j3NyD50WpphZVG6dixqDccys5z\njNuGWZfpaXt9e76g2/KFoMZk3QIB8kRiVE1xkEEjyAbmnhn2YiOMthmJijuVuLFE\nVZxTR1/xqWUJ1QForymWpn+oHFBF0Punz+MN6TSBqziJOFUdOCxu92N3DfihtPWR\nCKxbIWZXLdbprsz1YFRf7ylJ0ixysAz22kHvioblsu5jguCgGUEPQPtuT4UzAstI\nfPZFZK8v/eEMFwK4Kd1MnU3U5z20LieFzxjJZJKV083Wc3TJBN7RFYb/bhD78hTg\n0xTAo5bFun/xaqyhAmYbz9w+NAwr1eNKPnud4L6H+U5yWeTdagVjIv92KRqNGfqt\n3oFGdxO5S0MIPrK1tnPFN95jv69bF5DIhoZHldZhlI+LeJMKw+lTsxo/gfpb/0F6\nT3HaMMprM0NTBK1K5NaZmkMMl/dKtLrmtAFX5pFjkrTDPBIIafGuJUUTYc4x/KnB\nse+ybpoX5mhlW+Ekl8NMzYiorh61ohqcYw3nXtebwXySx8FTah49al4Yrh9pCW+O\nQfDPww6D7YHrGOhrTfmThokoDD7TYAQkJ56si3xIOYVSuKyhXIoQAO/EWqKkZ3Lj\nmXEUe0UYgFg33FggUpnBuY6C3ja4ZxVcVKjiVQIDAQABMA0GCSqGSIb3DQEBBQUA\nA4ICAQAzY3eau0Ls4bgGAyphHZcUxchR04Or71lWMPzr6fGp7Jb1tXMnpNxyAq+N\nsMGnFU6SP9F0LW69K21+Lcp42jJADNDh5sQSwwNL4f/SHf1KDt+oiIThCHtwrYBP\nwCrTQrJwIgv9YfwQE+/INYItJpI5CncvwDhNzBY9tDj7vCKZ8bw4iqQSACh6bSIT\ngCC5J37wACnhCVEBQDaygNKRdQaou2PtKu/dsxRQN2QJenmn4zkFqauhb3zP2Yic\nFaZRryWB3YPBewOlkfEkbItB6i/hWHE9jJM+mwOp6kPZDJOEVmZnzS3An6CHOMio\nvTc0PoF0Ud1PJ6usUhYYrcC1sGBDwt7gb3KANVCSfFaqwJSrJhVnbu4+wgu2K+U2\nho2ZAiCkQ91GdqcthSAc+rt38NCygFdvBLpVOwqznA/DlUzrTyCRdLoPp20IVIB+\nKWUI1Oz3rKpbuxdCYZBZORbHNFU12QCbegrI93xRqKET7pfSwytI+JQTt7+N3sda\nF2AZK9JpEJOtdlwA9YbzB4fsAVB6Dy7kHC/BDN36QKcjXmXkJafm6wktTbaCZTQl\n726px9sW86B4VcReWZ4Qk7EJwdQ0gC46Wz8w06fwb6XoThO8ADcLlDnAKHJGjXEb\nLt7mfpeYtHfq0qz1EBEh5pUvSBJj6v+j9PbM7VtXKydiuW3ixw==\n-----END CERTIFICATE-----\n", + "cert-type": "PUBLIC", + "cert-id": "56bbb4d7e4b0f7b17cfccccc" + } + ], + "mutual-auth": true, + "private-key": "-----BEGIN RSA PRIVATE KEY-----\n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\n-----END RSA PRIVATE KEY-----\n" + }, + { + "id": "56bbb472e4b0f7b17cfddddd", + "url": "https://foo.com/v1/catalogs/564b48aae4b0869c782edc2b/tls-profiles/56bbb472e4b0f7b17cfddddd", + "name": "tls-profile-sandy-2", + "title": "TLSProfileOfSandy-2", + "description": "Sandy as the client and use the 'root' CA to authenticate the server", + "public": false, + "ciphers": [], + "protocols": [], + "certs": [ + { + "name": "TheRootCAOfTheServerSarah", + "cert": "-----BEGIN CERTIFICATE-----\nMIIFuDCCA6CgAwIBAgIJAO3d5EMR7suOMA0GCSqGSIb3DQEBBQUAMEYxCzAJBgNV\nBAYTAlVTMRMwEQYDVQQIEwpTb21lLVN0YXRlMQwwCgYDVQQKEwNJQk0xFDASBgNV\nBAMTC1RoZSBSb290IENBMB4XDTE2MDIyNjAxNTU0MFoXDTM2MDIyMTAxNTU0MFow\nRjELMAkGA1UEBhMCVVMxEzARBgNVBAgTClNvbWUtU3RhdGUxDDAKBgNVBAoTA0lC\nTTEUMBIGA1UEAxMLVGhlIFJvb3QgQ0EwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw\nggIKAoICAQC3OsefORCVPPsouOjNRtiul5/B2IvlDMhRzC7XWTHb+9ebx35eekC2\njzP1MkdgO3+FrBDUWDtO1gkKjuDzvvRja5u2qUGao6WMwc+sbj7pVJVBmGT3ZH8K\nvlYiC1mIiLpOy8/8WAy8RCFzgWEDw42WHZQpQ4zti+MN48gBen2leVuTOBHqD8TQ\nOW6b3AapdUoolWovCdwu7w0Q4Qi5+n3Io8myXFF6xL2Rt3iv/WNK3FKjhFL7EfSa\n4MdOxJsi2xd68r0FEfk7Fzfrk3ZijoHQEFexMfXvp7VwSqzq6l1SE3QW73EYqe+2\nHFmtq8qgWJCUu/jFqPKpM7FW5z4N7Ok2DQPJEjhX/zShGrXuN+uQmDaCgyYuDahp\nDGOsM7P79c24BSxPfFCH6e0UjuXP4YZ3xXPBdhiIXsDoIdW4enRl7b6zcGYac3qF\nsm700Mv4jdI/TflnInawSXiWoxbDfxvX2oog8hPrRTHEEvp/MPeIgl7nUvh61S/i\n42a+FeJWXBgSlfCw+TMVowPXtG62spRYBAnsxotIeQHBwMLgREeNhTKjqS84wyxV\n5PAV83+EbrOi7qstygzvo37QOdjLdtpTO3oLvZLsllvt+WH0IFBDwtoKkpetzCEz\n1xJKfjaOwPpV64pT/dyTh53LXYRndPFYz+XIP1MOf8ifKzLTb+gYjwIDAQABo4Go\nMIGlMB0GA1UdDgQWBBQO4y3wlSXsRcmD8dJKbSfyNWtdrDB2BgNVHSMEbzBtgBQO\n4y3wlSXsRcmD8dJKbSfyNWtdrKFKpEgwRjELMAkGA1UEBhMCVVMxEzARBgNVBAgT\nClNvbWUtU3RhdGUxDDAKBgNVBAoTA0lCTTEUMBIGA1UEAxMLVGhlIFJvb3QgQ0GC\nCQDt3eRDEe7LjjAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBBQUAA4ICAQBHajhH\nwBGMJcjwndgaQbAr8B9Z+//ISGzP+QTznIPGhrl9YtfWqRVPbPE/+QOMdD0CsPjf\ngzSUMBbRBRi+hyHzD68EDvj+yG+CmZ5eXqomGtsWvBIMUzf3szJrffK/prC+Ll0M\nsd9B2NT/86WGlfXlV1wVpUhLC1i+6yFOxIW/PUfsev4ZHccylmKZlTmnKHnDf3y0\nHyZRLjoOFokrc7kMlq/bbUqPE4VklaRhTY1CtzEP5jPYYH3X27WfFrsDbwN3MRFr\nA18pq+D96L1Rlj4Eg2LT+T5Hnrofi1gig/s2mb812ZNxY31Ekl9yXd9fjILGfDOS\nWt02ZYPk7MfNYp9NiSFkNuBn1gUAxOt7EZeoTaiA6NjHpXyUUm9wWSM9rkUfL42q\nmeMAzgKAjbmwQGUbiudgrQg1n17/gDpWYbb1PFwfrLOgJv0eviFFvJnP9zQN6v6I\nJbkf37D/66vifx7dHGc+wwpPkfv1y8Z+EQ/emSSpctTBOgtdOSxputK7uYbjXUWF\nynKkIWGTi2kzdcmsnpfOR1rHot9/ifXSoG79ckAj6Sq+MrSJcazNSCyv7utQsq8m\n0H+Mw/5ljyQOd/zUB470JzYNyS2f6gEp1L37onyPjBFvVcXLmAvlKfXhi1PXsMz9\nYbRc2OojbpD9MEI4LZrNZKzkCXNVAe10Bfz5tQ==\n-----END CERTIFICATE-----\n", + "cert-type": "CLIENT", + "cert-id": "56bbb4d7e4b0f7b17cf00000" + }, + { + "name": "CertificateOfTheClientSandy", + "cert": "-----BEGIN CERTIFICATE-----\nMIIFBzCCAu8CAQEwDQYJKoZIhvcNAQEFBQAwSDELMAkGA1UEBhMCVVMxEzARBgNV\nBAgTClNvbWUtU3RhdGUxDDAKBgNVBAoTA0lCTTEWMBQGA1UEAxMNVGhlIFJvb3Qg\nQ0EgMjAeFw0xNjAyMjYwMjI4NTdaFw0zNjAyMjEwMjI4NTdaMEsxCzAJBgNVBAYT\nAlVTMQswCQYDVQQIEwJNQTEMMAoGA1UEChMDSUJNMQ0wCwYDVQQLEwRBUEltMRIw\nEAYDVQQDEwlsb2NhbGhvc3QwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC\nAQC1062VN085yUjbnQgbbsQM5RvwKsZ4kV4HjZ0mHnS4ojEFYa+QLJLNIHBU0smP\nrCQo5dkU156br24SnjXyMLanqvm6AOqFh7N9CVeIG9cioSVLoMYcMviMYgeG2a2B\nAMRRwLYTi7zzmKITcAL6EKbbagkplXVwzNbGoqQwZiUpVmptkaY7HjQ2wc4EAzdc\nujwDfbvckQ5b7oV0UUUW7zqfjTlQpiodYuiccSspbOtyVPqueT07eaz+Y9Ojn6TC\nA/uksRv+SEFPqi4UiBAG/sfeAitKbooEjXsgcJpiQNTUflGyJ/BMA7CKdbiskVXZ\npiV7v/U/RQQgqEDA3zXLcpd4+PUU7jE5Eq+LAyvbZLnLMOvcQhdWzQ+9LXGMJx01\nVH17EcZKic+VQz4yBWOGV6ZR+9X4rXrbsSKsfD6BrizAfLIBLKH13wu5a+nACbfb\nxx/9cy8j4ULLkfEphl/D6I1GmIhvoCrYfvuWSKGSaVCjmGlzrX2I0xD+mHGhMdqC\nV9sDOWurwQMHFMeZa4Eu5OQbWpsl+Xl3yIxQae7WAh2jUeQU5a+YGhSkffYFl5yJ\nJxMguv8fZo1f6AyGvrtJOkCjWL3v4qsxqRAa6Yj+dv/zuTrq+JXC1WfMwfLtsRhF\nDvV6BTXuGchW9z4FXvHpiy9ZbDyNQ9JTjW8rTEM/zTCR5wIDAQABMA0GCSqGSIb3\nDQEBBQUAA4ICAQAHvZusoZ/S1KIUJkRO05QXREsaUGLpbxEyGWIgYc4p8xEoEkQq\nnuKTSqH5m594Cpiul8eDHOAgKSxO/PtyogdkRNQCHf7jPzUizc5EkQt3XlezapKt\nFNnqZWR+OzF6VsV0EiBoARuyOwmxMkmECBoTsShVV8spTTlrIYI1H/lsR85/ahD+\nIIr2Twb5GUBbCWDWmZu/GYsLd2PFfWITLMjVo1Ef12AiSQ8aMK3NIDv8mMAASv/z\no0ZIzFGgOW3wWFtRulDCbNz9ctPsNYmbz3x+VWh31e2kJ43JihYyWRDjwlbdT1Kr\nWhwogpPIeK7rcDF4PG4CZjuJzEbIhSvtq4kPMx+J9DhobOLQmbLorUHs1og48Iby\nCprzOU3olq/MiUQhg9C3XodL20O9qfDgbhH1TytICFEp6XW+eXikrf2cTkat/V9x\nd4tbp+CRPzNZHatZ32+n5GA6mFqMo1u7ydh71ZTAaqoMXQxDJYRGEmqtx7CiabNN\n0nhNfxZDsFMrEA5StILg6GykDpXOUcIZhewa2NG8WjkyjsLHu83BYWOhVz96L378\nrbpuF8m4akeUeoLqRQGN6gsXR1HLR/HFhy08OakyG/SxjMJc340++i6eo3SdIkLL\n+yI7JCgNgL0oZEJuYrgvTKH1uOQl9baPVmuj2KQ1b904Gyj6EQbdFybwww==\n-----END CERTIFICATE-----\n", + "cert-type": "PUBLIC", + "cert-id": "56bbb4d7e4b0f7b17cfddddd" + } + ], + "mutual-auth": true, + "private-key": "-----BEGIN RSA PRIVATE KEY-----\n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\n-----END RSA PRIVATE KEY-----\n" + } +] diff --git a/test/definitions/spaces/v1/catalogs/index.html b/test/definitions/spaces/v1/catalogs/index.html new file mode 100644 index 0000000..7f56f42 --- /dev/null +++ b/test/definitions/spaces/v1/catalogs/index.html @@ -0,0 +1,19 @@ +[{ + "id": "564b48aae4b0869c782edc2b", + "url": "https://sjsldev249.dev.ciondemand.com/v1/catalogs/564b48aae4b0869c782edc2b", + "name": "sb", + "title": "Sandbox", + "sandbox": true, + "organization": { + "id": "564b48a9e4b0869c782edc24", + "name": "apim", + "title": "Mock APIm server for testing TLS profiles" + }, + "default": true, + "space-enabled": true, + "gateway-cluster": { + "id": "564b45c1e4b0869c782ed85b", + "title": "Gateway", + "host-name": "sjsldev251.dev.ciondemand.com" + } +}] diff --git a/test/zzz-spaces.test.js b/test/zzz-spaces.test.js new file mode 100644 index 0000000..64eba32 --- /dev/null +++ b/test/zzz-spaces.test.js @@ -0,0 +1,156 @@ +// Copyright IBM Corp. 2016. All Rights Reserved. +// Node module: microgateway +// US Government Users Restricted Rights - Use, duplication or disclosure +// restricted by GSA ADP Schedule Contract with IBM Corp. + +/*eslint-env node, mocha*/ +'use strict'; + +var supertest = require('supertest'); +var Promise = require('bluebird'); +var microgw; +var backend = require('./support/invoke-server'); +var analytics = require('./support/analytics-server'); +var fs = require('fs'); +var path = require('path'); +var dsCleanup = require('./support/utils').dsCleanup; +var resetLimiterCache = require('../lib/rate-limit/util').resetLimiterCache; + +var hasCopiedKeys; +var privKey = path.resolve(__dirname, '..', 'id_rsa'); +var pubKey = path.resolve(__dirname, '..', 'id_rsa.pub'); +var srcPrivKey = path.resolve(__dirname, 'definitions', + 'analytics', 'id_rsa'); +var srcPubKey = path.resolve(__dirname, 'definitions', + 'analytics', 'id_rsa.pub'); + + +function copyKeys() { + return new Promise(function(resolve, reject) { + try { + var fsStat1 = fs.statSync(privKey); + var fsStat2 = fs.statSync(pubKey); + if (fsStat1.isFile() && fsStat2.isFile()) { + resolve(); + hasCopiedKeys = undefined; + return; + } + } catch (e) {} + + try { + //need to copy keys + var buf1 = fs.readFileSync(srcPrivKey); + var buf2 = fs.readFileSync(srcPubKey); + fs.writeFileSync(privKey, buf1); + fs.writeFileSync(pubKey, buf2); + hasCopiedKeys = 1; + resolve(); + } catch (e) { + reject(new Error('unable to prepare keys:' + e)); + } + }); +} + +function delKeys() { + return new Promise(function(resolve, reject) { + if (!hasCopiedKeys) { + resolve(); + } else { + try { + fs.unlinkSync(privKey); + fs.unlinkSync(pubKey); + resolve(); + } catch (e) { + reject(new Error('unable to delete keys:' + e)); + } + } + }); +} + +describe('analytics + invoke policy', function() { + + var request; + before(function(done) { + //Use production instead of CONFIG_DIR: reading from apim instead of laptop + process.env.NODE_ENV = 'production'; + process.env.CONFIG_DIR = __dirname + '/definitions/default'; + + //The apim server and datastore + process.env.APIMANAGER = '127.0.0.1'; + process.env.APIMANAGER_PORT = 8081; + process.env.APIMANAGER_CATALOG = '564b48aae4b0869c782edc2b'; + process.env.DATASTORE_PORT = 5000; + delete require.cache[require.resolve('../lib/microgw')]; + + resetLimiterCache(); + copyKeys() + .then(function() { + return analytics.start( + process.env.APIMANAGER_PORT, + __dirname + '/definitions/spaces/v1'); + }) + .then(function() { return backend.start(8889); }) + .then(function() { + microgw = require('../lib/microgw'); + return microgw.start(3000); + }) + .then(function() { + request = supertest('http://localhost:3000'); + }) + .then(done) + .catch(function(err) { + console.error('preparation failed:', err); + done(err); + }); + }); + + after(function(done) { + delete process.env.CONFIG_DIR; + delete process.env.NODE_ENV; + delete process.env.APIMANAGER; + delete process.env.APIMANAGER_PORT; + delete process.env.DATASTORE_PORT; + delete process.env.APIMANAGER_CATALOG; + + analytics.stop() + .then(function() { return dsCleanup(5000); }) + .then(function() { return microgw.stop(); }) + .then(function() { return backend.stop(); }) + .then(function() { return delKeys(); }) + .then(done, done) + .catch(done); + }); + + var data = { msg: 'Hello world' }; + + //invoke policy to post a request + it('single record', function(done) { + this.timeout(10000); + + //pass the done cb to analytics moc server + analytics.setOneTimeDoneCB(function(event) { + //may check the payload if needed + event = event || ''; + var records = event.trim().split('\n').filter(function(item) { + if (item && item.length === 0) { + return false; + } + return true; + }); + done(records.length === 2 && JSON.parse(records[1]).spaceId.length === 1 ? + undefined : new Error('record number mismatched')); + }); + + request + .post('/invoke/basic') + .send(data) + .expect(200, /z-url: \/\/invoke\/basic/) + .end(function(err) { + if (err) { + //no need to wait for the analytics moc server + done(err); + } + }); + }); + +});