OpenMetadata Permissions API

APIs related to getting access permission for a User.

OpenAPI Specification

openmetadata-permissions-api-openapi.yml Raw ↑
openapi: 3.0.1
info:
  title: OpenMetadata APIs Agent Executions Permissions 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: Permissions
  description: APIs related to getting access permission for a User.
paths:
  /v1/permissions/debug/me:
    get:
      tags:
      - Permissions
      summary: Debug permissions for the current user
      description: Get detailed information about your own permissions including direct roles, team-based permissions, and inherited permissions with their sources
      operationId: debugMyPermissions
      responses:
        '200':
          description: Permission debug information
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PermissionDebugInfo'
  /v1/permissions/debug/evaluate:
    get:
      tags:
      - Permissions
      summary: Debug permission evaluation for a specific operation
      description: Get step-by-step evaluation of permissions for a user attempting a specific operation on a resource, showing which policies were evaluated and why the decision was made. Only admins can debug other users' permission evaluations.
      operationId: debugPermissionEvaluation
      parameters:
      - name: user
        in: query
        description: Name of the user to evaluate permissions for
        required: true
        schema:
          type: string
      - name: resource
        in: query
        description: Type of resource (e.g., table, database, pipeline)
        required: true
        schema:
          type: string
      - name: resourceId
        in: query
        description: UUID or Fully Qualified Name (FQN) of the specific resource instance (optional)
        schema:
          type: string
      - name: operation
        in: query
        description: Operation to check (e.g., VIEW_ALL, EDIT_ALL, DELETE)
        required: true
        schema:
          type: string
          enum:
          - All
          - Create
          - BulkCreate
          - CreateIngestionPipelineAutomator
          - CreateTests
          - Delete
          - ViewAll
          - ViewBasic
          - ViewUsage
          - ViewTests
          - ViewQueries
          - ViewDataProfile
          - ViewProfilerGlobalConfiguration
          - ViewSampleData
          - ViewTestCaseFailedRowsSample
          - ViewCustomFields
          - EditAll
          - BulkUpdate
          - EditCustomFields
          - EditDataProfile
          - EditDescription
          - EditDisplayName
          - EditLineage
          - EditEntityRelationship
          - EditPolicy
          - EditOwners
          - EditQueries
          - EditReviewers
          - EditRole
          - EditSampleData
          - EditStatus
          - EditTags
          - EditGlossaryTerms
          - EditTeams
          - EditTier
          - EditCertification
          - EditTests
          - EditUsage
          - EditUsers
          - EditLifeCycle
          - EditKnowledgePanel
          - EditPage
          - EditIngestionPipelineStatus
          - EditUserNotificationTemplate
          - DeleteTestCaseFailedRowsSample
          - Deploy
          - Trigger
          - Kill
          - GenerateToken
          - EditScim
          - CreateScim
          - DeleteScim
          - ViewScim
          - Impersonate
          - AuditLogs
          - ViewTestDefinitionLibrary
          - EditTestDefinitionLibrary
      responses:
        '200':
          description: Permission evaluation debug information
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PermissionEvaluationDebugInfo'
        '403':
          description: Forbidden - Admin access required
  /v1/permissions/debug/user/{username}:
    get:
      tags:
      - Permissions
      summary: Debug permissions for a user
      description: Get detailed information about a user's permissions including direct roles, team-based permissions, and inherited permissions with their sources. Only admins can debug other users' permissions.
      operationId: debugUserPermissions
      parameters:
      - name: username
        in: path
        description: Username of the user
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Permission debug information
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PermissionDebugInfo'
        '403':
          description: Forbidden - Admin access required
        '404':
          description: User not found
  /v1/permissions/view/{entityType}:
    get:
      tags:
      - Permissions
      summary: Get permissions for a given entity type at field level.
      operationId: getEntityTypeFieldPermissions
      parameters:
      - name: entityType
        in: path
        description: Type of the entity
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Permissions for logged in user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResourcePermissionList'
  /v1/permissions/{resource}:
    get:
      tags:
      - Permissions
      summary: Get permissions a given resource/entity type for logged in user
      operationId: getResourceTypePermission
      parameters:
      - name: user
        in: query
        description: Permission for user specified in this query param. If not specified, the user is defaulted to the logged in user
        schema:
          type: string
          example: john
      - name: resource
        in: path
        description: Type of the resource
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Permissions for logged in user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResourcePermissionList'
  /v1/permissions/{resource}/name/{name}:
    get:
      tags:
      - Permissions
      summary: Get permissions for a given entity name for a logged in user
      operationId: getResourcePermissionByName
      parameters:
      - name: user
        in: query
        description: Permission for user specified in this query param. If not specified, the user is defaulted to the logged in user
        schema:
          type: string
          example: john
      - name: resource
        in: path
        description: Type of the resource
        required: true
        schema:
          type: string
      - name: name
        in: path
        description: Name of the entity
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Permissions for logged in user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResourcePermissionList'
  /v1/permissions/{resource}/{id}:
    get:
      tags:
      - Permissions
      summary: Get permissions for a given entity for a logged in user
      operationId: getResourcePermission
      parameters:
      - name: user
        in: query
        description: Permission for user specified in this query param. If not specified, the user is defaulted to the logged in user
        schema:
          type: string
          example: john
      - name: resource
        in: path
        description: Type of the resource
        required: true
        schema:
          type: string
      - name: id
        in: path
        description: Id of the entity
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: Permissions for logged in user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResourcePermissionList'
  /v1/permissions/policies:
    get:
      tags:
      - Permissions
      summary: Get permissions for a set of policies
      operationId: getPermissionsForPolicies
      parameters:
      - name: ids
        in: query
        description: List of policy of ids
        schema:
          type: array
          items:
            type: string
            format: uuid
      responses:
        '200':
          description: Permissions for a set of policies
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResourcePermissionList'
  /v1/permissions:
    get:
      tags:
      - Permissions
      summary: Get permissions for logged in user
      operationId: getResourcePermissions
      parameters:
      - name: user
        in: query
        description: Permission for user specified in this query param. If not specified, the user is defaulted to the logged in user
        schema:
          type: string
          example: john
      responses:
        '200':
          description: Permissions for logged in user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResourcePermissionList'
components:
  schemas:
    PermissionEvaluationDebugInfo:
      type: object
      properties:
        user:
          $ref: '#/components/schemas/EntityReference'
        resource:
          type: string
        resourceId:
          type: string
        operation:
          type: string
          enum:
          - All
          - Create
          - BulkCreate
          - CreateIngestionPipelineAutomator
          - CreateTests
          - Delete
          - ViewAll
          - ViewBasic
          - ViewUsage
          - ViewTests
          - ViewQueries
          - ViewDataProfile
          - ViewProfilerGlobalConfiguration
          - ViewSampleData
          - ViewTestCaseFailedRowsSample
          - ViewCustomFields
          - EditAll
          - BulkUpdate
          - EditCustomFields
          - EditDataProfile
          - EditDescription
          - EditDisplayName
          - EditLineage
          - EditEntityRelationship
          - EditPolicy
          - EditOwners
          - EditQueries
          - EditReviewers
          - EditRole
          - EditSampleData
          - EditStatus
          - EditTags
          - EditGlossaryTerms
          - EditTeams
          - EditTier
          - EditCertification
          - EditTests
          - EditUsage
          - EditUsers
          - EditLifeCycle
          - EditKnowledgePanel
          - EditPage
          - EditIngestionPipelineStatus
          - EditUserNotificationTemplate
          - DeleteTestCaseFailedRowsSample
          - Deploy
          - Trigger
          - Kill
          - GenerateToken
          - EditScim
          - CreateScim
          - DeleteScim
          - ViewScim
          - Impersonate
          - AuditLogs
          - ViewTestDefinitionLibrary
          - EditTestDefinitionLibrary
        allowed:
          type: boolean
        finalDecision:
          type: string
        evaluationSteps:
          type: array
          items:
            $ref: '#/components/schemas/PolicyEvaluationStep'
        summary:
          $ref: '#/components/schemas/EvaluationSummary'
    EvaluationSummary:
      type: object
      properties:
        totalPoliciesEvaluated:
          type: integer
          format: int32
        totalRulesEvaluated:
          type: integer
          format: int32
        matchingRules:
          type: integer
          format: int32
        denyRules:
          type: integer
          format: int32
        allowRules:
          type: integer
          format: int32
        appliedPolicies:
          type: array
          items:
            type: string
        reasonsForDecision:
          type: array
          items:
            type: string
        evaluationTimeMs:
          type: integer
          format: int64
    ResourcePermissionList:
      required:
      - data
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/ResourcePermission'
        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'
    RolePermission:
      type: object
      properties:
        role:
          $ref: '#/components/schemas/EntityReference'
        policies:
          type: array
          items:
            $ref: '#/components/schemas/PolicyInfo'
        inheritedFrom:
          type: string
        defaultRole:
          type: boolean
    ConditionEvaluation:
      type: object
      properties:
        condition:
          type: string
        result:
          type: boolean
        evaluationDetails:
          type: string
    ResourcePermission:
      required:
      - permissions
      - resource
      type: object
      properties:
        resource:
          type: string
        permissions:
          type: array
          items:
            $ref: '#/components/schemas/Permission'
    DirectRolePermission:
      type: object
      properties:
        role:
          $ref: '#/components/schemas/EntityReference'
        policies:
          type: array
          items:
            $ref: '#/components/schemas/PolicyInfo'
        source:
          type: string
    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
    PermissionSummary:
      type: object
      properties:
        totalRoles:
          type: integer
          format: int32
        totalPolicies:
          type: integer
          format: int32
        totalRules:
          type: integer
          format: int32
        directRoles:
          type: integer
          format: int32
        inheritedRoles:
          type: integer
          format: int32
        teamCount:
          type: integer
          format: int32
        maxHierarchyDepth:
          type: integer
          format: int32
        effectiveOperations:
          type: array
          items:
            type: string
        deniedOperations:
          type: array
          items:
            type: string
    Permission:
      type: object
      properties:
        operation:
          type: string
          enum:
          - All
          - Create
          - BulkCreate
          - CreateIngestionPipelineAutomator
          - CreateTests
          - Delete
          - ViewAll
          - ViewBasic
          - ViewUsage
          - ViewTests
          - ViewQueries
          - ViewDataProfile
          - ViewProfilerGlobalConfiguration
          - ViewSampleData
          - ViewTestCaseFailedRowsSample
          - ViewCustomFields
          - EditAll
          - BulkUpdate
          - EditCustomFields
          - EditDataProfile
          - EditDescription
          - EditDisplayName
          - EditLineage
          - EditEntityRelationship
          - EditPolicy
          - EditOwners
          - EditQueries
          - EditReviewers
          - EditRole
          - EditSampleData
          - EditStatus
          - EditTags
          - EditGlossaryTerms
          - EditTeams
          - EditTier
          - EditCertification
          - EditTests
          - EditUsage
          - EditUsers
          - EditLifeCycle
          - EditKnowledgePanel
          - EditPage
          - EditIngestionPipelineStatus
          - EditUserNotificationTemplate
          - DeleteTestCaseFailedRowsSample
          - Deploy
          - Trigger
          - Kill
          - GenerateToken
          - EditScim
          - CreateScim
          - DeleteScim
          - ViewScim
          - Impersonate
          - AuditLogs
          - ViewTestDefinitionLibrary
          - EditTestDefinitionLibrary
        access:
          type: string
          enum:
          - deny
          - allow
          - conditionalDeny
          - conditionalAllow
          - notAllow
        rule:
          $ref: '#/components/schemas/Rule'
        policy:
          type: string
        role:
          type: string
    RuleInfo:
      type: object
      properties:
        name:
          type: string
        effect:
          type: string
        operations:
          type: array
          items:
            type: string
        resources:
          type: array
          items:
            type: string
        condition:
          type: string
        matches:
          type: boolean
    InheritedPermission:
      type: object
      properties:
        permissionType:
          type: string
        source:
          $ref: '#/components/schemas/EntityReference'
        policies:
          type: array
          items:
            $ref: '#/components/schemas/PolicyInfo'
        description:
          type: string
    EntityError:
      type: object
      properties:
        message:
          type: string
        entity:
          type: object
    PermissionDebugInfo:
      type: object
      properties:
        user:
          $ref: '#/components/schemas/EntityReference'
        directRoles:
          type: array
          items:
            $ref: '#/components/schemas/DirectRolePermission'
        teamPermissions:
          type: array
          items:
            $ref: '#/components/schemas/TeamPermission'
        inheritedPermissions:
          type: array
          items:
            $ref: '#/components/schemas/InheritedPermission'
        summary:
          $ref: '#/components/schemas/PermissionSummary'
    TeamPermission:
      type: object
      properties:
        team:
          $ref: '#/components/schemas/EntityReference'
        teamHierarchy:
          type: array
          items:
            $ref: '#/components/schemas/EntityReference'
        rolePermissions:
          type: array
          items:
            $ref: '#/components/schemas/RolePermission'
        directPolicies:
          type: array
          items:
            $ref: '#/components/schemas/PolicyInfo'
        teamType:
          type: string
        hierarchyLevel:
          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
    PolicyEvaluationStep:
      type: object
      properties:
        stepNumber:
          type: integer
          format: int32
        source:
          type: string
        sourceEntity:
          $ref: '#/components/schemas/EntityReference'
        policy:
          $ref: '#/components/schemas/EntityReference'
        rule:
          type: string
        effect:
          type: string
        matched:
          type: boolean
        matchReason:
          type: string
        conditionEvaluations:
          type: array
          items:
            $ref: '#/components/schemas/ConditionEvaluation'
    PolicyInfo:
      type: object
      properties:
        policy:
          $ref: '#/components/schemas/EntityReference'
        rules:
          type: array
          items:
            $ref: '#/components/schemas/RuleInfo'
        effect:
          type: string
    Rule:
      required:
      - effect
      - name
      - operations
      - resources
      type: object
      properties:
        name:
          type: string
        fullyQualifiedName:
          maxLength: 3072
          minLength: 1
          type: string
        description:
          type: string
        effect:
          type: string
          enum:
          - allow
          - deny
        operations:
          type: array
          items:
            type: string
            enum:
            - All
            - Create
            - BulkCreate
            - CreateIngestionPipelineAutomator
            - CreateTests
            - Delete
            - ViewAll
            - ViewBasic
            - ViewUsage
            - ViewTests
            - ViewQueries
            - ViewDataProfile
            - ViewProfilerGlobalConfiguration
            - ViewSampleData
            - ViewTestCaseFailedRowsSample
            - ViewCustomFields
            - EditAll
            - BulkUpdate
            - EditCustomFields
            - EditDataProfile
            - EditDescription
            - EditDisplayName
            - EditLineage
            - EditEntityRelationship
            - EditPolicy
            - EditOwners
            - EditQueries
            - EditReviewers
            - EditRole
            - EditSampleData
            - EditStatus
            - EditTags
            - EditGlossaryTerms
            - EditTeams
            - EditTier
            - EditCertification
            - EditTests
            - EditUsage
            - EditUsers
            - EditLifeCycle
            - EditKnowledgePanel
            - EditPage
            - EditIngestionPipelineStatus
            - EditUserNotificationTemplate
            - DeleteTestCaseFailedRowsSample
            - Deploy
            - Trigger
            - Kill
            - GenerateToken
            - EditScim
            - CreateScim
            - DeleteScim
            - ViewScim
            - Impersonate
            - AuditLogs
            - ViewTestDefinitionLibrary
            - EditTestDefinitionLibrary
        resources:
          type: array
          items:
            type: string
        condition:
          type: string
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT