Chick-fil-A Accounts API

AWS account inventory and metadata operations.

OpenAPI Specification

chickfila-accounts-api-openapi.yml Raw ↑
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