{"id":23040,"library":"airbyte-protocol-models","title":"Airbyte Protocol Models","description":"Declares the Airbyte Protocol as Python models based on JSON Schema. Contains pydantic models for Airbyte messages, configured as a Python package. Latest stable version is 0.18.0 (PyPI), with 0.19.0 released on GitHub. Release cadence is irregular, roughly every 1-2 months.","status":"active","version":"0.18.0","language":"python","source_language":"en","source_url":"https://github.com/airbytehq/airbyte-protocol","tags":["airbyte","protocol","data-integration","pydantic"],"install":[{"cmd":"pip install airbyte-protocol-models","lang":"bash","label":"Install from PyPI"}],"dependencies":[{"reason":"Used for data validation and serialization","package":"pydantic","optional":false},{"reason":"YAML parsing for spec generation","package":"PyYAML","optional":true}],"imports":[{"note":"AirbyteMessage is in the models submodule, not top-level.","wrong":"from airbyte_protocol import AirbyteMessage","symbol":"AirbyteMessage","correct":"from airbyte_protocol.models import AirbyteMessage"},{"note":"v0 subpackage was deprecated and removed in v0.17.0.","wrong":"from airbyte_protocol.v0 import ConfiguredAirbyteCatalog","symbol":"ConfiguredAirbyteCatalog","correct":"from airbyte_protocol.models import ConfiguredAirbyteCatalog"},{"note":"Type is re-exported in models.","wrong":"from airbyte_protocol.models.message import Type","symbol":"Type","correct":"from airbyte_protocol.models import Type"}],"quickstart":{"code":"from airbyte_protocol.models import AirbyteMessage, Type, AirbyteRecordMessage\n\n# Create a record message\nrecord = AirbyteRecordMessage(\n    stream=\"my_stream\",\n    data={\"id\": 1, \"name\": \"example\"},\n    emitted_at=1610000000000\n)\nmsg = AirbyteMessage(type=Type.RECORD, record=record)\nprint(msg.json(indent=2))","lang":"python","description":"Create and serialize an Airbyte record message."},"warnings":[{"fix":"Replace imports from airbyte_protocol.v0 or airbyte_protocol.v1 with airbyte_protocol.models.","message":"V1 models removed in v0.17.0. All protocol models are now under airbyte_protocol.models.","severity":"breaking","affected_versions":">=0.17.0"},{"fix":"Use 'json_schema' instead of 'schema' in message payloads.","message":"The 'schema' field in messages has been renamed to 'json_schema' in v0.16.0.","severity":"deprecated","affected_versions":">=0.16.0"},{"fix":"Always provide emitted_at as int, e.g., round(time.time() * 1000).","message":"AirbyteRecordMessage.emitted_at is expected as an integer (milliseconds epoch).","severity":"gotcha","affected_versions":"*"}],"env_vars":null,"last_verified":"2026-05-01T00:00:00.000Z","next_check":"2026-07-30T00:00:00.000Z","problems":[{"fix":"Run 'pip install airbyte-protocol-models'.","cause":"Package not installed or incorrect environment.","error":"ModuleNotFoundError: No module named 'airbyte_protocol'"},{"fix":"Use 'from airbyte_protocol.models import AirbyteMessage'.","cause":"Importing directly from top-level package instead of submodule.","error":"ImportError: cannot import name 'AirbyteMessage' from 'airbyte_protocol'"},{"fix":"Use ConfiguredAirbyteCatalog or check the latest model definitions.","cause":"AirbyteCatalog was removed in v0.17.0 models.","error":"AttributeError: module 'airbyte_protocol.models' has no attribute 'AirbyteCatalog'"}],"ecosystem":"pypi","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}