Confident LIMS Labs API

View associated labs

OpenAPI Specification

confident-lims-labs-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Clients Client Info Labs API
  version: 0.16.0
  description: API endpoints for clients to view their orders, samples, and associated labs. All endpoints are read-only (GET) and accessible only with client API credentials.
  contact:
    name: Confident Cannabis API Support
    url: https://www.confidentcannabis.com
servers:
- url: https://api.confidentcannabis.com
  description: Production server
security:
- ApiKeyAuth: []
tags:
- name: Labs
  description: View associated labs
paths:
  /v0/clients/labs:
    get:
      summary: List labs
      description: Returns a paginated list of labs associated with the authenticated client.
      operationId: getLabs
      tags:
      - Labs
      security:
      - ApiKeyAuth: []
      parameters:
      - name: start
        in: query
        description: Pagination offset (number of records to skip)
        required: false
        schema:
          type: integer
          default: 0
          minimum: 0
          example: 0
      - name: limit
        in: query
        description: Maximum number of records to return (max 100)
        required: false
        schema:
          type: integer
          default: 100
          minimum: 1
          maximum: 100
          example: 100
      - name: state
        in: query
        description: Filter by state (2-letter state code)
        required: false
        schema:
          type: string
          pattern: ^[A-Z]{2}$
          example: CO
      responses:
        '200':
          description: Successful response with list of labs
          content:
            application/json:
              schema:
                type: object
                required:
                - success
                - labs
                - more_results
                properties:
                  success:
                    type: boolean
                    example: true
                  labs:
                    type: array
                    items:
                      type: object
                      description: Summary information about a lab
                      required:
                      - id
                      - name
                      - state
                      - city
                      - last_modified
                      properties:
                        id:
                          type: integer
                          example: 456
                        name:
                          type: string
                          example: Rocky Mountain Testing Lab
                        state:
                          type: string
                          example: CO
                        city:
                          type: string
                          example: Denver
                        last_modified:
                          type: string
                          format: date-time
                          example: '2025-01-10T08:00:00Z'
                  more_results:
                    type: boolean
                    example: false
              examples:
                success:
                  summary: Successful labs response
                  value:
                    success: true
                    labs:
                    - id: 456
                      name: Rocky Mountain Testing Lab
                      state: CO
                      city: Denver
                      last_modified: '2025-01-10T08:00:00Z'
                    more_results: false
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                type: object
                description: Error response
                required:
                - success
                - error_code
                - error_message
                properties:
                  success:
                    type: boolean
                    example: false
                  error_code:
                    type: string
                    example: invalid_request
                  error_message:
                    type: string
                    example: Invalid request parameters
                  error_details:
                    type: object
                    additionalProperties:
                      type: array
                      items:
                        type: string
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                type: object
                description: Error response
                required:
                - success
                - error_code
                - error_message
                properties:
                  success:
                    type: boolean
                    example: false
                  error_code:
                    type: string
                    example: missing_api_key
                  error_message:
                    type: string
                    example: Missing API key header
                  error_details:
                    type: object
                    additionalProperties:
                      type: array
                      items:
                        type: string
        '403':
          description: Access denied
          content:
            application/json:
              schema:
                type: object
                description: Error response
                required:
                - success
                - error_code
                - error_message
                properties:
                  success:
                    type: boolean
                    example: false
                  error_code:
                    type: string
                    example: permission_denied
                  error_message:
                    type: string
                    example: Access denied
                  error_details:
                    type: object
                    additionalProperties:
                      type: array
                      items:
                        type: string
  /v0/clients/lab/{lab_id}:
    get:
      summary: Get lab details
      description: Returns detailed information about a specific lab.
      operationId: getLabDetails
      tags:
      - Labs
      security:
      - ApiKeyAuth: []
      parameters:
      - name: lab_id
        in: path
        description: The ID of the lab
        required: true
        schema:
          type: integer
          example: 456
      responses:
        '200':
          description: Successful response with lab details
          content:
            application/json:
              schema:
                type: object
                required:
                - success
                - lab
                properties:
                  success:
                    type: boolean
                    example: true
                  lab:
                    type: object
                    description: Detailed information about a lab
                    required:
                    - id
                    - name
                    - state
                    - city
                    properties:
                      id:
                        type: integer
                        example: 456
                      name:
                        type: string
                        example: Rocky Mountain Testing Lab
                      email:
                        type: string
                        format: email
                        example: info@rmtlab.com
                      phone:
                        type: string
                        example: (555) 987-6543
                      url:
                        type: string
                        format: uri
                        example: https://rmtlab.com
                      state:
                        type: string
                        example: CO
                      city:
                        type: string
                        example: Denver
                      primary_address:
                        type: object
                        description: Physical address
                        properties:
                          street:
                            type: string
                            example: 123 Main St
                          city:
                            type: string
                            example: Denver
                          state:
                            type: string
                            example: CO
                          zip:
                            type: string
                            example: '80202'
                          country:
                            type: string
                            example: USA
                      last_modified:
                        type: string
                        format: date-time
                        example: '2025-01-10T08:00:00Z'
        '401':
          description: Authentication failed
          content:
            application/json:
              schema:
                type: object
                description: Error response
                required:
                - success
                - error_code
                - error_message
                properties:
                  success:
                    type: boolean
                    example: false
                  error_code:
                    type: string
                    example: missing_api_key
                  error_message:
                    type: string
                    example: Missing API key header
                  error_details:
                    type: object
                    additionalProperties:
                      type: array
                      items:
                        type: string
        '403':
          description: Access denied
          content:
            application/json:
              schema:
                type: object
                description: Error response
                required:
                - success
                - error_code
                - error_message
                properties:
                  success:
                    type: boolean
                    example: false
                  error_code:
                    type: string
                    example: permission_denied
                  error_message:
                    type: string
                    example: Access denied
                  error_details:
                    type: object
                    additionalProperties:
                      type: array
                      items:
                        type: string
        '404':
          description: Resource not found
          content:
            application/json:
              schema:
                type: object
                description: Error response
                required:
                - success
                - error_code
                - error_message
                properties:
                  success:
                    type: boolean
                    example: false
                  error_code:
                    type: string
                    example: not_found
                  error_message:
                    type: string
                    example: Resource not found
                  error_details:
                    type: object
                    additionalProperties:
                      type: array
                      items:
                        type: string
components:
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: X-ConfidentCannabis-APIKey
      description: API key for authentication. Required for all requests.
    SignatureAuth:
      type: apiKey
      in: header
      name: X-ConfidentCannabis-Signature
      description: HMAC SHA256 signature of the request. Required if signing is enabled for your API credentials.
    TimestampAuth:
      type: apiKey
      in: header
      name: X-ConfidentCannabis-Timestamp
      description: Unix timestamp of the request. Required if signing is enabled. Must be within 30 seconds of server time.