Govly Follows API
Follow opportunities and related workspace activity.
Follow opportunities and related workspace activity.
openapi: 3.1.0
info:
title: Govly Tools API (Alpha) Awards Follows API
version: 1.0.0-alpha
description: 'ALPHA / UNSTABLE: This API is still in active development. Endpoint behavior, request fields, response fields, error codes, and operation names may change before the Tools API is declared stable.
REST-callable tool surface for agent and automation workflows. Agents are the primary consumer, but integrations can be built on this API. Responses are JSON for typed clients; MCP tools may render action results into text-oriented formats separately.
'
servers:
- url: https://app.govly.com
security:
- bearerApiKey: []
- headerApiKey: []
tags:
- name: Follows
description: Follow opportunities and related workspace activity.
paths:
/api/tools/v1/follows:
post:
tags:
- Follows
operationId: follow_entity
summary: Follow a Govly entity
description: 'Follow, track, or subscribe to changes for a Govly entity. For opportunities, this creates or reuses the default opportunity workspace and follows that workspace for the authenticated user.
'
requestBody:
required: true
content:
application/json:
schema:
type: object
required:
- type
- id
properties:
type:
type: string
enum:
- opportunity
- opp
description: Entity type to follow. opp is accepted as an alias for opportunity.
id:
type: string
description: Govly entity ID.
notifications:
type: string
description: Notification preference for this follow. Omit to use the user's default setting.
responses:
'201':
description: Active follow on the entity's default workspace
content:
application/json:
schema:
type: object
required:
- data
properties:
data:
type: object
required:
- workspace
- membership
properties:
workspace:
$ref: '#/components/schemas/Workspace'
membership:
$ref: '#/components/schemas/WorkspaceMember'
meta:
type: object
properties:
entityType:
type: string
entityId:
type: string
'401':
$ref: '#/components/responses/Error'
'403':
$ref: '#/components/responses/Error'
'404':
$ref: '#/components/responses/Error'
'422':
$ref: '#/components/responses/Error'
components:
schemas:
WorkspaceMember:
type: object
required:
- id
- member
properties:
id:
type: string
state:
type: string
notifications:
type: string
createdAt:
type: string
format: date-time
updatedAt:
type: string
format: date-time
member:
type: object
required:
- type
- id
properties:
type:
type: string
enum:
- user
- team
id:
type: string
name:
type: string
email:
type: string
format: email
organization:
type: object
properties:
id:
type: string
name:
type: string
AssociatedEntity:
type: object
required:
- type
- id
properties:
type:
type: string
enum:
- opportunity
id:
type: string
WorkspaceAttachment:
type: object
required:
- id
- workspaceId
- filename
properties:
id:
type: string
workspaceId:
type: string
commentId:
type: string
nullable: true
filename:
type: string
contentType:
type: string
byteSize:
type: integer
createdAt:
type: string
format: date-time
file:
description: Present only on the workspace attachments endpoint. Workspace show responses surface attachments without download metadata.
$ref: '#/components/schemas/AttachmentFile'
Workspace:
type: object
required:
- id
- name
- status
properties:
id:
type: string
name:
type: string
description:
type: string
createdAt:
type: string
format: date-time
updatedAt:
type: string
format: date-time
commentsCount:
type: integer
status:
type: object
required:
- category
- label
properties:
category:
type: string
description: Coarse status bucket. Triage is the default for newly created workspaces.
label:
type: string
description: Human-readable status name. Falls back to the category label when no custom status is set.
primaryFocus:
$ref: '#/components/schemas/AssociatedEntity'
comments:
type: array
description: Recent comments. Only present on show/create/update responses, capped at the most recent 20.
items:
$ref: '#/components/schemas/Comment'
attachments:
type: array
description: Workspace attachments. Only present on show/create/update responses.
items:
$ref: '#/components/schemas/WorkspaceAttachment'
ErrorEnvelope:
type: object
required:
- errors
properties:
errors:
type: array
items:
type: object
required:
- status
- code
- title
- detail
properties:
status:
type: string
code:
type: string
title:
type: string
detail:
type: string
source:
type: object
properties:
pointer:
type: string
Comment:
type: object
required:
- id
- body
- createdAt
- attachments
properties:
id:
type: string
body:
type: string
description: Markdown body for the comment.
attachments:
type: array
description: Workspace attachments tied to this comment.
items:
$ref: '#/components/schemas/WorkspaceAttachment'
createdAt:
type: string
format: date-time
updatedAt:
type: string
format: date-time
AttachmentFile:
type: object
description: Presigned download metadata. Omitted when the attachment is redacted or URLs are excluded.
required:
- url
- expiresAt
properties:
url:
type: string
format: uri
expiresAt:
type: string
format: date-time
responses:
Error:
description: Error response
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorEnvelope'
securitySchemes:
bearerApiKey:
type: http
scheme: bearer
bearerFormat: API key
headerApiKey:
type: apiKey
in: header
name: X-API-KEY