openapi: 3.0.0
info:
title: Platform Service API
version: 1.2.1
description: >
Provides a RESTful API to interface with application namespace keys. keys are hierarchical in nature.
All keys which start with the "/config/" path prefix will have Read Write and Delete actions permitted via this API
A subset of Mgmtd nodes can be read and updated via this API
**Note:** While logged in as an **admin** user, you will not need to provide basic auth or an FEAPI token
paths:
/config:
put:
summary: Update a key
operationId: update_key
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/Node"
required: true
responses:
"200":
description: Success
content:
application/json:
schema:
$ref: "#/components/schemas/Message"
"400":
description: Invalid
content:
application/json:
schema:
$ref: "#/components/schemas/error"
examples:
invalid-res:
$ref: "##/components/examples/invalidRes"
"401":
description: Unauthorized
content:
application/json:
schema:
$ref: "#/components/schemas/Message"
examples:
unauthorized-res:
summary: Unauthorized
value: |
{
"message" : "Unauthorized"
}
"404":
description: Key not Found
content:
application/json:
schema:
$ref: "#/components/schemas/error"
examples:
not-found-res:
summary: KeyNotFound
value: |
{
"code": 404,
"message" : "key_name does not exist"
}
"405":
description: Restricted namespace
content:
application/json:
schema:
$ref: "#/components/schemas/error"
examples:
restricted:
summary: restricted namespace
value: |
{
"code": 405,
"message" : "key_name is not in a Read-Write namespace .."
}
"500":
description: Internal Server Error
security:
- FeApiToken: []
- BasicAuth: []
tags:
- /config
delete:
summary: Delete key
operationId: delete
parameters:
- name: node_name
in: query
required: true
description: node name
schema:
type: string
responses:
"200":
description: Success
content:
application/json:
schema:
$ref: "#/components/schemas/Message"
"400":
description: Invalid
content:
application/json:
schema:
$ref: "#/components/schemas/error"
examples:
invalid-res:
summary: Invalid
value: |
{
"code": 400,
"message" : "Invalid request . . "
}
"401":
description: Unauthorized
content:
application/json:
schema:
$ref: "#/components/schemas/Message"
examples:
unauthorized-res:
summary: Unauthorized responce
value: |
{
"message" : "Unauthorized"
}
"404":
description: "Key not Found"
content:
application/json:
schema:
$ref: "#/components/schemas/error"
examples:
not-found-res:
summary: KeyNotFound
value: |
{
"code": 404,
"message" : "key names not found ['']"
}
"405":
description: Restricted namespace
content:
application/json:
schema:
$ref: "#/components/schemas/error"
examples:
restricted:
summary: restricted namespace
value: |
{
"code": 405,
"message" : "key_name is not in a Read-Write namespace"
}
"500":
description: Internal Server Error
security:
- FeApiToken: []
- BasicAuth: []
tags:
- /config
get:
summary: Read key value
operationId: get_key
parameters:
- name: node_name
in: query
required: true
description: node name
schema:
type: string
responses:
"200":
description: Success
content:
application/json:
schema:
$ref: "#/components/schemas/ListOfNodesWithDefault"
"400":
description: Invalid
content:
application/json:
schema:
$ref: "#/components/schemas/error"
examples:
invalid-res:
summary: Invalid
value: |
{
"code": 400,
"message" : "Invalid request . . "
}
"401":
description: Unauthorized
content:
application/json:
schema:
$ref: "#/components/schemas/Message"
examples:
unauthorized-res:
summary: Unauthorized responce
value: |
{
"message" : "Unauthorized"
}
"404":
description: Key not Found
content:
application/json:
schema:
$ref: "#/components/schemas/error"
examples:
not-found-res:
summary: KeyNotFound
value: |
{
"code" : 404,
"message" : "The following keys were not found "
}
"405":
description: Restricted namespace
content:
application/json:
schema:
$ref: "#/components/schemas/error"
examples:
restricted:
summary: restricted namespace
value: |
{
"code": 405,
"message" : "Restricted namespace"
}
"500":
description: Internal Server Error
security:
- FeApiToken: []
- BasicAuth: []
tags:
- /config
post:
summary: Create a node
description: 409 Integrity error returned if key with that name already exists
operationId: create_key
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/NodeWithDefault"
required: true
responses:
"200":
description: Success
content:
application/json:
schema:
$ref: "#/components/schemas/Message"
"400":
description: Invalid
content:
application/json:
schema:
$ref: "#/components/schemas/error"
examples:
invalid-res:
summary: Invalid
value: |
{
"code": 400,
"message" : "Invalid request . . "
}
"401":
description: Unauthorized
content:
application/json:
schema:
$ref: "#/components/schemas/Message"
examples:
unauthorized-res:
summary: Unauthorized responce
value: |
{
"message" : "Unauthorized"
}
"405":
description: Restricted namespace
content:
application/json:
schema:
$ref: "#/components/schemas/error"
examples:
restricted:
summary: restricted namespace
value: |
{
"code": 405,
"message" : "key_name is not in a Read-Write namespace"
}
"409":
description: Conflict. key name already exists
"500":
description: Internal Server Error
content:
application/json:
schema:
$ref: "#/components/schemas/error"
security:
- FeApiToken: []
- BasicAuth: []
tags:
- /config
/config/tree:
put:
summary: Update keys
operationId: bulk put
requestBody:
$ref: "#/components/requestBodies/ListOfNodesWithDefault"
responses:
"200":
description: Success
content:
application/json:
schema:
$ref: "#/components/schemas/Message"
"400":
description: Invalid
content:
application/json:
schema:
$ref: "#/components/schemas/error"
examples:
invalid-res:
summary: Invalid
value: |
{
"code": 400,
"message" : "Invalid request . . "
}
"401":
description: Unauthorized
content:
application/json:
schema:
$ref: "#/components/schemas/Message"
examples:
unauthorized-res:
summary: Unauthorized responce
value: |
{
"message" : "Unauthorized"
}
"404":
description: Key not Found
content:
application/json:
schema:
$ref: "#/components/schemas/error"
examples:
not-found-res:
summary: KeyNotFound
value: |
{
"code": 404,
"message" : "key_name does not exist"
}
"405":
description: Restricted namespace
content:
application/json:
schema:
$ref: "#/components/schemas/error"
examples:
restricted:
summary: restricted namespace
value: |
{
"code": 405,
"message" : "key_name is not in a Read-Write namespace"
}
"500":
description: Internal Server Error
security:
- FeApiToken: []
- BasicAuth: []
tags:
- /config/tree
delete:
summary: Delete list of key prefixes
operationId: delete key prefixes
parameters:
- name: node_name
in: query
required: true
description: node name, use comma separated list if more than one
style: form
explode: false
schema:
type: array
items:
type: string
responses:
"400":
description: Invalid
content:
application/json:
schema:
$ref: "#/components/schemas/error"
examples:
invalid-res:
summary: Invalid
value: |
{
"code": 400,
"message" : "Invalid request . . "
}
"401":
description: Unauthorized
content:
application/json:
schema:
$ref: "#/components/schemas/Message"
examples:
unauthorized-res:
summary: Unauthorized responce
value: |
{
"message" : "Unauthorized"
}
"405":
description: Restricted namespace
content:
application/json:
schema:
$ref: "#/components/schemas/error"
examples:
restricted:
summary: restricted namespace
value: |
{
"code": 405,
"message" : "key_name is not in a Read-Write namespace"
}
"500":
description: Internal Server Error
security:
- FeApiToken: []
- BasicAuth: []
tags:
- /config/tree
get:
summary: Read list all keys under a specified prefix
operationId: get key prefixes
parameters:
- name: node_name
in: query
required: true
description: node name, use comma separated list if more than one
style: form
explode: false
schema:
type: array
items:
type: string
responses:
"200":
description: Success
content:
application/json:
schema:
$ref: "#/components/schemas/ListOfNodesWithDefault"
"400":
description: Invalid
content:
application/json:
schema:
$ref: "#/components/schemas/error"
examples:
invalid-res:
summary: Invalid
value: |
{
"code": 400,
"message" : "Invalid request . . "
}
"401":
description: Unauthorized
content:
application/json:
schema:
$ref: "#/components/schemas/Message"
examples:
unauthorized-res:
summary: Unauthorized responce
value: |
{
"message" : "Unauthorized"
}
"405":
description: Restricted namespace
content:
application/json:
schema:
$ref: "#/components/schemas/error"
examples:
restricted:
summary: restricted namespace
value: |
{
"code": 405,
"message" : "key_name is not in a Read-Write namespace"
}
"500":
description: Internal Server Error
security:
- FeApiToken: []
- BasicAuth: []
tags:
- /config/tree
post:
summary: Create keys
operationId: bulk post
requestBody:
$ref: "#/components/requestBodies/ListOfNodesWithDefault"
responses:
"400":
description: Invalid
content:
application/json:
schema:
$ref: "#/components/schemas/error"
examples:
invalid-res:
summary: Invalid
value: |
{
"code": 400,
"message" : "Invalid request . . "
}
"401":
description: Unauthorized
content:
application/json:
schema:
$ref: "#/components/schemas/Message"
examples:
unauthorized-res:
summary: Unauthorized responce
value: |
{
"message" : "Unauthorized"
}
"405":
description: Restricted namespace
content:
application/json:
schema:
$ref: "#/components/schemas/error"
examples:
restricted:
summary: restricted namespace
value: |
{
"code": 405,
"message" : "key_name is not in a Read-Write namespace"
}
"500":
description: Internal Server Error
security:
- FeApiToken: []
- BasicAuth: []
tags:
- /config/tree
tags:
- name: /config
description: Single Key - Value API
- name: /config/tree
description: Bulk Key - Value API
servers:
- url: /hx/api/services/
components:
responses:
ParseError:
description: When a mask can't be parsed
MaskError:
description: When any error occurs on mask
MethodNotAllowed:
description: API level method not allowed error handler
Etcd3Exception:
description: Etcd Request exception
EtcdClientError:
description: etcd platform error handler
PlatformError:
description: mgmtd platform error handler
BadRequest:
description: Invalid Request
NotImplementedError:
description: Internal processing error
requestBodies:
ListOfNodesWithDefault:
content:
application/json:
schema:
$ref: "#/components/schemas/ListOfNodesWithDefault"
required: true
securitySchemes:
BasicAuth:
type: http
scheme: basic
FeApiToken:
type: apiKey
in: header
name: X-FEAPI-TOKEN
schemas:
Node:
required:
- name
- value
properties:
name:
type: string
description: The node name
example: /fireeye/hx/config/server/triage/task_limit
type:
type: string
description: Node type
default: string
example: uint16
value:
type: string
description: Node value
example: "200"
type: object
NodeWithDefault:
required:
- name
- type
- value
properties:
name:
type: string
description: The node name
example: /fireeye/hx/config/server/containment/timeout
type:
type: string
description: Node type
example: duration_sec
value:
type: string
description: Node value
example: "1209600"
default_value:
type: string
description: Node default value
example: "1209600"
type: object
Message:
required:
- message
properties:
message:
type: string
example: success
type: object
error:
required:
- error
properties:
error:
type: object
properties:
message:
type: string
code:
type: integer
example:
code: 404
message: "The following keys were not found /not_a_key_name"
type: object
ListOfNodesWithDefault:
required:
- data
properties:
data:
type: array
items:
$ref: "#/components/schemas/NodeWithDefault"
type: object
examples:
invalidRes:
summary: Invalid
value: |
{
"code": 400,
"message" : "Invalid request . . "
}