> ## Documentation Index
> Fetch the complete documentation index at: https://absentify.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Read the audit log of a rule

> Every recorded change to this rule and to its assignments, newest first. A member moving to another rule is filed under the rule they moved TO, with the previous rule in `changes.from_rule_id`.



## OpenAPI

````yaml https://api.absentify.com/api/v1/openapi.json get /rules/{rule_id}/audit-log
openapi: 3.1.0
info:
  title: absentify CRUD API
  description: OpenAPI compliant REST API
  version: 1.0.0
servers:
  - url: https://api.absentify.com/api/v1
security: []
tags:
  - name: Departments
  - name: Leave types
  - name: Members
  - name: Requests
  - name: Public holidays
  - name: Workspace
  - name: Absences
  - name: Allowance Management
externalDocs:
  url: https://absentify.com/docs/en/api-reference
paths:
  /rules/{rule_id}/audit-log:
    get:
      tags:
        - Allowance Management
      summary: Read the audit log of a rule
      description: >-
        Every recorded change to this rule and to its assignments, newest first.
        A member moving to another rule is filed under the rule they moved TO,
        with the previous rule in `changes.from_rule_id`.
      operationId: allowanceRule-getRuleAuditLog
      parameters:
        - in: path
          name: rule_id
          schema:
            type: string
            format: uuid
            pattern: >-
              ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
          required: true
        - in: query
          name: take
          schema:
            default: 100
            type: integer
            minimum: 1
            maximum: 200
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
                properties:
                  entries:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: number
                        createdAt:
                          type: string
                        rule_id:
                          type: string
                        allowance_type_id:
                          type: string
                        event_type:
                          type: string
                          enum:
                            - RULE_CREATED
                            - RULE_UPDATED
                            - RULE_DELETED
                            - ASSIGNMENT_CREATED
                            - ASSIGNMENT_UPDATED
                            - ASSIGNMENT_DELETED
                            - MEMBER_RULE_CHANGED
                            - DEFAULT_RULE_CHANGED
                        actor_member_id:
                          anyOf:
                            - type: string
                            - type: 'null'
                          description: >-
                            Null once the member who made the change has been
                            deleted.
                        member_id:
                          anyOf:
                            - type: string
                            - type: 'null'
                          description: >-
                            Set on assignment-level events: the member they
                            affected.
                        comment:
                          anyOf:
                            - type: string
                            - type: 'null'
                          description: The reason given for the change.
                        changes:
                          description: >-
                            What changed, as a JSON object. Rule edits carry `{
                            field: { from, to } }` pairs; a rule change carries
                            `from_rule_id` / `to_rule_id`. The exact keys depend
                            on `event_type`.
                        affected_member_count:
                          type: number
                          description: >-
                            How many members were on the rule when the change
                            was made.
                        workspace_id:
                          type: string
                        actor:
                          anyOf:
                            - type: object
                              properties:
                                name:
                                  anyOf:
                                    - type: string
                                    - type: 'null'
                                email:
                                  anyOf:
                                    - type: string
                                    - type: 'null'
                              required:
                                - name
                                - email
                              additionalProperties: false
                            - type: 'null'
                        member:
                          anyOf:
                            - type: object
                              properties:
                                name:
                                  anyOf:
                                    - type: string
                                    - type: 'null'
                                email:
                                  anyOf:
                                    - type: string
                                    - type: 'null'
                              required:
                                - name
                                - email
                              additionalProperties: false
                            - type: 'null'
                      required:
                        - id
                        - createdAt
                        - rule_id
                        - allowance_type_id
                        - event_type
                        - actor_member_id
                        - member_id
                        - comment
                        - changes
                        - affected_member_count
                        - workspace_id
                        - actor
                        - member
                      additionalProperties: false
                  ruleNames:
                    type: object
                    propertyNames:
                      type: string
                    additionalProperties:
                      type: string
                    description: >-
                      Names of every rule the entries reference, keyed by rule
                      id — including rules referenced inside `changes` and rules
                      that have since been deleted.
                required:
                  - entries
                  - ruleNames
                additionalProperties: false
        '400':
          description: Invalid input data
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error.BAD_REQUEST'
        '401':
          description: Authorization not provided
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error.UNAUTHORIZED'
        '403':
          description: Insufficient access
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error.FORBIDDEN'
        '404':
          description: Not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error.NOT_FOUND'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error.INTERNAL_SERVER_ERROR'
      security:
        - ApiKey: []
components:
  schemas:
    error.BAD_REQUEST:
      type: object
      properties:
        message:
          type: string
          description: The error message
          example: Invalid input data
        code:
          type: string
          description: The error code
          example: BAD_REQUEST
        issues:
          description: An array of issues that were responsible for the error
          example: []
          type: array
          items:
            type: object
            properties:
              message:
                type: string
            required:
              - message
            additionalProperties: false
      required:
        - message
        - code
      additionalProperties: false
      title: Invalid input data error (400)
      description: The error information
      example:
        code: BAD_REQUEST
        message: Invalid input data
        issues: []
    error.UNAUTHORIZED:
      type: object
      properties:
        message:
          type: string
          description: The error message
          example: Authorization not provided
        code:
          type: string
          description: The error code
          example: UNAUTHORIZED
        issues:
          description: An array of issues that were responsible for the error
          example: []
          type: array
          items:
            type: object
            properties:
              message:
                type: string
            required:
              - message
            additionalProperties: false
      required:
        - message
        - code
      additionalProperties: false
      title: Authorization not provided error (401)
      description: The error information
      example:
        code: UNAUTHORIZED
        message: Authorization not provided
        issues: []
    error.FORBIDDEN:
      type: object
      properties:
        message:
          type: string
          description: The error message
          example: Insufficient access
        code:
          type: string
          description: The error code
          example: FORBIDDEN
        issues:
          description: An array of issues that were responsible for the error
          example: []
          type: array
          items:
            type: object
            properties:
              message:
                type: string
            required:
              - message
            additionalProperties: false
      required:
        - message
        - code
      additionalProperties: false
      title: Insufficient access error (403)
      description: The error information
      example:
        code: FORBIDDEN
        message: Insufficient access
        issues: []
    error.NOT_FOUND:
      type: object
      properties:
        message:
          type: string
          description: The error message
          example: Not found
        code:
          type: string
          description: The error code
          example: NOT_FOUND
        issues:
          description: An array of issues that were responsible for the error
          example: []
          type: array
          items:
            type: object
            properties:
              message:
                type: string
            required:
              - message
            additionalProperties: false
      required:
        - message
        - code
      additionalProperties: false
      title: Not found error (404)
      description: The error information
      example:
        code: NOT_FOUND
        message: Not found
        issues: []
    error.INTERNAL_SERVER_ERROR:
      type: object
      properties:
        message:
          type: string
          description: The error message
          example: Internal server error
        code:
          type: string
          description: The error code
          example: INTERNAL_SERVER_ERROR
        issues:
          description: An array of issues that were responsible for the error
          example: []
          type: array
          items:
            type: object
            properties:
              message:
                type: string
            required:
              - message
            additionalProperties: false
      required:
        - message
        - code
      additionalProperties: false
      title: Internal server error error (500)
      description: The error information
      example:
        code: INTERNAL_SERVER_ERROR
        message: Internal server error
        issues: []
  securitySchemes:
    ApiKey:
      type: apiKey
      name: X-API-KEY
      in: header

````