Chick-fil-A Accounts API
AWS account inventory and metadata operations.
AWS account inventory and metadata operations.
openapi: 3.0.3
info:
title: Chick-fil-A BOVINE Accounts API
description: BOVI(n)E — Building Operational Visibility Into (n) Environments — is a serverless, single-page application open-sourced by Chick-fil-A (github.com/chick-fil-a/bovine) that provides a "10,000 foot view" across all of an enterprise's AWS accounts in a multi-account strategy. The backend runs on AWS Lambda behind AWS API Gateway, with data stored in DynamoDB and audit reports in S3. The API surfaces account inventory, IAM users and roles, EC2 instances, public IPs, security groups, load balancers, RDS/DynamoDB/ Redshift databases, S3 buckets, and compliance audit reports for security and governance teams. This specification was generated from the project's serverless.yml route definitions and Python Lambda handlers.
version: '1.0'
x-generated-from: documentation
x-source-url: https://github.com/chick-fil-a/bovine
x-last-validated: '2026-06-02'
contact:
name: Kin Lane
email: kin@apievangelist.com
license:
name: See repository
url: https://github.com/chick-fil-a/bovine
servers:
- url: https://api.example.com
description: Deployment-specific AWS API Gateway endpoint. BOVINE is self-hosted; the host is configured per-deployment via the serverless domainName setting.
tags:
- name: Accounts
description: AWS account inventory and metadata operations.
paths:
/api/accounts:
get:
operationId: getAccounts
summary: Chick-fil-A List Accounts
description: Lists all AWS accounts tracked in the BOVINE DynamoDB accounts table.
tags:
- Accounts
responses:
'200':
description: Accounts returned.
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/AccountListItem'
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/api/account:
get:
operationId: getAccount
summary: Chick-fil-A Get Account
description: Returns detailed metadata and risk posture for a single AWS account, looked up by account number or alias.
tags:
- Accounts
parameters:
- $ref: '#/components/parameters/AccountParam'
responses:
'200':
description: Account detail returned.
content:
application/json:
schema:
$ref: '#/components/schemas/AccountDetail'
'404':
description: Account not found.
content:
application/json:
schema:
$ref: '#/components/schemas/MessageResponse'
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
/api/addAccount:
post:
operationId: addAccount
summary: Chick-fil-A Add Account
description: Adds an AWS account to the BOVINE accounts table. The account number must be a 12-digit numeric string.
tags:
- Accounts
requestBody:
required: true
description: AWS account metadata to add.
content:
application/json:
schema:
$ref: '#/components/schemas/AddAccountRequest'
responses:
'200':
description: Account added.
content:
application/json:
schema:
$ref: '#/components/schemas/AddAccountResponse'
'500':
description: Incorrect account number or account not added.
content:
application/json:
schema:
$ref: '#/components/schemas/AddAccountResponse'
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
components:
parameters:
AccountParam:
name: account
in: query
required: true
description: The AWS account number (12-digit) or account alias to scope the request to.
schema:
type: string
example: '123456789012'
schemas:
AddAccountResponse:
type: object
description: Response from adding an account.
properties:
response:
type: string
description: The result of the add operation, or an error message.
example: added
MessageResponse:
type: object
description: Generic message wrapper used for not-found and informational responses.
properties:
Message:
type: string
description: A human-readable message.
example: Account not found.
AccountDetail:
type: object
description: Detailed AWS account metadata and risk posture.
properties:
Account:
type: object
description: The account detail payload.
properties:
accountNum:
type: string
description: The 12-digit AWS account number.
example: '123456789012'
owner:
type: string
description: The account owner.
example: Platform Team
alias:
type: string
description: The account alias.
example: prod-platform
email:
type: string
format: email
description: The account root contact email.
example: aws-prod@example.com
iam:
type: integer
description: Number of IAM users in the account.
example: 18
publicIP:
type: integer
description: Number of public IP addresses in the account.
example: 6
riskysg:
type: integer
description: Number of risky security groups detected.
example: 2
unusedsg:
type: integer
description: Number of unused security groups detected.
example: 5
bastion:
type: string
description: The bastion host identifier, if present.
example: bastion-prod-1
risk_score:
type: integer
description: The computed risk score for the account.
example: -1
admins:
type: integer
description: Number of admin group members.
example: 3
AddAccountRequest:
type: object
description: Request body to add an AWS account to BOVINE.
required:
- accountNum
properties:
accountNum:
type: string
description: The 12-digit AWS account number.
example: '123456789012'
alias:
type: string
description: The account alias.
example: prod-platform
email:
type: string
format: email
description: The account root contact email.
example: aws-prod@example.com
AccountOwner:
type: string
description: The account owner.
example: Platform Team
remediate:
type: boolean
description: Whether automated remediation is enabled.
example: false
AccountListItem:
type: object
description: A summary AWS account record from the accounts table.
properties:
accountNum:
type: string
description: The 12-digit AWS account number.
example: '123456789012'
alias:
type: string
description: The account alias.
example: prod-platform
email:
type: string
format: email
description: The account root contact email.
example: aws-prod@example.com
AccountOwner:
type: string
description: The account owner.
example: Platform Team
remediate:
type: boolean
description: Whether automated remediation is enabled for the account.
example: false