Genialis · OpenAPI Overlay 1.0.0
API Evangelist enhancements for the Genialis Expressions API
9 actions
9 updates
servers
extends
../openapi/_original/genialis-base-openapi.yaml
Derived by API Evangelist
Built from the contracts Genialis publishes. Genialis did not publish this file.
What the actions change
x-consequencex-reversiblex-reversal-windowcontacttermsOfServicex-documentationx-spec-sourcex-version-caveat
Targets 7
$.info
$
$.paths['/api/data/bulk_delete']
$.paths['/api/collection/bulk_delete']
$.paths['/api/sample/bulk_delete']
$.paths['/about/versions']
$.paths['/api/variant']
OpenAPI Overlay
overlay: 1.0.0
info:
title: API Evangelist enhancements for the Genialis Expressions API
version: 1.0.0
extends: ../openapi/_original/genialis-base-openapi.yaml
x-generated: '2026-08-21'
x-method: generated
x-source: >-
Derived from live probes of https://app.genialis.com on 2026-08-21 and from the
artifacts in this repository. Every value below was observed or read from the
provider's own material; nothing is invented. The original spec at
openapi/genialis-base-openapi.yaml is never mutated.
actions:
- target: $.info
description: >-
The published spec sets no title beyond "Genialis base", no contact, no licence
and leaves info.version at the drf-spectacular default 0.0.0. Supply the
identity a consumer needs, and record what the version field actually is.
update:
contact:
name: Genialis Support
url: https://genialis.atlassian.net/servicedesk/customer/portal/3
email: info@genialis.com
termsOfService: https://www.genialis.com/terms-of-service/
x-documentation: https://docs.genialis.com/resdk/
x-spec-source: https://app.genialis.com/api/schema
x-version-caveat: >-
info.version is the drf-spectacular default "0.0.0" and does not identify the
build. Live component versions are served at GET /about/versions.
- target: $
description: >-
The published spec declares no servers[]. Its paths are server-root relative and
span /api, /rest-auth, /saml-auth, /about and /health_check, so a client that
assumes an /api base silently receives the SPA shell with a 200 on the
non-/api operations. Name the real server root.
update:
servers:
- url: https://app.genialis.com
description: >-
Genialis Expressions production. Verified 2026-08-21: GET /api/data?limit=1
-> 200 (count 29123); GET /about/versions -> 200.
- target: $
description: Record the cross-cutting runtime semantics the contract omits.
update:
x-conventions:
pagination:
style: limit-offset
params: [limit, offset]
response_fields: [count, next, previous, results]
sorting:
param: ordering
error_envelope: '{"error": "<message>"} | {"detail": "<message>"}'
rfc9457: false
idempotency: none
dry_run: none
rate_limit_headers: none
anonymous_read: true
x-agent-warning: >-
app.genialis.com is an SPA catch-all. Unmatched paths return HTTP 200 with a
1377-byte HTML shell rather than 404. Assert content-type application/json
before treating any 200 as data.
- target: $
description: >-
The contract documents only 2xx responses across all 254 operations — not one
4xx or 5xx. Attach the error shapes actually observed, as a reusable component,
without touching any operation.
update:
components:
responses:
x-ObservedBadRequest:
description: >-
Observed 400. Bespoke envelope, not RFC 9457. Example captured live from
GET /api/data?ordering=zzz.
content:
application/json:
schema:
type: object
properties:
error:
type: string
example:
error: "Ordering by field 'zzz' is not supported."
x-ObservedAuthFailure:
description: >-
Django REST Framework default envelope for 401/403. Not documented by
Genialis and not confirmed on a live response.
content:
application/json:
schema:
type: object
properties:
detail:
type: string
- target: $.paths['/api/data/bulk_delete']
description: >-
Flag the highest-consequence operation in the API. It has no idempotency key, no
dry-run and no documented reversal — see conventions/genialis-conventions.yml.
update:
x-consequence: destructive
x-reversible: false
x-reversal-window: null
x-agent-guidance: >-
Requires explicit human confirmation. There is no restore endpoint for deleted
data objects anywhere in the contract.
- target: $.paths['/api/collection/bulk_delete']
update:
x-consequence: destructive
x-reversible: false
x-reversal-window: null
- target: $.paths['/api/sample/bulk_delete']
update:
x-consequence: destructive
x-reversible: false
x-reversal-window: null
- target: $.paths['/about/versions']
description: This is the platform's real version signal; mark it as such.
update:
x-version-endpoint: true
x-observed-response: '{"resolwe":"45.1.0","resolwe-bio":"65.0.0","genialis-bio":"63.0.0"}'
x-observed-on: '2026-08-21'
- target: $.paths['/api/variant']
description: Record the domain-standard signature carried by the variant model.
update:
x-domain-standard: VCF v4.x call model (CHROM/POS/REF/ALT) with dbSNP and ClinVar identifier schemes
Work with this as data
Every overlay 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 openapi overlays
4 MCP tools reach this
find_overlaysBrowse and filter every overlay in the catalog.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.
Call it yourself
curl for this page
This overlay
curl "https://apis.io/api/v1/overlays/genialis-base-overlay"
All openapi overlays
curl "https://apis.io/api/v1/overlays?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
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.