Indykite AuthZEN API

Authorization API implemented according to [AuthZEN specification](https://openid.net/wg/authzen/specifications/).

OpenAPI Specification

indykite-authzen-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  contact: {}
  description: Config API supports CRUD operations on config objects.
  title: Config REST Application Agent Credentials AuthZEN API
  license:
    name: Apache 2.0
    url: https://www.apache.org/licenses/LICENSE-2.0
  version: '1'
servers:
- url: https://eu.api.indykite.com/configs/v1
- url: https://us.api.indykite.com/configs/v1
security:
- BearerToken: []
tags:
- description: Authorization API implemented according to [AuthZEN specification](https://openid.net/wg/authzen/specifications/).
  name: AuthZEN
  x-displayName: AuthZEN
paths:
  /access/v1/evaluation:
    post:
      summary: AuthZEN specified Evaluation endpoint
      description: Evaluate the authorization request and return decision in response.
      tags:
      - AuthZEN
      operationId: createAccessV1Evaluation
      security:
      - APIKey: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/restapi.EvaluationRequest'
        description: Evaluation request
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/restapi.EvaluationResponse'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/restapi.DetailedError'
                - properties:
                    errors:
                      items:
                        type: string
                      type: array
                    message:
                      type: string
                  type: object
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/restapi.DetailedError'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/restapi.ErrorResponse'
                - properties:
                    message:
                      type: string
                  type: object
      x-codegen-request-body-name: request
  /access/v1/evaluations:
    post:
      operationId: createAccessV1Evaluations
      summary: AuthZEN specified Evaluations endpoint
      security:
      - APIKey: []
      description: Evaluate multiple authorization requests at once and return decisions in response.
      tags:
      - AuthZEN
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/restapi.EvaluationsRequest'
        description: Evaluation request
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/restapi.EvaluationsResponse'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/restapi.DetailedError'
                - properties:
                    errors:
                      items:
                        type: string
                      type: array
                    message:
                      type: string
                  type: object
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/restapi.DetailedError'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/restapi.ErrorResponse'
      x-codegen-request-body-name: request
  /access/v1/search/action:
    post:
      operationId: createAccessV1SearchAction
      summary: AuthZEN specified Action Search API
      security:
      - APIKey: []
      description: Search for actions allowed to be done by the specified subject on the specified resource.
      tags:
      - AuthZEN
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/restapi.SearchActionRequest'
        description: Action Search request
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/restapi.SearchActionResponse'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/restapi.DetailedError'
                - properties:
                    errors:
                      items:
                        type: string
                      type: array
                    message:
                      type: string
                  type: object
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/restapi.DetailedError'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/restapi.ErrorResponse'
      x-codegen-request-body-name: request
  /access/v1/search/resource:
    post:
      operationId: createAccessV1SearchResource
      summary: AuthZEN specified Resource Search API
      security:
      - APIKey: []
      description: Search for resources that the specified subject is allowed to do the specified action on.
      tags:
      - AuthZEN
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/restapi.SearchResourceRequest'
        description: Resource Search request
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/restapi.SearchResourceResponse'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/restapi.DetailedError'
                - properties:
                    errors:
                      items:
                        type: string
                      type: array
                    message:
                      type: string
                  type: object
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/restapi.DetailedError'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/restapi.ErrorResponse'
      x-codegen-request-body-name: request
  /access/v1/search/subject:
    post:
      operationId: createAccessV1SearchSubject
      summary: AuthZEN specified Subject Search API
      security:
      - APIKey: []
      description: Search for subjects allowed to do the specified action on the specified resource.
      tags:
      - AuthZEN
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/restapi.SearchSubjectRequest'
        description: Subject Search request
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/restapi.SearchSubjectResponse'
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                allOf:
                - $ref: '#/components/schemas/restapi.DetailedError'
                - properties:
                    errors:
                      items:
                        type: string
                      type: array
                    message:
                      type: string
                  type: object
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/restapi.DetailedError'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/restapi.ErrorResponse'
      x-codegen-request-body-name: request
components:
  schemas:
    restapi.Node:
      type: object
      required:
      - id
      - type
      properties:
        id:
          type: string
          description: ID is a node external_id.
          examples:
          - IdSpecifyingTheNode
        type:
          type: string
          description: Type is a node label.
          examples:
          - NodeType
      examples:
      - id: IdSpecifyingTheNode
        type: NodeType
    restapi.Context:
      type: object
      properties:
        input_params:
          type: object
          additionalProperties: {}
          description: 'InputParams map specifies the values of input parameters used within the policies.

            If a policy uses input parameters and is used for making the decision,

            they must be sent with the request, otherwise an error is returned.'
          examples:
          - additionalProp1: {}
            additionalProp2: {}
        policy_tags:
          type: array
          description: PolicyTags array limits the policies used to only the policies with the specified tags.
          items:
            type: string
          uniqueItems: true
          examples:
          - - tag1
            - tag2
      examples:
      - input_params:
          additionalProp1: {}
          additionalProp2: {}
        policy_tags:
        - Tag1
        - Tag2
    restapi.respContext:
      type: object
      properties:
        advice:
          type: array
          items:
            type: object
            additionalProperties:
              type: string
        reason:
          type: string
      examples:
      - advice:
        - error: insufficient_user_authentication
          error_description: A different authentication level is required
          acr_values: whatever
    restapi.EvaluationResponse:
      type: object
      properties:
        context:
          $ref: '#/components/schemas/restapi.respContext'
        decision:
          type: boolean
          examples:
          - true
      examples:
      - context:
          advice:
          - error: insufficient_user_authentication
            error_description: A different authentication level is required
            acr_values: whatever
        decision: true
    restapi.SearchSubjectRequest:
      type: object
      required:
      - action
      - resource
      - subject
      properties:
        action:
          $ref: '#/components/schemas/restapi.Action'
        context:
          $ref: '#/components/schemas/restapi.Context'
        resource:
          $ref: '#/components/schemas/restapi.Node'
        subject:
          $ref: '#/components/schemas/restapi.NodeType'
    restapi.OptionalFields:
      type: object
      properties:
        action:
          $ref: '#/components/schemas/restapi.Action'
        context:
          $ref: '#/components/schemas/restapi.Context'
        resource:
          $ref: '#/components/schemas/restapi.Node'
        subject:
          $ref: '#/components/schemas/restapi.Node'
    restapi.NodeType:
      type: object
      required:
      - type
      properties:
        type:
          type: string
          examples:
          - NodeType
    restapi.SearchActionRequest:
      type: object
      required:
      - resource
      - subject
      properties:
        context:
          $ref: '#/components/schemas/restapi.Context'
        resource:
          $ref: '#/components/schemas/restapi.Node'
        subject:
          $ref: '#/components/schemas/restapi.Node'
    restapi.EvaluationsResponse:
      type: object
      properties:
        evaluations:
          type: array
          items:
            $ref: '#/components/schemas/restapi.EvaluationResponse'
    restapi.SearchActionResponse:
      type: object
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/restapi.Action'
    restapi.DetailedError:
      type: object
      properties:
        errors:
          type: array
          description: Errors are optional and may contain additional details.
          items:
            type: string
          examples:
          - - missing bearer token
        message:
          type: string
          description: Message describes the error.
          examples:
          - unauthorized request
    restapi.SearchResourceResponse:
      type: object
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/restapi.Node'
    restapi.SearchResourceRequest:
      type: object
      required:
      - action
      - resource
      - subject
      properties:
        action:
          $ref: '#/components/schemas/restapi.Action'
        context:
          $ref: '#/components/schemas/restapi.Context'
        resource:
          $ref: '#/components/schemas/restapi.NodeType'
        subject:
          $ref: '#/components/schemas/restapi.Node'
    restapi.ErrorResponse:
      type: object
      properties:
        message:
          type: string
          examples:
          - Internal Server Error
    restapi.SearchSubjectResponse:
      type: object
      properties:
        results:
          type: array
          items:
            $ref: '#/components/schemas/restapi.Node'
    restapi.EvaluationsRequest:
      type: object
      required:
      - evaluations
      properties:
        action:
          $ref: '#/components/schemas/restapi.Action'
        context:
          $ref: '#/components/schemas/restapi.Context'
        evaluations:
          type: array
          items:
            $ref: '#/components/schemas/restapi.OptionalFields'
        resource:
          $ref: '#/components/schemas/restapi.Node'
        subject:
          $ref: '#/components/schemas/restapi.Node'
    restapi.Action:
      type: object
      required:
      - name
      properties:
        name:
          type: string
          description: Name specifies the action.
          examples:
          - CAN_READ
      examples:
      - name: CAN_READ
    restapi.EvaluationRequest:
      type: object
      required:
      - action
      - resource
      - subject
      properties:
        action:
          $ref: '#/components/schemas/restapi.Action'
        context:
          $ref: '#/components/schemas/restapi.Context'
        resource:
          $ref: '#/components/schemas/restapi.Node'
        subject:
          $ref: '#/components/schemas/restapi.Node'
      examples:
      - action:
          name: CAN_READ
        context:
          input_params:
            additionalProp1: {}
            additionalProp2: {}
          policy_tags:
          - Tag1
          - Tag2
        resource:
          id: IdSpecifyingTheNode
          type: NodeType
        subject:
          id: IdSpecifyingTheNode
          type: NodeType
  securitySchemes:
    BearerToken:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: Bearer token generated from Service Account credentials.
x-original-swagger-version: '2.0'