Fairmarkit Buyer Public API

RESTful buyer-side Self-Service API (v3 + v4) for managing RFQ and RFP events, requests and request items, suppliers, purchase orders, price books, datasets, business units, categories, identities, and data exports. OpenAPI 3.1, API-key authenticated via the X-FM-API-KEY header.

OpenAPI Specification

fairmarkit-buyer-openapi.json Raw ↑
{
  "openapi": "3.1.1",
  "info": {
    "title": "BUYER PUBLIC API",
    "version": "3",
    "description": "The Fairmarkit Buyer API is a RESTful API that uses HTTP requests to allow you to access and use your Fairmarkit data. It has predictable resource-oriented URLs that use standard HTTP response codes, authentication, and verbs. See the Fairmarkit API developer portal for more information.",
    "termsOfService": "https://www.fairmarkit.com/terms-of-service",
    "contact": {
      "name": "Fairmarkit Support",
      "url": "https://fmkt.zendesk.com/hc/en-us",
      "email": "support@fairmarkit.com"
    }
  },
  "servers": [
    {
      "url": "https://staging.fairmarkit.com/"
    }
  ],
  "paths": {
    "/services/self-service/api/v4/requests/{request_id}/items/": {
      "post": {
        "tags": [
          "Requests"
        ],
        "summary": "\ud83e\uddea Create Request Item",
        "operationId": "RequestApi_create_item_services_self_service_api_v4_requests__request_id__items__post",
        "parameters": [
          {
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "title": "Request Id"
            },
            "name": "request_id",
            "in": "path"
          },
          {
            "required": false,
            "schema": {
              "type": "string",
              "title": "X-Fm-Api-Key"
            },
            "name": "X-FM-API-KEY",
            "in": "header"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RequestItemV4Create"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json; charset=utf-8": {
                "schema": {
                  "$ref": "#/components/schemas/RequestItemV4Retrieve"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "description": "Creates a new Request Item based on the selected schema. The Request must exist first. This endpoint is in **BETA** and may change without notice."
      },
      "get": {
        "tags": [
          "Requests"
        ],
        "summary": "\ud83e\uddea List Request Items",
        "operationId": "RequestApi_get_request_items_list_services_self_service_api_v4_requests__request_id__items__get",
        "parameters": [
          {
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "title": "Request Id"
            },
            "name": "request_id",
            "in": "path"
          },
          {
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 100,
              "minimum": 1,
              "title": "Limit",
              "default": 20,
              "description": "Maximum number of records to return. Defaults to 20."
            },
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return. Defaults to 20."
          },
          {
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 0,
              "title": "Offset",
              "default": 0,
              "description": "Zero-based offset of the first record to return. Defaults to 0."
            },
            "name": "offset",
            "in": "query",
            "description": "Zero-based offset of the first record to return. Defaults to 0."
          },
          {
            "required": false,
            "schema": {
              "type": "string",
              "title": "X-Fm-Api-Key"
            },
            "name": "X-FM-API-KEY",
            "in": "header"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json; charset=utf-8": {
                "schema": {
                  "$ref": "#/components/schemas/RequestItemV4ListRetrieve"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "description": "Returns a paginated list of Request items. This endpoint is in **BETA** and may change without notice."
      }
    },
    "/services/self-service/api/v3/categories/": {
      "get": {
        "tags": [
          "Categories"
        ],
        "summary": "List Categories",
        "operationId": "list_services_self_service_api_v3_categories__get",
        "parameters": [
          {
            "required": false,
            "schema": {
              "title": "Limit",
              "maximum": 100,
              "minimum": 1,
              "type": "integer",
              "default": 20,
              "description": "Maximum number of records to return. Defaults to 20."
            },
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return. Defaults to 20."
          },
          {
            "required": false,
            "schema": {
              "title": "Offset",
              "minimum": 0,
              "type": "integer",
              "default": 0,
              "description": "Zero-based offset of the first record to return. Defaults to 0."
            },
            "name": "offset",
            "in": "query",
            "description": "Zero-based offset of the first record to return. Defaults to 0."
          },
          {
            "required": false,
            "schema": {
              "title": "Offset",
              "type": "string"
            },
            "name": "external_id",
            "in": "query",
            "description": "Filter Category records by external Category ID."
          },
          {
            "required": false,
            "schema": {
              "title": "X-Fm-Api-Key",
              "type": "string"
            },
            "name": "X-FM-API-KEY",
            "in": "header",
            "description": "Fairmarkit API Key"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json; charset=utf-8": {
                "schema": {
                  "$ref": "#/components/schemas/ListRetrieve_CategoryRetrieve_"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "description": "Returns a list of categories."
      }
    },
    "/services/self-service/api/v3/rfp/": {
      "get": {
        "tags": [
          "RFP"
        ],
        "summary": "List RFPs",
        "operationId": "get_rfp_list_services_self_service_api_v3_rfp__get",
        "parameters": [
          {
            "description": "Maximum number of records to return. Defaults to 20.",
            "required": false,
            "schema": {
              "title": "Limit",
              "maximum": 100,
              "minimum": 1,
              "type": "integer",
              "default": 20,
              "description": "Maximum number of records to return. Defaults to 20."
            },
            "name": "limit",
            "in": "query"
          },
          {
            "description": "Zero-based offset of the first record to return. Defaults to 0.",
            "required": false,
            "schema": {
              "title": "Offset",
              "minimum": 0,
              "type": "integer",
              "default": 0,
              "description": "Zero-based offset of the first record to return. Defaults to 0."
            },
            "name": "offset",
            "in": "query"
          },
          {
            "required": false,
            "schema": {
              "$ref": "#/components/schemas/CoreRFPStatus",
              "description": "Filter by status."
            },
            "name": "status",
            "in": "query",
            "description": "Filter by status."
          },
          {
            "description": "Start of the created-at time range. Use ISO 8601 format.",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time",
              "title": "Updated At Min",
              "description": "Start of the created-at time range. Use ISO 8601 format."
            },
            "name": "created_at_min",
            "in": "query"
          },
          {
            "description": "End of the created-at time range. Use ISO 8601 format.",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time",
              "title": "Updated At Max",
              "description": "End of the created-at time range. Use ISO 8601 format."
            },
            "name": "created_at_max",
            "in": "query"
          },
          {
            "description": "Start of the updated-at time range. Use ISO 8601 format.",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time",
              "title": "Updated At Min",
              "description": "Start of the updated-at time range. Use ISO 8601 format."
            },
            "name": "updated_at_min",
            "in": "query"
          },
          {
            "description": "End of the updated-at time range. Use ISO 8601 format.",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date-time",
              "title": "Updated At Max",
              "description": "End of the updated-at time range. Use ISO 8601 format."
            },
            "name": "updated_at_max",
            "in": "query"
          },
          {
            "description": "Fairmarkit API Key",
            "required": false,
            "schema": {
              "title": "X-Fm-Api-Key",
              "type": "string"
            },
            "name": "X-FM-API-KEY",
            "in": "header"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json; charset=utf-8": {
                "schema": {
                  "$ref": "#/components/schemas/ListRetrieve_RFPListDetail_"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "description": "Returns a list of RFP events."
      }
    },
    "/services/self-service/api/v4/price-books/": {
      "get": {
        "tags": [
          "Price Books"
        ],
        "summary": "List Price Books",
        "description": "Returns a list of price books.",
        "operationId": "get_price_books_list_services_self_service_api_v4_price_books__get",
        "parameters": [
          {
            "description": "Filter by IDs.",
            "required": false,
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array",
              "title": "Id",
              "description": "Filter by IDs."
            },
            "name": "id",
            "in": "query"
          },
          {
            "description": "Zero-based offset of the first record to return. Defaults to 0.",
            "required": false,
            "schema": {
              "type": "integer",
              "minimum": 0,
              "title": "Offset",
              "default": 0,
              "description": "Zero-based offset of the first record to return. Defaults to 0."
            },
            "name": "offset",
            "in": "query"
          },
          {
            "description": "Maximum number of records to return. Defaults to 10.",
            "required": false,
            "schema": {
              "type": "integer",
              "maximum": 101,
              "minimum": 0,
              "title": "Limit",
              "default": 10,
              "description": "Maximum number of records to return. Defaults to 10."
            },
            "name": "limit",
            "in": "query"
          },
          {
            "description": "Filter price books by title.",
            "required": false,
            "schema": {
              "type": "string",
              "title": "Title"
            },
            "name": "title",
            "in": "query"
          },
          {
            "description": "Filter by active status.",
            "required": false,
            "schema": {
              "type": "boolean",
              "title": "Active",
              "description": "Filter by active status."
            },
            "name": "active",
            "in": "query"
          },
          {
            "description": "Ordering field. Prefix with '-' for descending order.",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "created_at",
                "-created_at",
                "title",
                "-title",
                "active",
                "-active"
              ],
              "title": "Ordering",
              "description": "Ordering field. Prefix with '-' for descending order."
            },
            "name": "ordering",
            "in": "query"
          },
          {
            "description": "Filter items by tags.",
            "required": false,
            "schema": {
              "items": {
                "type": "string"
              },
              "type": "array",
              "title": "Tag",
              "description": "Filter items by tags."
            },
            "name": "tag",
            "in": "query"
          },
          {
            "description": "Fairmarkit API Key",
            "required": false,
            "schema": {
              "title": "X-Fm-Api-Key",
              "type": "string"
            },
            "name": "X-FM-API-KEY",
            "in": "header"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json; charset=utf-8": {
                "schema": {
                  "items": {
                    "$ref": "#/components/schemas/PriceBookResponseV4"
                  },
                  "type": "array",
                  "title": "Price Books List Response"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Price Books"
        ],
        "summary": "Create Price Book",
        "description": "Creates a new price book.",
        "operationId": "create_price_book_services_self_service_api_v4_price_books__post",
        "parameters": [
          {
            "description": "Fairmarkit API Key",
            "required": false,
            "schema": {
              "type": "string",
              "title": "X-Fm-Api-Key"
            },
            "name": "X-FM-API-KEY",
            "in": "header"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PriceBookV4"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "description": "Successful Response",
            "content": {
              "application/json; charset=utf-8": {
                "schema": {
                  "$ref": "#/components/schemas/CreatePriceBookResponseV4"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        }
      }
    },
    "/services/self-service/api/v3/rfq/{uuid}/internal-notes/": {
      "post": {
        "tags": [
          "RFQ"
        ],
        "summary": "Add Internal Note",
        "operationId": "add_internal_note_services_self_service_api_v3_rfq__uuid__internal_notes__post",
        "parameters": [
          {
            "required": true,
            "schema": {
              "title": "Uuid",
              "type": "string",
              "format": "uuid"
            },
            "name": "uuid",
            "in": "path",
            "description": "RFQ ID (Fairmarkit)."
          },
          {
            "required": false,
            "schema": {
              "title": "X-Fm-Api-Key",
              "type": "string"
            },
            "name": "X-FM-API-KEY",
            "in": "header",
            "description": "Fairmarkit API Key"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RFQInternalNote"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json; charset=utf-8": {
                "schema": {
                  "$ref": "#/components/schemas/InternalNote"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "description": "Creates a new internal note for an RFQ event."
      },
      "get": {
        "tags": [
          "RFQ"
        ],
        "summary": "List Internal Notes",
        "operationId": "get_internal_notes_services_self_service_api_v3_rfq__uuid__internal_notes__get",
        "parameters": [
          {
            "required": true,
            "schema": {
              "title": "Uuid",
              "type": "string",
              "format": "uuid"
            },
            "name": "uuid",
            "in": "path",
            "description": "RFQ ID (Fairmarkit)."
          },
          {
            "required": false,
            "schema": {
              "title": "Limit",
              "maximum": 100,
              "minimum": 1,
              "type": "integer",
              "default": 20,
              "description": "Maximum number of records to return. Defaults to 20."
            },
            "name": "limit",
            "in": "query",
            "description": "Maximum number of records to return. Defaults to 20."
          },
          {
            "required": false,
            "schema": {
              "title": "Offset",
              "minimum": 0,
              "type": "integer",
              "default": 0,
              "description": "Zero-based offset of the first record to return. Defaults to 0."
            },
            "name": "offset",
            "in": "query",
            "description": "Zero-based offset of the first record to return. Defaults to 0."
          },
          {
            "required": false,
            "schema": {
              "title": "X-Fm-Api-Key",
              "type": "string"
            },
            "name": "X-FM-API-KEY",
            "in": "header",
            "description": "Fairmarkit API Key"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json; charset=utf-8": {
                "schema": {
                  "$ref": "#/components/schemas/ListRetrieve_InternalNote_"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "description": "Returns a list of internal notes for an RFQ event."
      }
    },
    "/services/self-service/api/v4/event/{event_id}": {
      "get": {
        "tags": [
          "Event"
        ],
        "summary": "Get Event Details",
        "operationId": "EventApi_get_event_details_services_self_service_api_v4_event__event_id__get",
        "parameters": [
          {
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid",
              "title": "Event Id"
            },
            "name": "event_id",
            "in": "path"
          },
          {
            "required": false,
            "schema": {
              "type": "string",
              "title": "X-Fm-Api-Key"
            },
            "name": "X-FM-API-KEY",
            "in": "header"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json; charset=utf-8": {
                "schema": {
                  "$ref": "#/components/schemas/EventRetrieve"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "description": "Returns details for an event."
      }
    },
    "/services/self-service/api/v3/rfq/{uuid}/": {
      "delete": {
        "tags": [
          "RFQ"
        ],
        "summary": "Delete RFQ Event",
        "operationId": "soft_delete_services_self_service_api_v3_rfq__uuid___delete",
        "parameters": [
          {
            "required": true,
            "schema": {
              "title": "Uuid",
              "type": "string",
              "format": "uuid"
            },
            "name": "uuid",
            "in": "path"
          },
          {
            "required": false,
            "schema": {
              "title": "X-Fm-Api-Key",
              "type": "string"
            },
            "name": "X-FM-API-KEY",
            "in": "header",
            "description": "Fairmarkit API Key"
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "description": "Deletes an existing RFQ event."
      },
      "put": {
        "tags": [
          "RFQ"
        ],
        "summary": "Update RFQ Event",
        "operationId": "update_services_self_service_api_v3_rfq__uuid___put",
        "parameters": [
          {
            "required": true,
            "schema": {
              "title": "Uuid",
              "type": "string",
              "format": "uuid"
            },
            "name": "uuid",
            "in": "path"
          },
          {
            "required": false,
            "schema": {
              "title": "X-Fm-Api-Key",
              "type": "string"
            },
            "name": "X-FM-API-KEY",
            "in": "header",
            "description": "Fairmarkit API Key"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RFQUpdate"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json; charset=utf-8": {
                "schema": {
                  "$ref": "#/components/schemas/RFQRetrieve"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "description": "Updates an existing RFQ event."
      },
      "get": {
        "tags": [
          "RFQ"
        ],
        "summary": "Get RFQ Event Details",
        "operationId": "retrieve_services_self_service_api_v3_rfq__uuid___get",
        "parameters": [
          {
            "required": true,
            "schema": {
              "title": "Uuid",
              "type": "string",
              "format": "uuid"
            },
            "name": "uuid",
            "in": "path"
          },
          {
            "required": false,
            "schema": {
              "title": "X-Fm-Api-Key",
              "type": "string"
            },
            "name": "X-FM-API-KEY",
            "in": "header",
            "description": "Fairmarkit API Key"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json; charset=utf-8": {
                "schema": {
                  "$ref": "#/components/schemas/RFQRetrieve"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "description": "Returns details for an RFQ event."
      }
    },
    "/services/self-service/api/v3/supplier/{uuid}/": {
      "delete": {
        "tags": [
          "Supplier"
        ],
        "summary": "Delete Supplier",
        "operationId": "soft_delete_services_self_service_api_v3_supplier__uuid___delete",
        "parameters": [
          {
            "required": true,
            "schema": {
              "title": "Uuid",
              "type": "string",
              "format": "uuid"
            },
            "name": "uuid",
            "in": "path"
          },
          {
            "required": false,
            "schema": {
              "title": "X-Fm-Api-Key",
              "type": "string"
            },
            "name": "X-FM-API-KEY",
            "in": "header",
            "description": "Fairmarkit API Key"
          }
        ],
        "responses": {
          "204": {
            "description": "Successful Response"
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "description": "Deletes an existing supplier."
      },
      "put": {
        "tags": [
          "Supplier"
        ],
        "summary": "Update Supplier",
        "operationId": "update_services_self_service_api_v3_supplier__uuid___put",
        "parameters": [
          {
            "required": true,
            "schema": {
              "title": "Uuid",
              "type": "string",
              "format": "uuid"
            },
            "name": "uuid",
            "in": "path"
          },
          {
            "required": false,
            "schema": {
              "title": "X-Fm-Api-Key",
              "type": "string"
            },
            "name": "X-FM-API-KEY",
            "in": "header",
            "description": "Fairmarkit API Key"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Supplier"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json; charset=utf-8": {
                "schema": {
                  "$ref": "#/components/schemas/SupplierRetrieve"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "description": "Updates an existing supplier."
      },
      "get": {
        "tags": [
          "Supplier"
        ],
        "summary": "Get Supplier Details",
        "operationId": "retrieve_services_self_service_api_v3_supplier__uuid___get",
        "parameters": [
          {
            "required": true,
            "schema": {
              "title": "Uuid",
              "type": "string",
              "format": "uuid"
            },
            "name": "uuid",
            "in": "path"
          },
          {
            "required": false,
            "schema": {
              "title": "X-Fm-Api-Key",
              "type": "string"
            },
            "name": "X-FM-API-KEY",
            "in": "header",
            "description": "Fairmarkit API Key"
          }
        ],
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json; charset=utf-8": {
                "schema": {
                  "$ref": "#/components/schemas/SupplierRetrieve"
                }
              }
            }
          },
          "422": {
            "description": "Validation Error",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/HTTPValidationError"
                }
              }
            }
          }
        },
        "description": "Returns details for a specific supplier."
      }
    },
    "/services/self-service/api/v3/attachments/rfq/{rfq_uuid}/": {
      "post": {
        "tags": [
          "File attachments"
        ],
        "summary": "Create RFQ Attachment",
        "operationId": "create_rfq_attachment_services_self_service_api_v3_attachments_rfq__rfq_uuid___post",
        "parameters": [
          {
            "required": true,
            "schema": {
              "title": "Rfq Uuid",
              "type": "string",
              "format": "uuid"
            },
            "name": "rfq_uuid",
            "in": "path"
          },
          {
            "required": false,
            "schema": {
              "title": "Is Internal",
              "type": "boolean",
              "default": false
            },
            "name": "is_internal",
            "in": "query"
          },
          {
 

# --- truncated at 32 KB (517 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/fairmarkit/refs/heads/main/openapi/fairmarkit-buyer-openapi.json