OpenMetadata Personas API
A `Persona` is to represent job function a user does. OpenMetadata uses Persona to define customizable experience in the UI.
A `Persona` is to represent job function a user does. OpenMetadata uses Persona to define customizable experience in the UI.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/openmetadata-personas-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: OpenMetadata APIs Agent Executions Personas 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: Personas
description: A `Persona` is to represent job function a user does. OpenMetadata uses Persona to define customizable experience in the UI.
paths:
/v1/personas:
get:
tags:
- Personas
summary: List personas
description: Get a list of personas. 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: listPersonas
parameters:
- name: fields
in: query
description: Fields requested in the returned resource
schema:
type: string
example: users
- name: limit
in: query
description: Limit the number of personas 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 personas before this cursor
schema:
type: string
- name: after
in: query
description: Returns list of personas after this cursor
schema:
type: string
responses:
'200':
description: List of personas
content:
application/json:
schema:
$ref: '#/components/schemas/PersonaList'
put:
tags:
- Personas
summary: Update Persona
description: Create or Update a Persona.
operationId: createOrUpdatePersona
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CreatePersona'
responses:
'200':
description: The Persona.
content:
application/json:
schema:
$ref: '#/components/schemas/Persona'
'400':
description: Bad request
post:
tags:
- Personas
summary: Create a Persona
description: Create a new Persona.
operationId: createPersona
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CreatePersona'
responses:
'200':
description: The Persona.
content:
application/json:
schema:
$ref: '#/components/schemas/Persona'
'400':
description: Bad request
/v1/personas/name/{name}:
get:
tags:
- Personas
summary: Get a Persona by name
description: Get a Persona by `name`.
operationId: getPersonaByFQN
parameters:
- name: name
in: path
description: Name of the Persona
required: true
schema:
type: string
- name: fields
in: query
description: Fields requested in the returned resource
schema:
type: string
example: users
- 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 Persona
content:
application/json:
schema:
$ref: '#/components/schemas/Persona'
'404':
description: Persona for instance {name} is not found
delete:
tags:
- Personas
summary: Delete a Persona by name
description: Delete a Persona by given `name`.
operationId: deletePersonaByName
parameters:
- name: name
in: path
description: Name of the Persona
required: true
schema:
type: string
responses:
'200':
description: OK
'404':
description: Persona for instance {name} is not found
/v1/personas/{id}:
get:
tags:
- Personas
summary: Get a persona by id
description: Get a persona by `id`.
operationId: getPersonaByID
parameters:
- name: id
in: path
description: Id of the Persona
required: true
schema:
type: string
format: uuid
- name: fields
in: query
description: Fields requested in the returned resource
schema:
type: string
example: users
- 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 Persona
content:
application/json:
schema:
$ref: '#/components/schemas/Persona'
'404':
description: Persona for instance {id} is not found
delete:
tags:
- Personas
summary: Delete a Persona by id
description: Delete a Persona by given `id`.
operationId: deletePersona
parameters:
- name: id
in: path
description: Id of the Persona
required: true
schema:
type: string
format: uuid
responses:
'200':
description: OK
'404':
description: Persona for instance {id} is not found
patch:
tags:
- Personas
summary: Update a Persona
description: Update an existing persona with JsonPatch.
externalDocs:
description: JsonPatch RFC
url: https://tools.ietf.org/html/rfc6902
operationId: patchPersona_1
parameters:
- name: id
in: path
description: Id of the Persona
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/personas/async/{id}:
delete:
tags:
- Personas
summary: Asynchronously delete a Persona by id
description: Asynchronously delete a Persona by given `id`.
operationId: deletePersonaAsync
parameters:
- name: id
in: path
description: Id of the Persona
required: true
schema:
type: string
format: uuid
responses:
'200':
description: OK
'404':
description: Persona for instance {id} is not found
/v1/personas/{id}/versions/{version}:
get:
tags:
- Personas
summary: Get a version of the Persona
description: Get a version of the Persona by given `id`
operationId: getSpecificPersonaVersion
parameters:
- name: id
in: path
description: Id of the Persona
required: true
schema:
type: string
format: uuid
- name: version
in: path
description: Personas version number in the form `major`.`minor`
required: true
schema:
type: string
example: 0.1 or 1.1
responses:
'200':
description: Persona
content:
application/json:
schema:
$ref: '#/components/schemas/Persona'
'404':
description: Persona for instance {id} and version {version} is not found
/v1/personas/history:
get:
tags:
- Personas
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_57
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/personas/{id}/versions:
get:
tags:
- Personas
summary: List Persona versions
description: Get a list of all the versions of a persona identified by `id`
operationId: listAllPersonaVersion
parameters:
- name: id
in: path
description: Id of the Persona
required: true
schema:
type: string
format: uuid
responses:
'200':
description: List of persona versions
content:
application/json:
schema:
$ref: '#/components/schemas/EntityHistory'
/v1/personas/name/{fqn}:
patch:
tags:
- Personas
summary: Update a Persona using name.
description: Update an existing persona with JsonPatch.
externalDocs:
description: JsonPatch RFC
url: https://tools.ietf.org/html/rfc6902
operationId: patchPersona
parameters:
- name: fqn
in: path
description: Name of the Persona
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:
EntityHistory:
required:
- entityType
- versions
type: object
properties:
entityType:
type: string
versions:
type: array
items:
type: object
AccessDetails:
required:
- timestamp
type: object
properties:
timestamp:
type: integer
format: int64
accessedBy:
$ref: '#/components/schemas/EntityReference'
accessedByAProcess:
type: string
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
JsonPatch:
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
PatternMatch:
required:
- name
- score
type: object
properties:
name:
type: string
regex:
type: string
score:
type: number
format: double
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'
UsageStats:
required:
- count
type: object
properties:
count:
minimum: 0
type: integer
format: int32
percentileRank:
type: number
format: double
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'
LifeCycle:
type: object
properties:
created:
$ref: '#/components/schemas/AccessDetails'
updated:
$ref: '#/components/schemas/AccessDetails'
accessed:
$ref: '#/components/schemas/AccessDetails'
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
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
FieldChange:
type: object
properties:
name:
type: string
oldValue:
type: object
newValue:
type: object
ChangeSummaryMap:
type: object
EntityError:
type: object
properties:
message:
type: string
entity:
type: object
CreatePersona:
required:
- name
type: object
properties:
name:
maxLength: 256
minLength: 1
pattern: ^((?!::).)*$
type: string
displayName:
type: string
description:
type: string
users:
type: array
items:
type: string
format: uuid
domains:
type: array
items:
type: string
default:
type: boolean
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'
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'
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'
Persona:
required:
- id
- name
type: object
properties:
id:
type: string
format: uuid
name:
maxLength: 256
minLength: 1
pattern: ^((?!::).)*$
type: string
fullyQualifiedName:
maxLength: 3072
minLength: 1
type: string
displayName:
type: string
description:
type: string
updatedAt:
type: integer
format: int64
updatedBy:
type: string
impersonatedBy:
type: string
href:
type: string
format: uri
uiCustomization:
$ref: '#/components/schemas/EntityReference'
users:
type: array
items:
$ref: '#/components/schemas/EntityReference'
version:
type: number
format: double
changeDescription:
$ref: '#/components/schemas/ChangeDescription'
incrementalChangeDescription:
$ref: '#/components/schemas/ChangeDescription'
domains:
type: array
items:
$ref: '#/components/schemas/EntityReference'
default:
type: boolean
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'
dataProducts:
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'
CoverImage:
type: object
properties:
url:
type: string
position:
type: string
TagLabelMetadata:
type: object
properties:
recognizer:
$ref: '#/components/schemas/TagLabelRecognizerMetadata'
expiryDate:
type: integer
format: int64
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'
PersonaList:
required:
- data
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/Persona'
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'
securitySchemes:
BearerAuth:
type: http
scheme: bearer
bearerFormat: JWT