{
  "openapi": "3.1.0",
  "info": {
    "title": "Meta Hub API",
    "description": "Meta Hub is a Boomi platform feature designed to centralize and manage metadata across your organization. It enables users to define, discover, and govern shared business terms—known as glossaries—to ensure consistent understanding of data and its meaning across systems, integrations, and teams.\n\nMeta Hub helps organizations establish a single source of truth for business metadata, promoting clarity, reducing duplication, and improving collaboration between technical and business users.\n\nWith Meta Hub, you can:\n- Create and manage business glossaries and their definitions.\n- Track glossary publication and endorsement workflows.\n- Maintain transparency into who creates, updates, and approves business terms.\n\nMeta Hub is particularly useful for:\n- Data stewards and admins managing business data governance.\n- Developers integrating business metadata into automated workflows.\n- Business users who need visibility into approved and standardized data terminology.",
    "contact": {
      "name": "Customer Support",
      "url": "https://community.boomi.com/s/support",
      "email": "support@boomi.com"
    },
    "version": "1.0.0"
  },
  "servers": [
    {
      "url": "https://metahub.boomi.com/metahub",
      "description": "US Platform"
    },
    {
      "url": "https://metahub.gb.boomi.com/metahub",
      "description": "UK Platform"
    }
  ],
  "security": [
    {
      "jwt": []
    }
  ],
  "tags": [
    {
      "name": "Associations",
      "description": "Operations for managing associations between glossaries and assets"
    },
    {
      "name": "Glossaries",
      "description": "Operations for managing glossaries"
    }
  ],
  "paths": {
    "/api/accounts/{accountId}/glossaries/{id}": {
      "get": {
        "tags": [
          "Glossaries"
        ],
        "summary": "Get glossary",
        "description": "Retrieve detailed information for a specific glossary by its unique identifier within the specified account.\n\nRequired privileges: META_VIEW_GLOSSARY",
        "operationId": "getGlossaryById",
        "parameters": [
          {
            "name": "accountId",
            "in": "path",
            "description": "Account ID",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "abc123"
          },
          {
            "name": "id",
            "in": "path",
            "description": "Unique identifier of the glossary",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "example": "123e4567-e89b-12d3-a456-426614174000"
          },
          {
            "name": "includeContent",
            "in": "query",
            "description": "When true, includes the glossary's rich text content",
            "required": false,
            "schema": {
              "type": "boolean",
              "default": false
            }
          }
        ],
        "responses": {
          "400": {
            "description": "Bad request - invalid input parameters",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "example": {
                  "error": "400 BAD_REQUEST",
                  "message": "Invalid input parameters",
                  "timestamp": "2026-06-09T10:30:00",
                  "path": "/metahub/api/accounts/{accountId}/..."
                }
              }
            }
          },
          "401": {
            "description": "Authentication required. Please provide valid credentials",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "example": {
                  "error": "401 UNAUTHORIZED",
                  "message": "Invalid or expired authentication token",
                  "timestamp": "2026-06-09T10:30:00",
                  "path": "/metahub/api/accounts/{accountId}/..."
                }
              }
            }
          },
          "403": {
            "description": "Access denied. Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "example": {
                  "error": "403 FORBIDDEN",
                  "message": "Access denied. Insufficient permissions",
                  "timestamp": "2026-06-09T10:30:00",
                  "path": "/metahub/api/accounts/{accountId}/..."
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error occurred. Please try again later",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "example": {
                  "error": "500 INTERNAL_SERVER_ERROR",
                  "message": "An unexpected error occurred. Please try again later",
                  "timestamp": "2026-06-09T10:30:00",
                  "path": "/metahub/api/accounts/{accountId}/..."
                }
              }
            }
          },
          "200": {
            "description": "Successfully retrieved glossary",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GlossaryResponse"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "example": {
                    "value": "{\n  \"error\" : \"GLOSSARY_NOT_FOUND\",\n  \"message\" : \"Glossary not found with id: 123e4567-e89b-12d3-a456-426614174000\",\n  \"timestamp\" : \"2026-06-09T10:30:00\",\n  \"path\" : \"/metahub/api/accounts/abc123/glossaries/123e4567-e89b-12d3-a456-426614174000\"\n}"
                  }
                }
              }
            }
          }
        }
      },
      "put": {
        "tags": [
          "Glossaries"
        ],
        "summary": "Update glossary",
        "description": "Update the details of an existing glossary by its unique identifier within the specified account.\n\nRequired privileges: META_EDIT_GLOSSARY",
        "operationId": "updateGlossary",
        "parameters": [
          {
            "name": "accountId",
            "in": "path",
            "description": "Account ID",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "abc123"
          },
          {
            "name": "id",
            "in": "path",
            "description": "Glossary ID",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "example": "123e4567-e89b-12d3-a456-426614174000"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateGlossaryRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "400": {
            "description": "Bad request - invalid input parameters",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "example": {
                  "error": "400 BAD_REQUEST",
                  "message": "Invalid input parameters",
                  "timestamp": "2026-06-09T10:30:00",
                  "path": "/metahub/api/accounts/{accountId}/..."
                }
              }
            }
          },
          "401": {
            "description": "Authentication required. Please provide valid credentials",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "example": {
                  "error": "401 UNAUTHORIZED",
                  "message": "Invalid or expired authentication token",
                  "timestamp": "2026-06-09T10:30:00",
                  "path": "/metahub/api/accounts/{accountId}/..."
                }
              }
            }
          },
          "403": {
            "description": "Access denied. Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "example": {
                  "error": "403 FORBIDDEN",
                  "message": "Access denied. Insufficient permissions",
                  "timestamp": "2026-06-09T10:30:00",
                  "path": "/metahub/api/accounts/{accountId}/..."
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error occurred. Please try again later",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "example": {
                  "error": "500 INTERNAL_SERVER_ERROR",
                  "message": "An unexpected error occurred. Please try again later",
                  "timestamp": "2026-06-09T10:30:00",
                  "path": "/metahub/api/accounts/{accountId}/..."
                }
              }
            }
          },
          "200": {
            "description": "Glossary updated successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GlossaryResponse"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "example": {
                    "value": "{\n  \"error\" : \"GLOSSARY_NOT_FOUND\",\n  \"message\" : \"Glossary not found with id: 123e4567-e89b-12d3-a456-426614174000\",\n  \"timestamp\" : \"2026-06-09T10:30:00\",\n  \"path\" : \"/metahub/api/accounts/abc123/glossaries/123e4567-e89b-12d3-a456-426614174000\"\n}"
                  }
                }
              }
            }
          },
          "409": {
            "description": "Conflict - resource already exists or invalid state transition",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "example": {
                    "value": "{\n  \"error\" : \"GLOSSARY_ALREADY_EXISTS\",\n  \"message\" : \"Resource already exists or invalid state transition\",\n  \"timestamp\" : \"2026-06-09T10:30:00\",\n  \"path\" : \"/metahub/api/accounts/abc123/glossaries\"\n}"
                  }
                }
              }
            }
          }
        }
      },
      "delete": {
        "tags": [
          "Glossaries"
        ],
        "summary": "Delete glossary",
        "description": "Delete a specific glossary from the specified account using its unique identifier.\n\nRequired privileges: META_DELETE_GLOSSARY",
        "operationId": "deleteGlossary",
        "parameters": [
          {
            "name": "accountId",
            "in": "path",
            "description": "Account ID",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "abc123"
          },
          {
            "name": "id",
            "in": "path",
            "description": "Glossary ID",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "example": "123e4567-e89b-12d3-a456-426614174000"
          }
        ],
        "responses": {
          "400": {
            "description": "Bad request - invalid input parameters",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "example": {
                  "error": "400 BAD_REQUEST",
                  "message": "Invalid input parameters",
                  "timestamp": "2026-06-09T10:30:00",
                  "path": "/metahub/api/accounts/{accountId}/..."
                }
              }
            }
          },
          "401": {
            "description": "Authentication required. Please provide valid credentials",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "example": {
                  "error": "401 UNAUTHORIZED",
                  "message": "Invalid or expired authentication token",
                  "timestamp": "2026-06-09T10:30:00",
                  "path": "/metahub/api/accounts/{accountId}/..."
                }
              }
            }
          },
          "403": {
            "description": "Access denied. Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "example": {
                  "error": "403 FORBIDDEN",
                  "message": "Access denied. Insufficient permissions",
                  "timestamp": "2026-06-09T10:30:00",
                  "path": "/metahub/api/accounts/{accountId}/..."
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error occurred. Please try again later",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "example": {
                  "error": "500 INTERNAL_SERVER_ERROR",
                  "message": "An unexpected error occurred. Please try again later",
                  "timestamp": "2026-06-09T10:30:00",
                  "path": "/metahub/api/accounts/{accountId}/..."
                }
              }
            }
          },
          "204": {
            "description": "Glossary deleted successfully"
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "example": {
                    "value": "{\n  \"error\" : \"GLOSSARY_NOT_FOUND\",\n  \"message\" : \"Glossary not found with id: 123e4567-e89b-12d3-a456-426614174000\",\n  \"timestamp\" : \"2026-06-09T10:30:00\",\n  \"path\" : \"/metahub/api/accounts/abc123/glossaries/123e4567-e89b-12d3-a456-426614174000\"\n}"
                  }
                }
              }
            }
          },
          "409": {
            "description": "Conflict - resource already exists or invalid state transition",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "example": {
                    "value": "{\n  \"error\" : \"GLOSSARY_ALREADY_EXISTS\",\n  \"message\" : \"Resource already exists or invalid state transition\",\n  \"timestamp\" : \"2026-06-09T10:30:00\",\n  \"path\" : \"/metahub/api/accounts/abc123/glossaries\"\n}"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/accounts/{accountId}/glossaries": {
      "get": {
        "tags": [
          "Glossaries"
        ],
        "summary": "Get glossaries",
        "description": "Retrieve a paginated list of glossaries for the specified account, optionally filtered by endorsement status and publication status.\n\nRequired privileges: META_VIEW_GLOSSARY or META_EDIT_ASSOCIATION",
        "operationId": "getAllGlossaries",
        "parameters": [
          {
            "name": "accountId",
            "in": "path",
            "description": "Account ID",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "abc123"
          },
          {
            "name": "endorsementStatus",
            "in": "query",
            "description": "Endorsement state",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "PENDING",
                "DEPRECATED",
                "ENDORSED"
              ]
            }
          },
          {
            "name": "status",
            "in": "query",
            "description": "Publish state",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "DRAFT",
                "PUBLISHED"
              ]
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "Page number",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 1,
              "minimum": 1
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Max results per page",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 20,
              "maximum": 100,
              "minimum": 1
            }
          }
        ],
        "responses": {
          "400": {
            "description": "Bad request - invalid input parameters",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "example": {
                  "error": "400 BAD_REQUEST",
                  "message": "Invalid input parameters",
                  "timestamp": "2026-06-09T10:30:00",
                  "path": "/metahub/api/accounts/{accountId}/..."
                }
              }
            }
          },
          "401": {
            "description": "Authentication required. Please provide valid credentials",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "example": {
                  "error": "401 UNAUTHORIZED",
                  "message": "Invalid or expired authentication token",
                  "timestamp": "2026-06-09T10:30:00",
                  "path": "/metahub/api/accounts/{accountId}/..."
                }
              }
            }
          },
          "403": {
            "description": "Access denied. Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "example": {
                  "error": "403 FORBIDDEN",
                  "message": "Access denied. Insufficient permissions",
                  "timestamp": "2026-06-09T10:30:00",
                  "path": "/metahub/api/accounts/{accountId}/..."
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error occurred. Please try again later",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "example": {
                  "error": "500 INTERNAL_SERVER_ERROR",
                  "message": "An unexpected error occurred. Please try again later",
                  "timestamp": "2026-06-09T10:30:00",
                  "path": "/metahub/api/accounts/{accountId}/..."
                }
              }
            }
          },
          "200": {
            "description": "Successfully retrieved list of glossaries",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedGlossaryResponse"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Glossaries"
        ],
        "summary": "Create glossary",
        "description": "Create a new glossary in the specified account by providing its name, purpose, content, and publication status.\n\nRequired privileges: META_EDIT_GLOSSARY",
        "operationId": "createGlossary",
        "parameters": [
          {
            "name": "accountId",
            "in": "path",
            "description": "Account ID",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "abc123"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateGlossaryRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "400": {
            "description": "Bad request - invalid input parameters",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "example": {
                  "error": "400 BAD_REQUEST",
                  "message": "Invalid input parameters",
                  "timestamp": "2026-06-09T10:30:00",
                  "path": "/metahub/api/accounts/{accountId}/..."
                }
              }
            }
          },
          "401": {
            "description": "Authentication required. Please provide valid credentials",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "example": {
                  "error": "401 UNAUTHORIZED",
                  "message": "Invalid or expired authentication token",
                  "timestamp": "2026-06-09T10:30:00",
                  "path": "/metahub/api/accounts/{accountId}/..."
                }
              }
            }
          },
          "403": {
            "description": "Access denied. Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "example": {
                  "error": "403 FORBIDDEN",
                  "message": "Access denied. Insufficient permissions",
                  "timestamp": "2026-06-09T10:30:00",
                  "path": "/metahub/api/accounts/{accountId}/..."
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error occurred. Please try again later",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "example": {
                  "error": "500 INTERNAL_SERVER_ERROR",
                  "message": "An unexpected error occurred. Please try again later",
                  "timestamp": "2026-06-09T10:30:00",
                  "path": "/metahub/api/accounts/{accountId}/..."
                }
              }
            }
          },
          "201": {
            "description": "Glossary created successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GlossaryResponse"
                }
              }
            }
          },
          "409": {
            "description": "Conflict - resource already exists or invalid state transition",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "example": {
                    "value": "{\n  \"error\" : \"GLOSSARY_ALREADY_EXISTS\",\n  \"message\" : \"Resource already exists or invalid state transition\",\n  \"timestamp\" : \"2026-06-09T10:30:00\",\n  \"path\" : \"/metahub/api/accounts/abc123/glossaries\"\n}"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/accounts/{accountId}/glossaries/{glossaryId}/endorsement-status": {
      "post": {
        "tags": [
          "Glossaries"
        ],
        "summary": "Update glossary endorsement status",
        "description": "Update the endorsement status of a specific glossary, optionally including a comment explaining the change.\n\nRequired privileges: META_EDIT_GLOSSARY_ENDORSEMENT",
        "operationId": "changeEndorsementStatus",
        "parameters": [
          {
            "name": "accountId",
            "in": "path",
            "description": "Account ID",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "abc123"
          },
          {
            "name": "glossaryId",
            "in": "path",
            "description": "Glossary ID",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "example": "123e4567-e89b-12d3-a456-426614174000"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateEndorsementRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "400": {
            "description": "Bad request - invalid input parameters",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "example": {
                  "error": "400 BAD_REQUEST",
                  "message": "Invalid input parameters",
                  "timestamp": "2026-06-09T10:30:00",
                  "path": "/metahub/api/accounts/{accountId}/..."
                }
              }
            }
          },
          "401": {
            "description": "Authentication required. Please provide valid credentials",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "example": {
                  "error": "401 UNAUTHORIZED",
                  "message": "Invalid or expired authentication token",
                  "timestamp": "2026-06-09T10:30:00",
                  "path": "/metahub/api/accounts/{accountId}/..."
                }
              }
            }
          },
          "403": {
            "description": "Access denied. Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "example": {
                  "error": "403 FORBIDDEN",
                  "message": "Access denied. Insufficient permissions",
                  "timestamp": "2026-06-09T10:30:00",
                  "path": "/metahub/api/accounts/{accountId}/..."
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error occurred. Please try again later",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "example": {
                  "error": "500 INTERNAL_SERVER_ERROR",
                  "message": "An unexpected error occurred. Please try again later",
                  "timestamp": "2026-06-09T10:30:00",
                  "path": "/metahub/api/accounts/{accountId}/..."
                }
              }
            }
          },
          "201": {
            "description": "Endorsement status changed successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GlossaryEndorsementHistoryResponse"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "example": {
                    "value": "{\n  \"error\" : \"GLOSSARY_NOT_FOUND\",\n  \"message\" : \"Glossary not found with id: 123e4567-e89b-12d3-a456-426614174000\",\n  \"timestamp\" : \"2026-06-09T10:30:00\",\n  \"path\" : \"/metahub/api/accounts/abc123/glossaries/123e4567-e89b-12d3-a456-426614174000/endorsement-status\"\n}"
                  }
                }
              }
            }
          },
          "409": {
            "description": "Conflict - resource already exists or invalid state transition",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "example": {
                    "value": "{\n  \"error\" : \"GLOSSARY_ALREADY_EXISTS\",\n  \"message\" : \"Resource already exists or invalid state transition\",\n  \"timestamp\" : \"2026-06-09T10:30:00\",\n  \"path\" : \"/metahub/api/accounts/abc123/glossaries\"\n}"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/accounts/{accountId}/associations": {
      "get": {
        "tags": [
          "Associations"
        ],
        "summary": "Get associations",
        "description": "Retrieve a list of glossary associations.\n\nRequired privileges: META_VIEW_ASSOCIATION",
        "operationId": "getAssociations",
        "parameters": [
          {
            "name": "accountId",
            "in": "path",
            "description": "Account ID",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "abc123"
          },
          {
            "name": "glossaryId",
            "in": "query",
            "description": "Glossary ID",
            "required": false,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "example": "123e4567-e89b-12d3-a456-426614174000"
          },
          {
            "name": "assetType",
            "in": "query",
            "description": "Asset type filter. Supported values (case-insensitive): DATAHUB_MODEL, AI_AGENT.",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "assetExternalId",
            "in": "query",
            "description": "Asset ID in the external system such as the universe component ID.",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "Page number",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 1,
              "minimum": 1
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Max results per page",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 20,
              "maximum": 100,
              "minimum": 1
            }
          }
        ],
        "responses": {
          "400": {
            "description": "Bad request - invalid input parameters",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "example": {
                  "error": "400 BAD_REQUEST",
                  "message": "Invalid input parameters",
                  "timestamp": "2026-06-09T10:30:00",
                  "path": "/metahub/api/accounts/{accountId}/..."
                }
              }
            }
          },
          "401": {
            "description": "Authentication required. Please provide valid credentials",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "example": {
                  "error": "401 UNAUTHORIZED",
                  "message": "Invalid or expired authentication token",
                  "timestamp": "2026-06-09T10:30:00",
                  "path": "/metahub/api/accounts/{accountId}/..."
                }
              }
            }
          },
          "403": {
            "description": "Access denied. Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "example": {
                  "error": "403 FORBIDDEN",
                  "message": "Access denied. Insufficient permissions",
                  "timestamp": "2026-06-09T10:30:00",
                  "path": "/metahub/api/accounts/{accountId}/..."
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error occurred. Please try again later",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "example": {
                  "error": "500 INTERNAL_SERVER_ERROR",
                  "message": "An unexpected error occurred. Please try again later",
                  "timestamp": "2026-06-09T10:30:00",
                  "path": "/metahub/api/accounts/{accountId}/..."
                }
              }
            }
          },
          "200": {
            "description": "Successfully retrieved list of associations",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedAssociationResponse"
                }
              }
            }
          }
        }
      },
      "post": {
        "tags": [
          "Associations"
        ],
        "summary": "Create association",
        "description": "Create a glossary association.\n\nRequired privileges: META_EDIT_ASSOCIATION",
        "operationId": "createAssociation",
        "parameters": [
          {
            "name": "accountId",
            "in": "path",
            "description": "Account ID",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "abc123"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateAssociationRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "400": {
            "description": "Bad request - invalid input parameters",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "default": {
                    "value": {
                      "error": "400 BAD_REQUEST",
                      "message": "Invalid input parameters",
                      "timestamp": "2026-06-09T10:30:00",
                      "path": "/metahub/api/accounts/{accountId}/..."
                    }
                  },
                  "draft_glossary": {
                    "value": "{\n  \"error\" : \"DRAFT_GLOSSARY_NOT_ASSOCIABLE\",\n  \"message\" : \"Glossary must be published before it can be associated\",\n  \"timestamp\" : \"2026-06-09T10:30:00\",\n  \"path\" : \"/metahub/api/accounts/abc123/associations\"\n}"
                  }
                },
                "example": null
              }
            }
          },
          "401": {
            "description": "Authentication required. Please provide valid credentials",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "example": {
                  "error": "401 UNAUTHORIZED",
                  "message": "Invalid or expired authentication token",
                  "timestamp": "2026-06-09T10:30:00",
                  "path": "/metahub/api/accounts/{accountId}/..."
                }
              }
            }
          },
          "403": {
            "description": "Access denied. Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "example": {
                  "error": "403 FORBIDDEN",
                  "message": "Access denied. Insufficient permissions",
                  "timestamp": "2026-06-09T10:30:00",
                  "path": "/metahub/api/accounts/{accountId}/..."
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error occurred. Please try again later",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "example": {
                  "error": "500 INTERNAL_SERVER_ERROR",
                  "message": "An unexpected error occurred. Please try again later",
                  "timestamp": "2026-06-09T10:30:00",
                  "path": "/metahub/api/accounts/{accountId}/..."
                }
              }
            }
          },
          "201": {
            "description": "Association created successfully",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AssociationResponse"
                }
              }
            }
          },
          "409": {
            "description": "Conflict - resource already exists or invalid state transition",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "example": {
                    "value": "{\n  \"error\" : \"ASSOCIATION_ALREADY_EXISTS\",\n  \"message\" : \"Resource already exists or invalid state transition\",\n  \"timestamp\" : \"2026-06-09T10:30:00\",\n  \"path\" : \"/metahub/api/accounts/abc123/associations\"\n}"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/accounts/{accountId}/glossaries/{glossaryId}/endorsement-status/history": {
      "get": {
        "tags": [
          "Glossaries"
        ],
        "summary": "Get glossary endorsement history",
        "description": "The GET Glossary Endorsement History operation retrieves the endorsement history. The endorsement history is a record of all status transitions for the glossary.\n\nRequired privileges: META_VIEW_GLOSSARY_ENDORSEMENT_HISTORY",
        "operationId": "getEndorsementStatusHistory",
        "parameters": [
          {
            "name": "accountId",
            "in": "path",
            "description": "Account ID",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "abc123"
          },
          {
            "name": "glossaryId",
            "in": "path",
            "description": "Glossary ID",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "example": "123e4567-e89b-12d3-a456-426614174000"
          },
          {
            "name": "page",
            "in": "query",
            "description": "Page number",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 1,
              "minimum": 1
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Max results per page",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 20,
              "maximum": 100,
              "minimum": 1
            }
          }
        ],
        "responses": {
          "400": {
            "description": "Bad request - invalid input parameters",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "example": {
                  "error": "400 BAD_REQUEST",
                  "message": "Invalid input parameters",
                  "timestamp": "2026-06-09T10:30:00",
                  "path": "/metahub/api/accounts/{accountId}/..."
                }
              }
            }
          },
          "401": {
            "description": "Authentication required. Please provide valid credentials",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "example": {
                  "error": "401 UNAUTHORIZED",
                  "message": "Invalid or expired authentication token",
                  "timestamp": "2026-06-09T10:30:00",
                  "path": "/metahub/api/accounts/{accountId}/..."
                }
              }
            }
          },
          "403": {
            "description": "Access denied. Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "example": {
                  "error": "403 FORBIDDEN",
                  "message": "Access denied. Insufficient permissions",
                  "timestamp": "2026-06-09T10:30:00",
                  "path": "/metahub/api/accounts/{accountId}/..."
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error occurred. Please try again later",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "example": {
                  "error": "500 INTERNAL_SERVER_ERROR",
                  "message": "An unexpected error occurred. Please try again later",
                  "timestamp": "2026-06-09T10:30:00",
                  "path": "/metahub/api/accounts/{accountId}/..."
                }
              }
            }
          },
          "200": {
            "description": "Successfully retrieved endorsement status history",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedGlossaryEndorsementHistory"
                }
              }
            }
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "example": {
                    "value": "{\n  \"error\" : \"GLOSSARY_NOT_FOUND\",\n  \"message\" : \"Glossary not found with id: 123e4567-e89b-12d3-a456-426614174000\",\n  \"timestamp\" : \"2026-06-09T10:30:00\",\n  \"path\" : \"/metahub/api/accounts/abc123/glossaries/123e4567-e89b-12d3-a456-426614174000/endorsement-status/history\"\n}"
                  }
                }
              }
            }
          }
        }
      }
    },
    "/api/accounts/{accountId}/glossaries/search": {
      "get": {
        "tags": [
          "Glossaries"
        ],
        "summary": "Search glossaries",
        "description": "Search for glossaries by key, endorsement status, and publication status.\n\nRequired privileges: META_VIEW_GLOSSARY",
        "operationId": "searchGlossaries",
        "parameters": [
          {
            "name": "accountId",
            "in": "path",
            "description": "Account ID",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "abc123"
          },
          {
            "name": "key",
            "in": "query",
            "description": "Search keyword",
            "required": true,
            "schema": {
              "type": "string",
              "minLength": 1
            }
          },
          {
            "name": "endorsementStatus",
            "in": "query",
            "description": "Glossary endorsement status",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "PENDING",
                "DEPRECATED",
                "ENDORSED"
              ]
            }
          },
          {
            "name": "status",
            "in": "query",
            "description": "Published status",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "DRAFT",
                "PUBLISHED"
              ]
            }
          },
          {
            "name": "page",
            "in": "query",
            "description": "Page number",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 1,
              "minimum": 1
            }
          },
          {
            "name": "limit",
            "in": "query",
            "description": "Max results per page",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 20,
              "maximum": 100,
              "minimum": 1
            }
          }
        ],
        "responses": {
          "400": {
            "description": "Bad request - invalid input parameters",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "example": {
                  "error": "400 BAD_REQUEST",
                  "message": "Invalid input parameters",
                  "timestamp": "2026-06-09T10:30:00",
                  "path": "/metahub/api/accounts/{accountId}/..."
                }
              }
            }
          },
          "401": {
            "description": "Authentication required. Please provide valid credentials",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "example": {
                  "error": "401 UNAUTHORIZED",
                  "message": "Invalid or expired authentication token",
                  "timestamp": "2026-06-09T10:30:00",
                  "path": "/metahub/api/accounts/{accountId}/..."
                }
              }
            }
          },
          "403": {
            "description": "Access denied. Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "example": {
                  "error": "403 FORBIDDEN",
                  "message": "Access denied. Insufficient permissions",
                  "timestamp": "2026-06-09T10:30:00",
                  "path": "/metahub/api/accounts/{accountId}/..."
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error occurred. Please try again later",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "example": {
                  "error": "500 INTERNAL_SERVER_ERROR",
                  "message": "An unexpected error occurred. Please try again later",
                  "timestamp": "2026-06-09T10:30:00",
                  "path": "/metahub/api/accounts/{accountId}/..."
                }
              }
            }
          },
          "200": {
            "description": "Search results with relevance scoring",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PagedGlossaryResponse"
                }
              }
            }
          }
        }
      }
    },
    "/api/accounts/{accountId}/associations/{id}": {
      "delete": {
        "tags": [
          "Associations"
        ],
        "summary": "Delete association",
        "description": "Delete a glossary association.\n\nRequired privileges: META_DELETE_ASSOCIATION",
        "operationId": "deleteAssociation",
        "parameters": [
          {
            "name": "accountId",
            "in": "path",
            "description": "Account ID",
            "required": true,
            "schema": {
              "type": "string"
            },
            "example": "abc123"
          },
          {
            "name": "id",
            "in": "path",
            "description": "Association ID",
            "required": true,
            "schema": {
              "type": "string",
              "format": "uuid"
            },
            "example": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
          }
        ],
        "responses": {
          "400": {
            "description": "Bad request - invalid input parameters",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "example": {
                  "error": "400 BAD_REQUEST",
                  "message": "Invalid input parameters",
                  "timestamp": "2026-06-09T10:30:00",
                  "path": "/metahub/api/accounts/{accountId}/..."
                }
              }
            }
          },
          "401": {
            "description": "Authentication required. Please provide valid credentials",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "example": {
                  "error": "401 UNAUTHORIZED",
                  "message": "Invalid or expired authentication token",
                  "timestamp": "2026-06-09T10:30:00",
                  "path": "/metahub/api/accounts/{accountId}/..."
                }
              }
            }
          },
          "403": {
            "description": "Access denied. Insufficient permissions",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "example": {
                  "error": "403 FORBIDDEN",
                  "message": "Access denied. Insufficient permissions",
                  "timestamp": "2026-06-09T10:30:00",
                  "path": "/metahub/api/accounts/{accountId}/..."
                }
              }
            }
          },
          "500": {
            "description": "An unexpected error occurred. Please try again later",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "example": {
                  "error": "500 INTERNAL_SERVER_ERROR",
                  "message": "An unexpected error occurred. Please try again later",
                  "timestamp": "2026-06-09T10:30:00",
                  "path": "/metahub/api/accounts/{accountId}/..."
                }
              }
            }
          },
          "204": {
            "description": "Association deleted successfully"
          },
          "404": {
            "description": "Resource not found",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "example": {
                    "value": "{\n  \"error\" : \"ASSOCIATION_NOT_FOUND\",\n  \"message\" : \"Association not found with ID: 123e4567-e89b-12d3-a456-426614174000 for account: abc123\",\n  \"timestamp\" : \"2026-06-09T10:30:00\",\n  \"path\" : \"/metahub/api/accounts/abc123/associations/123e4567-e89b-12d3-a456-426614174000\"\n}"
                  }
                }
              }
            }
          },
          "409": {
            "description": "Conflict - resource already exists or invalid state transition",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ErrorResponse"
                },
                "examples": {
                  "example": {
                    "value": "{\n  \"error\" : \"ASSOCIATION_ALREADY_EXISTS\",\n  \"message\" : \"Resource already exists or invalid state transition\",\n  \"timestamp\" : \"2026-06-09T10:30:00\",\n  \"path\" : \"/metahub/api/accounts/abc123/associations\"\n}"
                  }
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "ErrorResponse": {
        "type": "object",
        "description": "Standard error response returned for 4xx and 5xx HTTP responses, including the error code, message, timestamp, and request path.",
        "properties": {
          "error": {
            "type": "string",
            "description": "Error code or HTTP status identifying the type of error",
            "example": "404 NOT_FOUND"
          },
          "message": {
            "type": "string",
            "description": "Human-readable description of what went wrong",
            "example": "Glossary not found with id: 123e4567-e89b-12d3-a456-426614174000"
          },
          "timestamp": {
            "type": "string",
            "format": "date-time",
            "description": "Timestamp of when the error occurred",
            "example": "2026-06-09T10:30:00"
          },
          "path": {
            "type": "string",
            "description": "Request path that triggered the error",
            "example": "/metahub/api/accounts/abc123/glossaries/123e4567-e89b-12d3-a456-426614174000"
          }
        }
      },
      "UpdateGlossaryRequest": {
        "type": "object",
        "description": "Request body for updating an existing business glossary term's name, purpose, content, or publication status.",
        "properties": {
          "name": {
            "type": "string",
            "description": "Updated name of the glossary. Optional field.",
            "example": "Customer Data Glossary - Updated",
            "maxLength": 150,
            "minLength": 0
          },
          "purpose": {
            "type": "string",
            "description": "Updated description or business purpose of the glossary. Optional field.",
            "example": "Expanded scope for new regions.",
            "maxLength": 1000,
            "minLength": 0
          },
          "content": {
            "type": "string",
            "description": "Updated glossary content or term definitions. Optional field. Supports markdown syntax and has a file size of 10 MB.",
            "example": "Updated term list with additional definitions."
          },
          "status": {
            "type": "string",
            "description": "Glossary publication status.",
            "enum": [
              "DRAFT",
              "PUBLISHED"
            ],
            "example": "PUBLISHED"
          },
          "updatedBy": {
            "type": "string",
            "description": "Email or username of the user performing the update. Optional field.",
            "example": "editor@boomi.com"
          }
        }
      },
      "GlossaryResponse": {
        "type": "object",
        "description": "Represents a business glossary term, including its name, type, purpose, publication status, endorsement status, and audit metadata.",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "Unique identifier for the glossary.",
            "example": "123e4567-e89b-12d3-a456-426614174000"
          },
          "accountId": {
            "type": "string",
            "description": "The Boomi account ID associated with the glossary.",
            "example": "abc123"
          },
          "name": {
            "type": "string",
            "description": "Name of the glossary.",
            "example": "Customer Data Glossary - Updated"
          },
          "type": {
            "type": "string",
            "description": "Glossary type.",
            "enum": [
              "BUSINESS_GLOSSARY"
            ],
            "example": "BUSINESS_GLOSSARY"
          },
          "purpose": {
            "type": "string",
            "description": "Describes the purpose or business intent of the glossary.",
            "example": "Expanded scope for new regions."
          },
          "status": {
            "type": "string",
            "description": "Glossary publication status.",
            "enum": [
              "DRAFT",
              "PUBLISHED"
            ],
            "example": "PUBLISHED"
          },
          "endorsementStatus": {
            "type": "string",
            "description": "Current endorsement state of the glossary.",
            "enum": [
              "PENDING",
              "DEPRECATED",
              "ENDORSED"
            ],
            "example": "ENDORSED"
          },
          "createdBy": {
            "type": "string",
            "description": "Email or username of the user who created the glossary.",
            "example": "admin@boomi.com"
          },
          "updatedBy": {
            "type": "string",
            "description": "Email or username of the user who last updated the glossary.",
            "example": "editor@boomi.com"
          },
          "content": {
            "type": "string",
            "description": "Text content or term definitions within the glossary. Supports markdown syntax and has a file size of 10 MB.",
            "example": "Updated term list with additional definitions."
          },
          "contentId": {
            "type": "string",
            "description": "Identifier for the glossary content resource.",
            "example": "xyz789"
          },
          "contentServiceUrl": {
            "type": "string",
            "description": "Full public base URL of the content-service for the glossary's account region (incl. scheme and path). Clients call the content-service directly using this URL.",
            "example": "https://content.example.com/content"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "description": "ISO 8601 timestamp for when the glossary was created.",
            "example": "2025-11-10T09:00:00"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time",
            "description": "ISO 8601 timestamp for when the glossary was last updated.",
            "example": "2025-11-18T12:00:00"
          }
        }
      },
      "CreateGlossaryRequest": {
        "type": "object",
        "description": "Request body for creating a new business glossary term within an account.",
        "properties": {
          "name": {
            "type": "string",
            "description": "Name of the glossary to be created.",
            "example": "Customer Data Glossary",
            "maxLength": 150,
            "minLength": 0
          },
          "type": {
            "type": "string",
            "description": "Glossary type. Optional field.",
            "enum": [
              "BUSINESS_GLOSSARY"
            ],
            "example": "BUSINESS_GLOSSARY"
          },
          "purpose": {
            "type": "string",
            "description": "Description or business purpose of the glossary. Optional field.",
            "example": "Defines and manages customer-related terminology.",
            "maxLength": 1000,
            "minLength": 0
          },
          "content": {
            "type": "string",
            "description": "Glossary content or definitions. Optional field. Supports markdown syntax and has a file size of 10 MB.",
            "example": "Detailed term definitions and data ownership info."
          },
          "status": {
            "type": "string",
            "description": "Glossary publication status.",
            "enum": [
              "DRAFT",
              "PUBLISHED"
            ],
            "example": "DRAFT"
          },
          "createdBy": {
            "type": "string",
            "description": "Email or username of the user creating the glossary.",
            "example": "user@boomi.com"
          },
          "updatedBy": {
            "type": "string",
            "description": "Email or username of the user who initially updates or owns the glossary.",
            "example": "user@boomi.com"
          }
        },
        "required": [
          "name",
          "status"
        ]
      },
      "UpdateEndorsementRequest": {
        "type": "object",
        "description": "Request body for updating the endorsement status of a glossary term, with an optional comment explaining the change.",
        "properties": {
          "endorsementStatus": {
            "type": "string",
            "description": "Required. Endorsement status.",
            "enum": [
              "PENDING",
              "DEPRECATED",
              "ENDORSED"
            ],
            "example": "ENDORSED"
          },
          "comment": {
            "type": "string",
            "description": "A note or explanation describing the reason for the endorsement status change.",
            "example": "Approved by governance team",
            "minLength": 1
          }
        },
        "required": [
          "endorsementStatus"
        ]
      },
      "GlossaryEndorsementHistoryResponse": {
        "type": "object",
        "description": "Represents a single endorsement status change event for a glossary, capturing the previous status, new status, who changed it, and when.",
        "properties": {
          "accountId": {
            "type": "string",
            "description": "Account ID.",
            "example": "abc123"
          },
          "fromStatus": {
            "type": "string",
            "description": "The status that was changed.",
            "enum": [
              "PENDING",
              "DEPRECATED",
              "ENDORSED"
            ],
            "example": "PENDING"
          },
          "toStatus": {
            "type": "string",
            "description": "The desired status update.",
            "enum": [
              "PENDING",
              "DEPRECATED",
              "ENDORSED"
            ],
            "example": "ENDORSED"
          },
          "comment": {
            "type": "string",
            "description": "Note left by the user who changed the endorsement status.",
            "example": "Approved by data governance team."
          },
          "changedBy": {
            "type": "string",
            "description": "Last user to change the glossary endorsement status.",
            "example": "admin@boomi.com"
          },
          "changedAt": {
            "type": "string",
            "format": "date-time",
            "description": "Date and time the change was made.",
            "example": "2025-11-18T22:51:12"
          }
        }
      },
      "CreateAssociationRequest": {
        "type": "object",
        "description": "Request body for creating a new association between a glossary term and an external technical asset.",
        "properties": {
          "assetType": {
            "type": "string",
            "description": "Asset type to associate. Supported values (case-insensitive): DATAHUB_MODEL, AI_AGENT.",
            "enum": [
              "DATAHUB_MODEL",
              "AI_AGENT"
            ],
            "example": "DATAHUB_MODEL",
            "minLength": 1
          },
          "assetExternalId": {
            "type": "string",
            "description": "Asset ID in the external system such as the universe component ID.",
            "example": "component-uuid-123",
            "minLength": 1
          },
          "glossaryId": {
            "type": "string",
            "format": "uuid",
            "description": "Glossary ID.",
            "example": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
          },
          "title": {
            "type": "string",
            "description": "Display title of the asset to associate. Optional.",
            "example": "Customer Integration Process"
          },
          "mode": {
            "type": "string",
            "description": "Interaction mode of the asset. Optional; case-insensitive. Supported values: conversational, structured.",
            "enum": [
              "conversational",
              "structured"
            ],
            "example": "conversational"
          }
        },
        "required": [
          "assetExternalId",
          "assetType",
          "glossaryId"
        ]
      },
      "AssetSummary": {
        "type": "object",
        "description": "Summary representation of an external technical asset (such as a DataHub model or AI agent) that can be associated with a glossary term.",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "Asset summary internal ID.",
            "example": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
          },
          "externalId": {
            "type": "string",
            "description": "Asset summary external system ID.",
            "example": "component-uuid-123"
          },
          "type": {
            "type": "string",
            "description": "Asset summary asset type.",
            "example": "PROCESS"
          },
          "title": {
            "type": "string",
            "description": "Asset summary display title.",
            "example": "Customer Integration Process"
          },
          "mode": {
            "type": "string",
            "description": "Asset summary interaction mode.",
            "example": "conversational"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "description": "ISO 8601 timestamp for when the asset summary was created.",
            "example": "2025-11-10T09:00:00"
          },
          "createdBy": {
            "type": "string",
            "description": "Email or username of the user who created the asset summary.",
            "example": "user@boomi.com"
          }
        }
      },
      "AssociationResponse": {
        "type": "object",
        "description": "Represents an association between a business glossary term and an external technical asset.",
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "Association ID.",
            "example": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
          },
          "accountId": {
            "type": "string",
            "description": "Boomi account ID associated with the glossary.",
            "example": "abc123"
          },
          "createdBy": {
            "type": "string",
            "description": "Email or username of the user who created the association.",
            "example": "user@boomi.com"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "description": "ISO 8601 timestamp for when the association was created.",
            "example": "2025-11-10T09:00:00"
          },
          "updatedBy": {
            "type": "string",
            "description": "User who last updated the association.",
            "example": "editor@boomi.com"
          },
          "updatedAt": {
            "type": "string",
            "format": "date-time",
            "description": "ISO 8601 timestamp for when the association was last updated.",
            "example": "2025-11-18T12:00:00"
          },
          "glossarySummary": {
            "$ref": "#/components/schemas/GlossaryResponse",
            "description": "Linked glossary summary information."
          },
          "assetSummary": {
            "$ref": "#/components/schemas/AssetSummary",
            "description": "Summary information for the associated asset."
          }
        }
      },
      "PagedGlossaryResponse": {
        "type": "object",
        "description": "Paginated response containing a list of business glossary terms.",
        "properties": {
          "data": {
            "type": "array",
            "description": "Contains a list of glossary records. Each item includes glossary details.",
            "items": {
              "$ref": "#/components/schemas/GlossaryResponse"
            }
          },
          "currentPage": {
            "type": "integer",
            "format": "int32",
            "description": "The current page number of the paginated response.",
            "example": 1
          },
          "totalPages": {
            "type": "integer",
            "format": "int32",
            "description": "Total number of pages available.",
            "example": 5
          },
          "totalElements": {
            "type": "integer",
            "format": "int64",
            "description": "Total number of items across all pages.",
            "example": 42
          },
          "size": {
            "type": "integer",
            "format": "int32",
            "description": "Number of items per page.",
            "example": 20
          },
          "hasNext": {
            "type": "boolean",
            "description": "Indicates whether another page exists after the current one.",
            "example": true
          },
          "hasPrevious": {
            "type": "boolean",
            "description": "Indicates whether a page exists before the current one.",
            "example": false
          },
          "last": {
            "type": "boolean",
            "description": "Indicates the end of the paged glossary.",
            "example": false
          },
          "first": {
            "type": "boolean",
            "description": "Indicates the beginning of the paged glossary.",
            "example": true
          }
        }
      },
      "PagedGlossaryEndorsementHistory": {
        "type": "object",
        "description": "Paginated response containing the endorsement status change history for a glossary term.",
        "properties": {
          "data": {
            "type": "array",
            "description": "Object containing information on endorsement status.",
            "items": {
              "$ref": "#/components/schemas/GlossaryEndorsementHistoryResponse"
            }
          },
          "currentPage": {
            "type": "integer",
            "format": "int32",
            "description": "Current page.",
            "example": 1
          },
          "totalPages": {
            "type": "integer",
            "format": "int32",
            "description": "Total number of pages.",
            "example": 5
          },
          "totalElements": {
            "type": "integer",
            "format": "int64",
            "description": "Total items in the response. An item is a history entry.",
            "example": 42
          },
          "size": {
            "type": "integer",
            "format": "int32",
            "description": "Page size. This is the number of items a page can hold for pagination.",
            "example": 20
          },
          "last": {
            "type": "boolean",
            "description": "Indicates the end of the paged endorsement history.",
            "example": false
          },
          "first": {
            "type": "boolean",
            "description": "Indicates the beginning of the paged endorsement history.",
            "example": true
          },
          "hasNext": {
            "type": "boolean",
            "description": "True if there is a next page of results.",
            "example": true
          },
          "hasPrevious": {
            "type": "boolean",
            "description": "True if there is a previous page of results.",
            "example": false
          }
        }
      },
      "PagedAssociationResponse": {
        "type": "object",
        "description": "Paginated response containing a list of glossary-to-asset associations.",
        "properties": {
          "associations": {
            "type": "array",
            "description": "Contains a list of association items.",
            "items": {
              "$ref": "#/components/schemas/AssociationResponse"
            }
          },
          "page": {
            "type": "integer",
            "format": "int32",
            "description": "Current page count.",
            "example": 1
          },
          "limit": {
            "type": "integer",
            "format": "int32",
            "description": "Max count of items per page.",
            "example": 20
          },
          "totalElements": {
            "type": "integer",
            "format": "int64",
            "description": "Total count of elements available.",
            "example": 42
          },
          "totalPages": {
            "type": "integer",
            "format": "int32",
            "description": "Total count of pages available.",
            "example": 3
          }
        }
      }
    },
    "securitySchemes": {
      "jwt": {
        "type": "http",
        "description": "JWT Bearer token authentication.",
        "scheme": "bearer",
        "bearerFormat": "JWT"
      }
    }
  }
}