{
  "openapi": "3.0.1",
  "info": {
    "title": "OpenFaaS API Gateway",
    "description": "OpenFaaS API documentation",
    "license": {
      "name": "MIT"
    },
    "version": "0.8.12",
    "contact": {
      "name": "OpenFaaS Ltd",
      "url": "https://www.openfaas.com/support/"
    }
  },
  "servers": [
    {
      "url": "http://localhost:8080",
      "description": "Local server"
    }
  ],
  "tags": [
    {
      "name": "internal",
      "description": "Internal use only"
    },
    {
      "name": "system",
      "description": "System endpoints for managing functions and related objects"
    },
    {
      "name": "function",
      "description": "Endpoints for invoking functions"
    }
  ],
  "paths": {
    "/healthz": {
      "get": {
        "summary": "Healthcheck",
        "operationId": "healthcheck",
        "description": "Healthcheck for the gateway, indicates if the gateway is running and available",
        "tags": [
          "internal"
        ],
        "responses": {
          "200": {
            "description": "Healthy"
          },
          "500": {
            "description": "Not healthy"
          }
        }
      }
    },
    "/metrics": {
      "get": {
        "summary": "Prometheus metrics",
        "operationId": "metrics",
        "description": "Prometheus metrics for the gateway",
        "tags": [
          "internal"
        ],
        "responses": {
          "200": {
            "description": "Prometheus metrics in text format"
          }
        }
      }
    },
    "/system/info": {
      "get": {
        "operationId": "GetSystemInfo",
        "description": "Get system provider information",
        "summary": "Get info such as provider version number and provider orchestrator",
        "tags": [
          "system"
        ],
        "responses": {
          "200": {
            "description": "Info result",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GatewayInfo"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        }
      }
    },
    "/system/alert": {
      "post": {
        "operationId": "ScaleAlert",
        "description": "Scale a function based on an alert",
        "summary": "Event-sink for AlertManager, for auto-scaling\n\nInternal use for AlertManager, requires valid AlertManager alert\nJSON\n",
        "tags": [
          "internal"
        ],
        "requestBody": {
          "description": "Incoming alert",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PrometheusAlert"
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "Alert handled successfully"
          },
          "500": {
            "description": "Internal error with swarm or request JSON invalid"
          }
        }
      }
    },
    "/system/functions": {
      "get": {
        "operationId": "GetFunctions",
        "description": "Get a list of deployed functions",
        "summary": "Get a list of deployed functions with: stats and image digest",
        "tags": [
          "system"
        ],
        "responses": {
          "200": {
            "description": "List of deployed functions.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "array",
                  "items": {
                    "$ref": "#/components/schemas/FunctionStatus"
                  }
                }
              }
            }
          }
        }
      },
      "put": {
        "operationId": "UpdateFunction",
        "description": "update a function spec",
        "summary": "Update a function.",
        "tags": [
          "system"
        ],
        "requestBody": {
          "description": "Function to update",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FunctionDeployment"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Accepted"
          },
          "400": {
            "description": "Bad Request"
          },
          "404": {
            "description": "Not Found"
          },
          "500": {
            "description": "Internal Server Error"
          }
        }
      },
      "post": {
        "operationId": "DeployFunction",
        "description": "Deploy a new function.",
        "summary": "Deploy a new function.",
        "tags": [
          "system"
        ],
        "requestBody": {
          "description": "Function to deploy",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/FunctionDeployment"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "description": "Accepted"
          },
          "400": {
            "description": "Bad Request"
          },
          "500": {
            "description": "Internal Server Error"
          }
        }
      },
      "delete": {
        "operationId": "DeleteFunction",
        "description": "Remove a deployed function.",
        "summary": "Remove a deployed function.",
        "tags": [
          "system"
        ],
        "requestBody": {
          "description": "Function to delete",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/DeleteFunctionRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "OK"
          },
          "400": {
            "description": "Bad Request"
          },
          "404": {
            "description": "Not Found"
          },
          "500": {
            "description": "Internal Server Error"
          }
        }
      }
    },
    "/system/scale-function/{functionName}": {
      "post": {
        "operationId": "ScaleFunction",
        "description": "Scale a function",
        "summary": "Scale a function to a specific replica count",
        "tags": [
          "system"
        ],
        "parameters": [
          {
            "name": "functionName",
            "in": "path",
            "description": "Function name",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ScaleServiceRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Scaling OK"
          },
          "202": {
            "description": "Scaling OK"
          },
          "404": {
            "description": "Function not found"
          },
          "500": {
            "description": "Error scaling function"
          }
        }
      }
    },
    "/system/function/{functionName}": {
      "get": {
        "operationId": "GetFunctionStatus",
        "description": "Get the status of a function by name",
        "tags": [
          "system"
        ],
        "parameters": [
          {
            "name": "functionName",
            "in": "path",
            "description": "Function name",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "namespace",
            "in": "query",
            "description": "Namespace of the function",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Function Summary",
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/FunctionStatus"
                }
              }
            }
          },
          "404": {
            "description": "Not Found"
          },
          "500": {
            "description": "Internal Server Error"
          }
        }
      }
    },
    "/system/secrets": {
      "get": {
        "operationId": "ListSecrets",
        "description": "Get a list of secret names and metadata from the provider",
        "summary": "Get a list of secret names and metadata from the provider",
        "tags": [
          "system"
        ],
        "responses": {
          "200": {
            "description": "List of submitted secrets.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SecretDescription"
                }
              }
            }
          }
        }
      },
      "put": {
        "operationId": "UpdateSecret",
        "description": "Update a secret.",
        "summary": "Update a secret, the value is replaced.",
        "tags": [
          "system"
        ],
        "requestBody": {
          "description": "Secret to update",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Secret"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Ok"
          },
          "400": {
            "description": "Bad Request"
          },
          "404": {
            "description": "Not Found"
          },
          "405": {
            "description": "Method Not Allowed. Secret update is not allowed in faas-swarm."
          },
          "500": {
            "description": "Internal Server Error"
          }
        }
      },
      "post": {
        "operationId": "CreateSecret",
        "description": "Create a new secret.",
        "tags": [
          "system"
        ],
        "requestBody": {
          "description": "A new secret to create",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Secret"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Created"
          },
          "400": {
            "description": "Bad Request"
          },
          "500": {
            "description": "Internal Server Error"
          }
        }
      },
      "delete": {
        "operationId": "DeleteSecret",
        "description": "Remove a secret.",
        "tags": [
          "system"
        ],
        "requestBody": {
          "description": "Secret to delete",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SecretDescription"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "OK"
          },
          "400": {
            "description": "Bad Request"
          },
          "404": {
            "description": "Not Found"
          },
          "500": {
            "description": "Internal Server Error"
          }
        }
      }
    },
    "/system/logs": {
      "get": {
        "operationId": "GetFunctionLogs",
        "description": "Get a stream of the logs for a specific function",
        "tags": [
          "system"
        ],
        "parameters": [
          {
            "name": "name",
            "in": "query",
            "description": "Function name",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "namespace",
            "in": "query",
            "description": "Namespace of the function",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "instance",
            "in": "query",
            "description": "Instance of the function",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "tail",
            "in": "query",
            "description": "Sets the maximum number of log messages to return, <=0 means unlimited",
            "schema": {
              "type": "integer"
            }
          },
          {
            "name": "follow",
            "in": "query",
            "description": "When true, the request will stream logs until the request timeout",
            "schema": {
              "type": "boolean"
            }
          },
          {
            "name": "since",
            "in": "query",
            "description": "Only return logs after a specific date (RFC3339)",
            "schema": {
              "type": "string",
              "format": "date-time"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Newline delimited stream of log messages",
            "content": {
              "application/x-ndjson": {
                "schema": {
                  "$ref": "#/components/schemas/LogEntry"
                }
              }
            }
          },
          "404": {
            "description": "Not Found"
          },
          "500": {
            "description": "Internal Server Error"
          }
        }
      }
    },
    "/system/namespaces": {
      "get": {
        "operationId": "ListNamespaces",
        "description": "Get a list of namespaces",
        "tags": [
          "system"
        ],
        "responses": {
          "200": {
            "description": "List of namespaces",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListNamespaceResponse"
                }
              }
            }
          },
          "500": {
            "description": "Internal Server Error"
          }
        }
      }
    },
    "/async-function/{functionName}": {
      "post": {
        "operationId": "InvokeAsync",
        "description": "Invoke a function asynchronously",
        "summary": "Invoke a function asynchronously in the default OpenFaaS namespace\n\nAny additional path segments and query parameters will be passed to the function as is.\n\nSee https://docs.openfaas.com/reference/async/.\n",
        "tags": [
          "function"
        ],
        "parameters": [
          {
            "name": "functionName",
            "in": "path",
            "description": "Function name",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "(Optional) data to pass to function",
          "content": {
            "*/*": {
              "schema": {
                "type": "string",
                "format": "binary",
                "example": "{\"hello\": \"world\"}"
              }
            }
          },
          "required": false
        },
        "responses": {
          "202": {
            "description": "Request accepted and queued"
          },
          "404": {
            "description": "Not Found"
          },
          "500": {
            "description": "Internal Server Error"
          }
        }
      }
    },
    "/async-function/{functionName}.{namespace}": {
      "post": {
        "operationId": "InvokeAsyncNamespaced",
        "description": "Invoke a function asynchronously in an OpenFaaS namespace.",
        "summary": "Invoke a function asynchronously in an OpenFaaS namespace.\n\nAny additional path segments and query parameters will be passed to the function as is.\n\nSee https://docs.openfaas.com/reference/async/.\n",
        "tags": [
          "function"
        ],
        "parameters": [
          {
            "name": "functionName",
            "in": "path",
            "description": "Function name",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "namespace",
            "in": "path",
            "description": "Namespace of the function",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "(Optional) data to pass to function",
          "content": {
            "*/*": {
              "schema": {
                "type": "string",
                "format": "binary",
                "example": "{\"hello\": \"world\"}"
              }
            }
          },
          "required": false
        },
        "responses": {
          "202": {
            "description": "Request accepted and queued"
          },
          "404": {
            "description": "Not Found"
          },
          "500": {
            "description": "Internal Server Error"
          }
        }
      }
    },
    "/function/{functionName}": {
      "post": {
        "operationId": "InvokeFunction",
        "description": "Invoke a function in the default OpenFaaS namespace.",
        "summary": "Synchronously invoke a function defined in te default OpenFaaS namespace.\n\nAny additional path segments and query parameters will be passed to the function as is.\n",
        "tags": [
          "function"
        ],
        "parameters": [
          {
            "name": "functionName",
            "in": "path",
            "description": "Function name",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "(Optional) data to pass to function",
          "content": {
            "*/*": {
              "schema": {
                "type": "string",
                "format": "binary",
                "example": "{\"hello\": \"world\"}"
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "Value returned from function"
          },
          "404": {
            "description": "Not Found"
          },
          "500": {
            "description": "Internal server error"
          }
        }
      }
    },
    "/function/{functionName}.{namespace}": {
      "post": {
        "operationId": "InvokeFunctionNamespaced",
        "description": "Invoke a function in an OpenFaaS namespace.",
        "summary": "Synchronously invoke a function defined in the specified namespace.\n\nAny additional path segments and query parameters will be passed to the function as is.\n",
        "tags": [
          "function"
        ],
        "parameters": [
          {
            "name": "functionName",
            "in": "path",
            "description": "Function name",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "namespace",
            "in": "path",
            "description": "Namespace of the function",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "(Optional) data to pass to function",
          "content": {
            "*/*": {
              "schema": {
                "type": "string",
                "format": "binary",
                "example": "{\"hello\": \"world\"}"
              }
            }
          },
          "required": false
        },
        "responses": {
          "200": {
            "description": "Value returned from function"
          },
          "404": {
            "description": "Not Found"
          },
          "500": {
            "description": "Internal server error"
          }
        }
      }
    }
  },
  "components": {
    "securitySchemes": {
      "basicAuth": {
        "type": "http",
        "scheme": "basic"
      }
    },
    "schemas": {
      "GatewayInfo": {
        "required": [
          "provider",
          "version",
          "arch"
        ],
        "type": "object",
        "properties": {
          "provider": {
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/ProviderInfo"
              }
            ]
          },
          "version": {
            "nullable": true,
            "description": "version of the gateway",
            "allOf": [
              {
                "$ref": "#/components/schemas/VersionInfo"
              }
            ]
          },
          "arch": {
            "type": "string",
            "description": "Platform architecture",
            "example": "x86_64"
          }
        }
      },
      "VersionInfo": {
        "type": "object",
        "required": [
          "sha",
          "release"
        ],
        "properties": {
          "commit_message": {
            "type": "string",
            "example": "Sample Message"
          },
          "sha": {
            "type": "string",
            "example": "7108418d9dd6b329ddff40e7393b3166f8160a88"
          },
          "release": {
            "type": "string",
            "format": "semver",
            "example": "0.8.9"
          }
        }
      },
      "ProviderInfo": {
        "type": "object",
        "required": [
          "provider",
          "orchestration",
          "version"
        ],
        "properties": {
          "provider": {
            "type": "string",
            "description": "The orchestration provider / implementation",
            "example": "faas-netes"
          },
          "orchestration": {
            "type": "string",
            "example": "kubernetes"
          },
          "version": {
            "description": "The version of the provider",
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/VersionInfo"
              }
            ]
          }
        }
      },
      "PrometheusAlert": {
        "type": "object",
        "description": "Prometheus alert produced by AlertManager. This is only a subset of the full alert payload.",
        "required": [
          "status",
          "receiver",
          "alerts"
        ],
        "properties": {
          "status": {
            "type": "string",
            "description": "The status of the alert",
            "example": "resolved"
          },
          "receiver": {
            "type": "string",
            "description": "The name of the receiver",
            "example": "webhook"
          },
          "alerts": {
            "type": "array",
            "description": "The list of alerts",
            "items": {
              "$ref": "#/components/schemas/PrometheusInnerAlert"
            }
          }
        },
        "example": {
          "receiver": "scale-up",
          "status": "firing",
          "alerts": [
            {
              "status": "firing",
              "labels": {
                "alertname": "APIHighInvocationRate",
                "code": "200",
                "function_name": "func_nodeinfo",
                "instance": "gateway:8080",
                "job": "gateway",
                "monitor": "faas-monitor",
                "service": "gateway",
                "severity": "major",
                "value": "8.998200359928017"
              },
              "annotations": {
                "description": "High invocation total on gateway:8080",
                "summary": "High invocation total on gateway:8080"
              },
              "startsAt": "2017-03-15T15:52:57.805Z",
              "endsAt": "0001-01-01T00:00:00Z",
              "generatorURL": "http://4156cb797423:9090/graph?g0.expr=rate%28gateway_function_invocation_total%5B10s%5D%29+%3E+5&g0.tab=0"
            }
          ],
          "groupLabels": {
            "alertname": "APIHighInvocationRate",
            "service": "gateway"
          },
          "commonLabels": {
            "alertname": "APIHighInvocationRate",
            "code": "200",
            "function_name": "func_nodeinfo",
            "instance": "gateway:8080",
            "job": "gateway",
            "monitor": "faas-monitor",
            "service": "gateway",
            "severity": "major",
            "value": "8.998200359928017"
          },
          "commonAnnotations": {
            "description": "High invocation total on gateway:8080",
            "summary": "High invocation total on gateway:8080"
          },
          "externalURL": "http://f054879d97db:9093",
          "version": "3",
          "groupKey": 18195285354214865000
        }
      },
      "PrometheusInnerAlert": {
        "type": "object",
        "description": "A single alert produced by Prometheus",
        "required": [
          "status",
          "labels"
        ],
        "properties": {
          "status": {
            "type": "string",
            "description": "The status of the alert",
            "example": "resolved"
          },
          "labels": {
            "$ref": "#/components/schemas/PrometheusInnerAlertLabel"
          }
        }
      },
      "PrometheusInnerAlertLabel": {
        "type": "object",
        "description": "A single label of a Prometheus alert",
        "required": [
          "alertname",
          "function_name"
        ],
        "properties": {
          "alertname": {
            "type": "string",
            "description": "The name of the alert"
          },
          "function_name": {
            "type": "string",
            "description": "The name of the function",
            "example": "nodeinfo"
          }
        }
      },
      "FunctionDeployment": {
        "required": [
          "service",
          "image"
        ],
        "type": "object",
        "properties": {
          "service": {
            "type": "string",
            "description": "Name of deployed function",
            "example": "nodeinfo"
          },
          "image": {
            "type": "string",
            "description": "Docker image in accessible registry",
            "example": "functions/nodeinfo:latest"
          },
          "namespace": {
            "type": "string",
            "description": "Namespace to deploy function to. When omitted, the default namespace is used, typically this is `openfaas-fn` but is configured by the provider.",
            "example": "openfaas-fn"
          },
          "envProcess": {
            "type": "string",
            "description": "Process for watchdog to fork, i.e. the command to start the function process.\n\nThis value configures the `fprocess` env variable.\n",
            "example": "node main.js"
          },
          "constraints": {
            "type": "array",
            "items": {
              "type": "string",
              "description": "Constraints are specific to OpenFaaS Provider",
              "example": "node.platform.os == linux"
            }
          },
          "envVars": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "Overrides to environmental variables"
          },
          "secrets": {
            "type": "array",
            "items": {
              "type": "string",
              "description": "An array of names of secrets that are required to be loaded from the Docker Swarm.",
              "example": "secret-name-1"
            }
          },
          "labels": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            },
            "description": "A map of labels for making scheduling or routing decisions",
            "example": {
              "foo": "bar"
            }
          },
          "annotations": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            },
            "description": "A map of annotations for management, orchestration, events and build tasks",
            "example": {
              "topics": "awesome-kafka-topic",
              "foo": "bar"
            }
          },
          "limits": {
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/FunctionResources"
              }
            ]
          },
          "requests": {
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/FunctionResources"
              }
            ]
          },
          "readOnlyRootFilesystem": {
            "type": "boolean",
            "description": "Make the root filesystem of the function read-only"
          },
          "registryAuth": {
            "type": "string",
            "description": "Deprecated: Private registry base64-encoded basic auth (as present in ~/.docker/config.json)\n\nUse a Kubernetes Secret with registry-auth secret type to provide this value instead.\n\nThis value is completely ignored.\n",
            "example": "dXNlcjpwYXNzd29yZA==",
            "deprecated": true
          },
          "network": {
            "type": "string",
            "description": "Deprecated: Network, usually func_functions for Swarm.\n\nThis value is completely ignored.\n",
            "deprecated": true,
            "example": "func_functions"
          }
        }
      },
      "FunctionStatus": {
        "type": "object",
        "required": [
          "name",
          "image"
        ],
        "properties": {
          "name": {
            "type": "string",
            "description": "The name of the function",
            "example": "nodeinfo"
          },
          "image": {
            "type": "string",
            "description": "The fully qualified docker image name of the function",
            "example": "functions/nodeinfo:latest"
          },
          "namespace": {
            "type": "string",
            "description": "The namespace of the function",
            "example": "openfaas-fn"
          },
          "envProcess": {
            "type": "string",
            "description": "Process for watchdog to fork",
            "example": "node main.js"
          },
          "envVars": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            },
            "description": "environment variables for the function runtime"
          },
          "constraints": {
            "type": "array",
            "items": {
              "type": "string",
              "description": "Constraints are specific to OpenFaaS Provider",
              "example": "node.platform.os == linux"
            }
          },
          "secrets": {
            "type": "array",
            "items": {
              "type": "string",
              "description": "An array of names of secrets that are made available to the function"
            }
          },
          "labels": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            },
            "description": "A map of labels for making scheduling or routing decisions",
            "example": {
              "foo": "bar"
            }
          },
          "annotations": {
            "type": "object",
            "nullable": true,
            "additionalProperties": {
              "type": "string"
            },
            "description": "A map of annotations for management, orchestration, events and build tasks",
            "example": {
              "topics": "awesome-kafka-topic",
              "foo": "bar"
            }
          },
          "limits": {
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/FunctionResources"
              }
            ]
          },
          "requests": {
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/FunctionResources"
              }
            ]
          },
          "readOnlyRootFilesystem": {
            "type": "boolean",
            "description": "removes write-access from the root filesystem mount-point."
          },
          "invocationCount": {
            "type": "number",
            "description": "The amount of invocations for the specified function",
            "format": "integer",
            "example": 1337
          },
          "replicas": {
            "type": "number",
            "description": "Desired amount of replicas",
            "format": "integer",
            "example": 2
          },
          "availableReplicas": {
            "type": "number",
            "description": "The current available amount of replicas",
            "format": "integer",
            "example": 2
          },
          "createdAt": {
            "type": "string",
            "description": "is the time read back from the faas backend's\ndata store for when the function or its container was created.\n",
            "format": "date-time"
          },
          "usage": {
            "nullable": true,
            "allOf": [
              {
                "$ref": "#/components/schemas/FunctionUsage"
              }
            ]
          }
        }
      },
      "FunctionResources": {
        "type": "object",
        "properties": {
          "memory": {
            "type": "string",
            "description": "The amount of memory that is allocated for the function",
            "example": "128M"
          },
          "cpu": {
            "type": "string",
            "description": "The amount of cpu that is allocated for the function",
            "example": "0.01"
          }
        }
      },
      "FunctionUsage": {
        "type": "object",
        "properties": {
          "cpu": {
            "type": "number",
            "description": "is the increase in CPU usage since the last measurement\nequivalent to Kubernetes' concept of millicores.\n",
            "format": "double",
            "example": 0.01
          },
          "totalMemoryBytes": {
            "type": "number",
            "description": "is the total memory usage in bytes.",
            "format": "double",
            "example": 1337
          }
        }
      },
      "DeleteFunctionRequest": {
        "required": [
          "functionName"
        ],
        "type": "object",
        "properties": {
          "functionName": {
            "type": "string",
            "description": "Name of deployed function",
            "example": "nodeinfo"
          }
        }
      },
      "ScaleServiceRequest": {
        "required": [
          "serviceName",
          "namespace",
          "replicas"
        ],
        "type": "object",
        "properties": {
          "serviceName": {
            "type": "string",
            "description": "Name of deployed function",
            "example": "nodeinfo"
          },
          "namespace": {
            "type": "string",
            "description": "Namespace the function is deployed to.",
            "example": "openfaas-fn"
          },
          "replicas": {
            "type": "integer",
            "format": "int64",
            "minimum": 0,
            "description": "Number of replicas to scale to",
            "example": 2
          }
        }
      },
      "SecretDescription": {
        "required": [
          "name"
        ],
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "description": "Name of secret",
            "example": "aws-key"
          },
          "namespace": {
            "type": "string",
            "description": "Namespace of secret",
            "example": "openfaas-fn"
          }
        }
      },
      "SecretValues": {
        "type": "object",
        "properties": {
          "value": {
            "type": "string",
            "description": "Value of secret in plain-text",
            "example": "changeme"
          },
          "rawValue": {
            "type": "string",
            "format": "byte",
            "description": "Value of secret in base64.\n\nThis can be used to provide raw binary data when the `value` field is omitted.\n",
            "example": "Y2hhbmdlbWU="
          }
        }
      },
      "Secret": {
        "type": "object",
        "allOf": [
          {
            "$ref": "#/components/schemas/SecretDescription"
          },
          {
            "$ref": "#/components/schemas/SecretValues"
          }
        ]
      },
      "LogEntry": {
        "type": "object",
        "required": [
          "name",
          "namespace",
          "instance",
          "timestamp",
          "text"
        ],
        "properties": {
          "name": {
            "type": "string",
            "description": "the function name"
          },
          "namespace": {
            "type": "string",
            "description": "the namespace of the function"
          },
          "instance": {
            "type": "string",
            "description": "the name/id of the specific function instance"
          },
          "timestamp": {
            "type": "string",
            "description": "the timestamp of when the log message was recorded",
            "format": "date-time"
          },
          "text": {
            "type": "string",
            "description": "raw log message content"
          }
        }
      },
      "ListNamespaceResponse": {
        "type": "array",
        "items": {
          "type": "string",
          "description": "Namespace name",
          "example": "openfaas-fn"
        }
      }
    }
  }
}