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 . . " }