Skip to content
Merged
Show file tree
Hide file tree
Changes from 20 commits
Commits
Show all changes
46 commits
Select commit Hold shift + click to select a range
17d981c
add schema metadata per "additional configuration" type field
timtay-microsoft Aug 8, 2025
b2ddc3a
re-bundle destinations information to include default MQTT + DSS fields
timtay-microsoft Aug 8, 2025
287d5de
examples, defaults
timtay-microsoft Aug 8, 2025
e361f62
Update connector-metadata-schema.json
timtay-microsoft Aug 8, 2025
c3a9f35
just necessity
timtay-microsoft Aug 8, 2025
842ea0b
required
timtay-microsoft Aug 9, 2025
2de70d7
more
timtay-microsoft Aug 9, 2025
7c22b3d
format error
timtay-microsoft Aug 9, 2025
f0b1c30
feedback
timtay-microsoft Aug 9, 2025
867659d
input
timtay-microsoft Aug 11, 2025
2d52bb6
no qos2
timtay-microsoft Aug 11, 2025
ec3c16c
datasetDataSource
timtay-microsoft Aug 11, 2025
be8f21a
streamTypeRef
timtay-microsoft Aug 11, 2025
32bc2a5
managementGroupActions
timtay-microsoft Aug 11, 2025
72f2b32
DSS as destination in sample
timtay-microsoft Aug 11, 2025
ecf12b5
actually provide the default topic name in samples
timtay-microsoft Aug 11, 2025
75048d2
default maximum to ADR service default
timtay-microsoft Aug 11, 2025
79889eb
description
timtay-microsoft Aug 11, 2025
708dcc4
required
timtay-microsoft Aug 11, 2025
4e77f8d
remove defaults for required fields
timtay-microsoft Aug 11, 2025
f19baff
re-modeling a bit
timtay-microsoft Aug 13, 2025
1275b89
updated one sample
timtay-microsoft Aug 13, 2025
b1ca326
more
timtay-microsoft Aug 13, 2025
54c185d
nesting datapoints under datasets/events, nesting configs alongside s…
timtay-microsoft Aug 14, 2025
33b1e68
wording
timtay-microsoft Aug 14, 2025
f4944d7
Merge branch 'main' into timtay/connectorMetadata2
timtay-microsoft Aug 14, 2025
4462945
default topic name not required
timtay-microsoft Aug 14, 2025
5b0ed97
Merge branch 'timtay/connectorMetadata2' of https://github.com/Azure/…
timtay-microsoft Aug 14, 2025
52e29e6
alternative type name support
timtay-microsoft Aug 14, 2025
bfd17d8
inbound endpoint name type isn't per inbound endpoint
timtay-microsoft Aug 14, 2025
9d5f3de
storage defaults, use model names for default field names
timtay-microsoft Aug 15, 2025
de3700c
clarification
timtay-microsoft Aug 15, 2025
021cca0
update default connector metadata doc version
timtay-microsoft Aug 15, 2025
0e7e5f2
topic should be required when MQTT is a default destination
timtay-microsoft Aug 15, 2025
95f141c
update samples
timtay-microsoft Aug 15, 2025
e5fbfd8
Make MQTT/DSS/Storage defaults required only if the default destinati…
timtay-microsoft Aug 15, 2025
b91a69e
better way of pairing them
timtay-microsoft Aug 15, 2025
1325061
require supported destinations
timtay-microsoft Aug 15, 2025
5688ca4
require destination as part of defaults
timtay-microsoft Aug 15, 2025
821a849
Merge branch 'main' into timtay/connectorMetadata2
timtay-microsoft Aug 25, 2025
741772e
Merge branch 'main' into timtay/connectorMetadata2
timtay-microsoft Aug 25, 2025
d4e9b57
must support at least one if this type is present
timtay-microsoft Aug 27, 2025
16671ad
Merge branch 'main' into timtay/connectorMetadata2
timtay-microsoft Aug 27, 2025
c4e12f9
Update doc/akri_connector/connector-metadata-schema.json
timtay-microsoft Aug 27, 2025
326e128
Update doc/akri_connector/connector-metadata-schema.json
timtay-microsoft Aug 27, 2025
f247de6
Update example-connector-metadata.json
timtay-microsoft Aug 28, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
298 changes: 242 additions & 56 deletions doc/akri_connector/connector-metadata-schema.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,110 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"aioConnectorMetadataSchemaVersion": "2.0-preview",
"aioConnectorMetadataSchemaVersion": "3.0-preview",
"definitions": {
"fieldNecessity": {
"type": "object",
"description": "Details about if a field is required or not and what shape its value should take",
"properties": {
"input": {
"type": "string",
"description": "If this field is relevant to this connector or not.",
"enum": [
"required",
"unsupported",
"optional"
]
},
"regex": {
"type": "array",
"description": "The set of regex that this field's value should adhere to.",
"items": {
"type": "string"
}
},
"exampleValue": {
"type": "string",
"description": "An example value for this field that fits the expected format"
},
"description": {
"type": "string",
"description": "Additional user-readable context for this field. May explain how the field is used or explain the validation rules around it."
}
},
"required": ["input"]
},
"modelLimits": {
"type": "object",
"description": "Describes the limits to this model type that this connector supports. For instance, a connector may support up to 5 datasets. A connector can signals that it does not support a model type by specifying a maximum of 0.",
"properties": {
"maximum": {
"type": "integer",
"minimum": 0,
"description": "The maximum number of this model type that this connector supports. If not specified, the default is whatever limits the ADR service itself has. If this value is 0, then this connector does not support using this model type (i.e. the connector supports datasets, but not events)."
},
"minimum": {
"type": "integer",
"minimum": 0,
"default": 0,
"description": "The minimum number of this model type that this connector supports."
}
},
"default" : {
"minimum":0
}
},
"mqttDestinationDefaults": {
"type": "object",
"description": "The specific default values that will be used by the connector when publishing telemetry to the MQTT broker.",
"properties": {
"defaultTopicName": {
"type": "string",
"description": "The default MQTT topic that will be published to"
},
"defaultQualityOfService": {
"type": "integer",
"description": "The default MQTT quality of service that MQTT messages will be published with",
"enum": [
0,
1
]
},
"defaultTimeToLive": {
"type": "integer",
"minimum": 0,
"description": "The default time to live that MQTT messages will be published with."
},
"defaultRetain": {
"type": "string",
"description": "The default retain flag value that MQTT messages will be published with.",
"enum": [
"keep",
"never"
]
}
},
"required": [
"defaultTopicName",
"defaultQualityOfService",
"defaultTimeToLive",
"defaultRetain"
]
},
"brokerStateStoreDestinationDefaults": {
"type": "object",
"description": "The broker state store-specific default values that will be used by the connector if not otherwise specified.",
"properties": {
"defaultBrokerStateStoreKey": {
"type": "string",
"description": "The default broker state store key that will be published to"
}
},
"required": [
"defaultBrokerStateStoreKey"
]
}
},
"properties": {
"aioConnectorMetadataSchemaVersion": {
"type": "string",
Expand Down Expand Up @@ -42,7 +145,7 @@
"properties": {
"imageName": {
"type": "string",
"description": "The container image name for the connector. For example: 'myconnector'"

Check warning on line 148 in doc/akri_connector/connector-metadata-schema.json

View workflow job for this annotation

GitHub Actions / CI-spelling

Unknown word (myconnector) Suggestions: (myconnect, myconnection, myConnect, Myconnect, myconnectio)
},
"tag": {
"type": "string",
Expand Down Expand Up @@ -224,7 +327,7 @@
},
"assetConfigurationSchemas": {
"type": "object",
"description": "The JSON schemas for the asset-level stringified JSON fields. A JSON schema must be provided for each field only if that field is used by this connector.",
"description": "The JSON schemas and their respective metadata for the asset-level stringified JSON fields. A JSON schema must be provided for each field only if that field is used by this connector.",
"properties": {
"datasetConfigurationSchema": {
"$ref": "http://json-schema.org/draft-07/schema#"
Expand All @@ -249,72 +352,155 @@
}
}
},
"supportedAssetEventDestinations": {
"type": "array",
"description": "The array of destinations that this asset's events supports.",
"items": {
"type": "string",
"enum": [
"Mqtt",
"Storage"
]
"assetEventDestinations": {
"type": "object",
"description": "Information about the supported and default destinations for asset events",
"properties": {
"supportedDestinations": {
"type": "array",
"description": "The array of destinations that this asset's events supports.",
"items": {
"type": "string",
"enum": [
"Mqtt",
"Storage"
]
}
},
"defaultDestination": {
"type": "string",
"description": "The destination that this asset's events will go to by default unless event-specific destinations are specified.",
"enum": [
"Mqtt",
"Storage"
]
},
"mqttDestinationDefaults": {
"$ref": "#/definitions/mqttDestinationDefaults"
}
}
},
"defaultAssetEventDestinations": {
"type": "string",
"description": "The default destination that this asset's events will go to by default unless event-specific destinations are specified.",
"enum": [
"Mqtt",
"Storage"
]
},
"supportedAssetDatasetDestinations": {
"type": "array",
"description": "The array of destinations that this asset's datasets supports.",
"items": {
"type": "string",
"enum": [
"Mqtt",
"BrokerStateStore",
"Storage"
]
"assetDatasetDestinations": {
"type": "object",
"description": "Information about the supported and default destinations for asset datasets",
"properties": {
"supportedDestinations": {
"type": "array",
"description": "The array of destinations that this asset's datasets supports.",
"items": {
"type": "string",
"enum": [
"Mqtt",
"BrokerStateStore",
"Storage"
]
}
},
"defaultDestination": {
"type": "string",
"description": "The destination that this asset's datasets will go to by default unless dataset-specific destinations are specified.",
"enum": [
"Mqtt",
"BrokerStateStore",
"Storage"
]
},
"mqttDestinationDefaults": {
"$ref": "#/definitions/mqttDestinationDefaults"
},
"brokerStateStoreDestinationDefaults": {
"$ref": "#/definitions/brokerStateStoreDestinationDefaults"
}
}
},
"defaultAssetDatasetDestinations": {
"type": "string",
"description": "The default destination that this asset's datasets will go to by default unless dataset-specific destinations are specified.",
"enum": [
"Mqtt",
"BrokerStateStore",
"Storage"
]
},
"supportedAssetStreamDestinations": {
"type": "array",
"description": "The array of destinations that this asset's streams supports.",
"items": {
"type": "string",
"enum": [
"Mqtt",
"Storage"
]
"assetStreamDestinations": {
"type": "object",
"description": "Information about the supported and default destinations for asset streams",
"properties": {
"supportedDestinations": {
"type": "array",
"description": "The array of destinations that this asset's streams supports.",
"items": {
"type": "string",
"enum": [
"Mqtt",
"Storage"
]
}
},
"defaultDestination": {
"type": "string",
"description": "The destination that this asset's streams will go to by default unless stream-specific destinations are specified.",
"enum": [
"Mqtt",
"Storage"
]
},
"mqttDestinationDefaults": {
"$ref": "#/definitions/mqttDestinationDefaults"
}
}
},
"defaultAssetStreamDestinations": {
"type": "string",
"description": "The default destination that this asset's streams will go to by default unless stream-specific destinations are specified.",
"enum": [
"Mqtt",
"Storage"
]
},
"version": {
"type": "string",
"description": "The version of the protocol of this inbound endpoint."
},
"expectedModelFields" : {
"type": "object",
"description": "defines which fields (which vary in necessity from connector to connector) are expected/not expected in this connector's asset definition",
"properties": {
"eventNotifier": {
"$ref": "#/definitions/fieldNecessity"
},
"eventDataPointDataSource": {
"$ref": "#/definitions/fieldNecessity"
},
"datasetDataSource": {
"$ref": "#/definitions/fieldNecessity"
},
"datasetDataPointDataSource": {
"$ref": "#/definitions/fieldNecessity"
},
"datasetTypeRef": {
"$ref": "#/definitions/fieldNecessity"
},
"datasetDataPointTypeRef": {
"$ref": "#/definitions/fieldNecessity"
},
"eventTypeRef": {
"$ref": "#/definitions/fieldNecessity"
},
"managementGroupTypeRef": {
"$ref": "#/definitions/fieldNecessity"
},
"managementGroupActionTypeRef": {
"$ref": "#/definitions/fieldNecessity"
},
"streamTypeRef": {
"$ref": "#/definitions/fieldNecessity"
}
},
"required": ["eventNotifier", "eventDataPointDataSource", "datasetDataPointDataSource", "datasetTypeRef", "datasetDataPointTypeRef", "eventTypeRef", "managementGroupTypeRef", "managementGroupActionTypeRef", "streamTypeRef", "datasetDataSource"]
},
"modelLimits": {
"type": "object",
"description" : "Details the limits on each model type (datasets/events/management groups/etc) and also signals if this connector supports using that model type.",
"properties": {
"events" : { "$ref": "#/definitions/modelLimits" },
"datasets" : { "$ref": "#/definitions/modelLimits" },
"eventDataPoints" : { "$ref": "#/definitions/modelLimits" },
"datasetDataPoints" : { "$ref": "#/definitions/modelLimits" },
"managementGroups" : { "$ref": "#/definitions/modelLimits" },
"managementGroupActions" : { "$ref": "#/definitions/modelLimits" },
"streams" : { "$ref": "#/definitions/modelLimits" }
},
"required": ["events", "datasets", "eventDataPoints", "datasetDataPoints", "managementGroups", "managementGroupActions", "streams"]
}
},
"required": [
"endpointType"
"endpointType",
"expectedModelFields",
"modelLimits"
]
}
]
Expand Down
Loading
Loading