fleet/tools/terraform/openapi.json
Mike Yoder c7ea0125d6
Support for Terraforming Fleet Teams (#18750)
This project adds support for terraforming teams in Fleet. If you have
100+ teams, managing them is is prone to error, mistakes, lost
configuration, and general pain. An industry standard tool like
terraform can unify this configuration as code.

In order to do this, I wrote a terraform provider that on one end talks
to the Fleet api, and on the other end implements an interface for
terraform. More information is in the README.

A small sample `main.tf` file is supplied.

---------

Co-authored-by: Brock Walters <153771548+nonpunctual@users.noreply.github.com>
2024-06-20 12:47:35 -07:00

210 lines
5 KiB
JSON

{
"openapi": "3.0.0",
"info": {
"title": "Fleet Premium API",
"description": "API for managing teams and related functionalities in Fleet Premium",
"version": "1.0.0"
},
"servers": [
{
"url": "https://rbx.cloud.fleetdm.com/"
}
],
"paths": {
"/api/v1/fleet/teams": {
"get": {
"summary": "List teams",
"parameters": [
{
"name": "page",
"in": "query",
"description": "Page number of the results to fetch.",
"schema": {
"type": "integer"
}
},
{
"name": "per_page",
"in": "query",
"description": "Results per page.",
"schema": {
"type": "integer"
}
},
{
"name": "order_key",
"in": "query",
"description": "What to order results by. Can be any column in the teams table.",
"schema": {
"type": "string"
}
},
{
"name": "order_direction",
"in": "query",
"description": "The direction of the order given the order key. Options include asc and desc. Default is asc.",
"schema": {
"type": "string",
"enum": ["asc", "desc"]
}
},
{
"name": "query",
"in": "query",
"description": "Search query keywords. Searchable fields include name.",
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "List of teams",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"teams": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Team"
}
}
}
}
}
}
}
}
},
"post": {
"summary": "Create team",
"requestBody": {
"description": "Team details",
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/TeamCreateRequest"
}
}
}
},
"responses": {
"200": {
"description": "Team created successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Team"
}
}
}
}
}
}
},
"/api/v1/fleet/teams/{id}": {
"get": {
"summary": "Get team",
"parameters": [
{
"name": "id",
"in": "path",
"required": true,
"description": "The desired team's ID.",
"schema": {
"type": "integer"
}
}
],
"responses": {
"200": {
"description": "Team details",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Team"
}
}
}
}
}
},
"delete": {
"summary": "Delete team",
"parameters": [
{
"name": "id",
"in": "path",
"required": true,
"description": "The desired team's ID.",
"schema": {
"type": "integer"
}
}
],
"responses": {
"200": {
"description": "Team deleted successfully"
}
}
}
}
},
"components": {
"schemas": {
"Team": {
"type": "object",
"properties": {
"id": {
"type": "integer"
},
"name": {
"type": "string"
},
"description": {
"type": "string"
},
"agent_options": {
"type": "string"
},
"secrets": {
"type": "array",
"items": {
"type": "object",
"properties": {
"secret": {
"type": "string"
},
"created_at": {
"type": "string",
"format": "date-time"
},
"team_id": {
"type": "integer"
}
}
}
}
}
},
"TeamCreateRequest": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"description": {
"type": "string"
},
"agent_options": {
"type": "string"
}
},
"required": ["name"]
}
}
}
}