OpenGov Vendors API

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

OpenAPI Specification

opengov-vendors-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Vendor Management Vendors API
  description: 'A comprehensive API for managing vendors in the OpenGov platform.


    ## Authentication

    All endpoints require JWT Bearer token authentication. Include the token in the Authorization header:

    ```

    Authorization: Bearer <your-jwt-token>

    ```


    ## Features

    - **Vendor Management**: Create, read, update, and delete vendors

    - **Health Check**: Monitor service health


    ## Rate Limiting

    API calls are subject to rate limiting based on your subscription tier.'
  version: 1.0.0
  contact:
    name: OpenGov API Support
    email: api-support@opengov.com
  license:
    name: Proprietary
    url: https://opengov.com/terms
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
security:
- bearerAuth: []
tags:
- name: vendors
paths:
  /api/v1/entities/{entityId}/vendors/{vendorKey}:
    get:
      tags:
      - vendors
      operationId: vendors.getVendorById
      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: include
        in: query
        schema:
          type: string
        required: false
      security:
      - bearerAuth: []
      responses:
        '200':
          description: VendorModel
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VendorModel'
        '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'
    patch:
      tags:
      - vendors
      operationId: vendors.updateVendor
      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: VendorModel
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VendorModel'
        '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: []
              properties:
                legalCompanyName:
                  $ref: '#/components/schemas/NonEmptyString'
                doingBusinessAs:
                  anyOf:
                  - type: string
                  - type: 'null'
                businessType:
                  anyOf:
                  - type: string
                  - type: 'null'
                localProfiles:
                  anyOf:
                  - type: array
                    items:
                      type: string
                  - type: 'null'
                ethnicity:
                  anyOf:
                  - type: string
                  - type: 'null'
                stateOfIncorporation:
                  anyOf:
                  - type: string
                  - type: 'null'
                companyWebsite:
                  anyOf:
                  - type: string
                  - type: 'null'
                companyDescription:
                  anyOf:
                  - type: string
                  - type: 'null'
                externalSystemCode:
                  anyOf:
                  - type: string
                  - type: 'null'
                vendorParent:
                  anyOf:
                  - type: number
                  - type: 'null'
                vendorParentName:
                  anyOf:
                  - type: string
                  - type: 'null'
                additionalLanguages:
                  anyOf:
                  - type: array
                    items:
                      type: string
                  - type: 'null'
                vendorPublicProfileId:
                  anyOf:
                  - type: string
                  - type: 'null'
                taxType:
                  anyOf:
                  - type: string
                  - type: 'null'
                taxId:
                  anyOf:
                  - type: string
                  - type: 'null'
                is1099Applicable:
                  type: boolean
                uei:
                  anyOf:
                  - type: string
                  - type: 'null'
                duns:
                  anyOf:
                  - type: string
                  - type: 'null'
                vendorCreationSource:
                  type: string
                vendorCreationSourceId:
                  anyOf:
                  - type: string
                  - type: 'null'
                paymentTermRefId:
                  anyOf:
                  - type: string
                  - type: 'null'
                paymentTerm:
                  anyOf:
                  - type: string
                  - type: 'null'
                paymentTermDesc:
                  anyOf:
                  - type: string
                  - type: 'null'
                phoneCountryCode:
                  anyOf:
                  - type: string
                  - type: 'null'
                phoneNumber:
                  anyOf:
                  - type: string
                  - type: 'null'
                phoneExt:
                  anyOf:
                  - type: string
                  - type: 'null'
                email:
                  anyOf:
                  - type: string
                  - type: 'null'
                faxCountryCode:
                  anyOf:
                  - type: string
                  - type: 'null'
                faxNumber:
                  anyOf:
                  - type: string
                  - type: 'null'
                faxExt:
                  anyOf:
                  - type: string
                  - type: 'null'
                customFields:
                  anyOf:
                  - type: object
                    required: []
                    properties: {}
                    additionalProperties:
                      title: unknown
                  - type: 'null'
                addresses:
                  type: array
                  items:
                    type: object
                    required:
                    - addressLine1
                    - city
                    - state
                    - zipCode
                    - country
                    properties:
                      addressLine1:
                        type: string
                      addressLine2:
                        anyOf:
                        - type: string
                        - type: 'null'
                      city:
                        type: string
                      state:
                        type: string
                      zipCode:
                        type: string
                      country:
                        type: string
                      defaultFor:
                        anyOf:
                        - type: array
                          items:
                            type: string
                            enum:
                            - PRIMARY
                            - REMIT TO
                            - ORDER FROM
                        - type: 'null'
                      addressId:
                        $ref: '#/components/schemas/AddressId'
                    additionalProperties: false
                contacts:
                  type: array
                  items:
                    type: object
                    required: []
                    properties:
                      firstName:
                        anyOf:
                        - type: string
                        - type: 'null'
                      lastName:
                        anyOf:
                        - type: string
                        - type: 'null'
                      jobTitle:
                        anyOf:
                        - type: string
                        - type: 'null'
                      phoneCountryCode:
                        anyOf:
                        - type: string
                        - type: 'null'
                      phoneNumber:
                        anyOf:
                        - type: string
                        - type: 'null'
                      phoneExt:
                        anyOf:
                        - type: string
                        - type: 'null'
                      email:
                        anyOf:
                        - type: string
                        - type: 'null'
                      note:
                        anyOf:
                        - type: string
                        - type: 'null'
                      contactId:
                        $ref: '#/components/schemas/ContactId'
                    additionalProperties: false
                paymentMethods:
                  type: array
                  items:
                    type: object
                    required:
                    - paymentMethodRefId
                    - paymentMethodType
                    - paymentMethodDetails
                    - isDefault
                    properties:
                      paymentLabel:
                        anyOf:
                        - type: string
                        - type: 'null'
                      paymentMethodRefId:
                        type: string
                      paymentMethodType:
                        type: string
                      paymentMethodDetails:
                        title: unknown
                      isDefault:
                        type: boolean
                      paymentId:
                        $ref: '#/components/schemas/PaymentId'
                    additionalProperties: false
                certificates:
                  type: array
                  items:
                    type: object
                    required: []
                    properties:
                      attachmentId:
                        anyOf:
                        - type: number
                        - type: 'null'
                      certificateType:
                        anyOf:
                        - type: string
                        - type: 'null'
                      certificateCategory:
                        anyOf:
                        - type: string
                        - type: 'null'
                      certificateDetails:
                        title: unknown
                      certificateId:
                        $ref: '#/components/schemas/CertificateId'
                    additionalProperties: false
                categories:
                  type: array
                  items:
                    $ref: '#/components/schemas/VendorCategoriesModel.jsonUpdate'
              additionalProperties: false
        required: true
    delete:
      tags:
      - vendors
      operationId: vendors.deleteVendor
      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:
        '204':
          description: Success
        '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'
  /api/v1/entities/{entityId}/vendors:
    post:
      tags:
      - vendors
      operationId: vendors.createVendor
      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
      security:
      - bearerAuth: []
      responses:
        '200':
          description: VendorModel
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VendorModel'
        '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:
              - legalCompanyName
              - vendorCreationSource
              properties:
                legalCompanyName:
                  $ref: '#/components/schemas/NonEmptyString'
                doingBusinessAs:
                  anyOf:
                  - type: string
                  - type: 'null'
                businessType:
                  anyOf:
                  - type: string
                  - type: 'null'
                localProfiles:
                  anyOf:
                  - type: array
                    items:
                      type: string
                  - type: 'null'
                ethnicity:
                  anyOf:
                  - type: string
                  - type: 'null'
                stateOfIncorporation:
                  anyOf:
                  - type: string
                  - type: 'null'
                companyWebsite:
                  anyOf:
                  - type: string
                  - type: 'null'
                companyDescription:
                  anyOf:
                  - type: string
                  - type: 'null'
                externalSystemCode:
                  anyOf:
                  - type: string
                  - type: 'null'
                vendorParent:
                  anyOf:
                  - type: number
                  - type: 'null'
                vendorParentName:
                  anyOf:
                  - type: string
                  - type: 'null'
                additionalLanguages:
                  anyOf:
                  - type: array
                    items:
                      type: string
                  - type: 'null'
                vendorPublicProfileId:
                  anyOf:
                  - type: string
                  - type: 'null'
                taxType:
                  anyOf:
                  - type: string
                  - type: 'null'
                taxId:
                  anyOf:
                  - type: string
                  - type: 'null'
                is1099Applicable:
                  type: boolean
                uei:
                  anyOf:
                  - type: string
                  - type: 'null'
                duns:
                  anyOf:
                  - type: string
                  - type: 'null'
                vendorCreationSource:
                  type: string
                vendorCreationSourceId:
                  anyOf:
                  - type: string
                  - type: 'null'
                paymentTermRefId:
                  anyOf:
                  - type: string
                  - type: 'null'
                paymentTerm:
                  anyOf:
                  - type: string
                  - type: 'null'
                paymentTermDesc:
                  anyOf:
                  - type: string
                  - type: 'null'
                phoneCountryCode:
                  anyOf:
                  - type: string
                  - type: 'null'
                phoneNumber:
                  anyOf:
                  - type: string
                  - type: 'null'
                phoneExt:
                  anyOf:
                  - type: string
                  - type: 'null'
                email:
                  anyOf:
                  - type: string
                  - type: 'null'
                faxCountryCode:
                  anyOf:
                  - type: string
                  - type: 'null'
                faxNumber:
                  anyOf:
                  - type: string
                  - type: 'null'
                faxExt:
                  anyOf:
                  - type: string
                  - type: 'null'
                customFields:
                  anyOf:
                  - type: object
                    required: []
                    properties: {}
                    additionalProperties:
                      title: unknown
                  - type: 'null'
                addresses:
                  type: array
                  items:
                    $ref: '#/components/schemas/AddressModel.jsonCreate'
                contacts:
                  type: array
                  items:
                    $ref: '#/components/schemas/ContactModel.jsonCreate'
                paymentMethods:
                  type: array
                  items:
                    $ref: '#/components/schemas/PaymentMethodModel.jsonCreate'
                certificates:
                  type: array
                  items:
                    $ref: '#/components/schemas/CertificateModel.jsonCreate'
                categories:
                  type: array
                  items:
                    $ref: '#/components/schemas/VendorCategoriesModel.jsonCreate'
              additionalProperties: false
        required: true
  /api/v1/entities/{entityId}/vendors/{vendorKey}/submit:
    post:
      tags:
      - vendors
      operationId: vendors.submitVendor
      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: VendorModel
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VendorModel'
        '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'
  /api/v1/entities/{entityId}/vendors/{vendorKey}/promote:
    post:
      tags:
      - vendors
      operationId: vendors.promoteVendor
      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: VendorModel
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VendorModel'
        '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:
              - action
              properties:
                action:
                  type: string
                  enum:
                  - begin_review
                  - approve
                  - reject
                  - request_changes
                comment:
                  type: string
              additionalProperties: false
        required: true
  /api/v1/entities/{entityId}/vendors/{vendorKey}/availability:
    post:
      tags:
      - vendors
      operationId: vendors.updateVendorAvailability
      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: VendorModel
          content:
            application/json:
              schema:
                anyOf:
                - $ref: '#/components/schemas/VendorModel'
                - type: object
                  required:
                  - readyToDeactivate
                  properties:
                    readyToDeactivate:
                      type: boolean
                    blockingReasons:
                      type: array
                      items:
                        type: object
                        required:
                        - source
                        - reason
                        properties:
                          source:
                            type: string
                          reason:
                            type: string
                          count:
                            type: number
                        additionalProperties: false
                  additionalProperties: false
        '400':
          description: The request did not match the expected schema
          content:
            application/json:
              schema:
                anyOf:
                - $ref: '#/components/schemas/HttpApiDecodeError'
                - $ref: '#/components/schemas/BadReques

# --- truncated at 32 KB (53 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/opengov/refs/heads/main/openapi/opengov-vendors-api-openapi.yml