AssetLab Infrastructure Lifecycle Events API

Lifecycle strategy events keyed on class/material/diameter scopes; the events of one scope are its strategy

Operations 5

GET /infrastructure-lifecycle-events List lifecycle strategy events #
POST /infrastructure-lifecycle-events Create lifecycle strategy event #
GET /infrastructure-lifecycle-events/{id} Get lifecycle strategy event #
PATCH /infrastructure-lifecycle-events/{id} Update lifecycle strategy event #
DELETE /infrastructure-lifecycle-events/{id} Delete lifecycle strategy event #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • 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.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/assetlab-ca:assetlab-ca-infrastructure-lifecycle-events-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

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 Specification

assetlab-ca-infrastructure-lifecycle-events-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Assetlab Ca Infrastructure Lifecycle Events API
  version: '1.0'
  contact:
    name: AssetLab Support
    url: https://assetlab.ca
    email: support@assetlab.ca
  license:
    name: Proprietary
  description: 'Operations tagged Infrastructure Lifecycle Events across 2 of this provider''s published API definitions: assetlab-ca-openapi.yaml, assetlab-ca-openapi.yaml. Each path carries the servers of the definition it was published in.'
servers:
- url: https://ksirnjovowpvamgcnapt.supabase.co/functions/v1/api-gateway/v1
  description: Production
security:
- BearerAuth: []
tags:
- name: Infrastructure Lifecycle Events
  description: Lifecycle strategy events keyed on class/material/diameter scopes; the events of one scope are its strategy
paths:
  /infrastructure-lifecycle-events:
    get:
      operationId: listInfrastructureLifecycleEvents
      summary: List lifecycle strategy events
      tags:
      - Infrastructure Lifecycle Events
      description: 'Returns a paginated list of lifecycle strategy events. Requires

        `infrastructure_lifecycle_events:read` scope.'
      parameters:
      - $ref: '#/components/parameters/page'
      - $ref: '#/components/parameters/per_page'
      - in: query
        name: feature_class
        schema:
          type: string
      - in: query
        name: material
        schema:
          type: string
      - in: query
        name: event_class
        schema:
          type: string
          enum:
          - preventive
          - rehabilitation
      - in: query
        name: is_active
        schema:
          type: string
          enum:
          - 'true'
          - 'false'
      responses:
        '200':
          description: Paginated lifecycle event list
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/InfrastructureLifecycleEvent'
                  pagination:
                    $ref: '#/components/schemas/Pagination'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '429':
          $ref: '#/components/responses/RateLimited'
    post:
      operationId: createInfrastructureLifecycleEvent
      summary: Create lifecycle strategy event
      tags:
      - Infrastructure Lifecycle Events
      description: 'Requires `infrastructure_lifecycle_events:write` scope. Events attach to a scope

        (feature class / material / diameter band), never to individual features.'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/InfrastructureLifecycleEventCreate'
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/InfrastructureLifecycleEvent'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '409':
          description: The scope already has an event with this name
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
    servers:
    - url: https://ksirnjovowpvamgcnapt.supabase.co/functions/v1/api-gateway/v1
      description: Production
  /infrastructure-lifecycle-events/{id}:
    get:
      operationId: getInfrastructureLifecycleEvent
      summary: Get lifecycle strategy event
      tags:
      - Infrastructure Lifecycle Events
      parameters:
      - $ref: '#/components/parameters/id'
      responses:
        '200':
          description: Lifecycle event detail
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/InfrastructureLifecycleEvent'
        '404':
          $ref: '#/components/responses/NotFound'
    patch:
      operationId: updateInfrastructureLifecycleEvent
      summary: Update lifecycle strategy event
      tags:
      - Infrastructure Lifecycle Events
      description: 'Requires `infrastructure_lifecycle_events:write` scope. Every write re-confirms

        the cost (`cost_reviewed_on` is server-set).'
      parameters:
      - $ref: '#/components/parameters/id'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/InfrastructureLifecycleEventUpdate'
      responses:
        '200':
          description: Updated
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/InfrastructureLifecycleEvent'
        '400':
          $ref: '#/components/responses/BadRequest'
        '404':
          $ref: '#/components/responses/NotFound'
    delete:
      operationId: deleteInfrastructureLifecycleEvent
      summary: Delete lifecycle strategy event
      tags:
      - Infrastructure Lifecycle Events
      description: 'Requires `infrastructure_lifecycle_events:write` scope. Projections recompute

        immediately; set `is_active` false to disable instead of deleting.'
      parameters:
      - $ref: '#/components/parameters/id'
      responses:
        '200':
          description: Deleted
        '404':
          $ref: '#/components/responses/NotFound'
    servers:
    - url: https://ksirnjovowpvamgcnapt.supabase.co/functions/v1/api-gateway/v1
      description: Production
components:
  schemas:
    InfrastructureLifecycleEventCreate:
      type: object
      required:
      - name
      - event_class
      - trigger_condition_max
      - impact_method
      description: 'At least one of `feature_class` / `material` is required; `diameter_min_mm`

        requires `material`. `impact_add_years` is required for `add_years`,

        `impact_reset_to` for `reset_condition`. `cost_reviewed_on` is server-set.

        '
      properties:
        name:
          type: string
          maxLength: 200
        feature_class:
          type: string
          pattern: ^[a-z][a-z0-9_]{0,49}$
          nullable: true
        material:
          type: string
          maxLength: 200
          nullable: true
        diameter_min_mm:
          type: number
          minimum: 1
          nullable: true
        event_class:
          type: string
          enum:
          - preventive
          - rehabilitation
        trigger_condition_max:
          type: integer
          minimum: 1
          maximum: 99
        trigger_condition_min:
          type: integer
          minimum: 0
          maximum: 98
          default: 0
        impact_method:
          type: string
          enum:
          - add_years
          - reset_condition
        impact_add_years:
          type: number
          exclusiveMinimum: 0
          maximum: 100
          nullable: true
        impact_reset_to:
          type: integer
          minimum: 1
          maximum: 100
          nullable: true
        cost_method:
          type: string
          enum:
          - per_unit
          - fixed
          default: per_unit
        unit_cost:
          type: number
          minimum: 0
          nullable: true
          description: Money in the organization's currency - GET /v1/organization-settings for currency_code
        fixed_cost:
          type: number
          minimum: 0
          nullable: true
          description: Money in the organization's currency - GET /v1/organization-settings for currency_code
        cost_source:
          type: string
          maxLength: 200
          nullable: true
        max_applications:
          type: integer
          minimum: 1
          maximum: 10
          default: 1
        min_years_between:
          type: number
          minimum: 1
          maximum: 100
          default: 1
        sort_order:
          type: integer
          minimum: 0
        is_active:
          type: boolean
          default: true
        work_generation:
          type: string
          enum:
          - none
          - work_order
          - project
          default: none
        work_generation_category_id:
          type: string
          format: uuid
          nullable: true
        work_generation_priority:
          type: string
          nullable: true
          enum:
          - LOW
          - MEDIUM
          - HIGH
          - URGENT
    InfrastructureLifecycleEventUpdate:
      type: object
      description: 'Partial update. Changing `impact_method` swaps the paired value automatically

        (the other impact field is nulled). Every write re-confirms the cost

        (`cost_reviewed_on` is server-set).

        '
      properties:
        name:
          type: string
          maxLength: 200
        feature_class:
          type: string
          nullable: true
        material:
          type: string
          maxLength: 200
          nullable: true
        diameter_min_mm:
          type: number
          minimum: 1
          nullable: true
        event_class:
          type: string
          enum:
          - preventive
          - rehabilitation
        trigger_condition_max:
          type: integer
          minimum: 1
          maximum: 99
        trigger_condition_min:
          type: integer
          minimum: 0
          maximum: 98
        impact_method:
          type: string
          enum:
          - add_years
          - reset_condition
        impact_add_years:
          type: number
          exclusiveMinimum: 0
          maximum: 100
          nullable: true
        impact_reset_to:
          type: integer
          minimum: 1
          maximum: 100
          nullable: true
        cost_method:
          type: string
          enum:
          - per_unit
          - fixed
        unit_cost:
          type: number
          minimum: 0
          nullable: true
          description: Money in the organization's currency - GET /v1/organization-settings for currency_code
        fixed_cost:
          type: number
          minimum: 0
          nullable: true
          description: Money in the organization's currency - GET /v1/organization-settings for currency_code
        cost_source:
          type: string
          maxLength: 200
          nullable: true
        max_applications:
          type: integer
          minimum: 1
          maximum: 10
        min_years_between:
          type: number
          minimum: 1
          maximum: 100
        sort_order:
          type: integer
          minimum: 0
        is_active:
          type: boolean
        work_generation:
          type: string
          enum:
          - none
          - work_order
          - project
          default: none
        work_generation_category_id:
          type: string
          format: uuid
          nullable: true
        work_generation_priority:
          type: string
          nullable: true
          enum:
          - LOW
          - MEDIUM
          - HIGH
          - URGENT
    Pagination:
      type: object
      properties:
        page:
          type: integer
          example: 1
        per_page:
          type: integer
          example: 25
        total:
          type: integer
          example: 142
        total_pages:
          type: integer
          example: 6
    Error:
      type: object
      properties:
        error:
          type: string
          example: Asset not found
    InfrastructureLifecycleEvent:
      type: object
      description: 'One event of a lifecycle strategy — a condition-triggered maintenance or

        rehabilitation intervention ("Crack Sealing at condition 80-90 adds 2 years").

        Events are keyed on a scope (`feature_class` code, `material`, optional

        `diameter_min_mm` band), never on individual features: every feature resolves the

        most specific scope matching its own attributes, exactly as replacement rates

        resolve. The events sharing one scope are that scope''s strategy. Replacement is

        deliberately not an event — it is priced by the rate tiers and scheduled by the

        renewal forecast.

        '
      properties:
        id:
          type: string
          format: uuid
        feature_class:
          type: string
          nullable: true
          description: Feature class code the scope applies to
        material:
          type: string
          nullable: true
        diameter_min_mm:
          type: number
          nullable: true
          description: Lower bound of a diameter band; bands ladder like rates
        name:
          type: string
        event_class:
          type: string
          enum:
          - preventive
          - rehabilitation
        trigger_condition_max:
          type: integer
          description: Fires when projected condition falls to this
        trigger_condition_min:
          type: integer
          description: A feature already below this has missed the event
        impact_method:
          type: string
          enum:
          - add_years
          - reset_condition
        impact_add_years:
          type: number
          nullable: true
        impact_reset_to:
          type: integer
          nullable: true
        cost_method:
          type: string
          enum:
          - per_unit
          - fixed
        unit_cost:
          type: number
          nullable: true
          description: Per the feature's unit, in current-year money; never indexed for inflation. Money in the organization's currency - GET /v1/organization-settings for currency_code
        fixed_cost:
          type: number
          nullable: true
          description: Money in the organization's currency - GET /v1/organization-settings for currency_code
        cost_source:
          type: string
          nullable: true
          description: Provenance of the cost (e.g. "Engineering 2026")
        cost_reviewed_on:
          type: string
          format: date
          nullable: true
          description: Server-set on every write — writing an event confirms its cost
        max_applications:
          type: integer
        min_years_between:
          type: number
        sort_order:
          type: integer
        work_generation:
          type: string
          enum:
          - none
          - work_order
          - project
          description: What a due application becomes when created from the interventions list; nothing is created on a schedule
        work_generation_category_id:
          type: string
          format: uuid
          nullable: true
          description: Work category for generated work orders
        work_generation_priority:
          type: string
          nullable: true
          enum:
          - LOW
          - MEDIUM
          - HIGH
          - URGENT
        is_active:
          type: boolean
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
  responses:
    NotFound:
      description: Resource not found
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    Unauthorized:
      description: Missing or invalid API key
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    BadRequest:
      description: Invalid request (validation error or malformed input)
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    RateLimited:
      description: Rate limit exceeded
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  parameters:
    id:
      name: id
      in: path
      required: true
      schema:
        type: string
        format: uuid
      description: Resource UUID
    page:
      name: page
      in: query
      schema:
        type: integer
        default: 1
        minimum: 1
      description: Page number
    per_page:
      name: per_page
      in: query
      schema:
        type: integer
        default: 25
        minimum: 1
        maximum: 1000
      description: Items per page
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      description: API key from AssetLab Settings > API Keys
x-refined-from:
- assetlab-ca-openapi.yaml
- assetlab-ca-openapi.yaml
x-tagGroups:
- name: Core
  tags:
  - Assets
  - Work Orders
  - Work Requests
  - PM Schedules
  - PM Templates
- name: Facilities
  tags:
  - Sites
  - Buildings
  - Locations
- name: Feature Classification
  tags:
  - Systems
  - System Groups
  - System Classes
  - Asset Types
  - Asset Type Groups
  - Manufacturers
- name: Projects
  tags:
  - Projects
  - Project Sites
  - Project Buildings
  - Project Locations
  - Project System Classes
  - Project System Groups
  - Project Systems
  - Project Assets
  - Project Tasks
  - Project Milestones
  - Project Phases
  - Project Budget Items
  - Project Time Entries
  - Project Comments
  - Project Risks
  - Project Document Folder Templates
- name: Financial
  tags:
  - Budgets
  - Invoices
  - Purchase Orders
  - Expenses
  - Change Orders
  - Cost Categories
  - Asset Costs
  - Asset Replacement Plans
- name: Vendors & Contracts
  tags:
  - Vendors
  - Contracts
  - Vendor Site Assignments
  - Contract Sites
- name: Compliance
  tags:
  - Compliance
  - Compliance Records
- name: Parts & Inventory
  tags:
  - Parts
  - Part Categories
- name: Comments & Documents
  tags:
  - Asset Comments
  - Work Order Comments
  - Asset Documents
  - Project Documents
  - Contract Documents
  - Attachments
  - Upload URLs
- name: Level of Service
  tags:
  - Service Areas
  - Service Area System Classes
  - Service Area Sites
  - LoS Measures
  - LoS Measurements
  - LoS Proposed Targets
  - LoS Targets History
  - System LoS Targets
  - Infrastructure LoS Targets
  - Criticality Modifiers
  - LoS Consequences
  - LoS Status Snapshots
- name: Infrastructure
  tags:
  - Infrastructure Feature Classes
  - Infrastructure Networks
  - Infrastructure Assets
  - Infrastructure Asset Inspections
- name: Dashboard & Analytics
  tags:
  - Dashboard
  - Dashboard Snapshots
  - Site FCI History
  - Asset Risk History
  - Asset Condition Assessments
- name: Configuration
  tags:
  - Asset Statuses
  - Work Categories
  - Building Types
  - Location Types
  - Custom Field Definitions
  - Custom Field Values