> ## 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 a member's rule history

> Every assignment-level entry referencing this member, newest first: which rule they were put on, moved to, or removed from, by whom and why.



## OpenAPI

````yaml https://api.absentify.com/api/v1/openapi.json get /members/{member_id}/rule-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:
  /members/{member_id}/rule-audit-log:
    get:
      tags:
        - Allowance Management
      summary: Read a member's rule history
      description: >-
        Every assignment-level entry referencing this member, newest first:
        which rule they were put on, moved to, or removed from, by whom and why.
      operationId: allowanceRule-getMemberRuleAuditLog
      parameters:
        - in: path
          name: member_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: allowance_type_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)$
        - in: query
          name: take
          schema:
            default: 100
            type: integer
            minimum: 1
            maximum: 200
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                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.
                    actor:
                      anyOf:
                        - type: object
                          properties:
                            name:
                              anyOf:
                                - type: string
                                - type: 'null'
                            email:
                              anyOf:
                                - type: string
                                - type: 'null'
                          required:
                            - name
                            - email
                          additionalProperties: false
                        - type: 'null'
                    rule_name:
                      anyOf:
                        - type: string
                        - type: 'null'
                    from_rule_id:
                      anyOf:
                        - type: string
                        - type: 'null'
                      description: The rule the member was on before this entry.
                    to_rule_id:
                      anyOf:
                        - type: string
                        - type: 'null'
                      description: The rule the member was on after it.
                    from_rule_name:
                      anyOf:
                        - type: string
                        - type: 'null'
                    to_rule_name:
                      anyOf:
                        - type: string
                        - type: 'null'
                  required:
                    - id
                    - createdAt
                    - rule_id
                    - allowance_type_id
                    - event_type
                    - actor_member_id
                    - member_id
                    - comment
                    - changes
                    - affected_member_count
                    - actor
                    - rule_name
                    - from_rule_id
                    - to_rule_id
                    - from_rule_name
                    - to_rule_name
                  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

````