Fieldguide milestones API
Endpoints used to interact with Fieldguide Milestones
Endpoints used to interact with Fieldguide Milestones
openapi: 3.0.0
info:
title: Fieldguide api milestones API
description: An API for interacting with the [Fieldguide](https://fieldguide.io) platform
version: v1
contact: {}
servers:
- url: https://api.fieldguide.io
description: Fieldguide API
security:
- bearer: []
tags:
- name: milestones
description: Endpoints used to interact with Fieldguide Milestones
paths:
/v1/milestones/{uuid}:
get:
operationId: get_milestone_v1
parameters:
- name: uuid
required: true
in: path
description: The UUID of the Milestone to retrieve
schema:
format: uuid
type: string
responses:
'200':
description: The visible Milestone
content:
application/json:
schema:
properties:
data:
$ref: '#/components/schemas/MilestoneRead'
'400':
description: Bad Request
'401':
description: Unauthorized
'403':
description: 'Forbidden
Forbidden (requires scopes `milestones:read`)'
'404':
description: Resource not found
'429':
description: Too many requests
summary: Fetch the specified Milestone
tags:
- milestones
x-required-scopes:
- milestones:read
/v1/engagements/{engagement_uuid}/milestones:
get:
operationId: list_milestones_by_engagement_v1
parameters:
- name: engagement_uuid
required: true
in: path
description: The UUID of the Engagement to retrieve Milestones for
schema:
format: uuid
type: string
- name: associated_engagement_status
required: false
in: query
description: Filter by the optional Engagement lifecycle phase associated with each Milestone. This is not the Engagement's current status and does not determine Milestone completion.
schema:
$ref: '#/components/schemas/MilestoneAssociatedEngagementStatus'
- name: client_can_view
required: false
in: query
description: Filter Milestones by client visibility.
schema:
type: boolean
- name: is_completed
required: false
in: query
description: Filter by completion state. A completed Milestone has a non-null `completed_at` value.
schema:
type: boolean
- name: sort_by
required: false
in: query
description: Field used to sort Milestones. Results are sorted by creation time unless `sequence` is requested.
schema:
$ref: '#/components/schemas/MilestoneSortBy'
- name: page
required: false
in: query
schema:
type: number
default: 1
nullable: true
- name: per_page
required: false
in: query
schema:
type: number
default: 50
nullable: true
minimum: 1
maximum: 200
- name: sort_order
required: false
in: query
description: Sort order for paginated results. Use `desc` to reverse the default ascending order.
schema:
type: string
default: asc
enum:
- asc
- desc
responses:
'200':
description: The visible Milestones for the Engagement
content:
application/json:
schema:
allOf:
- properties:
data:
type: array
items:
$ref: '#/components/schemas/MilestoneRead'
- properties:
_links:
type: object
required:
- self
- first
- last
properties:
self:
type: object
description: The URL for the current page being fetched
properties:
href:
type: string
example: https://api.fieldguide.io/v1/example?page=2&per_page=50
first:
type: object
description: The URL for the first page of the set
properties:
href:
type: string
example: https://api.fieldguide.io/v1/example?page=1&per_page=50
last:
type: object
description: The URL for the last page of the set
properties:
href:
type: string
example: https://api.fieldguide.io/v1/example?page=10&per_page=50
previous:
type: object
description: The URL for the previous page in the set, if there is one
properties:
href:
type: string
example: https://api.fieldguide.io/v1/example?page=1&per_page=50
next:
type: object
description: The URL for the next page in the set, if there is one
properties:
href:
type: string
example: https://api.fieldguide.io/v1/example?page=3&per_page=50
'400':
description: Bad Request
'401':
description: Unauthorized
'403':
description: 'Forbidden
Forbidden (requires scopes `milestones:read`)'
'404':
description: Resource not found
'429':
description: Too many requests
summary: List Milestones that belong to the specified Engagement
tags:
- milestones
x-required-scopes:
- milestones:read
components:
schemas:
MilestoneReadLinks:
type: object
properties:
self:
description: The canonical API URL for this Milestone
example:
href: https://api.fieldguide.io/v1/milestones/4d50d252-be0c-4d69-b77a-5bbdfef83f54
title: Fetch this Milestone
type: application/json
allOf:
- $ref: '#/components/schemas/HalLink'
collection:
description: The visible Milestones collection for the parent Engagement
example:
href: https://api.fieldguide.io/v1/engagements/821e8d9e-d2a8-480f-9187-5a685d3d0d71/milestones
title: List Milestones for this Engagement
type: application/json
allOf:
- $ref: '#/components/schemas/HalLink'
engagement:
description: The canonical API URL for the parent Engagement
example:
href: https://api.fieldguide.io/v1/engagements/821e8d9e-d2a8-480f-9187-5a685d3d0d71
title: Fetch the parent Engagement
type: application/json
allOf:
- $ref: '#/components/schemas/HalLink'
fieldguide:
description: A Fieldguide Engagement dashboard link containing this Milestone's UUID
example:
href: https://app.fieldguide.io/engagements/82027/dashboard?milestone=4d50d252-be0c-4d69-b77a-5bbdfef83f54
title: Open the parent Engagement in Fieldguide
type: text/html
allOf:
- $ref: '#/components/schemas/HalLink'
required:
- self
- collection
- engagement
- fieldguide
HalLink:
type: object
properties:
href:
type: string
example: https://example.com/resource/or/path
format: uri
title:
type: string
description: A human-readable title for the link
example: A description for the link
type:
type: string
description: The content-type
example: text/html
required:
- href
- type
MilestoneSortBy:
type: string
enum:
- created_at
- sequence
MilestoneAssociatedEngagementStatus:
type: string
enum:
- Pending
- In Progress
- Complete
- Archived
description: An optional association to an Engagement lifecycle phase. It does not represent the Engagement's current status or determine Milestone completion.
MilestoneRead:
type: object
properties:
uuid:
type: string
format: uuid
example: 4d50d252-be0c-4d69-b77a-5bbdfef83f54
engagement_uuid:
type: string
format: uuid
example: 821e8d9e-d2a8-480f-9187-5a685d3d0d71
description: UUID of the Engagement that owns this Milestone.
name:
type: string
example: Planning complete
sequence:
type: integer
example: 2
description: The Milestone's display order within its Engagement.
associated_engagement_status:
nullable: true
description: An optional association to an Engagement lifecycle phase. It does not represent the Engagement's current status or determine Milestone completion.
allOf:
- $ref: '#/components/schemas/MilestoneAssociatedEngagementStatus'
due_date:
type: string
format: date
example: '2026-03-15'
nullable: true
completed_at:
type: string
format: date-time
example: '2026-03-10T12:30:00.000Z'
nullable: true
description: The authoritative completion indicator. Null means the Milestone is incomplete.
completed_by_user_uuid:
type: string
format: uuid
example: 6b242248-e2b9-4d41-8986-11b710860048
nullable: true
description: UUID of the user who completed the Milestone.
owner_user_uuid:
type: string
format: uuid
example: ee196968-2a7a-48e9-97f9-d12f26a8ff94
nullable: true
description: UUID of the user assigned to own the Milestone.
client_can_view:
type: boolean
example: true
description: Whether client users can view the Milestone.
created_at:
type: string
format: date-time
example: '2026-02-01T12:30:00.000Z'
updated_at:
type: string
format: date-time
example: '2026-03-10T12:30:00.000Z'
_links:
$ref: '#/components/schemas/MilestoneReadLinks'
required:
- uuid
- engagement_uuid
- name
- sequence
- associated_engagement_status
- due_date
- completed_at
- completed_by_user_uuid
- owner_user_uuid
- client_can_view
- created_at
- updated_at
- _links
securitySchemes:
bearer:
scheme: bearer
bearerFormat: JWT
type: http
externalDocs:
description: Fieldguide API Documentation
url: https://fieldguide.io/developers