Skip to content

Add sibfly.com - #2737

Open
james-sib wants to merge 1 commit into
APIs-guru:mainfrom
james-sib:add-sibfly
Open

james-sib wants to merge 1 commit into
APIs-guru:mainfrom
james-sib:add-sibfly

Conversation

@james-sib

Copy link
Copy Markdown

Adds SibFly (https://sibfly.com) — a self-serve API returning satellite-measured ground motion (subsidence/uplift, mm/year) for any US address, from NASA OPERA Sentinel-1 InSAR.

  • Live spec: https://sibfly.com/openapi.json (x-origin set for auto-refresh)
  • OpenAPI 3.1, Bearer auth, typed schemas.
  • Also published to the official MCP registry (com.sibfly/ground-motion).

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request introduces the OpenAPI 3.1.0 specification for the SibFly API, which exposes endpoints for ground motion reports, geocoding, batch processing, and account management. The review feedback highlights several opportunities to strengthen the API contract, including defining explicit schemas for endpoints currently returning empty objects, ensuring type consistency for the 'brief' parameter, structuring the chat messages schema, adding email format validation, making support ticket fields required, and enforcing coordinate pair bounds on the pixel polygon coordinates.

Important

The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.

Comment on lines +64 to +68
'200':
description: Successful Response
content:
application/json:
schema: {}

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

high

Many endpoints in this specification (such as /api/v1/geocode, /api/v1/pixel, /api/v1/me, etc.) define their successful 200 response schema as an empty object (schema: {}). This indicates that the response can be any arbitrary JSON structure, which defeats the purpose of a typed OpenAPI specification. It prevents client SDK generators and LLMs from understanding the structure of the returned data.

Please define explicit schemas for these responses. For example, for /api/v1/geocode, you should define the expected lat and lon properties.

        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: object
                properties:
                  lat:
                    type: number
                  lon:
                    type: number
                required:
                - lat
                - lon

Comment on lines +216 to +222
- name: brief
in: query
required: false
schema:
type: integer
default: 0
title: Brief

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

The brief parameter is defined as an integer with a default of 0 here, but in the batch endpoint /api/v1/motion/batch (line 408), it is defined as a boolean. Other flag parameters like teaser, dry_run, and compact are also defined as integers.

To ensure consistency across your API and to leverage standard boolean types in generated clients, it is highly recommended to define these flags as boolean types.

      - name: brief
        in: query
        required: false
        schema:
          type: boolean
          default: false
          title: Brief

Comment on lines +31 to +34
messages:
type: array
items:
type: object

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

The messages array is defined with items of type object without any properties. Defining a structured schema for chat messages (e.g., with role and content properties) will make the API contract much clearer and more useful for LLMs and client generators.

                messages:
                  type: array
                  items:
                    type: object
                    properties:
                      role:
                        type: string
                        enum: [user, assistant, system]
                      content:
                        type: string
                    required:
                    - role
                    - content

Comment on lines +846 to +847
email:
type: string

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

Adding format: email to the email property enables automatic validation of email addresses in OpenAPI-compliant tools, gateways, and client SDKs.

                email:
                  type: string
                  format: email

Comment on lines +948 to +956
type: object
required: []
properties:
subject:
type: string
message:
type: string
priority:
type: string

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

When creating a support ticket, the subject and message fields should typically be required to prevent the creation of empty tickets. Currently, required is defined as an empty array (required: []).

              type: object
              required:
              - subject
              - message
              properties:
                subject:
                  type: string
                message:
                  type: string
                priority:
                  type: string

Comment on lines +1143 to +1148
pixel_polygon:
type: array
items:
type: array
items:
type: number

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

The pixel_polygon coordinate items are defined as generic arrays of numbers. Specifying minItems: 2 and maxItems: 2 on the inner array enforces that each coordinate pair contains exactly two elements (latitude and longitude).

        pixel_polygon:
          type: array
          items:
            type: array
            minItems: 2
            maxItems: 2
            items:
              type: number

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant