Fieldguide files API
Endpoints used to interact with Fieldguide Files
Endpoints used to interact with Fieldguide Files
openapi: 3.0.0
info:
title: Fieldguide api files 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: files
description: Endpoints used to interact with Fieldguide Files
paths:
/v1/files/{uuid}:
delete:
operationId: delete_file_v1
parameters:
- name: uuid
required: true
in: path
description: The UUID of the file to delete
schema:
format: uuid
type: string
responses:
'204':
description: No content. The file was deleted successfully.
'400':
description: Bad Request
'401':
description: Unauthorized
'403':
description: Forbidden (requires scopes `requests.files:write` for request files, `engagements.files:write` for engagement files)
'404':
description: Resource not found
'429':
description: Too many requests
summary: Delete the specified File
tags:
- files
get:
operationId: get_file_v1
parameters:
- name: uuid
required: true
in: path
description: The UUID of the File to get details for
schema:
format: uuid
type: string
responses:
'200':
description: The File details
content:
application/json:
schema:
properties:
data:
$ref: '#/components/schemas/FileRead'
'400':
description: Bad Request
'401':
description: Unauthorized
'403':
description: Forbidden (requires scopes `files:read`)
'404':
description: Resource not found
'429':
description: Too many requests
summary: Get details for a specific File
tags:
- files
x-required-scopes:
- files:read
/v1/files/{uuid}/context:
get:
operationId: get_file_context_v1
parameters:
- name: uuid
required: true
in: path
description: The UUID of the File
schema:
format: uuid
type: string
responses:
'200':
description: The File context
content:
application/json:
schema:
properties:
data:
$ref: '#/components/schemas/FileContextRead'
'400':
description: Bad Request
'401':
description: Unauthorized
'403':
description: Forbidden (requires scopes `files:read`)
'404':
description: Resource not found
'429':
description: Too many requests
summary: Get context for a specific File
tags:
- files
x-required-scopes:
- files:read
/v1/engagements/{uuid}/folders:
get:
operationId: list_engagement_folders_v1
parameters:
- name: uuid
required: true
in: path
description: The UUID of the Engagement for which to get Folders
schema:
format: uuid
type: string
- name: parent_folder_uuid
required: false
in: query
description: An optional UUID of the parent folder
schema:
format: uuid
type: string
- 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 list of Engagement Folders
content:
application/json:
schema:
properties:
data:
$ref: '#/components/schemas/EngagementFolderRead'
'400':
description: Bad Request
'401':
description: Unauthorized
'403':
description: Forbidden (requires scopes `engagements.files:read`)
'404':
description: Resource not found
'429':
description: Too many requests
summary: List Folders that belong to the specified Engagement
tags:
- files
x-required-scopes:
- engagements.files:read
/v1/engagements/{engagement_uuid}/folders/{folder_uuid}:
get:
operationId: get_engagement_folder_v1
parameters:
- name: engagement_uuid
required: true
in: path
description: The UUID of the Engagement from which to get a Folder
schema:
format: uuid
type: string
- name: folder_uuid
required: true
in: path
description: The UUID of the folder to fetch
schema:
format: uuid
type: string
responses:
'200':
description: The Engagement Folder with the specified UUID
content:
application/json:
schema:
properties:
data:
$ref: '#/components/schemas/EngagementFolderRead'
'400':
description: Bad Request
'401':
description: Unauthorized
'403':
description: Forbidden (requires scopes `engagements.files:read`)
'404':
description: Resource not found
'429':
description: Too many requests
summary: Fetch a Folder by Engagement and Folder UUIDs
tags:
- files
x-required-scopes:
- engagements.files:read
/v1/engagements/{engagement_uuid}/files/{file_uuid}:
get:
operationId: get_engagement_file_v1
parameters:
- name: engagement_uuid
required: true
in: path
description: The UUID of the Engagement from which to get a File
schema:
format: uuid
type: string
- name: file_uuid
required: true
in: path
description: The UUID of the File to fetch
schema:
format: uuid
type: string
responses:
'200':
description: The Engagement File with the specified UUID
content:
application/json:
schema:
properties:
data:
$ref: '#/components/schemas/EngagementFileRead'
'400':
description: Bad Request
'401':
description: Unauthorized
'403':
description: Forbidden (requires scopes `engagements.files:read`)
'404':
description: Resource not found
'429':
description: Too many requests
summary: Fetch a File by Engagement and File UUIDs
tags:
- files
x-required-scopes:
- engagements.files:read
/v1/engagements/{uuid}/files:
get:
operationId: list_engagement_files_v1
parameters:
- name: uuid
required: true
in: path
description: The UUID of the Engagement for which to get Files
schema:
format: uuid
type: string
- name: folder_uuid
required: false
in: query
description: An optional UUID of the Folder to filter Files by
schema:
format: uuid
type: string
- 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 list of Engagement Files
content:
application/json:
schema:
properties:
data:
$ref: '#/components/schemas/EngagementFileRead'
'400':
description: Bad Request
'401':
description: Unauthorized
'403':
description: Forbidden (requires scopes `engagements.files:read`)
'404':
description: Resource not found
'429':
description: Too many requests
summary: List Files that belong to the specified Engagement
tags:
- files
x-required-scopes:
- engagements.files:read
post:
operationId: upload_engagement_file_v1
parameters:
- name: uuid
required: true
in: path
description: The UUID of the Engagement to upload the File to
schema:
format: uuid
type: string
requestBody:
required: true
description: The File to upload
content:
multipart/form-data:
schema:
$ref: '#/components/schemas/EngagementFileCreate'
responses:
'200':
description: The UUID of the File that was attached to the Engagement
content:
application/json:
schema:
properties:
data:
$ref: '#/components/schemas/EngagementFileRead'
'400':
description: Bad Request
'401':
description: Unauthorized
'403':
description: Forbidden (requires scopes `engagements.files:write`)
'404':
description: Resource not found
'429':
description: Too many requests
summary: Upload a File to the specified Engagement
tags:
- files
x-required-scopes:
- engagements.files:write
/v1/requests/{uuid}/files:
get:
operationId: list_request_files_v1
parameters:
- name: uuid
required: true
in: path
description: The UUID of the Request to list Files for
schema:
format: uuid
type: string
- 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 Files for the specified Request
content:
application/json:
schema:
properties:
data:
$ref: '#/components/schemas/FileRead'
'401':
description: Unauthorized
'403':
description: 'Forbidden
Forbidden (requires scopes `requests.files:read`)'
'404':
description: Resource not found
summary: Fetch the Files for the specified Request
tags:
- files
x-required-scopes:
- requests.files:read
post:
operationId: upload_request_file_v1
parameters:
- name: uuid
required: true
in: path
description: The UUID of the request to upload the file to
schema:
format: uuid
type: string
requestBody:
required: true
description: File to upload to the Request
content:
multipart/form-data:
schema:
$ref: '#/components/schemas/FileCreate'
responses:
'200':
description: The UUID of the file that was attached to the Request
content:
application/json:
schema:
properties:
data:
$ref: '#/components/schemas/FileUploadRead'
'400':
description: Bad Request
'401':
description: Unauthorized
'403':
description: Forbidden (requires scopes `requests.files:write`)
'404':
description: Resource not found
'429':
description: Too many requests
summary: Upload a File to the specified Request
tags:
- files
x-required-scopes:
- requests.files:write
components:
schemas:
EngagementFileReadLinks:
type: object
properties:
fieldguide:
description: A URL the user can visit to view the Engagement File within the Fieldguide web application
example:
href: https://app.fieldguide.io/v1/engagements/2/documents?folder=0d7c72ee-28b3-4bc8-aea1-18bc7d9a8679&file=9b560ead-2b64-41f2-b9ae-826bdb866f1a
title: Get the result of this job
type: application/json
allOf:
- $ref: '#/components/schemas/HalLink'
required:
- fieldguide
EngagementFolderRead:
type: object
properties:
uuid:
type: string
format: uuid
example: 821e8d9e-d2a8-480f-9187-5a685d3d0d71
description: The unique identifier for the resource
parent_folder_uuid:
type: string
format: uuid
example: 721e8d9e-d2a8-480f-9187-5a685d3d0d71
description: The folder that contains this one
nullable: true
engagement_uuid:
type: string
format: uuid
example: 921e8d9e-d2a8-480f-9187-5a685d3d0d71
description: The Engagement this Folder belongs to
name:
type: string
example: Documents
description: The name of the Folder
path:
type: string
example: /grandparent/parent
description: The path to the Folder from the Engagement root
created_at:
format: date-time
type: string
example: '2024-03-19T12:00:00Z'
description: Timestamp of when the Folder was created
_links:
$ref: '#/components/schemas/EngagementFolderReadLinks'
required:
- uuid
- parent_folder_uuid
- engagement_uuid
- name
- path
- created_at
- _links
EngagementFileRead:
type: object
properties:
name:
type: string
example: Board of Directors.docx
size:
type: number
example: 137437
mime_type:
type: string
example: application/vnd.openxmlformats-officedocument.wordprocessingml.document
url:
type: string
format: uri
example: https://example.com/document.docx
nullable: true
url_expiration:
type: string
format: date-time
example: '2023-01-01T12:30:00.000Z'
nullable: true
uuid:
type: string
format: uuid
example: 91aeda5e-4a3c-4090-90b1-cbf09d4c1ba1
created_at:
type: string
format: date-time
example: '2023-01-01T12:30:00.000Z'
updated_at:
type: string
format: date-time
example: '2023-01-01T12:30:00.000Z'
nullable: true
engagement_uuid:
type: string
description: The UUID of the Engagement this File is associated with
format: uuid
folder_uuid:
type: string
description: The UUID of the Folder this File is associated with, or null if it sits at the Engagement root.
format: uuid
nullable: true
_links:
$ref: '#/components/schemas/EngagementFileReadLinks'
required:
- name
- size
- mime_type
- url
- url_expiration
- uuid
- created_at
- updated_at
- engagement_uuid
- folder_uuid
- _links
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
FileRead:
type: object
properties:
name:
type: string
example: Board of Directors.docx
size:
type: number
example: 137437
mime_type:
type: string
example: application/vnd.openxmlformats-officedocument.wordprocessingml.document
url:
type: string
format: uri
example: https://example.com/document.docx
nullable: true
url_expiration:
type: string
format: date-time
example: '2023-01-01T12:30:00.000Z'
nullable: true
uuid:
type: string
format: uuid
example: 91aeda5e-4a3c-4090-90b1-cbf09d4c1ba1
created_at:
type: string
format: date-time
example: '2023-01-01T12:30:00.000Z'
updated_at:
type: string
format: date-time
example: '2023-01-01T12:30:00.000Z'
nullable: true
required:
- name
- size
- mime_type
- url
- url_expiration
- uuid
- created_at
- updated_at
FileCreate:
type: object
properties:
file:
type: string
format: binary
required:
- file
FileContextRead:
type: object
properties:
uuid:
type: string
format: uuid
example: 4d50d252-be0c-4d69-b77a-5bbdfef83f54
type:
type: string
enum:
- engagement
- request
example: engagement
description: The kind of object this file is attached to.
required:
- uuid
- type
EngagementFileCreate:
type: object
properties:
file:
type: string
format: binary
folder_uuid:
type: string
description: The Folder UUID of the Engagement this File is associated with
format: uuid
required:
- file
EngagementFolderReadLinks:
type: object
properties:
fieldguide:
description: A URL the user can visit to view the Engagement Folder within the Fieldguide web application
example:
href: https://app.fieldguide.io/engagements/123/documents?folder=abc-123
title: View this Engagement Folder in Fieldguide
type: text/html
allOf:
- $ref: '#/components/schemas/HalLink'
required:
- fieldguide
FileUploadRead:
type: object
properties:
uuid:
type: string
format: uuid
example: 3e11fc6d-ecd0-4673-8a90-aa787ed391ec
required:
- uuid
securitySchemes:
bearer:
scheme: bearer
bearerFormat: JWT
type: http
externalDocs:
description: Fieldguide API Documentation
url: https://fieldguide.io/developers