openapi: 3.1.0 info: title: F5 Distributed Cloud Services Config API description: 'Public REST API for F5 Distributed Cloud Services (F5 XC) - SaaS platform for multi-cloud application security, networking, and edge compute. Most configuration resources live under /api/config/namespaces/{namespace}/{resource} and observability under /api/data/. Authentication uses an API token or service credentials minted in the F5 Distributed Cloud Console, sent in the Authorization header as "APIToken {token}". ' version: 1.0.0 contact: name: F5 Distributed Cloud Docs url: https://docs.cloud.f5.com/docs-v2/api servers: - url: https://{tenant}.console.ves.volterra.io description: F5 Distributed Cloud Console (tenant) variables: tenant: default: tenant description: Tenant subdomain security: - APIToken: [] tags: - name: Config paths: /api/config/namespaces: get: summary: List namespaces operationId: listNamespaces responses: '200': description: Namespace collection tags: - Config post: summary: Create a namespace operationId: createNamespace requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/Namespace' responses: '200': description: Namespace created tags: - Config /api/config/namespaces/{namespace}: parameters: - $ref: '#/components/parameters/Namespace' get: summary: Get a namespace operationId: getNamespace responses: '200': description: Namespace tags: - Config delete: summary: Delete a namespace operationId: deleteNamespace responses: '200': description: Deleted tags: - Config /api/config/namespaces/{namespace}/http_loadbalancers: parameters: - $ref: '#/components/parameters/Namespace' get: summary: List HTTP load balancers operationId: listHttpLoadBalancers responses: '200': description: HTTP LB collection tags: - Config post: summary: Create an HTTP load balancer operationId: createHttpLoadBalancer requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/HttpLoadBalancer' responses: '200': description: Created tags: - Config /api/config/namespaces/{namespace}/http_loadbalancers/{name}: parameters: - $ref: '#/components/parameters/Namespace' - $ref: '#/components/parameters/ObjectName' get: summary: Get an HTTP load balancer operationId: getHttpLoadBalancer responses: '200': description: Object tags: - Config put: summary: Replace an HTTP load balancer operationId: replaceHttpLoadBalancer requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/HttpLoadBalancer' responses: '200': description: Replaced tags: - Config delete: summary: Delete an HTTP load balancer operationId: deleteHttpLoadBalancer responses: '200': description: Deleted tags: - Config /api/config/namespaces/{namespace}/tcp_loadbalancers: parameters: - $ref: '#/components/parameters/Namespace' get: summary: List TCP load balancers operationId: listTcpLoadBalancers responses: '200': description: TCP LB collection tags: - Config post: summary: Create a TCP load balancer operationId: createTcpLoadBalancer requestBody: required: true content: application/json: schema: type: object responses: '200': description: Created tags: - Config /api/config/namespaces/{namespace}/origin_pools: parameters: - $ref: '#/components/parameters/Namespace' get: summary: List origin pools operationId: listOriginPools responses: '200': description: Origin pool collection tags: - Config post: summary: Create an origin pool operationId: createOriginPool requestBody: required: true content: application/json: schema: type: object responses: '200': description: Created tags: - Config /api/config/namespaces/{namespace}/origin_pools/{name}: parameters: - $ref: '#/components/parameters/Namespace' - $ref: '#/components/parameters/ObjectName' get: summary: Get an origin pool operationId: getOriginPool responses: '200': description: Object tags: - Config delete: summary: Delete an origin pool operationId: deleteOriginPool responses: '200': description: Deleted tags: - Config /api/config/namespaces/{namespace}/app_firewalls: parameters: - $ref: '#/components/parameters/Namespace' get: summary: List WAF/WAAP application firewalls operationId: listAppFirewalls responses: '200': description: WAF collection tags: - Config post: summary: Create an application firewall policy operationId: createAppFirewall requestBody: required: true content: application/json: schema: type: object responses: '200': description: Created tags: - Config /api/config/namespaces/{namespace}/certificates: parameters: - $ref: '#/components/parameters/Namespace' get: summary: List TLS certificates operationId: listCertificates responses: '200': description: Certificate collection tags: - Config post: summary: Upload a TLS certificate operationId: createCertificate requestBody: required: true content: application/json: schema: type: object responses: '200': description: Created tags: - Config /api/config/namespaces/{namespace}/dns_domains: parameters: - $ref: '#/components/parameters/Namespace' get: summary: List DNS domains operationId: listDnsDomains responses: '200': description: DNS domain collection tags: - Config components: parameters: Namespace: name: namespace in: path required: true schema: type: string description: F5 XC namespace ObjectName: name: name in: path required: true schema: type: string description: Resource name schemas: HttpLoadBalancer: type: object properties: metadata: type: object properties: name: type: string namespace: type: string spec: type: object properties: domains: type: array items: type: string http: type: object https: type: object default_route_pools: type: array items: type: object properties: pool: type: object properties: name: type: string namespace: type: string Namespace: type: object properties: metadata: type: object properties: name: type: string description: type: string labels: type: object additionalProperties: type: string spec: type: object securitySchemes: APIToken: type: apiKey in: header name: Authorization description: 'Send "Authorization: APIToken {token}" using a token issued from the F5 Distributed Cloud Console (Personal Tokens or Service Credentials). '