Agilent iLab Operations API

The iLab API enables customers to seamlessly integrate outside applications with iLab's billing and reporting modules. It leverages a RESTful application architecture with HATEOAS (Hypermedia as the Engine of Application State) and OAuth2 for secure access. The API supports integrations with institutional financial systems such as SAP, Oracle/PeopleSoft, Lawson, and Banner, as well as identity management systems and LIMS.

Documentation

Specifications

Schemas & Data

Other Resources

OpenAPI Specification

agilent-ilab-operations-api.yaml Raw ↑
openapi: 3.0.3
info:
  title: Agilent iLab Operations API
  description: >-
    The iLab API enables customers to seamlessly integrate outside applications
    with iLab's billing and reporting modules. It leverages a RESTful
    application architecture with HATEOAS (Hypermedia as the Engine of
    Application State) and OAuth2 for secure access. The API supports
    integrations with institutional financial systems such as SAP,
    Oracle/PeopleSoft, Lawson, and Banner, as well as identity management
    systems and LIMS.
  version: v1
  contact:
    email: [email protected]
    url: https://help.ilab.agilent.com
  x-generated-from: documentation
servers:
  - url: https://api.ilabsolutions.com/v1
    description: iLab API v1
tags:
  - name: Cores
    description: Core facility resources — the root resource of the API
  - name: Services
    description: Services and price lists offered by a core facility
  - name: Reservations
    description: Equipment reservations and scheduling
  - name: Service Requests
    description: Service request submissions and management
  - name: Members
    description: Core facility membership and user management
  - name: Projects
    description: Research projects and cost accounts
  - name: Invoices
    description: Billing invoices and financial records
paths:
  /cores:
    get:
      operationId: listCores
      summary: Agilent iLab List Cores
      description: Returns a list of all core facilities accessible to the authenticated user.
      tags:
        - Cores
      parameters:
        - name: institution_id
          in: query
          description: Filter cores by institution identifier.
          required: false
          schema:
            type: integer
            example: 123
        - name: page
          in: query
          description: Page number for paginated results.
          required: false
          schema:
            type: integer
            example: 1
        - name: per_page
          in: query
          description: Number of results per page.
          required: false
          schema:
            type: integer
            example: 25
      responses:
        '200':
          description: A list of core facilities.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CoresListResponse'
              examples:
                ListCores200Example:
                  summary: Default listCores 200 response
                  x-microcks-default: true
                  value:
                    cores:
                      - id: 5582
                        name: Genomics Core Facility
                        institution: Stanford University
                        description: High-throughput genomics and sequencing services
                        status: active
                        url: https://api.ilabsolutions.com/v1/cores/5582
        '401':
          description: Unauthorized. Invalid or missing API token.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /cores/{core_id}:
    get:
      operationId: getCore
      summary: Agilent iLab Get Core
      description: Returns detailed information about a specific core facility.
      tags:
        - Cores
      parameters:
        - name: core_id
          in: path
          description: Unique identifier for the core facility.
          required: true
          schema:
            type: integer
            example: 5582
      responses:
        '200':
          description: Core facility details.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Core'
              examples:
                GetCore200Example:
                  summary: Default getCore 200 response
                  x-microcks-default: true
                  value:
                    id: 5582
                    name: Genomics Core Facility
                    institution: Stanford University
                    description: High-throughput genomics and sequencing services
                    status: active
                    contact_email: [email protected]
                    url: https://api.ilabsolutions.com/v1/cores/5582
        '404':
          description: Core not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /cores/{core_id}/services:
    get:
      operationId: listServices
      summary: Agilent iLab List Services
      description: Returns a list of all services offered by a core facility.
      tags:
        - Services
      parameters:
        - name: core_id
          in: path
          description: Unique identifier for the core facility.
          required: true
          schema:
            type: integer
            example: 5582
      responses:
        '200':
          description: A list of services for the core facility.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServicesListResponse'
              examples:
                ListServices200Example:
                  summary: Default listServices 200 response
                  x-microcks-default: true
                  value:
                    services:
                      - id: 493801
                        name: RNA Sequencing
                        description: Transcriptome sequencing service
                        status: active
                        url: https://api.ilabsolutions.com/v1/cores/5582/services/493801
        '404':
          description: Core not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /cores/{core_id}/services/{service_id}/prices:
    get:
      operationId: listServicePrices
      summary: Agilent iLab List Service Prices
      description: Returns all prices for a given service in a core facility.
      tags:
        - Services
      parameters:
        - name: core_id
          in: path
          description: Unique identifier for the core facility.
          required: true
          schema:
            type: integer
            example: 5582
        - name: service_id
          in: path
          description: Unique identifier for the service.
          required: true
          schema:
            type: integer
            example: 493801
      responses:
        '200':
          description: Price list for the service.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PricesListResponse'
              examples:
                ListServicePrices200Example:
                  summary: Default listServicePrices 200 response
                  x-microcks-default: true
                  value:
                    prices:
                      - id: 66
                        member_type: internal
                        amount: 150.00
                        currency: USD
                        unit: per_sample
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /cores/{core_id}/services/{service_id}/prices/{price_id}:
    put:
      operationId: updateServicePrice
      summary: Agilent iLab Update Service Price
      description: Updates the price for a specific pricing tier of a service.
      tags:
        - Services
      parameters:
        - name: core_id
          in: path
          description: Unique identifier for the core facility.
          required: true
          schema:
            type: integer
            example: 5582
        - name: service_id
          in: path
          description: Unique identifier for the service.
          required: true
          schema:
            type: integer
            example: 493801
        - name: price_id
          in: path
          description: Unique identifier for the price record.
          required: true
          schema:
            type: integer
            example: 66
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PriceUpdateRequest'
            examples:
              UpdateServicePriceRequestExample:
                summary: Default updateServicePrice request
                x-microcks-default: true
                value:
                  amount: 175.00
                  currency: USD
      responses:
        '200':
          description: Updated price record.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Price'
              examples:
                UpdateServicePrice200Example:
                  summary: Default updateServicePrice 200 response
                  x-microcks-default: true
                  value:
                    id: 66
                    member_type: internal
                    amount: 175.00
                    currency: USD
                    unit: per_sample
        '404':
          description: Resource not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /cores/{core_id}/service_requests:
    get:
      operationId: listServiceRequests
      summary: Agilent iLab List Service Requests
      description: Returns service requests submitted to a core facility.
      tags:
        - Service Requests
      parameters:
        - name: core_id
          in: path
          description: Unique identifier for the core facility.
          required: true
          schema:
            type: integer
            example: 5582
        - name: status
          in: query
          description: Filter by request status (submitted, processing, completed, cancelled).
          required: false
          schema:
            type: string
            enum:
              - submitted
              - processing
              - completed
              - cancelled
            example: submitted
        - name: page
          in: query
          description: Page number for paginated results.
          required: false
          schema:
            type: integer
            example: 1
      responses:
        '200':
          description: A list of service requests.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServiceRequestsListResponse'
              examples:
                ListServiceRequests200Example:
                  summary: Default listServiceRequests 200 response
                  x-microcks-default: true
                  value:
                    service_requests:
                      - id: 100123
                        service_id: 493801
                        status: submitted
                        submitted_at: '2025-03-15T14:30:00Z'
                        principal_investigator: Jane Smith
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
    post:
      operationId: createServiceRequest
      summary: Agilent iLab Create Service Request
      description: Submits a new service request to a core facility.
      tags:
        - Service Requests
      parameters:
        - name: core_id
          in: path
          description: Unique identifier for the core facility.
          required: true
          schema:
            type: integer
            example: 5582
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ServiceRequestCreateRequest'
            examples:
              CreateServiceRequestRequestExample:
                summary: Default createServiceRequest request
                x-microcks-default: true
                value:
                  service_id: 493801
                  project_id: 987
                  quantity: 5
                  notes: RNA sequencing for experiment batch 12
      responses:
        '201':
          description: Service request created successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServiceRequest'
              examples:
                CreateServiceRequest201Example:
                  summary: Default createServiceRequest 201 response
                  x-microcks-default: true
                  value:
                    id: 100124
                    service_id: 493801
                    status: submitted
                    submitted_at: '2026-04-19T10:00:00Z'
                    quantity: 5
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /cores/{core_id}/reservations:
    get:
      operationId: listReservations
      summary: Agilent iLab List Reservations
      description: Returns equipment reservations for a core facility.
      tags:
        - Reservations
      parameters:
        - name: core_id
          in: path
          description: Unique identifier for the core facility.
          required: true
          schema:
            type: integer
            example: 5582
        - name: start_date
          in: query
          description: Start date for reservation query (ISO 8601).
          required: false
          schema:
            type: string
            format: date
            example: '2026-04-01'
        - name: end_date
          in: query
          description: End date for reservation query (ISO 8601).
          required: false
          schema:
            type: string
            format: date
            example: '2026-04-30'
      responses:
        '200':
          description: A list of equipment reservations.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReservationsListResponse'
              examples:
                ListReservations200Example:
                  summary: Default listReservations 200 response
                  x-microcks-default: true
                  value:
                    reservations:
                      - id: 200456
                        equipment_name: Illumina NovaSeq 6000
                        start_time: '2026-04-20T09:00:00Z'
                        end_time: '2026-04-20T17:00:00Z'
                        user: jsmith
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /cores/{core_id}/invoices:
    get:
      operationId: listInvoices
      summary: Agilent iLab List Invoices
      description: Returns billing invoices generated by a core facility.
      tags:
        - Invoices
      parameters:
        - name: core_id
          in: path
          description: Unique identifier for the core facility.
          required: true
          schema:
            type: integer
            example: 5582
        - name: status
          in: query
          description: Filter by invoice status (draft, sent, paid, voided).
          required: false
          schema:
            type: string
            enum:
              - draft
              - sent
              - paid
              - voided
            example: sent
      responses:
        '200':
          description: A list of invoices.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InvoicesListResponse'
              examples:
                ListInvoices200Example:
                  summary: Default listInvoices 200 response
                  x-microcks-default: true
                  value:
                    invoices:
                      - id: 300789
                        period: '2026-03'
                        status: sent
                        total_amount: 2500.00
                        currency: USD
                        issued_at: '2026-04-01T00:00:00Z'
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /cores/{core_id}/members:
    get:
      operationId: listMembers
      summary: Agilent iLab List Members
      description: Returns members of a core facility.
      tags:
        - Members
      parameters:
        - name: core_id
          in: path
          description: Unique identifier for the core facility.
          required: true
          schema:
            type: integer
            example: 5582
      responses:
        '200':
          description: A list of core facility members.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MembersListResponse'
              examples:
                ListMembers200Example:
                  summary: Default listMembers 200 response
                  x-microcks-default: true
                  value:
                    members:
                      - id: 400111
                        name: Jane Smith
                        email: [email protected]
                        role: pi
                        status: active
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /cores/{core_id}/projects:
    get:
      operationId: listProjects
      summary: Agilent iLab List Projects
      description: Returns research projects and cost accounts associated with a core facility.
      tags:
        - Projects
      parameters:
        - name: core_id
          in: path
          description: Unique identifier for the core facility.
          required: true
          schema:
            type: integer
            example: 5582
      responses:
        '200':
          description: A list of projects.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProjectsListResponse'
              examples:
                ListProjects200Example:
                  summary: Default listProjects 200 response
                  x-microcks-default: true
                  value:
                    projects:
                      - id: 987
                        name: Cancer Genomics Study 2026
                        pi_name: Jane Smith
                        account_number: '1234-5678'
                        status: active
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
components:
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      description: >-
        API token obtained from iLab Administration > API Clients. Contact
        [email protected] to obtain credentials.
  schemas:
    Core:
      type: object
      title: Core
      description: A core facility within an institution.
      properties:
        id:
          type: integer
          description: Unique identifier for the core facility.
          example: 5582
        name:
          type: string
          description: Display name of the core facility.
          example: Genomics Core Facility
        institution:
          type: string
          description: Name of the institution operating the core.
          example: Stanford University
        description:
          type: string
          description: Description of the core facility's capabilities.
          example: High-throughput genomics and sequencing services
        status:
          type: string
          description: Operational status of the core.
          enum:
            - active
            - inactive
          example: active
        contact_email:
          type: string
          format: email
          description: Contact email for the core facility.
          example: [email protected]
        url:
          type: string
          format: uri
          description: API URL for this core resource.
          example: https://api.ilabsolutions.com/v1/cores/5582
    CoresListResponse:
      type: object
      title: Cores List Response
      description: Paginated list of core facilities.
      properties:
        cores:
          type: array
          items:
            $ref: '#/components/schemas/Core'
        total:
          type: integer
          description: Total number of cores matching the query.
          example: 42
        page:
          type: integer
          description: Current page number.
          example: 1
        per_page:
          type: integer
          description: Number of items per page.
          example: 25
    Service:
      type: object
      title: Service
      description: A service offered by a core facility.
      properties:
        id:
          type: integer
          description: Unique identifier for the service.
          example: 493801
        name:
          type: string
          description: Name of the service.
          example: RNA Sequencing
        description:
          type: string
          description: Description of the service.
          example: Transcriptome sequencing service
        status:
          type: string
          description: Availability status of the service.
          enum:
            - active
            - inactive
          example: active
        url:
          type: string
          format: uri
          description: API URL for this service resource.
          example: https://api.ilabsolutions.com/v1/cores/5582/services/493801
    ServicesListResponse:
      type: object
      title: Services List Response
      description: List of services for a core facility.
      properties:
        services:
          type: array
          items:
            $ref: '#/components/schemas/Service'
    Price:
      type: object
      title: Price
      description: A pricing tier for a service.
      properties:
        id:
          type: integer
          description: Unique identifier for this price record.
          example: 66
        member_type:
          type: string
          description: Member type this price applies to (internal, external, collaborator).
          enum:
            - internal
            - external
            - collaborator
          example: internal
        amount:
          type: number
          format: double
          description: Price amount.
          example: 150.00
        currency:
          type: string
          description: Currency code (ISO 4217).
          example: USD
        unit:
          type: string
          description: Unit of measurement for the price.
          example: per_sample
    PricesListResponse:
      type: object
      title: Prices List Response
      description: List of prices for a service.
      properties:
        prices:
          type: array
          items:
            $ref: '#/components/schemas/Price'
    PriceUpdateRequest:
      type: object
      title: Price Update Request
      description: Request body for updating a service price.
      required:
        - amount
      properties:
        amount:
          type: number
          format: double
          description: New price amount.
          example: 175.00
        currency:
          type: string
          description: Currency code (ISO 4217).
          example: USD
    ServiceRequest:
      type: object
      title: Service Request
      description: A service request submitted to a core facility.
      properties:
        id:
          type: integer
          description: Unique identifier for the service request.
          example: 100123
        service_id:
          type: integer
          description: Identifier of the service being requested.
          example: 493801
        project_id:
          type: integer
          description: Identifier of the research project to bill.
          example: 987
        status:
          type: string
          description: Current status of the service request.
          enum:
            - submitted
            - processing
            - completed
            - cancelled
          example: submitted
        quantity:
          type: integer
          description: Number of units requested.
          example: 5
        notes:
          type: string
          description: Additional notes or instructions for the core.
          example: RNA sequencing for experiment batch 12
        submitted_at:
          type: string
          format: date-time
          description: Timestamp when the request was submitted.
          example: '2025-03-15T14:30:00Z'
        principal_investigator:
          type: string
          description: Name of the principal investigator.
          example: Jane Smith
    ServiceRequestsListResponse:
      type: object
      title: Service Requests List Response
      description: List of service requests for a core facility.
      properties:
        service_requests:
          type: array
          items:
            $ref: '#/components/schemas/ServiceRequest'
    ServiceRequestCreateRequest:
      type: object
      title: Service Request Create Request
      description: Request body for creating a new service request.
      required:
        - service_id
      properties:
        service_id:
          type: integer
          description: Identifier of the service to request.
          example: 493801
        project_id:
          type: integer
          description: Identifier of the research project to bill.
          example: 987
        quantity:
          type: integer
          description: Number of units to request.
          example: 5
        notes:
          type: string
          description: Additional notes for the core facility.
          example: RNA sequencing for experiment batch 12
    Reservation:
      type: object
      title: Reservation
      description: An equipment reservation at a core facility.
      properties:
        id:
          type: integer
          description: Unique identifier for the reservation.
          example: 200456
        equipment_name:
          type: string
          description: Name of the reserved equipment.
          example: Illumina NovaSeq 6000
        start_time:
          type: string
          format: date-time
          description: Reservation start time (ISO 8601).
          example: '2026-04-20T09:00:00Z'
        end_time:
          type: string
          format: date-time
          description: Reservation end time (ISO 8601).
          example: '2026-04-20T17:00:00Z'
        user:
          type: string
          description: Username of the person who made the reservation.
          example: jsmith
    ReservationsListResponse:
      type: object
      title: Reservations List Response
      description: List of reservations for a core facility.
      properties:
        reservations:
          type: array
          items:
            $ref: '#/components/schemas/Reservation'
    Invoice:
      type: object
      title: Invoice
      description: A billing invoice from a core facility.
      properties:
        id:
          type: integer
          description: Unique identifier for the invoice.
          example: 300789
        period:
          type: string
          description: Billing period (YYYY-MM format).
          example: '2026-03'
        status:
          type: string
          description: Current invoice status.
          enum:
            - draft
            - sent
            - paid
            - voided
          example: sent
        total_amount:
          type: number
          format: double
          description: Total invoice amount.
          example: 2500.00
        currency:
          type: string
          description: Currency code (ISO 4217).
          example: USD
        issued_at:
          type: string
          format: date-time
          description: Timestamp when the invoice was issued.
          example: '2026-04-01T00:00:00Z'
    InvoicesListResponse:
      type: object
      title: Invoices List Response
      description: List of invoices for a core facility.
      properties:
        invoices:
          type: array
          items:
            $ref: '#/components/schemas/Invoice'
    Member:
      type: object
      title: Member
      description: A member of a core facility.
      properties:
        id:
          type: integer
          description: Unique identifier for the member.
          example: 400111
        name:
          type: string
          description: Full name of the member.
          example: Jane Smith
        email:
          type: string
          format: email
          description: Email address of the member.
          example: [email protected]
        role:
          type: string
          description: Role of the member in the core.
          enum:
            - pi
            - researcher
            - admin
            - staff
          example: pi
        status:
          type: string
          description: Membership status.
          enum:
            - active
            - inactive
          example: active
    MembersListResponse:
      type: object
      title: Members List Response
      description: List of members for a core facility.
      properties:
        members:
          type: array
          items:
            $ref: '#/components/schemas/Member'
    Project:
      type: object
      title: Project
      description: A research project or cost account.
      properties:
        id:
          type: integer
          description: Unique identifier for the project.
          example: 987
        name:
          type: string
          description: Name of the research project.
          example: Cancer Genomics Study 2026
        pi_name:
          type: string
          description: Name of the principal investigator.
          example: Jane Smith
        account_number:
          type: string
          description: Financial account number for billing.
          example: '1234-5678'
        status:
          type: string
          description: Project status.
          enum:
            - active
            - closed
          example: active
    ProjectsListResponse:
      type: object
      title: Projects List Response
      description: List of research projects for a core facility.
      properties:
        projects:
          type: array
          items:
            $ref: '#/components/schemas/Project'
    ErrorResponse:
      type: object
      title: Error Response
      description: Standard error response.
      properties:
        error:
          type: string
          description: Error code or type.
          example: not_found
        message:
          type: string
          description: Human-readable error message.
          example: The requested resource was not found.
        status:
          type: integer
          description: HTTP status code.
          example: 404
security:
  - BearerAuth: []