OpsMill Schema API
The Schema API from OpsMill — 6 operation(s) for schema.
The Schema API from OpsMill — 6 operation(s) for schema.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
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.curl "https://apis.io/api/v1/apis/opsmill-schema-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
openapi: 3.2.0
info:
title: Infrahub Artifact Schema API
version: 1.10.0
servers:
- url: https://sandbox.infrahub.app/api
description: Base URL declared by the provider in apis.yml (roadmap#122).
tags:
- name: Schema
paths:
/api/schema:
get:
summary: Get Schema
operationId: get_schema_api_schema_get
security:
- HTTPBearer: []
- APIKeyHeader: []
parameters:
- name: namespaces
in: query
required: false
schema:
anyOf:
- type: array
items:
type: string
- type: 'null'
title: Namespaces
- name: branch
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Name of the branch to use for the query
title: Branch
description: Name of the branch to use for the query
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/SchemaReadAPI'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
tags:
- Schema
/api/schema/summary:
get:
summary: Get Schema Summary
operationId: get_schema_summary_api_schema_summary_get
security:
- HTTPBearer: []
- APIKeyHeader: []
parameters:
- name: branch
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Name of the branch to use for the query
title: Branch
description: Name of the branch to use for the query
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/SchemaBranchHash'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
tags:
- Schema
/api/schema/{schema_kind}:
get:
summary: Get Schema By Kind
operationId: get_schema_by_kind_api_schema__schema_kind__get
security:
- HTTPBearer: []
- APIKeyHeader: []
parameters:
- name: schema_kind
in: path
required: true
schema:
type: string
title: Schema Kind
- name: branch
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Name of the branch to use for the query
title: Branch
description: Name of the branch to use for the query
responses:
'200':
description: Successful Response
content:
application/json:
schema:
anyOf:
- $ref: '#/components/schemas/APIProfileSchema'
- $ref: '#/components/schemas/APINodeSchema'
- $ref: '#/components/schemas/APIGenericSchema'
- $ref: '#/components/schemas/APITemplateSchema'
title: Response Get Schema By Kind Api Schema Schema Kind Get
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
tags:
- Schema
/api/schema/json_schema/{schema_kind}:
get:
summary: Get Json Schema By Kind
operationId: get_json_schema_by_kind_api_schema_json_schema__schema_kind__get
security:
- HTTPBearer: []
- APIKeyHeader: []
parameters:
- name: schema_kind
in: path
required: true
schema:
type: string
title: Schema Kind
- name: branch
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Name of the branch to use for the query
title: Branch
description: Name of the branch to use for the query
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/JSONSchema'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
tags:
- Schema
/api/schema/load:
post:
summary: Load Schema
operationId: load_schema_api_schema_load_post
security:
- HTTPBearer: []
- APIKeyHeader: []
parameters:
- name: branch
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Name of the branch to use for the query
title: Branch
description: Name of the branch to use for the query
- name: at
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Time to use for the query, in absolute or relative format
title: At
description: Time to use for the query, in absolute or relative format
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/SchemasLoadAPI'
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/SchemaUpdate'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
tags:
- Schema
/api/schema/check:
post:
summary: Check Schema
operationId: check_schema_api_schema_check_post
security:
- HTTPBearer: []
- APIKeyHeader: []
parameters:
- name: branch
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
description: Name of the branch to use for the query
title: Branch
description: Name of the branch to use for the query
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/SchemasLoadAPI'
responses:
'200':
description: Successful Response
content:
application/json:
schema: {}
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
tags:
- Schema
components:
schemas:
HashableModelDiff:
properties:
added:
additionalProperties:
anyOf:
- $ref: '#/components/schemas/HashableModelDiff'
- type: 'null'
type: object
title: Added
changed:
additionalProperties:
anyOf:
- $ref: '#/components/schemas/HashableModelDiff'
- type: 'null'
type: object
title: Changed
removed:
additionalProperties:
anyOf:
- $ref: '#/components/schemas/HashableModelDiff'
- type: 'null'
type: object
title: Removed
additionalProperties: false
type: object
title: HashableModelDiff
SchemaBranchHash:
properties:
main:
type: string
title: Main
nodes:
additionalProperties:
type: string
type: object
title: Nodes
generics:
additionalProperties:
type: string
type: object
title: Generics
type: object
required:
- main
title: SchemaBranchHash
RelationshipDeleteBehavior:
type: string
enum:
- no-action
- cascade
title: RelationshipDeleteBehavior
DropdownChoice:
properties:
id:
anyOf:
- type: string
- type: 'null'
title: Id
state:
$ref: '#/components/schemas/HashableModelState'
default: present
name:
type: string
title: Name
description:
anyOf:
- type: string
- type: 'null'
title: Description
color:
anyOf:
- type: string
- type: 'null'
title: Color
label:
anyOf:
- type: string
- type: 'null'
title: Label
additionalProperties: false
type: object
required:
- name
title: DropdownChoice
NodeExtensionSchema:
properties:
id:
anyOf:
- type: string
- type: 'null'
title: Id
state:
$ref: '#/components/schemas/HashableModelState'
default: present
kind:
type: string
title: Kind
attributes:
items:
$ref: '#/components/schemas/AttributeSchema-Input'
type: array
title: Attributes
relationships:
items:
$ref: '#/components/schemas/RelationshipSchema'
type: array
title: Relationships
additionalProperties: false
type: object
required:
- kind
title: NodeExtensionSchema
APIProfileSchema:
properties:
id:
anyOf:
- type: string
- type: 'null'
title: Id
description: The ID of the node
update: not_applicable
state:
$ref: '#/components/schemas/HashableModelState'
description: Expected state of the node/generic after loading the schema
default: present
update: not_applicable
name:
type: string
maxLength: 32
minLength: 2
pattern: ^[A-Z][a-zA-Z0-9]+$
title: Name
description: Node name, must be unique within a namespace and must start with an uppercase letter.
update: migration_required
namespace:
type: string
maxLength: 64
minLength: 3
pattern: ^[A-Z][a-z0-9]+$
title: Namespace
description: Node Namespace, Namespaces are used to organize models into logical groups and to prevent name collisions.
update: migration_required
description:
anyOf:
- type: string
maxLength: 128
- type: 'null'
title: Description
description: Short description of the model, will be visible in the frontend.
update: allowed
label:
anyOf:
- type: string
maxLength: 64
- type: 'null'
title: Label
description: Human friendly representation of the name/kind
update: allowed
branch:
$ref: '#/components/schemas/BranchSupportType'
description: Type of branch support for the model.
default: aware
update: not_supported
default_filter:
anyOf:
- type: string
pattern: ^[a-z0-9\_]*$
- type: 'null'
title: Default Filter
description: 'Default filter used to search for a node in addition to its ID. (deprecated: please use human_friendly_id instead)'
update: allowed
human_friendly_id:
anyOf:
- items:
type: string
type: array
- type: 'null'
title: Human Friendly Id
description: Human friendly and unique identifier for the object.
update: allowed
display_label:
anyOf:
- type: string
- type: 'null'
title: Display Label
description: Attribute or Jinja2 template to use to generate the display label
update: allowed
display_labels:
anyOf:
- items:
type: string
deprecationMessage: display_labels are deprecated use display_label instead
type: array
- type: 'null'
title: Display Labels
description: List of attributes to use to generate the display label (deprecated)
update: allowed
include_in_menu:
anyOf:
- type: boolean
- type: 'null'
title: Include In Menu
description: Defines if objects of this kind should be included in the menu.
update: allowed
menu_placement:
anyOf:
- type: string
- type: 'null'
title: Menu Placement
description: Defines where in the menu this object should be placed.
update: allowed
icon:
anyOf:
- type: string
- type: 'null'
title: Icon
description: Defines the icon to use in the menu. Must be a valid value from the MDI library https://icon-sets.iconify.design/mdi/
update: allowed
order_by:
anyOf:
- items:
type: string
type: array
- type: 'null'
title: Order By
description: List of entries to order results by. Supports attributes, relationship attributes, and node_metadata with __asc/__desc.
update: allowed
uniqueness_constraints:
anyOf:
- items:
items:
type: string
type: array
type: array
- type: 'null'
title: Uniqueness Constraints
description: List of multi-element uniqueness constraints that can combine relationships and attributes
update: migration_required
documentation:
anyOf:
- type: string
- type: 'null'
title: Documentation
description: Link to a documentation associated with this object, can be internal or external.
update: allowed
attributes:
items:
$ref: '#/components/schemas/AttributeSchema-Output'
type: array
title: Attributes
description: Node attributes
update: not_applicable
relationships:
items:
$ref: '#/components/schemas/RelationshipSchema'
type: array
title: Relationships
description: Node Relationships
update: not_applicable
inherit_from:
items:
type: string
type: array
title: Inherit From
description: List of Generic Kind that this profile is inheriting from
kind:
anyOf:
- type: string
- type: 'null'
title: Kind
hash:
type: string
title: Hash
additionalProperties: false
type: object
required:
- name
- namespace
- hash
title: APIProfileSchema
AttributeSchema-Input:
properties:
id:
anyOf:
- type: string
- type: 'null'
title: Id
description: The ID of the attribute
update: not_applicable
state:
$ref: '#/components/schemas/HashableModelState'
description: Expected state of the attribute after loading the schema
default: present
update: not_applicable
name:
type: string
maxLength: 64
minLength: 3
pattern: ^[a-z0-9\_]+$
title: Name
description: Attribute name, must be unique within a model and must be all lowercase.
update: migration_required
kind:
type: string
title: Kind
description: Defines the type of the attribute.
update: migration_required
enum:
anyOf:
- items: {}
type: array
- type: 'null'
title: Enum
description: Define a list of valid values for the attribute.
update: validate_constraint
computed_attribute:
anyOf:
- $ref: '#/components/schemas/ComputedAttribute-Input'
- type: 'null'
description: Defines how the value of this attribute will be populated.
update: allowed
choices:
anyOf:
- items:
$ref: '#/components/schemas/DropdownChoice'
type: array
- type: 'null'
title: Choices
description: Define a list of valid choices for a dropdown attribute.
update: validate_constraint
regex:
anyOf:
- type: string
- type: 'null'
title: Regex
description: 'Regex uses to limit the characters allowed in for the attributes. (deprecated: please use parameters.regex instead)'
update: validate_constraint
max_length:
anyOf:
- type: integer
- type: 'null'
title: Max Length
description: 'Set a maximum number of characters allowed for a given attribute. (deprecated: please use parameters.max_length instead)'
update: validate_constraint
min_length:
anyOf:
- type: integer
- type: 'null'
title: Min Length
description: 'Set a minimum number of characters allowed for a given attribute. (deprecated: please use parameters.min_length instead)'
update: validate_constraint
label:
anyOf:
- type: string
maxLength: 64
- type: 'null'
title: Label
description: Human friendly representation of the name. Will be autogenerated if not provided
update: allowed
description:
anyOf:
- type: string
maxLength: 128
- type: 'null'
title: Description
description: Short description of the attribute.
update: allowed
read_only:
type: boolean
title: Read Only
description: Set the attribute as Read-Only, users won't be able to change its value. Mainly relevant for internal object.
default: false
update: migration_required
unique:
type: boolean
title: Unique
description: Indicate if the value of this attribute must be unique in the database for a given model.
default: false
update: migration_required
optional:
type: boolean
title: Optional
description: Indicate if this attribute is mandatory or optional.
default: false
update: migration_required
branch:
anyOf:
- $ref: '#/components/schemas/BranchSupportType'
- type: 'null'
description: Type of branch support for the attribute, if not defined it will be inherited from the node.
update: not_supported
order_weight:
anyOf:
- type: integer
- type: 'null'
title: Order Weight
description: Number used to order the attribute in the frontend (table and view). Lowest value will be ordered first.
update: allowed
default_value:
anyOf:
- {}
- type: 'null'
title: Default Value
description: Default value of the attribute.
update: allowed
inherited:
type: boolean
title: Inherited
description: Internal value to indicate if the attribute was inherited from a Generic node.
default: false
update: not_applicable
allow_override:
$ref: '#/components/schemas/AllowOverrideType'
description: Type of allowed override for the attribute.
default: any
update: allowed
parameters:
anyOf:
- $ref: '#/components/schemas/AttributeParameters'
- $ref: '#/components/schemas/ListAttributeParameters'
- $ref: '#/components/schemas/TextAttributeParameters'
- $ref: '#/components/schemas/NumberAttributeParameters'
- $ref: '#/components/schemas/NumberPoolParameters'
title: Parameters
description: Extra parameters specific to this kind of attribute
update: validate_constraint
deprecation:
anyOf:
- type: string
maxLength: 128
- type: 'null'
title: Deprecation
description: Mark attribute as deprecated and provide a user-friendly message to display
update: allowed
display:
$ref: '#/components/schemas/SchemaAttributeDisplay'
description: Controls where the attribute is displayed. 'default' shows in the main view, 'extra' shows in an expanded/secondary section.
default: default
update: allowed
additionalProperties: false
type: object
required:
- name
- kind
title: AttributeSchema
AttributeSchema-Output:
properties:
id:
anyOf:
- type: string
- type: 'null'
title: Id
description: The ID of the attribute
update: not_applicable
state:
$ref: '#/components/schemas/HashableModelState'
description: Expected state of the attribute after loading the schema
default: present
update: not_applicable
name:
type: string
maxLength: 64
minLength: 3
pattern: ^[a-z0-9\_]+$
title: Name
description: Attribute name, must be unique within a model and must be all lowercase.
update: migration_required
kind:
type: string
title: Kind
description: Defines the type of the attribute.
update: migration_required
enum:
anyOf:
- items: {}
type: array
- type: 'null'
title: Enum
description: Define a list of valid values for the attribute.
update: validate_constraint
computed_attribute:
anyOf:
- $ref: '#/components/schemas/ComputedAttribute-Output'
- type: 'null'
description: Defines how the value of this attribute will be populated.
update: allowed
choices:
anyOf:
- items:
$ref: '#/components/schemas/DropdownChoice'
type: array
- type: 'null'
title: Choices
description: Define a list of valid choices for a dropdown attribute.
update: validate_constraint
regex:
anyOf:
- type: string
- type: 'null'
title: Regex
description: 'Regex uses to limit the characters allowed in for the attributes. (deprecated: please use parameters.regex instead)'
update: validate_constraint
max_length:
anyOf:
- type: integer
- type: 'null'
title: Max Length
description: 'Set a maximum number of characters allowed for a given attribute. (deprecated: please use parameters.max_length instead)'
update: validate_constraint
min_length:
anyOf:
- type: integer
- type: 'null'
title: Min Length
description: 'Set a minimum number of characters allowed for a given attribute. (deprecated: please use parameters.min_length instead)'
update: validate_constraint
label:
anyOf:
- type: string
maxLength: 64
- type: 'null'
title: Label
description: Human friendly representation of the name. Will be autogenerated if not provided
update: allowed
description:
anyOf:
- type: string
maxLength: 128
- type: 'null'
title: Description
description: Short description of the attribute.
update: allowed
read_only:
type: boolean
title: Read Only
description: Set the attribute as Read-Only, users won't be able to change its value. Mainly relevant for internal object.
default: false
update: migration_required
unique:
type: boolean
title: Unique
description: Indicate if the value of this attribute must be unique in the database for a given model.
default: false
update: migration_required
optional:
type: boolean
title: Optional
description: Indicate if this attribute is mandatory or optional.
default: false
update: migration_required
branch:
anyOf:
- $ref: '#/components/schemas/BranchSupportType'
- type: 'null'
description: Type of branch support for the attribute, if not defined it will be inherited from the node.
update: not_supported
order_weight:
anyOf:
- type: integer
- type: 'null'
title: Order Weight
description: Number used to order the attribute in the frontend (table and view). Lowest value will be ordered first.
update: allowed
default_value:
anyOf:
- {}
- type: 'null'
title: Default Value
description: Default value of the attribute.
update: allowed
inherited:
type: boolean
title: Inherited
description: Internal value to indicate if the attribute was inherited from a Generic node.
default: false
update: not_applicable
allow_override:
$ref: '#/components/schemas/AllowOverrideType'
description: Type of allowed override for the attribute.
default: any
update: allowed
parameters:
anyOf:
- $ref: '#/components/schemas/AttributeParameters'
- $ref: '#/components/schemas/ListAttributeParameters'
- $ref: '#/components/schemas/TextAttributeParameters'
- $ref: '#/components/schemas/NumberAttributeParameters'
- $ref: '#/components/schemas/NumberPoolParameters'
title: Parameters
description: Extra parameters specific to this kind of attribute
update: validate_constraint
deprecation:
anyOf:
- type: string
maxLength: 128
- type: 'null'
title: Deprecation
description: Mark attribute as deprecated and provide a user-friendly message to display
update: allowed
display:
$ref: '#/components/schemas/SchemaAttributeDisplay'
description: Controls where the attribute is displayed. 'default' shows in the main view, 'extra' shows in an expanded/secondary section.
default: default
update: allowed
additionalProperties: false
type: object
required:
- name
- kind
title: AttributeSchema
SchemaWarningType:
type: string
enum:
- deprecation
title: SchemaWarningType
SchemaLoadAPI:
properties:
version:
type: string
title: Version
generics:
items:
$ref: '#/components/schemas/GenericSchema'
type: array
title: Generics
nodes:
items:
$ref: '#/components/schemas/NodeSchema'
type: array
title: Nodes
extensions:
$ref: '#/components/schemas/SchemaExtension'
default:
state: present
nodes: []
additionalProperties: false
type: object
required:
- version
title: SchemaLoadAPI
RelationshipCardinality:
type: string
enum:
- one
- many
title: RelationshipCardinality
ValidationError:
properties:
loc:
items:
anyOf:
- type: string
- type: integer
type: array
title: Location
msg:
type: string
title: Message
type:
type: string
title: Error Type
input:
title: Input
ctx:
type: object
title: Context
type: object
required:
- loc
- msg
- type
title: ValidationError
SchemaReadAPI:
properties:
main:
type: string
title: Main
description: Main hash for the entire schema
nodes:
items:
$ref: '#/components/schemas/APINodeSchema'
type: array
title: Nodes
generics:
items:
$ref: '#/components/schemas/APIGenericSchema'
type: array
title: Generics
profiles:
items:
$ref: '#/components/schemas/APIProfileSchema'
type: array
title: Profiles
templates:
items:
$ref: '#/components/schemas/APITemplateSchema'
type: array
title: Templates
namespaces:
items:
$ref: '#/components/schemas/SchemaNamespace'
type: array
title: Namespaces
type: object
required:
- main
title: SchemaReadAPI
NumberPoolParameters:
properties:
id:
anyOf:
- type: string
- type: 'null'
title: Id
state:
$ref: '#/components/schemas/HashableModelState'
default: present
end_range:
type: integer
title: End Range
description: End range for numbers for the associated NumberPool
default: 9223372036854775807
update: validate_constraint
start_range:
type: integer
title: Start Range
description: Start range for numbers for the associated NumberPool
default: 1
update: validate_constraint
number_pool_id:
anyOf:
- type: string
- type: 'null'
title: Number Pool Id
description: The ID of the numberpool associated with this attribute. Only set after the number pool has been provisioned.
update: not_supported
additionalProperties: false
type: object
title: NumberPoolParameters
APIGenericSchema:
properties:
id:
anyOf:
- type: string
- type: 'null'
title: Id
description: The ID of the node
update: not_applicable
state:
$ref: '#/components/schemas/HashableModelState'
description: Expected state of the node/generic after loading the schema
default: present
update: not_applicable
name:
type: string
maxLength: 32
minLength: 2
pattern: ^[A-Z][a-zA-Z0-9]+$
title: Name
description: Node name, must be unique within a namespace and must start with an uppercase letter.
update: migration_required
namespace:
type: string
maxLength: 64
minLength: 3
pattern: ^[A-Z][a-z0-9]+$
title: Namespace
description: Node Namespace, Namespaces are used to organize models into logical groups and to prevent name collisions.
update: migration_required
description:
anyOf:
- type: string
maxLength: 128
- type: 'null'
title: Description
description: Short description of the model, will be visible in the frontend.
update: allowed
label:
anyOf:
- type: string
maxLength: 64
- type: 'null'
title: Label
description: Human friendly representation of the name/kind
update: allowed
branch:
$ref: '#/components/schemas/BranchSupportType'
description: Type of branch support for the model.
default: aware
update: not_supported
default_filter:
anyOf:
- type: string
pattern
# --- truncated at 32 KB (78 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/opsmill/refs/heads/main/openapi/opsmill-schema-api-openapi.yml