openapi: 3.0.1 info: title: OpenMetadata APIs Agent Executions Data Contracts API description: Common types and API definition for OpenMetadata contact: name: OpenMetadata url: https://open-metadata.org email: openmetadata-dev@googlegroups.com license: name: Apache 2.0 url: https://www.apache.org/licenses/LICENSE-2.0 version: '1.13' servers: - url: /api description: Current Host - url: http://localhost:8585/api description: Endpoint URL security: - BearerAuth: [] tags: - name: Data Contracts description: '`DataContract` defines the schema and quality guarantees for a data asset.' paths: /v1/dataContracts: get: tags: - Data Contracts summary: List data contracts description: Get a list of data contracts, optionally filtered by query parameters. operationId: listDataContracts parameters: - name: fields in: query description: Fields requested in the returned resource schema: type: string example: owners,reviewers,extension - name: limit in: query description: Limit the number of records returned in the response schema: maximum: 1000000 minimum: 0 type: integer format: int64 example: 100 default: 10 - name: before in: query description: Returns list of contracts before this cursor schema: type: string - name: after in: query description: Returns list of contracts after this cursor schema: type: string - name: include in: query description: Include all, deleted, or non-deleted entities schema: type: string default: non-deleted enum: - all - deleted - non-deleted - name: status in: query description: Filter contracts by status schema: type: string example: Active - name: entity in: query description: Filter contracts by entity id schema: type: string format: uuid responses: '200': description: List of data contracts content: application/json: schema: $ref: '#/components/schemas/DataContractList' put: tags: - Data Contracts summary: Create or update a data contract from YAML description: Create a new data contract from YAML, if it does not exist or update an existing data contract. operationId: createOrUpdateDataContractFromYaml requestBody: content: application/yaml: schema: type: string text/yaml: schema: type: string responses: '200': description: The updated data contract content: application/json: schema: $ref: '#/components/schemas/DataContract' post: tags: - Data Contracts summary: Create a data contract from YAML description: Create a new data contract from YAML content. operationId: createDataContractFromYaml requestBody: content: application/yaml: schema: type: string text/yaml: schema: type: string responses: '200': description: The data contract content: application/json: schema: $ref: '#/components/schemas/DataContract' '400': description: Bad request /v1/dataContracts/odcs: put: tags: - Data Contracts summary: Create or update data contract from ODCS format description: Create or update a data contract from Open Data Contract Standard (ODCS) v3.1.0 JSON format. Use mode=merge (default) to preserve existing fields not in the import. Use mode=replace to fully overwrite the contract while preserving ID and execution history. operationId: createOrUpdateDataContractFromODCS parameters: - name: entityId in: query description: Entity ID to associate with the contract schema: type: string format: uuid - name: entityType in: query description: Entity Type (table, topic, etc.) schema: type: string example: table - name: mode in: query description: 'Import mode: ''merge'' preserves existing fields, ''replace'' overwrites all fields' schema: type: string default: merge enum: - merge - replace - name: objectName in: query description: Schema object name to import (for multi-object ODCS contracts). If not specified, auto-selects based on entity name or uses first object. schema: type: string requestBody: content: application/json: schema: type: string responses: '200': description: The created or updated data contract content: application/json: schema: $ref: '#/components/schemas/DataContract' '400': description: Bad request post: tags: - Data Contracts summary: Import data contract from ODCS format description: Import a data contract from Open Data Contract Standard (ODCS) v3.1.0 JSON format. operationId: importDataContractFromODCS parameters: - name: entityId in: query description: Entity ID to associate with the contract schema: type: string format: uuid - name: entityType in: query description: Entity Type (table, topic, etc.) schema: type: string example: table - name: objectName in: query description: Schema object name to import (for multi-object ODCS contracts). If not specified, auto-selects based on entity name or uses first object. schema: type: string requestBody: content: application/json: schema: type: string responses: '200': description: The imported data contract content: application/json: schema: $ref: '#/components/schemas/DataContract' '400': description: Bad request /v1/dataContracts/odcs/yaml: put: tags: - Data Contracts summary: Create or update data contract from ODCS YAML format description: Create or update a data contract from Open Data Contract Standard (ODCS) v3.1.0 YAML format. Use mode=merge (default) to preserve existing fields not in the import. Use mode=replace to fully overwrite the contract while preserving ID and execution history. operationId: createOrUpdateDataContractFromODCSYaml parameters: - name: entityId in: query description: Entity ID to associate with the contract schema: type: string format: uuid - name: entityType in: query description: Entity Type (table, topic, etc.) schema: type: string example: table - name: mode in: query description: 'Import mode: ''merge'' preserves existing fields, ''replace'' overwrites all fields' schema: type: string default: merge enum: - merge - replace - name: objectName in: query description: Schema object name to import (for multi-object ODCS contracts). If not specified, auto-selects based on entity name or uses first object. schema: type: string requestBody: content: application/yaml: schema: type: string text/yaml: schema: type: string responses: '200': description: The created or updated data contract content: application/json: schema: $ref: '#/components/schemas/DataContract' '400': description: Bad request post: tags: - Data Contracts summary: Import data contract from ODCS YAML format description: Import a data contract from Open Data Contract Standard (ODCS) v3.1.0 YAML format. operationId: importDataContractFromODCSYaml parameters: - name: entityId in: query description: Entity ID to associate with the contract schema: type: string format: uuid - name: entityType in: query description: Entity Type (table, topic, etc.) schema: type: string example: table - name: objectName in: query description: Schema object name to import (for multi-object ODCS contracts). If not specified, auto-selects based on entity name or uses first object. schema: type: string requestBody: content: application/yaml: schema: type: string text/yaml: schema: type: string responses: '200': description: The imported data contract content: application/json: schema: $ref: '#/components/schemas/DataContract' '400': description: Bad request /v1/dataContracts/{id}/results: get: tags: - Data Contracts summary: List data contract results description: Get a list of all data contract execution results for a given contract. operationId: listDataContractResults parameters: - name: id in: path description: Id of the data contract required: true schema: type: string format: uuid - name: limit in: query description: Limit the number of results (1 to 10000, default = 10) schema: maximum: 10000 minimum: 0 type: integer format: int32 default: 10 - name: startTs in: query description: Returns results after this timestamp schema: type: number - name: endTs in: query description: Returns results before this timestamp schema: type: number responses: '200': description: List of data contract results content: application/json: schema: $ref: '#/components/schemas/ResultList' put: tags: - Data Contracts summary: Create or update data contract result description: Create a new data contract execution result. operationId: createOrUpdateDataContractResult parameters: - name: id in: path description: Id of the data contract required: true schema: type: string format: uuid requestBody: content: application/json: schema: $ref: '#/components/schemas/DataContractResult' application/yaml: schema: $ref: '#/components/schemas/DataContractResult' text/yaml: schema: $ref: '#/components/schemas/DataContractResult' responses: '200': description: Successfully created or updated the result content: application/json: schema: $ref: '#/components/schemas/DataContractResult' /v1/dataContracts/{id}: get: tags: - Data Contracts summary: Get a data contract by id description: Get a data contract by `id`. operationId: getDataContractByID parameters: - name: id in: path description: Data contract Id required: true schema: type: string format: uuid - name: fields in: query description: Fields requested in the returned resource schema: type: string example: owners,reviewers,extension - name: include in: query description: Include all, deleted, or non-deleted entities schema: type: string default: non-deleted enum: - all - deleted - non-deleted - name: includeRelations in: query description: 'Per-relation include control. Format: field:value,field2:value2. Example: owners:non-deleted,followers:all. Valid values: all, deleted, non-deleted. If not specified for a field, uses the entity''s include value.' schema: type: string example: owners:non-deleted,followers:all responses: '200': description: The data contract content: application/json: schema: $ref: '#/components/schemas/DataContract' '404': description: Data contract for instance {id} is not found delete: tags: - Data Contracts summary: Delete a data contract by id description: Delete a data contract by `id`. operationId: deleteDataContract parameters: - name: hardDelete in: query description: Hard delete the entity schema: type: boolean default: false - name: recursive in: query description: Recursively delete this entity and it's children. (Default `false`) schema: type: boolean default: false - name: id in: path description: Data contract Id required: true schema: type: string format: uuid responses: '200': description: OK '404': description: Data contract for instance {id} is not found patch: tags: - Data Contracts summary: Update a data contract description: Update an existing data contract using JsonPatch. externalDocs: description: JsonPatch RFC url: https://tools.ietf.org/html/rfc6902 operationId: patchDataContract parameters: - name: id in: path description: Data contract Id required: true schema: type: string format: uuid requestBody: description: JsonPatch with array of operations content: application/json-patch+json: schema: $ref: '#/components/schemas/JsonPatch' example: '[{op:remove, path:/a},{op:add, path: /b, value: val}]' responses: default: description: default response content: application/json: {} /v1/dataContracts/async/{id}: delete: tags: - Data Contracts summary: Delete a data contract by id asynchronously description: Delete a data contract by `id` asynchronously. operationId: deleteDataContractAsync parameters: - name: hardDelete in: query description: Hard delete the entity schema: type: boolean default: false - name: recursive in: query description: Recursively delete this entity and it's children. (Default `false`) schema: type: boolean default: false - name: id in: path description: Data contract Id required: true schema: type: string format: uuid responses: '200': description: OK '404': description: Data contract for instance {id} is not found /v1/dataContracts/name/{fqn}: get: tags: - Data Contracts summary: Get a data contract by fully qualified name description: Get a data contract by `fullyQualifiedName`. operationId: getDataContractByFQN parameters: - name: fqn in: path description: Fully qualified name of the data contract required: true schema: type: string - name: fields in: query description: Fields requested in the returned resource schema: type: string example: owners,reviewers,extension - name: include in: query description: Include all, deleted, or non-deleted entities schema: type: string default: non-deleted enum: - all - deleted - non-deleted - name: includeRelations in: query description: 'Per-relation include control. Format: field:value,field2:value2. Example: owners:non-deleted,followers:all. Valid values: all, deleted, non-deleted. If not specified for a field, uses the entity''s include value.' schema: type: string example: owners:non-deleted,followers:all responses: '200': description: The data contract content: application/json: schema: $ref: '#/components/schemas/DataContract' '404': description: Data contract for instance {fqn} is not found delete: tags: - Data Contracts summary: Delete a data contract by fully qualified name description: Delete a data contract by `fullyQualifiedName`. operationId: deleteDataContractByName parameters: - name: hardDelete in: query description: Hard delete the entity schema: type: boolean default: false - name: recursive in: query description: Recursively delete this entity and it's children. (Default `false`) schema: type: boolean default: false - name: fqn in: path description: Fully qualified name of the data contract required: true schema: type: string responses: '200': description: OK '404': description: Data contract for instance {fqn} is not found /v1/dataContracts/{id}/results/{timestamp}: delete: tags: - Data Contracts summary: Delete data contract result description: Delete a data contract result at a specific timestamp. operationId: deleteDataContractResult parameters: - name: id in: path description: Id of the data contract required: true schema: type: string format: uuid - name: timestamp in: path description: Timestamp of the result to delete required: true schema: type: number responses: '200': description: Successfully deleted the result /v1/dataContracts/{id}/results/before/{timestamp}: delete: tags: - Data Contracts summary: Delete data contract results before timestamp description: Delete all data contract results before a specific timestamp. operationId: deleteDataContractResultsBefore parameters: - name: id in: path description: Id of the data contract required: true schema: type: string format: uuid - name: timestamp in: path description: Delete results before this timestamp required: true schema: type: number responses: '200': description: Successfully deleted the results /v1/dataContracts/{id}/odcs: get: tags: - Data Contracts summary: Export data contract to ODCS format description: Export a data contract to Open Data Contract Standard (ODCS) v3.1.0 format. operationId: exportDataContractToODCS parameters: - name: id in: path description: Id of the data contract required: true schema: type: string format: uuid - name: fields in: query description: Fields requested in the returned resource schema: type: string example: owners,reviewers,extension responses: '200': description: ODCS data contract content: application/json: schema: $ref: '#/components/schemas/ODCSDataContract' '404': description: Data contract not found /v1/dataContracts/name/{fqn}/odcs: get: tags: - Data Contracts summary: Export data contract to ODCS format by FQN description: Export a data contract to Open Data Contract Standard (ODCS) v3.1.0 format by fully qualified name. operationId: exportDataContractToODCSByFQN parameters: - name: fqn in: path description: Fully qualified name of the data contract required: true schema: type: string - name: fields in: query description: Fields requested in the returned resource schema: type: string example: owners,reviewers,extension responses: '200': description: ODCS data contract content: application/json: schema: $ref: '#/components/schemas/ODCSDataContract' '404': description: Data contract not found /v1/dataContracts/{id}/odcs/yaml: get: tags: - Data Contracts summary: Export data contract to ODCS YAML format description: Export a data contract to Open Data Contract Standard (ODCS) v3.1.0 YAML format. operationId: exportDataContractToODCSYaml parameters: - name: id in: path description: Id of the data contract required: true schema: type: string format: uuid - name: fields in: query description: Fields requested in the returned resource schema: type: string example: owners,reviewers,extension responses: '200': description: ODCS data contract in YAML format content: application/yaml: {} '404': description: Data contract not found /v1/dataContracts/name/{fqn}/odcs/yaml: get: tags: - Data Contracts summary: Export data contract to ODCS YAML format by FQN description: Export a data contract to Open Data Contract Standard (ODCS) v3.1.0 YAML format by fully qualified name. operationId: exportDataContractToODCSYamlByFQN parameters: - name: fqn in: path description: Fully qualified name of the data contract required: true schema: type: string - name: fields in: query description: Fields requested in the returned resource schema: type: string example: owners,reviewers,extension responses: '200': description: ODCS data contract in YAML format content: application/yaml: schema: type: string '404': description: Data contract not found /v1/dataContracts/entity: get: tags: - Data Contracts summary: Get the effective data contract for an entity description: Get the effective data contract for an entity, including inherited contract properties from its data product if applicable. operationId: getDataContractByEntityId parameters: - name: entityId in: query description: ID of the related Entity schema: type: string - name: entityType in: query description: Entity Type to get the data contract for schema: type: string example: table - name: fields in: query description: Fields requested in the returned resource schema: type: string example: owners,reviewers,extension responses: '200': description: The effective data contract (may include inherited properties) content: application/json: schema: $ref: '#/components/schemas/DataContract' '404': description: Data contract for instance {id} is not found /v1/dataContracts/{id}/results/latest: get: tags: - Data Contracts summary: Get latest data contract result description: Get the latest execution result for a data contract. operationId: getLatestDataContractResult parameters: - name: id in: path description: Id of the data contract required: true schema: type: string format: uuid responses: '200': description: Latest data contract result content: application/json: schema: $ref: '#/components/schemas/DataContractResult' '404': description: Data contract or result not found /v1/dataContracts/{id}/results/{resultId}: get: tags: - Data Contracts summary: Get a data contract result by ID description: Get a specific data contract execution result by its ID. operationId: getDataContractResult parameters: - name: id in: path description: Id of the data contract required: true schema: type: string format: uuid - name: resultId in: path description: Id of the data contract result required: true schema: type: string format: uuid responses: '200': description: Data contract result content: application/json: schema: $ref: '#/components/schemas/DataContractResult' '404': description: Data contract result not found /v1/dataContracts/{id}/versions/{version}: get: tags: - Data Contracts summary: Get a version of a data contract description: Get a version of a data contract by given `id` operationId: getDataContractVersion parameters: - name: id in: path description: Data contract Id required: true schema: type: string format: uuid - name: version in: path description: Data contract version number in the form `major`.`minor` required: true schema: type: string example: 0.1 or 1.1 responses: '200': description: Data contract content: application/json: schema: $ref: '#/components/schemas/DataContract' '404': description: Data contract for instance {id} and version {version} is not found /v1/dataContracts/history: get: tags: - Data Contracts summary: List all entity versions within a time range description: 'Get a paginated list of all entity versions within a given time range specified by `startTs` and `endTs` in milliseconds since epoch. ' operationId: listAllEntityVersionsByTimestamp_12 parameters: - name: startTs in: query description: Start timestamp in milliseconds since epoch required: true schema: type: integer format: int64 - name: endTs in: query description: End timestamp in milliseconds since epoch required: true schema: type: integer format: int64 - name: limit in: query description: Limit the number of entity returned (1 to 1000000, default = 10) schema: maximum: 500 minimum: 1 type: integer format: int32 default: 10 - name: before in: query description: Returns list of entity versions before this cursor schema: type: string - name: after in: query description: Returns list of entity versions after this cursor schema: type: string responses: '200': description: List of all versions content: application/json: schema: $ref: '#/components/schemas/ResultList' /v1/dataContracts/{id}/versions: get: tags: - Data Contracts summary: List all versions of a data contract description: Get a list of all the versions of a data contract identified by `id` operationId: listDataContractVersions parameters: - name: id in: path description: Data contract Id required: true schema: type: string format: uuid responses: '200': description: List of data contract versions content: application/json: schema: $ref: '#/components/schemas/EntityHistory' /v1/dataContracts/odcs/parse/yaml: post: tags: - Data Contracts summary: Parse ODCS YAML and return metadata description: Parse an ODCS YAML contract and return metadata including the list of schema objects. Use this to determine available objects for multi-object contracts before importing. operationId: parseODCSYaml requestBody: content: application/yaml: schema: type: string text/yaml: schema: type: string responses: '200': description: Parsed ODCS metadata content: application/json: schema: $ref: '#/components/schemas/ODCSParseResult' '400': description: Invalid YAML content /v1/dataContracts/restore: put: tags: - Data Contracts summary: Restore a soft deleted data contract description: Restore a soft deleted data contract. operationId: restore_11 requestBody: content: application/json: schema: $ref: '#/components/schemas/RestoreEntity' application/yaml: schema: $ref: '#/components/schemas/RestoreEntity' text/yaml: schema: $ref: '#/components/schemas/RestoreEntity' responses: '200': description: 'Successfully restored the DataContract ' content: application/json: schema: $ref: '#/components/schemas/DataContract' /v1/dataContracts/{id}/validate: post: tags: - Data Contracts summary: Validate a data contract description: Execute on-demand validation of a data contract including semantic rules, quality tests, and inherited contract properties from data products. operationId: validateDataContract parameters: - name: id in: path description: Id of the data contract required: true schema: type: string format: uuid responses: '200': description: Validation result content: application/json: schema: $ref: '#/components/schemas/DataContractResult' '404': description: Data contract not found /v1/dataContracts/entity/validate: post: tags: - Data Contracts summary: Validate a data contract for an entity description: Execute on-demand validation of a data contract for an entity. If the entity only has an inherited contract from a Data Product, an empty contract will be materialized for the entity to store validation results. operationId: validateDataContractByEntityId parameters: - name: entityId in: query description: ID of the entity schema: type: string format: uuid - name: entityType in: query description: Type of the entity schema: type: string responses: '200': description: Validation result content: application/json: schema: $ref: '#/components/schemas/DataContractResult' '404': description: Entity not found or no contract available /v1/dataContracts/validate: post: tags: - Data Contracts summary: Validate data contract request without creating description: Validate a CreateDataContract request against the target entity without creating the contract. Returns comprehensive validation results including constraint errors and schema field mismatches. operationId: validateDataContractRequest requestBody: content: application/json: schema: $ref: '#/components/schemas/CreateDataContract' application/yaml: schema: $ref: '#/components/schemas/CreateDataContract' text/yaml: schema: $ref: '#/components/schemas/CreateDataContract' responses: '200': description: Validation results content: application/json: schema: $ref: '#/components/schemas/ContractValidation' '400': description: Invalid request /v1/dataContracts/validate/yaml: post: tags: - Data Contracts summary: Validate data contract request from YAML without creating description: Validate a CreateDataContract YAML request against the target entity without creating the contract. Returns comprehensive validation results including entity errors, constraint errors, and schema field mismatches. operationId: validateDataContractRequestYaml requestBody: content: application/yaml: schema: type: string text/yaml: schema: type: string responses: '200': description: Validation results content: application/json: schema: $ref: '#/components/schemas/ContractValidation' '400': description: Invalid YAML content /v1/dataContracts/odcs/validate/yaml: post: tags: - Data Contracts summary: Validate ODCS YAML without importing description: Validate an ODCS YAML contract against the target entity without creating the contract. Returns comprehensive validation results including entity errors, constraint errors, and schema field mismatches. operationId: validateODCSYaml parameters: - name: entityId in: query description: Entity ID to validate against schema: type: string format: uuid - name: entityType in: query description: Entity Type (table, topic, etc.) schema: type: string example: table - name: objectName in: query description: Schema object name to validate (for multi-object ODCS contracts). If not specified, auto-selects based on entity name or uses first object. schema: type: string requestBody: content: application/yaml: schema: type: string text/yaml: schema: type: string responses: '200': description: Validation results content: application/json: schema: $ref: '#/components/schemas/ContractValidation' '400': description: Invalid YAML content components: schemas: TagLabelRecognizerMetadata: required: - recognizerId - recognizerName - score type: object properties: recognizerId: type: string format: uuid recognizerName: type: string score: type: number format: double target: type: string enum: - content - column_name patterns: type: array items: $ref: '#/components/schemas/PatternMatch' ColumnProfile: required: - name - timestamp type: object properties: name: type: string timestamp: type: integer format: int64 valuesCount: type: number format: double valuesPercentage: type: number format: double validCount: type: number format: double duplicateCount: type: number format: double nullCount: type: number format: double nullProportion: type: number format: double missingPercentage: type: number format: double missingCount: type: number format: double uniqueCount: type: number format: double uniqueProportion: type: number format: double distinctCount: type: number format: double distinctProportion: type: number format: double min: type: object max: type: object minLength: type: number format: double maxLength: type: number format: double mean: type: number format: double sum: type: number format: double stddev: type: number format: double variance: type: number format: double median: type: number format: double firstQuartile: type: number format: double thirdQuartile: type: number format: double interQuartileRange: type: number format: double nonParametricSkew: type: number format: double histogram: $ref: '#/components/schemas/Histogram' customMetrics: type: array items: $ref: '#/components/schemas/CustomMetricProfile' cardinalityDistribution: $ref: '#/components/schemas/CardinalityDistribution' ODCSParseResult: type: object properties: name: type: string version: type: string status: type: string schemaObjects: type: array items: type: string hasMultipleObjects: type: boolean ODCSSupportChannel: required: - channel - url type: object properties: channel: type: string url: type: string format: uri description: type: string tool: type: string enum: - email - slack - teams - discord - ticket - other scope: type: string enum: - interactive - announcements - issues invitationUrl: type: string format: uri ODCSAuthoritativeDefinition: type: object properties: url: type: string format: uri name: type: string type: type: string TermsOfUse: type: object properties: content: type: string inherited: type: boolean ContractSLA: type: object properties: inherited: type: boolean refreshFrequency: $ref: '#/components/schemas/RefreshFrequency' maxLatency: $ref: '#/components/schemas/MaxLatency' availabilityTime: type: string timezone: type: string enum: - GMT-11:00 (Pacific/Niue) - GMT-10:00 (Pacific/Honolulu) - GMT-09:30 (Pacific/Marquesas) - GMT-09:00 (America/Anchorage) - GMT-08:00 (America/Los Angeles) - GMT-07:00 (America/Denver) - GMT-06:00 (America/Chicago) - GMT-05:00 (America/New York) - GMT-04:00 (America/Santiago) - GMT-03:00 (America/Sao Paulo) - GMT-02:30 (Atlantic/Newfoundland) - GMT-02:00 (Atlantic/South_Georgia) - GMT-01:00 (Atlantic/Azores) - GMT+00:00 (Europe/London) - GMT+01:00 (Europe/Paris) - GMT+02:00 (Europe/Athens) - GMT+03:00 (Europe/Moscow) - GMT+03:00 (Asia/Iran) - GMT+04:00 (Asia/Dubai) - GMT+04:30 (Asia/Afghanistan) - GMT+05:00 (Asia/Karachi) - GMT+05:30 (Asia/Kolkata) - GMT+05:45 (Asia/Nepal) - GMT+06:00 (Asia/Dhaka) - GMT+06:00 (Asia/Myanmar) - GMT+07:00 (Asia/Bangkok) - GMT+08:00 (Asia/Shanghai) - GMT+08:45 (Australia/Australian Central Western Standard Time) - GMT+09:00 (Asia/Tokyo) - GMT+09:00 (Australia/Adelaide) - GMT+10:00 (Australia/Sydney) - GMT+10:30 (Australia/Lord Howe) - GMT+11:00 (Pacific/Norfolk) - GMT+12:00 (Pacific/Auckland) - GMT+13:00 (Pacific/Tongatapu) - GMT+14:00 (Pacific/Kiritimati) retention: $ref: '#/components/schemas/Retention' columnName: type: string FailedRule: type: object properties: ruleName: type: string reason: type: string ChangeSummaryMap: type: object AccessDetails: required: - timestamp type: object properties: timestamp: type: integer format: int64 accessedBy: $ref: '#/components/schemas/EntityReference' accessedByAProcess: type: string FieldChange: type: object properties: name: type: string oldValue: type: object newValue: type: object CoverImage: type: object properties: url: type: string position: type: string RestoreEntity: required: - id type: object properties: id: type: string format: uuid SemanticsValidation: type: object properties: passed: type: integer format: int32 failed: type: integer format: int32 total: type: integer format: int32 failedRules: type: array items: $ref: '#/components/schemas/FailedRule' Retention: required: - period - unit type: object properties: period: type: integer format: int32 unit: type: string enum: - day - week - month - year LifeCycle: type: object properties: created: $ref: '#/components/schemas/AccessDetails' updated: $ref: '#/components/schemas/AccessDetails' accessed: $ref: '#/components/schemas/AccessDetails' EntityHistory: required: - entityType - versions type: object properties: entityType: type: string versions: type: array items: type: object AssetCertification: required: - appliedDate - expiryDate - tagLabel type: object properties: tagLabel: $ref: '#/components/schemas/TagLabel' appliedDate: type: integer format: int64 expiryDate: type: integer format: int64 CustomMetricProfile: type: object properties: name: type: string value: type: number format: double ODCSDataContract: required: - apiVersion - id - kind - status - version type: object properties: apiVersion: type: string enum: - v3.1.0 - v3.0.2 - v3.0.1 - v3.0.0 - v2.2.2 - v2.2.1 - v2.2.0 kind: type: string enum: - DataContract id: type: string name: type: string version: type: string status: type: string enum: - proposed - draft - active - deprecated - retired tenant: type: string domain: type: string dataProduct: type: string tags: type: array items: type: string description: $ref: '#/components/schemas/ODCSDescription' authoritativeDefinitions: type: array items: $ref: '#/components/schemas/ODCSAuthoritativeDefinition' schema: type: array items: $ref: '#/components/schemas/ODCSSchemaElement' quality: type: array items: $ref: '#/components/schemas/ODCSQualityRule' support: type: array items: $ref: '#/components/schemas/ODCSSupportChannel' price: $ref: '#/components/schemas/ODCSPricing' team: type: array items: $ref: '#/components/schemas/ODCSTeamMember' roles: type: array items: $ref: '#/components/schemas/ODCSRole' slaDefaultElement: type: string slaProperties: type: array items: $ref: '#/components/schemas/ODCSSlaProperty' servers: type: array items: $ref: '#/components/schemas/ODCSServer' customProperties: type: array items: $ref: '#/components/schemas/ODCSCustomProperty' contractCreatedTs: type: string format: date-time CardinalityDistribution: type: object properties: categories: type: array items: type: string counts: type: array items: type: integer format: int32 percentages: type: array items: type: number format: double allValuesUnique: type: boolean ResultList: required: - data type: object properties: data: type: array items: type: object paging: $ref: '#/components/schemas/Paging' errors: type: array items: $ref: '#/components/schemas/EntityError' warningsCount: type: integer format: int32 warnings: type: array items: $ref: '#/components/schemas/EntityError' ODCSSchemaElement: required: - name type: object properties: name: type: string physicalName: type: string physicalType: type: string description: type: string businessName: type: string tags: type: array items: type: string authoritativeDefinitions: type: array items: $ref: '#/components/schemas/ODCSAuthoritativeDefinition' customProperties: $ref: '#/components/schemas/CustomProperties__1' dataGranularityDescription: type: string primaryKey: type: boolean primaryKeyPosition: type: integer format: int32 logicalType: type: string enum: - string - text - date - timestamp - time - number - integer - decimal - float - double - long - object - array - boolean - bytes - 'null' logicalTypeOptions: $ref: '#/components/schemas/ODCSLogicalTypeOptions' required: type: boolean unique: type: boolean partitioned: type: boolean partitionKeyPosition: type: integer format: int32 classification: type: string encryptedName: type: string transformSourceObjects: type: array items: type: string transformLogic: type: string transformDescription: type: string examples: type: array items: type: string criticalDataElement: type: boolean properties: type: array items: $ref: '#/components/schemas/ODCSSchemaElement' items: $ref: '#/components/schemas/ODCSSchemaElement' quality: type: array items: $ref: '#/components/schemas/ODCSQualityRule' Paging: required: - total type: object properties: before: type: string after: type: string offset: type: integer format: int32 limit: type: integer format: int32 total: type: integer format: int32 JsonPatch: type: object QualityValidation: type: object properties: passed: type: integer format: int32 failed: type: integer format: int32 total: type: integer format: int32 qualityScore: type: number format: double ODCSDescription: type: object properties: purpose: type: string limitations: type: string usage: type: string CustomMetric: required: - expression - name type: object properties: id: type: string format: uuid name: maxLength: 256 minLength: 1 pattern: ^((?!::).)*$ type: string description: type: string columnName: type: string expression: type: string owners: type: array items: $ref: '#/components/schemas/EntityReference' updatedAt: type: integer format: int64 updatedBy: type: string ODCSLogicalTypeOptions: type: object properties: format: type: string minimum: type: number format: double maximum: type: number format: double exclusiveMinimum: type: number format: double exclusiveMaximum: type: number format: double minLength: type: integer format: int32 maxLength: type: integer format: int32 pattern: type: string minItems: type: integer format: int32 maxItems: type: integer format: int32 uniqueItems: type: boolean multipleOf: type: number format: double minProperties: type: integer format: int32 maxProperties: type: integer format: int32 timezone: type: boolean defaultTimezone: type: string ChangeDescription: type: object properties: fieldsAdded: type: array items: $ref: '#/components/schemas/FieldChange' fieldsUpdated: type: array items: $ref: '#/components/schemas/FieldChange' fieldsDeleted: type: array items: $ref: '#/components/schemas/FieldChange' previousVersion: type: number format: double changeSummary: $ref: '#/components/schemas/ChangeSummaryMap' ODCSQualityRule: type: object properties: type: type: string enum: - text - library - sql - custom name: type: string description: type: string rule: type: string metric: type: string enum: - rowCount - nullValues - invalidValues - duplicateValues - missingValues - uniqueValues - distinctValues - completeness - freshness column: type: string query: type: string engine: type: string implementation: type: string dimension: type: string enum: - accuracy - completeness - conformity - consistency - coverage - timeliness - uniqueness - ac - cp - cf - cs - cv - tm - uq severity: type: string businessImpact: type: string unit: type: string mustBe: type: number format: double mustNotBe: type: number format: double mustBeGreaterThan: type: number format: double mustBeGreaterOrEqualTo: type: number format: double mustBeLessThan: type: number format: double mustBeLessOrEqualTo: type: number format: double mustBeBetween: maxItems: 2 minItems: 2 type: array items: type: number format: double mustNotBeBetween: maxItems: 2 minItems: 2 type: array items: type: number format: double validValues: type: array items: type: string scheduler: type: string schedule: type: string customProperties: $ref: '#/components/schemas/CustomProperties' authoritativeDefinitions: type: array items: $ref: '#/components/schemas/ODCSAuthoritativeDefinition' tags: type: array items: type: string CustomProperties__3: type: object ODCSServer: required: - server - type type: object properties: server: type: string type: type: string description: type: string environment: type: string enum: - prod - preprod - dev - uat roles: type: array items: type: string host: type: string port: type: integer format: int32 database: type: string schema: type: string catalog: type: string project: type: string dataset: type: string account: type: string region: type: string warehouse: type: string topic: type: string stream: type: string location: type: string format: type: string delimiter: type: string customProperties: $ref: '#/components/schemas/CustomProperties__3' SlaValidation: type: object properties: refreshFrequencyMet: type: boolean latencyMet: type: boolean availabilityMet: type: boolean actualLatency: type: integer format: int32 DataContractResult: required: - contractExecutionStatus - dataContractFQN - timestamp type: object properties: id: type: string format: uuid dataContractFQN: maxLength: 3072 minLength: 1 type: string timestamp: type: integer format: int64 contractExecutionStatus: type: string enum: - Running - Success - Failed - PartialSuccess - Aborted - Queued result: type: string schemaValidation: $ref: '#/components/schemas/SchemaValidation' semanticsValidation: $ref: '#/components/schemas/SemanticsValidation' qualityValidation: $ref: '#/components/schemas/QualityValidation' slaValidation: $ref: '#/components/schemas/SlaValidation' incidentId: type: string format: uuid executionTime: type: integer format: int64 SchemaValidation: type: object properties: passed: type: integer format: int32 failed: type: integer format: int32 total: type: integer format: int32 failedFields: type: array items: type: string duplicateFields: type: array items: type: string typeMismatchFields: type: array items: type: string LatestResult: type: object properties: timestamp: type: integer format: int64 status: type: string enum: - Running - Success - Failed - PartialSuccess - Aborted - Queued message: type: string resultId: type: string format: uuid UsageStats: required: - count type: object properties: count: minimum: 0 exclusiveMinimum: false type: integer format: int32 percentileRank: type: number format: double CustomProperties__2: type: object RefreshFrequency: required: - interval - unit type: object properties: interval: type: integer format: int32 unit: type: string enum: - hour - day - week - month - year DataContractList: required: - data type: object properties: data: type: array items: $ref: '#/components/schemas/DataContract' paging: $ref: '#/components/schemas/Paging' errors: type: array items: $ref: '#/components/schemas/EntityError' warningsCount: type: integer format: int32 warnings: type: array items: $ref: '#/components/schemas/EntityError' Style: type: object properties: color: type: string iconURL: type: string coverImage: $ref: '#/components/schemas/CoverImage' Column: required: - dataType - name type: object properties: name: maxLength: 2147483647 minLength: 1 pattern: ^((?!::).)*$ type: string displayName: type: string dataType: type: string enum: - NUMBER - TINYINT - SMALLINT - INT - BIGINT - BYTEINT - BYTES - FLOAT - DOUBLE - DECIMAL - NUMERIC - TIMESTAMP - TIMESTAMPZ - TIME - DATE - DATETIME - INTERVAL - STRING - MEDIUMTEXT - TEXT - CHAR - LONG - VARCHAR - BOOLEAN - BINARY - VARBINARY - ARRAY - BLOB - LONGBLOB - MEDIUMBLOB - MAP - STRUCT - UNION - SET - GEOGRAPHY - ENUM - JSON - UUID - VARIANT - GEOMETRY - BYTEA - AGGREGATEFUNCTION - ERROR - FIXED - RECORD - 'NULL' - SUPER - HLLSKETCH - PG_LSN - PG_SNAPSHOT - TSQUERY - TXID_SNAPSHOT - XML - MACADDR - TSVECTOR - UNKNOWN - CIDR - INET - CLOB - ROWID - LOWCARDINALITY - YEAR - POINT - POLYGON - TUPLE - SPATIAL - TABLE - NTEXT - IMAGE - IPV4 - IPV6 - DATETIMERANGE - HLL - LARGEINT - QUANTILE_STATE - AGG_STATE - BITMAP - UINT - BIT - MONEY - MEASURE HIDDEN - MEASURE VISIBLE - MEASURE - KPI - HEIRARCHY - HIERARCHYID arrayDataType: type: string enum: - NUMBER - TINYINT - SMALLINT - INT - BIGINT - BYTEINT - BYTES - FLOAT - DOUBLE - DECIMAL - NUMERIC - TIMESTAMP - TIMESTAMPZ - TIME - DATE - DATETIME - INTERVAL - STRING - MEDIUMTEXT - TEXT - CHAR - LONG - VARCHAR - BOOLEAN - BINARY - VARBINARY - ARRAY - BLOB - LONGBLOB - MEDIUMBLOB - MAP - STRUCT - UNION - SET - GEOGRAPHY - ENUM - JSON - UUID - VARIANT - GEOMETRY - BYTEA - AGGREGATEFUNCTION - ERROR - FIXED - RECORD - 'NULL' - SUPER - HLLSKETCH - PG_LSN - PG_SNAPSHOT - TSQUERY - TXID_SNAPSHOT - XML - MACADDR - TSVECTOR - UNKNOWN - CIDR - INET - CLOB - ROWID - LOWCARDINALITY - YEAR - POINT - POLYGON - TUPLE - SPATIAL - TABLE - NTEXT - IMAGE - IPV4 - IPV6 - DATETIMERANGE - HLL - LARGEINT - QUANTILE_STATE - AGG_STATE - BITMAP - UINT - BIT - MONEY - MEASURE HIDDEN - MEASURE VISIBLE - MEASURE - KPI - HEIRARCHY - HIERARCHYID dataLength: type: integer format: int32 precision: type: integer format: int32 scale: type: integer format: int32 dataTypeDisplay: type: string description: type: string fullyQualifiedName: maxLength: 3072 minLength: 1 type: string tags: type: array items: $ref: '#/components/schemas/TagLabel' constraint: type: string enum: - 'NULL' - NOT_NULL - UNIQUE - PRIMARY_KEY ordinalPosition: type: integer format: int32 jsonSchema: type: string children: type: array items: $ref: '#/components/schemas/Column' profile: $ref: '#/components/schemas/ColumnProfile' customMetrics: type: array items: $ref: '#/components/schemas/CustomMetric' extension: type: object CustomProperties__1: type: object Votes: type: object properties: upVotes: type: integer format: int32 downVotes: type: integer format: int32 upVoters: type: array items: $ref: '#/components/schemas/EntityReference' downVoters: type: array items: $ref: '#/components/schemas/EntityReference' ContractValidation: type: object properties: valid: type: boolean schemaValidation: $ref: '#/components/schemas/SchemaValidation' entityErrors: type: array items: type: string constraintErrors: type: array items: type: string Histogram: type: object properties: boundaries: type: array items: type: object frequencies: type: array items: type: object TagLabel: required: - labelType - source - state - tagFQN type: object properties: tagFQN: type: string name: type: string displayName: type: string description: type: string style: $ref: '#/components/schemas/Style' source: type: string enum: - Classification - Glossary labelType: type: string enum: - Manual - Propagated - Automated - Derived - Generated state: type: string enum: - Suggested - Confirmed href: type: string format: uri reason: type: string appliedAt: type: string format: date-time appliedBy: type: string metadata: $ref: '#/components/schemas/TagLabelMetadata' PatternMatch: required: - name - score type: object properties: name: type: string regex: type: string score: type: number format: double ODCSRole: required: - role type: object properties: role: type: string description: type: string access: type: string enum: - read - write - readWrite firstLevelApprovers: type: array items: type: string secondLevelApprovers: type: array items: type: string customProperties: $ref: '#/components/schemas/CustomProperties__2' CreateDataContract: required: - entity - name type: object properties: name: maxLength: 256 minLength: 1 pattern: ^((?!::).)*$ type: string displayName: type: string description: type: string entityStatus: type: string enum: - Draft - In Review - Approved - Archived - Deprecated - Rejected - Unprocessed entity: $ref: '#/components/schemas/EntityReference' schema: type: array items: $ref: '#/components/schemas/Column' semantics: type: array items: $ref: '#/components/schemas/SemanticsRule' qualityExpectations: type: array items: $ref: '#/components/schemas/EntityReference' odcsQualityRules: type: array items: $ref: '#/components/schemas/ODCSQualityRule' owners: type: array items: $ref: '#/components/schemas/EntityReference' reviewers: type: array items: $ref: '#/components/schemas/EntityReference' effectiveFrom: type: string format: date-time effectiveUntil: type: string format: date-time sourceUrl: type: string termsOfUse: type: string security: $ref: '#/components/schemas/ContractSecurity' sla: $ref: '#/components/schemas/ContractSLA' extension: type: object tags: type: array items: $ref: '#/components/schemas/TagLabel' domains: type: array items: type: string dataProducts: type: array items: type: string lifeCycle: $ref: '#/components/schemas/LifeCycle' TagLabelMetadata: type: object properties: recognizer: $ref: '#/components/schemas/TagLabelRecognizerMetadata' expiryDate: type: integer format: int64 EntityError: type: object properties: message: type: string entity: type: object ODCSTeamMember: type: object properties: username: type: string name: type: string description: type: string role: type: string dateIn: type: string dateOut: type: string replacedByUsername: type: string ContractUpdate: required: - timestamp - updatedBy - version type: object properties: timestamp: type: integer format: int64 updatedBy: type: string impersonatedBy: type: string changeDescription: type: string version: type: string ODCSCustomProperty: type: object properties: property: type: string value: type: string Policy: required: - id - name - rules type: object properties: id: type: string format: uuid name: maxLength: 256 minLength: 1 pattern: ^((?!::).)*$ type: string fullyQualifiedName: maxLength: 256 minLength: 1 pattern: ^((?!::).)*$ type: string displayName: type: string description: type: string owners: type: array items: $ref: '#/components/schemas/EntityReference' href: type: string format: uri enabled: type: boolean version: type: number format: double updatedAt: type: integer format: int64 updatedBy: type: string impersonatedBy: type: string changeDescription: $ref: '#/components/schemas/ChangeDescription' incrementalChangeDescription: $ref: '#/components/schemas/ChangeDescription' rules: type: array items: $ref: '#/components/schemas/Rule' teams: type: array items: $ref: '#/components/schemas/EntityReference' roles: type: array items: $ref: '#/components/schemas/EntityReference' location: $ref: '#/components/schemas/EntityReference' allowDelete: type: boolean allowEdit: type: boolean deleted: type: boolean provider: type: string enum: - system - user - automation disabled: type: boolean domains: type: array items: $ref: '#/components/schemas/EntityReference' extension: type: object children: type: array items: $ref: '#/components/schemas/EntityReference' service: $ref: '#/components/schemas/EntityReference' style: $ref: '#/components/schemas/Style' tags: type: array items: $ref: '#/components/schemas/TagLabel' followers: type: array items: $ref: '#/components/schemas/EntityReference' experts: type: array items: $ref: '#/components/schemas/EntityReference' reviewers: type: array items: $ref: '#/components/schemas/EntityReference' dataProducts: type: array items: $ref: '#/components/schemas/EntityReference' dataContract: $ref: '#/components/schemas/EntityReference' usageSummary: $ref: '#/components/schemas/UsageDetails' entityStatus: type: string enum: - Draft - In Review - Approved - Archived - Deprecated - Rejected - Unprocessed votes: $ref: '#/components/schemas/Votes' lifeCycle: $ref: '#/components/schemas/LifeCycle' certification: $ref: '#/components/schemas/AssetCertification' ODCSSlaProperty: required: - property - value type: object properties: property: type: string value: type: string valueExt: type: string unit: type: string element: type: string driver: type: string enum: - regulatory - analytics - operational MaxLatency: required: - unit - value type: object properties: value: type: integer format: int32 unit: type: string enum: - minute - hour - day SemanticsRule: required: - description - enabled - name - rule type: object properties: name: type: string description: type: string rule: type: string enabled: type: boolean entityType: type: string ignoredEntities: type: array items: type: string jsonTree: type: string provider: type: string enum: - system - user - automation inherited: type: boolean DataContract: required: - entity - id - name type: object properties: id: type: string format: uuid name: maxLength: 256 minLength: 1 pattern: ^((?!::).)*$ type: string displayName: type: string fullyQualifiedName: maxLength: 3072 minLength: 1 type: string description: type: string version: type: number format: double updatedAt: type: integer format: int64 updatedBy: type: string impersonatedBy: type: string createdAt: type: integer format: int64 createdBy: type: string href: type: string format: uri entityStatus: type: string enum: - Draft - In Review - Approved - Archived - Deprecated - Rejected - Unprocessed entity: $ref: '#/components/schemas/EntityReference' testSuite: $ref: '#/components/schemas/EntityReference' schema: type: array items: $ref: '#/components/schemas/Column' semantics: type: array items: $ref: '#/components/schemas/SemanticsRule' termsOfUse: $ref: '#/components/schemas/TermsOfUse' security: $ref: '#/components/schemas/ContractSecurity' sla: $ref: '#/components/schemas/ContractSLA' qualityExpectations: type: array items: $ref: '#/components/schemas/EntityReference' odcsQualityRules: type: array items: $ref: '#/components/schemas/ODCSQualityRule' contractUpdates: type: array items: $ref: '#/components/schemas/ContractUpdate' owners: type: array items: $ref: '#/components/schemas/EntityReference' reviewers: type: array items: $ref: '#/components/schemas/EntityReference' effectiveFrom: type: string format: date-time effectiveUntil: type: string format: date-time changeDescription: $ref: '#/components/schemas/ChangeDescription' incrementalChangeDescription: $ref: '#/components/schemas/ChangeDescription' deleted: type: boolean sourceUrl: type: string latestResult: $ref: '#/components/schemas/LatestResult' extension: type: object inherited: type: boolean provider: type: string enum: - system - user - automation children: type: array items: $ref: '#/components/schemas/EntityReference' service: $ref: '#/components/schemas/EntityReference' style: $ref: '#/components/schemas/Style' tags: type: array items: $ref: '#/components/schemas/TagLabel' followers: type: array items: $ref: '#/components/schemas/EntityReference' experts: type: array items: $ref: '#/components/schemas/EntityReference' domains: type: array items: $ref: '#/components/schemas/EntityReference' dataProducts: type: array items: $ref: '#/components/schemas/EntityReference' dataContract: $ref: '#/components/schemas/EntityReference' usageSummary: $ref: '#/components/schemas/UsageDetails' votes: $ref: '#/components/schemas/Votes' lifeCycle: $ref: '#/components/schemas/LifeCycle' certification: $ref: '#/components/schemas/AssetCertification' CustomProperties: type: object ContractSecurity: type: object properties: inherited: type: boolean dataClassification: type: string policies: type: array items: $ref: '#/components/schemas/Policy' EntityReference: required: - id - type type: object properties: id: type: string format: uuid type: type: string name: type: string fullyQualifiedName: type: string description: type: string displayName: type: string deleted: type: boolean inherited: type: boolean href: type: string format: uri ODCSPricing: type: object properties: priceAmount: type: number format: double priceCurrency: type: string priceUnit: type: string UsageDetails: required: - dailyStats - date type: object properties: dailyStats: $ref: '#/components/schemas/UsageStats' weeklyStats: $ref: '#/components/schemas/UsageStats' monthlyStats: $ref: '#/components/schemas/UsageStats' date: type: string Rule: required: - effect - name - operations - resources type: object properties: name: type: string fullyQualifiedName: maxLength: 3072 minLength: 1 type: string description: type: string effect: type: string enum: - allow - deny operations: type: array items: type: string enum: - All - Create - BulkCreate - CreateIngestionPipelineAutomator - CreateTests - Delete - ViewAll - ViewBasic - ViewUsage - ViewTests - ViewQueries - ViewDataProfile - ViewProfilerGlobalConfiguration - ViewSampleData - ViewTestCaseFailedRowsSample - ViewCustomFields - EditAll - BulkUpdate - EditCustomFields - EditDataProfile - EditDescription - EditDisplayName - EditLineage - EditEntityRelationship - EditPolicy - EditOwners - EditQueries - EditReviewers - EditRole - EditSampleData - EditStatus - EditTags - EditGlossaryTerms - EditTeams - EditTier - EditCertification - EditTests - EditUsage - EditUsers - EditLifeCycle - EditKnowledgePanel - EditPage - EditIngestionPipelineStatus - EditUserNotificationTemplate - DeleteTestCaseFailedRowsSample - Deploy - Trigger - Kill - GenerateToken - EditScim - CreateScim - DeleteScim - ViewScim - Impersonate - AuditLogs - ViewTestDefinitionLibrary - EditTestDefinitionLibrary resources: type: array items: type: string condition: type: string securitySchemes: BearerAuth: type: http scheme: bearer bearerFormat: JWT