openapi: 3.0.1 info: title: OpenMetadata APIs Agent Executions Metadata API description: Common types and API definition for OpenMetadata contact: name: OpenMetadata url: https://open-metadata.org email: openmetadata-dev@googlegroups.com license: name: Apache 2.0 url: https://www.apache.org/licenses/LICENSE-2.0 version: '1.13' servers: - url: /api description: Current Host - url: http://localhost:8585/api description: Endpoint URL security: - BearerAuth: [] tags: - name: Metadata description: 'These APIs are for managing custom property definitions in OpenMetadata. Use these APIs to create custom properties with predefined data types (String, Integer, Date, etc.) that extend entity metadata. Note: This does not support creating new custom data types - only custom properties using existing OpenMetadata data types.' paths: /v1/metadata/types/{id}: get: tags: - Metadata summary: Get a type description: Get a type by `id`. operationId: getTypeByID parameters: - name: id in: path description: Id of the type required: true schema: type: string format: uuid - name: fields in: query description: Fields requested in the returned resource schema: type: string example: customProperties - name: include in: query description: Include all, deleted, or non-deleted entities. schema: type: string default: non-deleted enum: - all - deleted - non-deleted - name: includeRelations in: query description: 'Per-relation include control. Format: field:value,field2:value2. Example: owners:non-deleted,followers:all. Valid values: all, deleted, non-deleted. If not specified for a field, uses the entity''s include value.' schema: type: string example: owners:non-deleted,followers:all responses: '200': description: The type content: application/json: schema: $ref: '#/components/schemas/Type' '404': description: Type for instance {id} is not found put: tags: - Metadata summary: Add or update a Property to an entity description: Add or update a property to an entity type. Properties can only be added to entity type and not property type. operationId: addProperty parameters: - name: id in: path description: Id of the type required: true schema: type: string format: uuid requestBody: content: application/json: schema: $ref: '#/components/schemas/CustomProperty' responses: '200': description: OK '404': description: type for instance {id} is not found delete: tags: - Metadata summary: Delete a type by id description: Delete a type by `id`. operationId: deleteType parameters: - name: id in: path description: Id of the type required: true schema: type: string format: uuid responses: '200': description: OK '404': description: type for instance {id} is not found patch: tags: - Metadata summary: Update a type description: Update an existing type using JsonPatch. externalDocs: description: JsonPatch RFC url: https://tools.ietf.org/html/rfc6902 operationId: patchType_1 parameters: - name: id in: path description: Id of the type required: true schema: type: string format: uuid requestBody: description: JsonPatch with array of operations content: application/json-patch+json: schema: $ref: '#/components/schemas/JsonPatch' example: '[{op:remove, path:/a},{op:add, path: /b, value: val}]' responses: default: description: default response content: application/json: {} /v1/metadata/types: get: tags: - Metadata summary: List types description: Get a list of types. Use cursor-based pagination to limit the number entries in the list using `limit` and `before` or `after` query params. operationId: listTypes parameters: - name: category in: query description: Filter types by metadata type category. schema: type: string example: Property, Entity - name: limit in: query description: Limit the number types returned. (1 to 1000000, default = 10) schema: maximum: 1000000 minimum: 0 type: integer format: int32 default: 10 - name: before in: query description: Returns list of types before this cursor schema: type: string - name: after in: query description: Returns list of types after this cursor schema: type: string responses: '200': description: List of types content: application/json: schema: $ref: '#/components/schemas/TypeList' put: tags: - Metadata summary: Create or update a type description: Create a new type, if it does not exist or update an existing type. operationId: createOrUpdate requestBody: content: application/json: schema: $ref: '#/components/schemas/CreateType' responses: '200': description: The type content: application/json: schema: $ref: '#/components/schemas/Type' '400': description: Bad request post: tags: - Metadata summary: Create a custom property definition description: 'Create a new custom property definition that can be applied to entities. This creates a property template using existing OpenMetadata data types (String, Integer, Date, Enum, etc.). The created property can then be used to extend metadata for data assets like tables, dashboards, and pipelines. Note: This does not create new data types - only custom property definitions.' operationId: createType requestBody: content: application/json: schema: $ref: '#/components/schemas/CreateType' responses: '200': description: The custom property definition content: application/json: schema: $ref: '#/components/schemas/Type' '400': description: Bad request /v1/metadata/types/name/{name}: get: tags: - Metadata summary: Get a type by name description: Get a type by name. operationId: getTypeByName parameters: - name: name in: path description: Name of the type required: true schema: type: string - name: fields in: query description: Fields requested in the returned resource schema: type: string example: customProperties - name: include in: query description: Include all, deleted, or non-deleted entities. schema: type: string default: non-deleted enum: - all - deleted - non-deleted responses: '200': description: The type content: application/json: schema: $ref: '#/components/schemas/Type' '404': description: Type for instance {name} is not found delete: tags: - Metadata summary: Delete a type by name description: Delete a type by `name`. operationId: deleteTypeByName parameters: - name: name in: path description: Name of the type required: true schema: type: string responses: '200': description: OK '404': description: type for instance {name} is not found /v1/metadata/types/async/{id}: delete: tags: - Metadata summary: Asynchronously delete a type by id description: Asynchronously delete a type by `id`. operationId: deleteTypeAsync parameters: - name: id in: path description: Id of the type required: true schema: type: string format: uuid responses: '200': description: OK '404': description: type for instance {id} is not found /v1/metadata/types/customProperties: get: tags: - Metadata operationId: getAllCustomPropertiesByEntityType responses: default: description: default response content: application/json: {} /v1/metadata/types/name/{entityType}/customProperties: get: tags: - Metadata summary: Get custom properties for an entity type description: Get custom properties defined for a specific entity type by name. operationId: getCustomPropertiesByEntityType parameters: - name: entityType in: path description: Name of the entity type required: true schema: type: string - name: include in: query description: Include all, deleted, or non-deleted entities. schema: type: string default: non-deleted enum: - all - deleted - non-deleted responses: '200': description: List of custom properties for the entity type content: application/json: schema: $ref: '#/components/schemas/CustomProperty' '404': description: Entity type {entityType} is not found /v1/metadata/types/fields/{entityType}: get: tags: - Metadata operationId: getEntityTypeFields parameters: - name: entityType in: path required: true schema: type: string - name: include in: query schema: type: string default: non-deleted enum: - all - deleted - non-deleted responses: default: description: default response content: application/json: {} /v1/metadata/types/{id}/versions/{version}: get: tags: - Metadata summary: Get a version of the types description: Get a version of the type by given `id` operationId: getSpecificTypeVersion parameters: - name: id in: path description: Id of the type required: true schema: type: string format: uuid - name: version in: path description: type version number in the form `major`.`minor` required: true schema: type: string example: 0.1 or 1.1 responses: '200': description: types content: application/json: schema: $ref: '#/components/schemas/Type' '404': description: Type for instance {id} and version {version} is not found /v1/metadata/types/history: get: tags: - Metadata summary: List all entity versions within a time range description: 'Get a paginated list of all entity versions within a given time range specified by `startTs` and `endTs` in milliseconds since epoch. ' operationId: listAllEntityVersionsByTimestamp_62 parameters: - name: startTs in: query description: Start timestamp in milliseconds since epoch required: true schema: type: integer format: int64 - name: endTs in: query description: End timestamp in milliseconds since epoch required: true schema: type: integer format: int64 - name: limit in: query description: Limit the number of entity returned (1 to 1000000, default = 10) schema: maximum: 500 minimum: 1 type: integer format: int32 default: 10 - name: before in: query description: Returns list of entity versions before this cursor schema: type: string - name: after in: query description: Returns list of entity versions after this cursor schema: type: string responses: '200': description: List of all versions content: application/json: schema: $ref: '#/components/schemas/ResultList' /v1/metadata/types/{id}/versions: get: tags: - Metadata summary: List type versions description: Get a list of all the versions of a type identified by `id` operationId: listAllTypeVersion parameters: - name: id in: path description: Id of the type required: true schema: type: string format: uuid responses: '200': description: List of type versions content: application/json: schema: $ref: '#/components/schemas/EntityHistory' /v1/metadata/types/name/{fqn}: patch: tags: - Metadata summary: Update a type using name. description: Update an existing type using JsonPatch. externalDocs: description: JsonPatch RFC url: https://tools.ietf.org/html/rfc6902 operationId: patchType parameters: - name: fqn in: path description: Name of the type required: true schema: type: string requestBody: description: JsonPatch with array of operations content: application/json-patch+json: schema: $ref: '#/components/schemas/JsonPatch' example: '[{op:remove, path:/a},{op:add, path: /b, value: val}]' responses: default: description: default response content: application/json: {} components: schemas: Type: required: - description - name type: object properties: id: type: string format: uuid name: pattern: (?U)^[\w]+$ type: string fullyQualifiedName: maxLength: 3072 minLength: 1 type: string displayName: type: string description: type: string category: type: string enum: - field - entity nameSpace: type: string schema: type: string customProperties: type: array items: $ref: '#/components/schemas/CustomProperty' version: type: number format: double updatedAt: type: integer format: int64 updatedBy: type: string impersonatedBy: type: string href: type: string format: uri changeDescription: $ref: '#/components/schemas/ChangeDescription' incrementalChangeDescription: $ref: '#/components/schemas/ChangeDescription' domains: type: array items: $ref: '#/components/schemas/EntityReference' dataProducts: type: array items: $ref: '#/components/schemas/EntityReference' owners: type: array items: $ref: '#/components/schemas/EntityReference' provider: type: string enum: - system - user - automation extension: type: object children: type: array items: $ref: '#/components/schemas/EntityReference' service: $ref: '#/components/schemas/EntityReference' style: $ref: '#/components/schemas/Style' tags: type: array items: $ref: '#/components/schemas/TagLabel' followers: type: array items: $ref: '#/components/schemas/EntityReference' experts: type: array items: $ref: '#/components/schemas/EntityReference' reviewers: type: array items: $ref: '#/components/schemas/EntityReference' deleted: type: boolean dataContract: $ref: '#/components/schemas/EntityReference' usageSummary: $ref: '#/components/schemas/UsageDetails' entityStatus: type: string enum: - Draft - In Review - Approved - Archived - Deprecated - Rejected - Unprocessed votes: $ref: '#/components/schemas/Votes' lifeCycle: $ref: '#/components/schemas/LifeCycle' certification: $ref: '#/components/schemas/AssetCertification' TagLabelRecognizerMetadata: required: - recognizerId - recognizerName - score type: object properties: recognizerId: type: string format: uuid recognizerName: type: string score: type: number format: double target: type: string enum: - content - column_name patterns: type: array items: $ref: '#/components/schemas/PatternMatch' CustomPropertyConfig: type: object properties: config: type: object ChangeSummaryMap: type: object AccessDetails: required: - timestamp type: object properties: timestamp: type: integer format: int64 accessedBy: $ref: '#/components/schemas/EntityReference' accessedByAProcess: type: string FieldChange: type: object properties: name: type: string oldValue: type: object newValue: type: object TypeList: required: - data type: object properties: data: type: array items: $ref: '#/components/schemas/Type' paging: $ref: '#/components/schemas/Paging' errors: type: array items: $ref: '#/components/schemas/EntityError' warningsCount: type: integer format: int32 warnings: type: array items: $ref: '#/components/schemas/EntityError' CoverImage: type: object properties: url: type: string position: type: string LifeCycle: type: object properties: created: $ref: '#/components/schemas/AccessDetails' updated: $ref: '#/components/schemas/AccessDetails' accessed: $ref: '#/components/schemas/AccessDetails' EntityHistory: required: - entityType - versions type: object properties: entityType: type: string versions: type: array items: type: object AssetCertification: required: - appliedDate - expiryDate - tagLabel type: object properties: tagLabel: $ref: '#/components/schemas/TagLabel' appliedDate: type: integer format: int64 expiryDate: type: integer format: int64 ResultList: required: - data type: object properties: data: type: array items: type: object paging: $ref: '#/components/schemas/Paging' errors: type: array items: $ref: '#/components/schemas/EntityError' warningsCount: type: integer format: int32 warnings: type: array items: $ref: '#/components/schemas/EntityError' Paging: required: - total type: object properties: before: type: string after: type: string offset: type: integer format: int32 limit: type: integer format: int32 total: type: integer format: int32 JsonPatch: type: object ChangeDescription: type: object properties: fieldsAdded: type: array items: $ref: '#/components/schemas/FieldChange' fieldsUpdated: type: array items: $ref: '#/components/schemas/FieldChange' fieldsDeleted: type: array items: $ref: '#/components/schemas/FieldChange' previousVersion: type: number format: double changeSummary: $ref: '#/components/schemas/ChangeSummaryMap' CustomProperty: required: - description - name - propertyType type: object properties: name: maxLength: 256 minLength: 1 pattern: ^[A-Za-z0-9][A-Za-z0-9 _\-.,;%#@!'(){}\[\]|=+?`]*$ type: string displayName: type: string description: type: string propertyType: $ref: '#/components/schemas/EntityReference' customPropertyConfig: $ref: '#/components/schemas/CustomPropertyConfig' UsageStats: required: - count type: object properties: count: minimum: 0 exclusiveMinimum: false type: integer format: int32 percentileRank: type: number format: double CreateType: required: - description - name - nameSpace - schema type: object properties: name: pattern: (?U)^[\w]+$ type: string displayName: type: string description: type: string nameSpace: type: string category: type: string enum: - field - entity schema: type: string domains: type: array items: type: string owners: type: array items: $ref: '#/components/schemas/EntityReference' extension: type: object tags: type: array items: $ref: '#/components/schemas/TagLabel' reviewers: type: array items: $ref: '#/components/schemas/EntityReference' dataProducts: type: array items: type: string lifeCycle: $ref: '#/components/schemas/LifeCycle' Style: type: object properties: color: type: string iconURL: type: string coverImage: $ref: '#/components/schemas/CoverImage' Votes: type: object properties: upVotes: type: integer format: int32 downVotes: type: integer format: int32 upVoters: type: array items: $ref: '#/components/schemas/EntityReference' downVoters: type: array items: $ref: '#/components/schemas/EntityReference' TagLabel: required: - labelType - source - state - tagFQN type: object properties: tagFQN: type: string name: type: string displayName: type: string description: type: string style: $ref: '#/components/schemas/Style' source: type: string enum: - Classification - Glossary labelType: type: string enum: - Manual - Propagated - Automated - Derived - Generated state: type: string enum: - Suggested - Confirmed href: type: string format: uri reason: type: string appliedAt: type: string format: date-time appliedBy: type: string metadata: $ref: '#/components/schemas/TagLabelMetadata' PatternMatch: required: - name - score type: object properties: name: type: string regex: type: string score: type: number format: double TagLabelMetadata: type: object properties: recognizer: $ref: '#/components/schemas/TagLabelRecognizerMetadata' expiryDate: type: integer format: int64 EntityError: type: object properties: message: type: string entity: type: object EntityReference: required: - id - type type: object properties: id: type: string format: uuid type: type: string name: type: string fullyQualifiedName: type: string description: type: string displayName: type: string deleted: type: boolean inherited: type: boolean href: type: string format: uri UsageDetails: required: - dailyStats - date type: object properties: dailyStats: $ref: '#/components/schemas/UsageStats' weeklyStats: $ref: '#/components/schemas/UsageStats' monthlyStats: $ref: '#/components/schemas/UsageStats' date: type: string securitySchemes: BearerAuth: type: http scheme: bearer bearerFormat: JWT