openapi: 3.0.1 info: title: OpenMetadata APIs Agent Executions Teams 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: Teams description: A `Team` is a group of zero or more users and/or other teams. Teams can own zero or more data assets. Hierarchical teams are supported `Organization` -> `BusinessUnit` -> `Division` -> `Department`. paths: /v1/teams/{name}/assets/add: put: tags: - Teams summary: Bulk Add Assets description: Bulk Add Assets operationId: bulkAddAssets_2 parameters: - name: name in: path description: Name of the Team required: true schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/BulkAssets' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/BulkOperationResult' '404': description: model for instance {id} is not found /v1/teams/{name}/assets/remove: put: tags: - Teams summary: Bulk Remove Assets description: Bulk Remove Assets operationId: bulkRemoveAssets_2 parameters: - name: name in: path description: Name of the Team required: true schema: type: string requestBody: content: application/json: schema: $ref: '#/components/schemas/BulkAssets' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/ChangeEvent' '404': description: model for instance {id} is not found /v1/teams: get: tags: - Teams summary: List teams description: Get a list of teams. Use `fields` parameter to get only necessary fields. Use cursor-based pagination to limit the number entries in the list using `limit` and `before` or `after` query params. operationId: listTeams parameters: - name: fields in: query description: Fields requested in the returned resource schema: type: string example: owners,profile,users,owns,defaultRoles,defaultPersona,parents,children,policies,userCount,childrenCount,domains - name: limit in: query description: Limit the number of teams 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 teams before this cursor schema: type: string - name: after in: query description: Returns list of teams after this cursor schema: type: string - name: parentTeam in: query description: Filter the results by parent team name schema: type: string - name: isJoinable in: query description: Filter the results by whether the team can be joined by any user or not schema: type: boolean - 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 teams content: application/json: schema: $ref: '#/components/schemas/TeamList' put: tags: - Teams summary: Update team description: Create or Update a team. operationId: createOrUpdateTeam requestBody: content: application/json: schema: $ref: '#/components/schemas/CreateTeam' responses: '200': description: 'The team ' content: application/json: schema: $ref: '#/components/schemas/Team' '400': description: Bad request post: tags: - Teams summary: Create a team description: Create a new team. operationId: createTeam requestBody: content: application/json: schema: $ref: '#/components/schemas/CreateTeam' responses: '200': description: The team content: application/json: schema: $ref: '#/components/schemas/Team' '400': description: Bad request /v1/teams/name/{name}: get: tags: - Teams summary: Get a team by name description: Get a team by `name`. operationId: getTeamByFQN parameters: - name: name in: path description: Name of the team required: true schema: type: string - name: fields in: query description: Fields requested in the returned resource schema: type: string example: owners,profile,users,owns,defaultRoles,defaultPersona,parents,children,policies,userCount,childrenCount,domains - 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 team content: application/json: schema: $ref: '#/components/schemas/Team' '404': description: Team for instance {name} is not found delete: tags: - Teams summary: Delete a team by name description: Delete a team by given `name`. operationId: deleteTeamByName parameters: - name: hardDelete in: query description: Hard delete the entity. (Default = `false`) schema: type: boolean default: false - name: name in: path description: Name of the team required: true schema: type: string responses: '200': description: OK '404': description: Team for instance {name} is not found /v1/teams/{id}: get: tags: - Teams summary: Get a team by id description: Get a team by `id`. operationId: getTeamByID parameters: - name: id in: path description: Id of the team required: true schema: type: string format: uuid - name: fields in: query description: Fields requested in the returned resource schema: type: string example: owners,profile,users,owns,defaultRoles,defaultPersona,parents,children,policies,userCount,childrenCount,domains - 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 team content: application/json: schema: $ref: '#/components/schemas/Team' '404': description: Team for instance {id} is not found delete: tags: - Teams summary: Delete a team by id description: Delete a team by given `id`. operationId: deleteTeam parameters: - name: recursive in: query description: Recursively delete this team and it's children. (Default `false`) schema: type: boolean default: false - name: hardDelete in: query description: Hard delete the entity. (Default = `false`) schema: type: boolean default: false - name: id in: path description: Id of the team required: true schema: type: string format: uuid responses: '200': description: OK '404': description: Team for instance {id} is not found patch: tags: - Teams summary: Update a team description: Update an existing team with JsonPatch. externalDocs: description: JsonPatch RFC url: https://tools.ietf.org/html/rfc6902 operationId: patchTeam_1 parameters: - name: id in: path description: Id of the team 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/teams/async/{id}: delete: tags: - Teams summary: Asynchronously delete a team by id description: Asynchronously delete a team by given `id`. operationId: deleteTeamAsync parameters: - name: recursive in: query description: Recursively delete this team and it's children. (Default `false`) schema: type: boolean default: false - name: hardDelete in: query description: Hard delete the entity. (Default = `false`) schema: type: boolean default: false - name: id in: path description: Id of the team required: true schema: type: string format: uuid responses: '200': description: OK '404': description: Team for instance {id} is not found /v1/teams/{teamId}/users/{userId}: delete: tags: - Teams summary: Remove a user from a team description: Remove the user identified by `userId` from the team identified by `teamId`. operationId: deleteTeamUser parameters: - name: teamId in: path description: Id of the team required: true schema: type: string format: uuid - name: userId in: path description: Id of the user being removed required: true schema: type: string responses: '200': description: User removed from team content: application/json: schema: $ref: '#/components/schemas/ChangeEvent' '404': description: Team or user not found /v1/teams/name/{name}/export: get: tags: - Teams summary: Export teams in CSV format operationId: exportTeams parameters: - name: name in: path required: true schema: type: string responses: '200': description: Exported csv with teams information content: application/json: schema: type: string /v1/teams/name/{name}/exportAsync: get: tags: - Teams summary: Export teams in CSV format operationId: exportTeams_1 parameters: - name: name in: path required: true schema: type: string responses: '200': description: Exported csv with teams information content: application/json: schema: $ref: '#/components/schemas/CSVExportResponse' /v1/teams/assets/counts: get: tags: - Teams summary: Get all teams with their asset counts description: Get a map of team fully qualified names to their asset counts using search aggregation. operationId: getAllTeamsWithAssetsCount responses: '200': description: Map of team FQN to asset count content: application/json: {} /v1/teams/documentation/csv: get: tags: - Teams summary: Get CSV documentation for team import/export operationId: getCsvDocumentation_1 responses: default: description: default response content: application/json: schema: type: string /v1/teams/{id}/versions/{version}: get: tags: - Teams summary: Get a version of the team description: Get a version of the team by given `id` operationId: getSpecificTeamVersion parameters: - name: id in: path description: Id of the team required: true schema: type: string format: uuid - name: version in: path description: Team version number in the form `major`.`minor` required: true schema: type: string example: 0.1 or 1.1 responses: '200': description: team content: application/json: schema: $ref: '#/components/schemas/Team' '404': description: Team for instance {id} and version {version} is not found /v1/teams/name/{name}/import: put: tags: - Teams summary: Import from CSV to create, and update teams. operationId: importTeams parameters: - name: name in: path required: true schema: type: string - name: dryRun in: query description: Dry-run when true is used for validating the CSV without really importing it. (default=true) schema: type: boolean default: true requestBody: content: text/plain: schema: type: string responses: '200': description: Import result content: application/json: schema: $ref: '#/components/schemas/CsvImportResult' /v1/teams/name/{name}/importAsync: put: tags: - Teams summary: Import from CSV to create, and update teams asynchronously. operationId: importTeamsAsync parameters: - name: name in: path required: true schema: type: string - name: dryRun in: query description: Dry-run when true is used for validating the CSV without really importing it. (default=true) schema: type: boolean default: true requestBody: content: text/plain: schema: type: string responses: '200': description: Import initiated successfully content: application/json: schema: $ref: '#/components/schemas/CsvImportResult' /v1/teams/history: get: tags: - Teams 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_59 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/teams/hierarchy: get: tags: - Teams summary: List teams with hierarchy description: Get a list of teams with hierarchy. operationId: listTeamsHierarchy parameters: - name: limit in: query description: Limit the number of teams returned. (1 to 1000000, default = 10) schema: maximum: 1000000 minimum: 1000 type: integer format: int32 default: 10000 - name: isJoinable in: query description: Filter the results by whether the team can be joined by any user or not schema: type: boolean responses: '200': description: List of teams with hierarchy content: application/json: schema: $ref: '#/components/schemas/TeamList' /v1/teams/{id}/assets: get: tags: - Teams summary: List assets owned by this team description: Get a paginated list of assets that are owned by this team. Use limit and offset query params for pagination. operationId: listTeamAssets parameters: - name: id in: path description: Id of the team required: true schema: type: string format: uuid - name: limit in: query description: Limit the number of assets returned. (1 to 1000, default = 100) schema: maximum: 1000 minimum: 1 type: integer format: int32 default: 10 - name: offset in: query description: Offset for pagination (default = 0) schema: minimum: 0 type: integer format: int32 default: 0 responses: '200': description: List of assets content: application/json: schema: $ref: '#/components/schemas/EntityReference' '404': description: Team for instance {id} is not found /v1/teams/name/{fqn}/assets: get: tags: - Teams summary: List assets owned by this team by fully qualified name description: Get a paginated list of assets that are owned by this team. Use limit and offset query params for pagination. operationId: listTeamAssetsByName parameters: - name: fqn in: path description: Fully qualified name of the team required: true schema: type: string - name: limit in: query description: Limit the number of assets returned. (1 to 1000, default = 100) schema: maximum: 1000 minimum: 1 type: integer format: int32 default: 10 - name: offset in: query description: Offset for pagination (default = 0) schema: minimum: 0 type: integer format: int32 default: 0 responses: '200': description: List of assets content: application/json: schema: $ref: '#/components/schemas/EntityReference' '404': description: Team for instance {fqn} is not found /v1/teams/{id}/versions: get: tags: - Teams summary: List team versions description: Get a list of all the versions of a team identified by `id` operationId: listAllTeamVersion parameters: - name: id in: path description: Id of the team required: true schema: type: string format: uuid responses: '200': description: List of team versions content: application/json: schema: $ref: '#/components/schemas/EntityHistory' /v1/teams/name/{fqn}: patch: tags: - Teams summary: Update a team using name. description: Update an existing team with JsonPatch. externalDocs: description: JsonPatch RFC url: https://tools.ietf.org/html/rfc6902 operationId: patchTeam parameters: - name: fqn in: path description: Name of the team 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: {} /v1/teams/restore: put: tags: - Teams summary: Restore a soft deleted team description: Restore a soft deleted team. operationId: restore_46 requestBody: content: application/json: schema: $ref: '#/components/schemas/RestoreEntity' responses: '200': description: 'Successfully restored the Team ' content: application/json: schema: $ref: '#/components/schemas/Team' /v1/teams/{teamId}/users: put: tags: - Teams summary: Update team users description: Update the list of users for a team. Replaces existing users with the provided list. operationId: updateTeamUsers parameters: - name: teamId in: path required: true schema: type: string format: uuid requestBody: content: application/json: schema: type: array items: $ref: '#/components/schemas/EntityReference' responses: '200': description: Updated team users content: application/json: {} '404': description: Team not found components: schemas: 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' BulkOperationResult: type: object properties: dryRun: type: boolean status: type: string enum: - success - failure - aborted - partialSuccess - running abortReason: type: string numberOfRowsProcessed: minimum: 0 exclusiveMinimum: false type: integer format: int32 numberOfRowsPassed: minimum: 0 exclusiveMinimum: false type: integer format: int32 numberOfRowsFailed: minimum: 0 exclusiveMinimum: false type: integer format: int32 successRequest: type: array items: $ref: '#/components/schemas/BulkResponse' failedRequest: type: array items: $ref: '#/components/schemas/BulkResponse' 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 CoverImage: type: object properties: url: type: string position: type: string Profile: type: object properties: images: $ref: '#/components/schemas/ImageList' subscription: $ref: '#/components/schemas/SubscriptionConfig' RestoreEntity: required: - id type: object properties: id: type: string format: uuid CreateTeam: required: - name - teamType type: object properties: teamType: type: string enum: - Group - Department - Division - BusinessUnit - Organization name: maxLength: 256 minLength: 1 pattern: ^((?!::).)*$ type: string email: maxLength: 127 minLength: 6 pattern: ^[\S.!#$%&’*+/=?^_`{|}~-]+@\S+\.\S+$ type: string displayName: type: string externalId: type: string description: type: string profile: $ref: '#/components/schemas/Profile' parents: type: array items: type: string format: uuid children: type: array items: type: string format: uuid users: type: array items: type: string format: uuid defaultRoles: type: array items: type: string format: uuid defaultPersona: type: string format: uuid owners: type: array items: $ref: '#/components/schemas/EntityReference' isJoinable: type: boolean policies: type: array items: type: string format: uuid domains: type: array items: type: string 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' Webhook: type: object properties: receivers: uniqueItems: true type: array items: type: string endpoint: type: string format: uri headers: type: object additionalProperties: type: string queryParams: type: object additionalProperties: type: string httpMethod: type: string enum: - POST - PUT sendToAdmins: type: boolean sendToOwners: type: boolean authType: type: object sendToFollowers: type: boolean 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' BulkResponse: type: object properties: request: type: object message: type: string status: type: integer format: int32 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 Team: required: - id - name type: object properties: id: type: string format: uuid teamType: type: string enum: - Group - Department - Division - BusinessUnit - Organization name: maxLength: 256 minLength: 1 pattern: ^((?!::).)*$ type: string email: maxLength: 127 minLength: 6 pattern: ^[\S.!#$%&’*+/=?^_`{|}~-]+@\S+\.\S+$ type: string fullyQualifiedName: maxLength: 3072 minLength: 1 type: string displayName: type: string externalId: type: string description: type: string version: type: number format: double updatedAt: type: integer format: int64 updatedBy: type: string impersonatedBy: type: string href: type: string format: uri profile: $ref: '#/components/schemas/Profile' parents: type: array items: $ref: '#/components/schemas/EntityReference' children: type: array items: $ref: '#/components/schemas/EntityReference' users: type: array items: $ref: '#/components/schemas/EntityReference' childrenCount: type: integer format: int32 userCount: type: integer format: int32 owns: type: array items: $ref: '#/components/schemas/EntityReference' owners: type: array items: $ref: '#/components/schemas/EntityReference' isJoinable: type: boolean changeDescription: $ref: '#/components/schemas/ChangeDescription' incrementalChangeDescription: $ref: '#/components/schemas/ChangeDescription' deleted: type: boolean defaultRoles: type: array items: $ref: '#/components/schemas/EntityReference' inheritedRoles: type: array items: $ref: '#/components/schemas/EntityReference' defaultPersona: $ref: '#/components/schemas/EntityReference' policies: type: array items: $ref: '#/components/schemas/EntityReference' domains: type: array items: $ref: '#/components/schemas/EntityReference' provider: type: string enum: - system - user - automation extension: type: object 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' dataProducts: type: array items: $ref: '#/components/schemas/EntityReference' 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' 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' TeamList: required: - data type: object properties: data: type: array items: $ref: '#/components/schemas/Team' 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' CSVExportResponse: type: object properties: jobId: type: string message: type: string ChangeEvent: required: - entityId - entityType - eventType - id - timestamp type: object properties: id: type: string format: uuid eventType: type: string enum: - entityCreated - entityUpdated - entityFieldsChanged - entityNoChange - entitySoftDeleted - entityDeleted - entityRestored - threadCreated - threadUpdated - postCreated - postUpdated - taskResolved - taskClosed - logicalTestCaseAdded - suggestionCreated - suggestionUpdated - suggestionAccepted - suggestionRejected - suggestionDeleted - userLogin - userLogout entityType: type: string entityId: type: string format: uuid domains: type: array items: type: string format: uuid entityFullyQualifiedName: type: string previousVersion: type: number format: double currentVersion: type: number format: double userName: type: string impersonatedBy: type: string timestamp: type: integer format: int64 changeDescription: $ref: '#/components/schemas/ChangeDescription' incrementalChangeDescription: $ref: '#/components/schemas/ChangeDescription' entity: type: object UsageStats: required: - count type: object properties: count: minimum: 0 exclusiveMinimum: false type: integer format: int32 percentileRank: type: number format: double BulkAssets: type: object properties: assets: type: array items: $ref: '#/components/schemas/EntityReference' dryRun: type: boolean 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' ImageList: type: object properties: image: type: string format: uri image24: type: string format: uri image32: type: string format: uri image48: type: string format: uri image72: type: string format: uri image192: type: string format: uri image512: type: string format: uri CsvImportResult: type: object properties: dryRun: type: boolean status: type: string enum: - success - failure - aborted - partialSuccess - running abortReason: type: string numberOfRowsProcessed: minimum: 0 exclusiveMinimum: false type: integer format: int32 numberOfRowsPassed: minimum: 0 exclusiveMinimum: false type: integer format: int32 numberOfRowsFailed: minimum: 0 exclusiveMinimum: false type: integer format: int32 importResultsCsv: type: string 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 SubscriptionConfig: type: object properties: slack: $ref: '#/components/schemas/Webhook' msTeams: $ref: '#/components/schemas/Webhook' gChat: $ref: '#/components/schemas/Webhook' generic: $ref: '#/components/schemas/Webhook' 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