Get a template of an Otoroshi service descriptor. The generated entity is not persisted
643 matches
87 actions
Otoroshi Admin
87 actions
- Add a target to a service descriptorPOSTv1.0.0
- Compile a scriptPOSTv1.0.0
- Create a new api key for a groupPOSTv1.0.0
- Create a new api key for a servicePOSTv1.0.0
- Create a new scriptPOSTv1.0.0
- Create a new service descriptorPOSTv1.0.0
- Create a new service groupPOSTv1.0.0
- Create a service descriptor error templatePOSTv1.0.0
- Create one certificatePOSTv1.0.0
- Create one global auth. module configPOSTv1.0.0
- Create one global JWT verifiersPOSTv1.0.0
- Create one validation authoritiesPOSTv1.0.0
- Delete a scriptDELETEv1.0.0
- Delete a service descriptorDELETEv1.0.0
- Delete a service descriptor error templateDELETEv1.0.0
- Delete a service descriptor targetDELETEv1.0.0
- Delete a service groupDELETEv1.0.0
- Delete an api keyDELETEv1.0.0
- Delete an api keyDELETEv1.0.0
- Delete one certificate by idDELETEv1.0.0
- Delete one global auth. module configDELETEv1.0.0
- Delete one global JWT verifiersDELETEv1.0.0
- Delete one validation authorities by idDELETEv1.0.0
- Get a scriptGETv1.0.0
- Get a service descriptorGETv1.0.0
- Get a service descriptor error templateGETv1.0.0
- Get a service descriptor targetsGETv1.0.0
- Get a service groupGETv1.0.0
- Get a template of an Otoroshi Api KeyGETv1.0.0
- Get a template of an Otoroshi service descriptorGETv1.0.0
- Get a template of an Otoroshi service groupGETv1.0.0
- Get all api keysGETv1.0.0
- Get all api keys for the group of a serviceGETv1.0.0
- Get all api keys for the group of a serviceGETv1.0.0
- Get all certificatesGETv1.0.0
- Get all current Snow Monkey ouragesGETv1.0.0
- Get all environmentsGETv1.0.0
- Get all global auth. module configsGETv1.0.0
- Get all global JWT verifiersGETv1.0.0
- Get all scriptsGETv1.0.0
- Get all service groupsGETv1.0.0
- Get all servicesGETv1.0.0
- Get all services descriptor for a groupGETv1.0.0
- Get all services for an environmentGETv1.0.0
- Get all validation authoritiessGETv1.0.0
- Get an api keyGETv1.0.0
- Get an api keyGETv1.0.0
- Get current Snow Monkey configGETv1.0.0
- Get global otoroshi statsGETv1.0.0
- Get live feed of otoroshi statsGETv1.0.0
- Get one certificate by idGETv1.0.0
- Get one global auth. module configsGETv1.0.0
- Get one global JWT verifiersGETv1.0.0
- Get one validation authorities by idGETv1.0.0
- Get the full configuration of OtoroshiGETv1.0.0
- Get the group of an api keyGETv1.0.0
- Get the quota state of an api keyGETv1.0.0
- Get the quota state of an api keyGETv1.0.0
- Reset Snow Monkey Outages for the dayDELETEv1.0.0
- Reset the quota state of an api keyDELETEv1.0.0
- Reset the quota state of an api keyDELETEv1.0.0
- Start the Snow MonkeyPOSTv1.0.0
- Stop the Snow MonkeyPOSTv1.0.0
- Update a scriptPUTv1.0.0
- Update a script with a diffPATCHv1.0.0
- Update a service descriptorPUTv1.0.0
- Update a service descriptor targetsPATCHv1.0.0
- Update a service descriptor with a diffPATCHv1.0.0
- Update a service groupPUTv1.0.0
- Update a service group with a diffPATCHv1.0.0
- Update an api keyPUTv1.0.0
- Update an api keyPUTv1.0.0
- Update an api key with a diffPATCHv1.0.0
- Update an api key with a diffPATCHv1.0.0
- Update an error template to a service descriptorPUTv1.0.0
- Update current Snow Monkey configPATCHv1.0.0
- Update current Snow Monkey configPUTv1.0.0
- Update one certificate by idPATCHv1.0.0
- Update one certificate by idPUTv1.0.0
- Update one global auth. module configPATCHv1.0.0
- Update one global auth. module configPUTv1.0.0
- Update one global JWT verifiersPATCHv1.0.0
- Update one global JWT verifiersPUTv1.0.0
- Update one validation authorities by idPATCHv1.0.0
- Update one validation authorities by idPUTv1.0.0
- Update the global configurationPUTv1.0.0
- Update the global configuration with a diffPATCHv1.0.0
Other/Otoroshi Admin
Get a template of an Otoroshi service descriptor
v1.0.0Output
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
- 98
- 99
- 100
- 101
- 102
- 103
- 104
- 105
- 106
- 107
- 108
- 109
- 110
- 111
- 112
- 113
- 114
- 115
- 116
- 117
- 118
- 119
- 120
- 121
- 122
- 123
- 124
- 125
- 126
- 127
- 128
- 129
- 130
- 131
- 132
- 133
- 134
- 135
- 136
- 137
- 138
- 139
- 140
- 141
- 142
- 143
- 144
- 145
- 146
- 147
- 148
- 149
- 150
- 151
- 152
- 153
- 154
- 155
- 156
- 157
- 158
- 159
- 160
- 161
- 162
- 163
- 164
- 165
- 166
- 167
- 168
- 169
- 170
- 171
- 172
- 173
- 174
- 175
- 176
- 177
- 178
- 179
- 180
- 181
- 182
- 183
- 184
- 185
- 186
- 187
- 188
- 189
- 190
- 191
- 192
- 193
- 194
- 195
- 196
- 197
- 198
- 199
- 200
- 201
- 202
- 203
- 204
- 205
- 206
- 207
- 208
- 209
- 210
- 211
- 212
- 213
- 214
- 215
- 216
- 217
- 218
- 219
- 220
- 221
- 222
- 223
- 224
- 225
- 226
- 227
- 228
- 229
- 230
- 231
- 232
- 233
- 234
- 235
- 236
- 237
- 238
- 239
- 240
- 241
- 242
- 243
- 244
- 245
- 246
- 247
- 248
- 249
- 250
- 251
- 252
- 253
- 254
- 255
- 256
- 257
- 258
- 259
- 260
- 261
- 262
- 263
- 264
- 265
- 266
- 267
- 268
- 269
- 270
- 271
- 272
- 273
- 274
- 275
- 276
- 277
- 278
- 279
- 280
- 281
- 282
- 283
- 284
- 285
- 286
- 287
- 288
- 289
- 290
- 291
- 292
- 293
- 294
- 295
- 296
- 297
- 298
- 299
- 300
- 301
- 302
- 303
- 304
- 305
- 306
- 307
- 308
- 309
- 310
- 311
- 312
- 313
- 314
- 315
- 316
- 317
- 318
- 319
- 320
- 321
- 322
- 323
- 324
- 325
- 326
- 327
- 328
- 329
- 330
- 331
- 332
- 333
- 334
- 335
- 336
- 337
- 338
- 339
- 340
- 341
- 342
- 343
- 344
- 345
- 346
- 347
- 348
- 349
- 350
- 351
- 352
- 353
- 354
- 355
- 356
- 357
- 358
- 359
- 360
- 361
- 362
- 363
- 364
- 365
- 366
- 367
- 368
- 369
- 370
- 371
- 372
- 373
- 374
- 375
- 376
- 377
- 378
- 379
- 380
- 381
- 382
- 383
- 384
- 385
- 386
- 387
- 388
- 389
- 390
- 391
- 392
- 393
- 394
- 395
- 396
- 397
- 398
- 399
- 400
- 401
- 402
- 403
- 404
- 405
- 406
- 407
- 408
- 409
- 410
- 411
- 412
- 413
- 414
- 415
- 416
- 417
- 418
- 419
- 420
- 421
- 422
- 423
- 424
- 425
- 426
- 427
- 428
- 429
- 430
- 431
- 432
- 433
- 434
- 435
- 436
- 437
- 438
- 439
- 440
- 441
- 442
- 443
- 444
- 445
- 446
- 447
- 448
- 449
- 450
- 451
- 452
- 453
- 454
- 455
- 456
- 457
- 458
- 459
- 460
- 461
- 462
- 463
- 464
- 465
- 466
- 467
- 468
- 469
- 470
- 471
- 472
- 473
- 474
- 475
- 476
- 477
- 478
- 479
- 480
- 481
- 482
- 483
- 484
- 485
- 486
- 487
- 488
- 489
- 490
- 491
- 492
- 493
- 494
- 495
- 496
- 497
- 498
- 499
- 500
- 501
- 502
- 503
- 504
- 505
- 506
- 507
- 508
- 509
- 510
- 511
- 512
- 513
- 514
- 515
- 516
- 517
- 518
- 519
- 520
- 521
- 522
- 523
- 524
- 525
- 526
- 527
- 528
- 529
- 530
- 531
- 532
- 533
- 534
- 535
- 536
- 537
- 538
- 539
- 540
- 541
- 542
- 543
- 544
- 545
- 546
- 547
- 548
- 549
- 550
- 551
- 552
- 553
- 554
- 555
- 556
- 557
- 558
- 559
- 560
- 561
- 562
- 563
- 564
- 565
- 566
- 567
- 568
- 569
- 570
- 571
- 572
- 573
- 574
- 575
- 576
- 577
- 578
- 579
- 580
- 581
- 582
- 583
- 584
- 585
- 586
- 587
- 588
- 589
- 590
- 591
- 592
- 593
- 594
- 595
- 596
- 597
- 598
- 599
- 600
- 601
- 602
- 603
- 604
- 605
- 606
- 607
- 608
- 609
- 610
- 611
- 612
- 613
- 614
- 615
- 616
- 617
- 618
- 619
- 620
- 621
- 622
- 623
- 624
- 625
- 626
- 627
- 628
- 629
- 630
- 631
- 632
- 633
- 634
- 635
- 636
- 637
- 638
- 639
{
"type": "object",
"description": "An otoroshi service descriptor. Represent a forward HTTP call on a domain to another location with some optional api management mecanism",
"required": [
"buildMode",
"domain",
"enabled",
"enforceSecureCommunication",
"env",
"forceHttps",
"groups",
"id",
"maintenanceMode",
"name",
"privateApp",
"root",
"subdomain",
"targets"
],
"properties": {
"Canary": {
"type": "object",
"description": "The configuration of the canary mode for a service descriptor",
"required": [
"enabled",
"root",
"targets",
"traffic"
],
"properties": {
"enabled": {
"type": "boolean",
"description": "Use canary mode for this service"
},
"root": {
"type": "string",
"description": "Otoroshi will append this root to any target choosen. If the specified root is '/api/foo', then a request to https://yyyyyyy/bar will actually hit https://xxxxxxxxx/api/foo/bar"
},
"targets": {
"type": "array",
"description": "The list of target that Otoroshi will proxy and expose through the subdomain defined before. Otoroshi will do round-robin load balancing between all those targets with circuit breaker mecanism to avoid cascading failures",
"items": {
"type": "object",
"description": "A Target is where an HTTP call will be forwarded in the end from a service domain",
"required": [
"host",
"scheme"
],
"properties": {
"host": {
"type": "string",
"format": "hostname",
"description": "The host on which the HTTP call will be forwarded. Can be a domain name, or an IP address. Can also have a port"
},
"scheme": {
"type": "string",
"description": "The protocol used for communication. Can be http or https"
}
}
}
},
"traffic": {
"type": "integer",
"format": "int32",
"description": "Ratio of traffic that will be sent to canary targets."
}
}
},
"additionalHeaders": {
"type": "object",
"description": "Specify headers that will be added to each client request. Useful to add authentication"
},
"api": {
"type": "object",
"description": "The Open API configuration for your service (if one)",
"required": [
"exposeApi"
],
"properties": {
"exposeApi": {
"type": "boolean",
"description": "Whether or not the current service expose an API with an Open API descriptor"
},
"openApiDescriptorUrl": {
"type": "string",
"format": "uri",
"description": "The URL of the Open API descriptor"
}
}
},
"authConfigRef": {
"type": "string",
"description": "A reference to a global auth module config"
},
"buildMode": {
"type": "boolean",
"description": "Display a construction page when a user try to use the service"
},
"chaosConfig": {
"type": "object",
"description": "Configuration for the faults that can be injected in requests",
"required": [
"enabled"
],
"properties": {
"badResponsesFaultConfig": {
"type": "object",
"description": "Config for bad requests injection fault",
"required": [
"ratio",
"responses"
],
"properties": {
"ratio": {
"type": "number",
"format": "double",
"description": "The percentage of requests affected by this fault. Value should be between 0.0 and 1.0"
},
"responses": {
"type": "array",
"description": "The possibles responses",
"items": {
"type": "object",
"description": "An HTTP response that is not supposed to be returned by a service",
"required": [
"status",
"body",
"headers"
],
"properties": {
"body": {
"type": "string",
"description": "The body of the HTTP response"
},
"headers": {
"type": "object",
"description": "The HTTP headers of the response"
},
"status": {
"type": "integer",
"format": "int32",
"description": "The HTTP status for the response"
}
}
}
}
}
},
"enabled": {
"type": "boolean",
"description": "Whether or not this config is enabled"
},
"largeRequestFaultConfig": {
"type": "object",
"description": "Config for large request injection fault",
"required": [
"additionalRequestSize",
"ratio"
],
"properties": {
"additionalRequestSize": {
"type": "integer",
"format": "int32",
"description": "The size added to the request body in bytes. Added payload will be spaces only."
},
"ratio": {
"type": "number",
"format": "double",
"description": "The percentage of requests affected by this fault. Value should be between 0.0 and 1.0"
}
}
},
"largeResponseFaultConfig": {
"type": "object",
"description": "Config for large response injection fault",
"required": [
"additionalResponseSize",
"ratio"
],
"properties": {
"additionalRequestSize": {
"type": "integer",
"format": "int32",
"description": "The size added to the response body in bytes. Added payload will be spaces only."
},
"ratio": {
"type": "number",
"format": "double",
"description": "The percentage of requests affected by this fault. Value should be between 0.0 and 1.0"
}
}
},
"latencyInjectionFaultConfig": {
"type": "object",
"description": "Config for large latency injection fault",
"required": [
"from",
"ratio",
"to"
],
"properties": {
"from": {
"type": "integer",
"format": "int32",
"description": "The start range of latency added to the request"
},
"ratio": {
"type": "number",
"format": "double",
"description": "The percentage of requests affected by this fault. Value should be between 0.0 and 1.0"
},
"to": {
"type": "integer",
"format": "int32",
"description": "The end range of latency added to the request"
}
}
}
}
},
"clientConfig": {
"type": "object",
"description": "The configuration of the circuit breaker for a service descriptor",
"required": [
"backoffFactor",
"callTimeout",
"globalTimeout",
"maxErrors",
"retries",
"retryInitialDelay",
"sampleInterval",
"useCircuitBreaker"
],
"properties": {
"backoffFactor": {
"type": "integer",
"format": "int32",
"description": "Specify the factor to multiply the delay for each retry"
},
"callTimeout": {
"type": "integer",
"format": "int32",
"description": "Specify how long each call should last at most in milliseconds"
},
"globalTimeout": {
"type": "integer",
"format": "int32",
"description": "Specify how long the global call (with retries) should last at most in milliseconds"
},
"maxErrors": {
"type": "integer",
"format": "int32",
"description": "Specify how many errors can pass before opening the circuit breaker"
},
"retries": {
"type": "integer",
"format": "int32",
"description": "Specify how many times the client will try to fetch the result of the request after an error before giving up."
},
"retryInitialDelay": {
"type": "integer",
"format": "int32",
"description": "Specify the delay between two retries. Each retry, the delay is multiplied by the backoff factor"
},
"sampleInterval": {
"type": "integer",
"format": "int32",
"description": "Specify the sliding window time for the circuit breaker in milliseconds, after this time, error count will be reseted"
},
"useCircuitBreaker": {
"type": "boolean",
"description": "Use a circuit breaker to avoid cascading failure when calling chains of services. Highly recommended !"
}
}
},
"clientValidatorRef": {
"type": "string",
"description": "A reference to validation authority"
},
"cors": {
"type": "object",
"description": "The configuration for cors support",
"required": [
"allowCredentials",
"allowHeaders",
"allowMethods",
"allowOrigin",
"enabled",
"excludedPatterns",
"exposeHeaders",
"maxAge"
],
"properties": {
"allowCredentials": {
"type": "boolean",
"description": "Allow to pass credentials"
},
"allowHeaders": {
"type": "array",
"description": "The cors allowed headers",
"items": {
"type": "string"
}
},
"allowMethods": {
"type": "array",
"description": "The cors allowed methods",
"items": {
"type": "string"
}
},
"allowOrigin": {
"type": "string",
"description": "The cors allowed origin"
},
"enabled": {
"type": "boolean",
"description": "Whether or not cors is enabled"
},
"excludedPatterns": {
"type": "array",
"description": "The cors excluded patterns",
"items": {
"type": "string"
}
},
"exposeHeaders": {
"type": "array",
"description": "The cors exposed header",
"items": {
"type": "string"
}
},
"maxAge": {
"type": "integer",
"format": "int32",
"description": "Cors max age"
}
}
},
"domain": {
"type": "string",
"description": "The domain on which the service is available."
},
"enabled": {
"type": "boolean",
"description": "Activate or deactivate your service. Once disabled, users will get an error page saying the service does not exist"
},
"enforceSecureCommunication": {
"type": "boolean",
"description": "When enabled, Otoroshi will try to exchange headers with downstream service to ensure no one else can use the service from outside"
},
"env": {
"type": "string",
"description": "The line on which the service is available. Based on that value, the name of the line will be appended to the subdomain. For line prod, nothing will be appended. For example, if the subdomain is 'foo' and line is 'preprod', then the exposed service will be available at 'foo.preprod.mydomain'"
},
"forceHttps": {
"type": "boolean",
"description": "Will force redirection to https:// if not present"
},
"groups": {
"type": "array",
"description": "Each service descriptor is attached to groups. A group can have one or more services. Each API key is linked to a group and allow access to every service in the group",
"items": {
"type": "string"
}
},
"gzip": {
"type": "object",
"description": "Configuration for gzip of service responses",
"required": [
"blackList",
"bufferSize",
"chunkedThreshold",
"compressionLevel",
"enabled",
"excludedPatterns",
"whiteList"
],
"properties": {
"blackList": {
"type": "array",
"description": "Blacklisted mime types. Wildcard supported",
"items": {
"type": "string"
}
},
"bufferSize": {
"type": "integer",
"format": "int64",
"description": "Size of the GZip buffer"
},
"chunkedThreshold": {
"type": "integer",
"format": "int64",
"description": "Threshold for chunking data"
},
"compressionLevel": {
"type": "integer",
"format": "int32",
"description": "Compression level. From 0 to 9"
},
"enabled": {
"type": "boolean",
"description": "Whether gzip compression is enabled or not"
},
"excludedPatterns": {
"type": "array",
"description": "Patterns that are excluded from gzipping",
"items": {
"type": "string"
}
},
"whiteList": {
"type": "array",
"description": "Whitelisted mime types. Wildcard supported",
"items": {
"type": "string"
}
}
}
},
"headersVerification": {
"type": "object",
"description": "Specify headers that will be verified after routing."
},
"healthCheck": {
"type": "object",
"description": "The configuration for checking health of a service. Otoroshi will perform GET call on the URL to check if the service is still alive",
"required": [
"enabled"
],
"properties": {
"enabled": {
"type": "boolean",
"description": "Whether or not healthcheck is enabled on the current service descriptor"
},
"url": {
"type": "string",
"format": "uri",
"description": "The URL to check"
}
}
},
"id": {
"type": "string",
"format": "uuid",
"description": "A unique random string to identify your service"
},
"ipFiltering": {
"type": "object",
"description": "The filtering configuration block for a service of globally.",
"required": [
"blacklist",
"whitelist"
],
"properties": {
"blacklist": {
"type": "array",
"description": "Blacklisted IP addresses",
"items": {
"type": "string",
"format": "ipv4"
}
},
"whitelist": {
"type": "array",
"description": "Whitelisted IP addresses",
"items": {
"type": "string",
"format": "ipv4"
}
}
}
},
"jwtVerifier": {
"type": "object"
},
"localHost": {
"type": "string",
"description": "The host used localy, mainly localhost:xxxx"
},
"localScheme": {
"type": "string",
"description": "The scheme used localy, mainly http"
},
"maintenanceMode": {
"type": "boolean",
"description": "Display a maintainance page when a user try to use the service"
},
"matchingHeaders": {
"type": "object",
"description": "Specify headers that MUST be present on client request to route it. Useful to implement versioning"
},
"matchingRoot": {
"type": "string",
"description": "The root path on which the service is available"
},
"metadata": {
"type": "object",
"description": "Just a bunch of random properties"
},
"name": {
"type": "string",
"description": "The name of your service. Only for debug and human readability purposes"
},
"overrideHost": {
"type": "boolean",
"description": "Host header will be overriden with Host of the target"
},
"privateApp": {
"type": "boolean",
"description": "When enabled, user will be allowed to use the service (UI) only if they are registered users of the private apps domain"
},
"privatePatterns": {
"type": "array",
"description": "If you define a public pattern that is a little bit too much, you can make some of public URL private again",
"items": {
"type": "string"
}
},
"publicPatterns": {
"type": "array",
"description": "By default, every services are private only and you'll need an API key to access it. However, if you want to expose a public UI, you can define one or more public patterns (regex) to allow access to anybody. For example if you want to allow anybody on any URL, just use '/.*'",
"items": {
"type": "string"
}
},
"redirectToLocal": {
"type": "boolean",
"description": "If you work locally with Otoroshi, you may want to use that feature to redirect one particuliar service to a local host. For example, you can relocate https://foo.preprod.bar.com to http://localhost:8080 to make some tests"
},
"redirection": {
"type": "object",
"description": "The configuration for redirection per service",
"required": [
"code",
"enabled",
"to"
],
"properties": {
"code": {
"type": "integer",
"format": "int32",
"description": "The http redirect code"
},
"enabled": {
"type": "boolean",
"description": "Whether or not redirection is enabled"
},
"to": {
"type": "string",
"description": "The location for redirection"
}
}
},
"root": {
"type": "string",
"description": "Otoroshi will append this root to any target choosen. If the specified root is '/api/foo', then a request to https://yyyyyyy/bar will actually hit https://xxxxxxxxx/api/foo/bar"
},
"secComExcludedPatterns": {
"type": "array",
"description": "URI patterns excluded from secured communications",
"items": {
"type": "string"
}
},
"secComSettings": {
"type": "object"
},
"sendOtoroshiHeadersBack": {
"type": "boolean",
"description": "When enabled, Otoroshi will send headers to consumer like request id, client latency, overhead, etc ..."
},
"statsdConfig": {
"type": "object",
"description": "The configuration for statsd metrics push",
"required": [
"datadog",
"host",
"port"
],
"properties": {
"datadog": {
"type": "boolean",
"description": "Datadog agent"
},
"host": {
"type": "string",
"description": "The host of the StatsD agent"
},
"port": {
"type": "integer",
"format": "int32",
"description": "The port of the StatsD agent"
}
}
},
"subdomain": {
"type": "string",
"description": "The subdomain on which the service is available"
},
"targets": {
"type": "array",
"description": "The list of target that Otoroshi will proxy and expose through the subdomain defined before. Otoroshi will do round-robin load balancing between all those targets with circuit breaker mecanism to avoid cascading failures",
"items": {
"type": "object",
"description": "A Target is where an HTTP call will be forwarded in the end from a service domain",
"required": [
"host",
"scheme"
],
"properties": {
"host": {
"type": "string",
"format": "hostname",
"description": "The host on which the HTTP call will be forwarded. Can be a domain name, or an IP address. Can also have a port"
},
"scheme": {
"type": "string",
"description": "The protocol used for communication. Can be http or https"
}
}
}
},
"transformerRef": {
"type": "string",
"description": "A reference to a request transformer"
},
"userFacing": {
"type": "boolean",
"description": "The fact that this service will be seen by users and cannot be impacted by the Snow Monkey"
},
"xForwardedHeaders": {
"type": "boolean",
"description": "Send X-Forwarded-* headers"
}
}
}