OpenGov Attachments API

The Attachments API from OpenGov — 5 operation(s) for attachments.

Operations 6

GET /api/v1/attachments/{className}/{oid}
DELETE /api/v1/attachments/{className}/{oid}
GET /api/v1/entities/{entityId}/vendors/{vendorKey}/attachments/{attachmentId} #
GET /api/v1/entities/{entityId}/vendors/{vendorKey}/attachments/{attachmentId}/content #
POST /api/v1/entities/{entityId}/vendors/{vendorKey}/attachments #
POST /api/v1/entities/{entityId}/vendors/{vendorKey}/attachments/bulk-delete #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/opengov-attachments-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

opengov-attachments-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Opengov Attachments API
  version: 1.0.0
  description: 'Operations tagged Attachments across 2 of this provider''s published API definitions: opengov-enterprise-asset-management-openapi.yml, opengov-vendor-management-openapi.yml. Each path carries the servers of the definition it was published in.'
servers:
- url: '{serverURL}'
  description: Your EAM Server Instance
- url: https://api.vendor.opengov.com
  description: Production Server
- url: https://api.vendor.ogstaging.us
  description: Staging Server
- url: https://api-vendor.procurement.ogintegration.us
  description: Integration Server
tags:
- name: Attachments
paths:
  /api/v1/attachments/{className}/{oid}:
    get:
      $ref: components/Attachments/getAttachment.yaml#/get
      tags:
      - Attachments
    delete:
      $ref: components/Attachments/deleteAttachment.yaml#/delete
      tags:
      - Attachments
    servers:
    - url: '{serverURL}'
      description: Your EAM Server Instance
  /api/v1/entities/{entityId}/vendors/{vendorKey}/attachments/{attachmentId}:
    get:
      tags:
      - Attachments
      operationId: attachments.getAttachment
      parameters:
      - name: Authorization
        in: header
        description: JWT Bearer token for authentication
        required: true
        schema:
          type: string
          default: Bearer <your-jwt-token>
        example: Bearer <your-jwt-token>
      - name: entityId
        in: path
        schema:
          type: string
        required: true
      - name: vendorKey
        in: path
        schema:
          type: string
        required: true
      - name: attachmentId
        in: path
        schema:
          type: string
        required: true
      security:
      - bearerAuth: []
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: object
                required:
                - attachmentId
                - path
                - bucket
                - filename
                - attachmentType
                - size
                - preSignedUrl
                properties:
                  attachmentId:
                    $ref: '#/components/schemas/AttachmentId'
                  path:
                    type: string
                  bucket:
                    type: string
                  filename:
                    type: string
                  attachmentType:
                    type: string
                  size:
                    type: number
                  isDeleted:
                    anyOf:
                    - type: boolean
                    - type: 'null'
                  deletedAt:
                    anyOf:
                    - type: string
                      format: date-time
                    - type: 'null'
                  createdAt:
                    anyOf:
                    - type: string
                      format: date-time
                    - type: 'null'
                  updatedAt:
                    anyOf:
                    - type: string
                      format: date-time
                    - type: 'null'
                  preSignedUrl:
                    type: string
                additionalProperties: false
        '400':
          description: The request did not match the expected schema
          content:
            application/json:
              schema:
                anyOf:
                - $ref: '#/components/schemas/HttpApiDecodeError'
                - $ref: '#/components/schemas/BadRequestHttpError'
        '401':
          description: AuthError
          content:
            application/json:
              schema:
                anyOf:
                - $ref: '#/components/schemas/AuthError'
                - $ref: '#/components/schemas/UnauthenticatedHttpError'
        '403':
          description: UnauthorizedHttpError
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedHttpError'
        '404':
          description: EntityNotFoundError
          content:
            application/json:
              schema:
                anyOf:
                - $ref: '#/components/schemas/EntityNotFoundError'
                - $ref: '#/components/schemas/NotFoundHttpError'
        '500':
          description: InfrastructureError
          content:
            application/json:
              schema:
                anyOf:
                - type: object
                  required:
                  - message
                  - _tag
                  properties:
                    message:
                      type: string
                    cause:
                      not: {}
                      title: never
                    _tag:
                      type: string
                      enum:
                      - InfrastructureError
                  additionalProperties: false
                - $ref: '#/components/schemas/InternalServerHttpError'
    servers:
    - url: https://api.vendor.opengov.com
      description: Production Server
    - url: https://api.vendor.ogstaging.us
      description: Staging Server
    - url: https://api-vendor.procurement.ogintegration.us
      description: Integration Server
  /api/v1/entities/{entityId}/vendors/{vendorKey}/attachments/{attachmentId}/content:
    get:
      tags:
      - Attachments
      operationId: attachments.getAttachmentContent
      parameters:
      - name: Authorization
        in: header
        description: JWT Bearer token for authentication
        required: true
        schema:
          type: string
          default: Bearer <your-jwt-token>
        example: Bearer <your-jwt-token>
      - name: entityId
        in: path
        schema:
          type: string
        required: true
      - name: vendorKey
        in: path
        schema:
          type: string
        required: true
      - name: attachmentId
        in: path
        schema:
          type: string
        required: true
      security:
      - bearerAuth: []
      responses:
        '200':
          description: Success
          content:
            application/octet-stream:
              schema:
                type: string
                format: binary
        '400':
          description: The request did not match the expected schema
          content:
            application/json:
              schema:
                anyOf:
                - $ref: '#/components/schemas/HttpApiDecodeError'
                - $ref: '#/components/schemas/BadRequestHttpError'
        '401':
          description: AuthError
          content:
            application/json:
              schema:
                anyOf:
                - $ref: '#/components/schemas/AuthError'
                - $ref: '#/components/schemas/UnauthenticatedHttpError'
        '403':
          description: UnauthorizedHttpError
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedHttpError'
        '404':
          description: EntityNotFoundError
          content:
            application/json:
              schema:
                anyOf:
                - $ref: '#/components/schemas/EntityNotFoundError'
                - $ref: '#/components/schemas/NotFoundHttpError'
        '500':
          description: InfrastructureError
          content:
            application/json:
              schema:
                anyOf:
                - type: object
                  required:
                  - message
                  - _tag
                  properties:
                    message:
                      type: string
                    cause:
                      not: {}
                      title: never
                    _tag:
                      type: string
                      enum:
                      - InfrastructureError
                  additionalProperties: false
                - $ref: '#/components/schemas/InternalServerHttpError'
    servers:
    - url: https://api.vendor.opengov.com
      description: Production Server
    - url: https://api.vendor.ogstaging.us
      description: Staging Server
    - url: https://api-vendor.procurement.ogintegration.us
      description: Integration Server
  /api/v1/entities/{entityId}/vendors/{vendorKey}/attachments:
    post:
      tags:
      - Attachments
      operationId: attachments.createAttachment
      parameters:
      - name: Authorization
        in: header
        description: JWT Bearer token for authentication
        required: true
        schema:
          type: string
          default: Bearer <your-jwt-token>
        example: Bearer <your-jwt-token>
      - name: entityId
        in: path
        schema:
          type: string
        required: true
      - name: vendorKey
        in: path
        schema:
          type: string
        required: true
      security:
      - bearerAuth: []
      responses:
        '201':
          description: Success
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  required:
                  - attachmentId
                  - vendorKey
                  - filename
                  - attachmentType
                  - size
                  - preSignedUrl
                  properties:
                    attachmentId:
                      type: number
                    vendorKey:
                      type: number
                    filename:
                      type: string
                    attachmentType:
                      type: string
                    size:
                      type: number
                    preSignedUrl:
                      type: string
                  additionalProperties: false
        '400':
          description: The request did not match the expected schema
          content:
            application/json:
              schema:
                anyOf:
                - $ref: '#/components/schemas/HttpApiDecodeError'
                - $ref: '#/components/schemas/BadRequestHttpError'
        '401':
          description: AuthError
          content:
            application/json:
              schema:
                anyOf:
                - $ref: '#/components/schemas/AuthError'
                - $ref: '#/components/schemas/UnauthenticatedHttpError'
        '403':
          description: UnauthorizedHttpError
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedHttpError'
        '404':
          description: EntityNotFoundError
          content:
            application/json:
              schema:
                anyOf:
                - $ref: '#/components/schemas/EntityNotFoundError'
                - $ref: '#/components/schemas/NotFoundHttpError'
        '500':
          description: InfrastructureError
          content:
            application/json:
              schema:
                anyOf:
                - type: object
                  required:
                  - message
                  - _tag
                  properties:
                    message:
                      type: string
                    cause:
                      not: {}
                      title: never
                    _tag:
                      type: string
                      enum:
                      - InfrastructureError
                  additionalProperties: false
                - $ref: '#/components/schemas/InternalServerHttpError'
      requestBody:
        content:
          multipart/form-data:
            schema:
              type: object
              required:
              - files
              properties:
                files:
                  type: array
                  items:
                    $ref: '#/components/schemas/PersistedFile'
              additionalProperties: false
        required: true
    servers:
    - url: https://api.vendor.opengov.com
      description: Production Server
    - url: https://api.vendor.ogstaging.us
      description: Staging Server
    - url: https://api-vendor.procurement.ogintegration.us
      description: Integration Server
  /api/v1/entities/{entityId}/vendors/{vendorKey}/attachments/bulk-delete:
    post:
      tags:
      - Attachments
      operationId: attachments.deleteAttachments
      parameters:
      - name: Authorization
        in: header
        description: JWT Bearer token for authentication
        required: true
        schema:
          type: string
          default: Bearer <your-jwt-token>
        example: Bearer <your-jwt-token>
      - name: entityId
        in: path
        schema:
          type: string
        required: true
      - name: vendorKey
        in: path
        schema:
          type: string
        required: true
      security:
      - bearerAuth: []
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: object
                required:
                - deletedAttachmentIds
                properties:
                  deletedAttachmentIds:
                    type: array
                    items:
                      type: number
                additionalProperties: false
        '400':
          description: The request did not match the expected schema
          content:
            application/json:
              schema:
                anyOf:
                - $ref: '#/components/schemas/HttpApiDecodeError'
                - $ref: '#/components/schemas/BadRequestHttpError'
        '401':
          description: AuthError
          content:
            application/json:
              schema:
                anyOf:
                - $ref: '#/components/schemas/AuthError'
                - $ref: '#/components/schemas/UnauthenticatedHttpError'
        '403':
          description: UnauthorizedHttpError
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedHttpError'
        '404':
          description: EntityNotFoundError
          content:
            application/json:
              schema:
                anyOf:
                - $ref: '#/components/schemas/EntityNotFoundError'
                - $ref: '#/components/schemas/NotFoundHttpError'
        '500':
          description: InfrastructureError
          content:
            application/json:
              schema:
                anyOf:
                - type: object
                  required:
                  - message
                  - _tag
                  properties:
                    message:
                      type: string
                    cause:
                      not: {}
                      title: never
                    _tag:
                      type: string
                      enum:
                      - InfrastructureError
                  additionalProperties: false
                - $ref: '#/components/schemas/InternalServerHttpError'
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
              - attachmentIds
              properties:
                attachmentIds:
                  type: array
                  items:
                    type: number
              additionalProperties: false
        required: true
    servers:
    - url: https://api.vendor.opengov.com
      description: Production Server
    - url: https://api.vendor.ogstaging.us
      description: Staging Server
    - url: https://api-vendor.procurement.ogintegration.us
      description: Integration Server
components:
  schemas:
    PropertyKey:
      anyOf:
      - type: string
      - type: number
      - type: object
        required:
        - _tag
        - key
        properties:
          _tag:
            type: string
            enum:
            - symbol
          key:
            type: string
        additionalProperties: false
        description: an object to be decoded into a globally shared symbol
    Issue:
      type: object
      required:
      - _tag
      - path
      - message
      properties:
        _tag:
          type: string
          enum:
          - Pointer
          - Unexpected
          - Missing
          - Composite
          - Refinement
          - Transformation
          - Type
          - Forbidden
          description: The tag identifying the type of parse issue
        path:
          type: array
          items:
            $ref: '#/components/schemas/PropertyKey'
          description: The path to the property where the issue occurred
        message:
          type: string
          description: A descriptive message explaining the issue
      additionalProperties: false
      description: Represents an error encountered while parsing a value to match the schema
    EntityNotFoundError:
      type: object
      required:
      - entityId
      - _tag
      properties:
        entityId:
          type: string
        _tag:
          type: string
          enum:
          - EntityNotFoundError
      additionalProperties: false
    HttpApiDecodeError:
      type: object
      required:
      - issues
      - message
      - _tag
      properties:
        issues:
          type: array
          items:
            $ref: '#/components/schemas/Issue'
        message:
          type: string
        _tag:
          type: string
          enum:
          - HttpApiDecodeError
      additionalProperties: false
      description: The request did not match the expected schema
    AuthError:
      type: object
      required:
      - _tag
      properties:
        cause:
          title: unknown
        _tag:
          type: string
          enum:
          - AuthError
      additionalProperties: false
    BadRequestHttpError:
      type: object
      required:
      - message
      - _tag
      properties:
        message:
          type: string
        field:
          type: string
        blockingReasons:
          type: array
          items:
            type: object
            required:
            - source
            - reason
            properties:
              source:
                type: string
              reason:
                type: string
              count:
                type: number
            additionalProperties: false
        _tag:
          type: string
          enum:
          - BadRequestHttpError
      additionalProperties: false
    NotFoundHttpError:
      type: object
      required:
      - message
      - _tag
      properties:
        message:
          type: string
        resourceType:
          type: string
        _tag:
          type: string
          enum:
          - NotFoundHttpError
      additionalProperties: false
    UnauthenticatedHttpError:
      type: object
      required:
      - message
      - _tag
      properties:
        message:
          type: string
        _tag:
          type: string
          enum:
          - UnauthenticatedHttpError
      additionalProperties: false
    PersistedFile:
      type: string
      format: binary
    AttachmentId:
      type: number
      description: Unique identifier for an attachment
    InternalServerHttpError:
      type: object
      required:
      - message
      - _tag
      properties:
        message:
          type: string
        _tag:
          type: string
          enum:
          - InternalServerHttpError
      additionalProperties: false
    UnauthorizedHttpError:
      type: object
      required:
      - message
      - _tag
      properties:
        message:
          type: string
        requiredPermissions:
          type: array
          items:
            type: string
        _tag:
          type: string
          enum:
          - UnauthorizedHttpError
      additionalProperties: false
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: JWT Authorization header using the Bearer scheme
x-refined-from:
- opengov-enterprise-asset-management-openapi.yml
- opengov-vendor-management-openapi.yml
x-og-spec-id: bnp-api-v1
x-og-env-servers:
  production: https://api.bnp.opengov.com
  development: https://api.bnp.ogintegration.us