{
  "components": {
    "schemas": {
      "EntityExportRequestDto": {
        "description": "Represents a request to export data from a entity",
        "properties": {
          "ids": {
            "description": "Entities identifiers to be exported.",
            "items": {
              "type": "string"
            },
            "minItems": 1,
            "type": "array"
          }
        },
        "required": [
          "ids"
        ],
        "type": "object"
      },
      "GoldenUpsertResponseDto": {
        "description": "Represents upserted record result",
        "properties": {
          "errors": {
            "description": "List of errors. If HTTP response represents an error (4xx or 5xx) this will contain a list of errors. Otherwise, not present.",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "inserted": {
            "description": "Indicates if the record was inserted.",
            "type": "boolean"
          },
          "messages": {
            "description": "Optional informational messages. If present, the request was successful and response code will be 2xx.",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "record": {
            "additionalProperties": {
              "description": "A record represents an user data record as a JSON document with a unique identifier (_id), metadata (_metadata) and auditing (_audit). A record represents that main data asset in Golden and can also be used to store data in plain (text), XML and binary formats using a JSON structure."
            },
            "description": "Updated/inserted record",
            "properties": {
              "_audit": {
                "description": "Reserved audit member. Ordinary record responses omit this field, including expanded responses. Read events through the dedicated record audit endpoint. Requests carrying _audit are refused with 400.",
                "items": {
                  "$ref": "#/components/schemas/RecordAudit"
                },
                "readOnly": true,
                "type": "array"
              },
              "_id": {
                "type": "string"
              },
              "_metadata": {
                "$ref": "#/components/schemas/RecordMetadata",
                "description": "Server-owned metadata: quality, merge pointers, the last write. Read-only; requests must not include this member.",
                "readOnly": true
              },
              "_search": {
                "additionalProperties": {
                  "description": "Record search metadata."
                },
                "description": "Search metadata associated to the record, present on a search result. Read-only; requests must not include this member.",
                "properties": {
                  "exact": {
                    "description": "True when the match is exact. Decided by the engine, not by the score.",
                    "type": "boolean"
                  },
                  "index": {
                    "description": "Index that found this search result.",
                    "type": "string"
                  },
                  "match": {
                    "description": "Matched text.",
                    "type": "string"
                  },
                  "origin": {
                    "description": "How this result was reached, which is not what matched it.",
                    "enum": [
                      "DIRECT",
                      "CLUSTER",
                      "HISTORY",
                      "MERGED_FORWARD"
                    ],
                    "type": "string"
                  },
                  "rank": {
                    "description": "Search rank.",
                    "format": "double",
                    "type": "number"
                  },
                  "sourceId": {
                    "description": "The record this result was reached through, when that is not the record itself: the absorbed record for a merged-forward hit. Null otherwise.",
                    "type": "string"
                  },
                  "type": {
                    "description": "Search type.",
                    "enum": [
                      "ID",
                      "SOURCE",
                      "EXACT",
                      "PREFIX",
                      "SUFFIX",
                      "INFIX",
                      "FUZZY",
                      "FUZZY_LSH",
                      "GEOGRAPHIC",
                      "NONE"
                    ],
                    "type": "string"
                  }
                },
                "readOnly": true,
                "type": "object"
              },
              "_source": {
                "description": "Where the record came from: one entry per system that has contributed to it, with that system's own key for it. A caller may state this WHEN IT CREATES the record, and never afterwards: an inbound value on an update is refused with a 400. The engine adds to it \u2014 a load that reincorporates the record from a second system, a merge that unions what it absorbs \u2014 and nothing ever removes an entry. When a data set declares which source systems it accepts, a value outside that list is refused.",
                "items": {
                  "$ref": "#/components/schemas/RecordSourceEntry"
                },
                "type": "array"
              }
            },
            "type": "object"
          },
          "updated": {
            "description": "Indicates if the record was updated.",
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "SampleResponseDto": {
        "description": "A sample project.",
        "properties": {
          "errors": {
            "description": "List of errors. If HTTP response represents an error (4xx or 5xx) this will contain a list of errors. Otherwise, not present.",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "messages": {
            "description": "Optional informational messages. If present, the request was successful and response code will be 2xx.",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "sample": {
            "$ref": "#/components/schemas/SampleDto",
            "description": "Sample project description."
          }
        },
        "type": "object"
      },
      "EntitySynchronizationRequestDto": {
        "description": "Request to synchronize an entity with its configured sources and destinations.",
        "properties": {
          "id": {
            "description": "Entity identifier",
            "type": "string"
          },
          "indexClassificationMask": {
            "description": "FULL rebuilds indexes and classification; CHANGES reconciles changed configuration; DIRTY classifies pending groups without reindexing; NONE skips the phase. Use CHANGES for SEARCH entities.",
            "enum": [
              "FULL",
              "CHANGES",
              "DIRTY",
              "NONE"
            ],
            "type": "string"
          },
          "loadFrom": {
            "description": "Represents an instant ISO 8601 timestamp, used as a filter to load data from this timestamp",
            "format": "date-time",
            "type": "string"
          },
          "loadMask": {
            "description": "Load the full source, an incremental window, custom time bounds, or skip loading. CUSTOM requires loadFrom or loadTo.",
            "enum": [
              "FULL",
              "INCREMENTAL",
              "CUSTOM",
              "NONE"
            ],
            "type": "string"
          },
          "loadOperation": {
            "description": "What the load does with every record it reads. Optional; UPSERT when not supplied, which inserts a record the entity does not have and updates one it does. DELETE removes the record each document identifies. Ignored when loadMask is NONE.",
            "enum": [
              "UPSERT",
              "DELETE"
            ],
            "type": "string"
          },
          "loadTo": {
            "description": "Represents an instant ISO 8601 timestamp, used as a filter to load data until this timestamp",
            "format": "date-time",
            "type": "string"
          },
          "sinkMask": {
            "description": "Deliver the full current set or skip delivery.",
            "enum": [
              "FULL",
              "NONE"
            ],
            "type": "string"
          }
        },
        "required": [
          "id",
          "indexClassificationMask",
          "loadMask",
          "sinkMask"
        ],
        "type": "object"
      },
      "GoldenMergeBucketRequestDto": {
        "description": "Represents a bucket merge request",
        "properties": {
          "comment": {
            "description": "Optional comment for the bucket operation.",
            "type": "string"
          },
          "crossSeparations": {
            "description": "Merge even though the group holds a pair of records recorded as different (_metadata._unrelated). Off by default, and without it such a merge is refused with 409. When set, a comment is mandatory, and the merge revokes only the pairs it crosses: the survivor keeps every other separation of the records it absorbs.",
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "TzRunNowRequest": {
        "properties": {
          "overrideInput": {
            "type": "boolean",
            "description": "Whether rawInput replaces the definition input for this run."
          },
          "rawInput": {
            "type": "string",
            "description": "Job input encoded as a JSON string, not as a nested JSON object."
          }
        },
        "type": "object",
        "description": "Request to run a definition immediately."
      },
      "TableMetadataResponseDto": {
        "description": "The shape of a table: columns, their descriptions and its data-view.",
        "properties": {
          "columnMap": {
            "additionalProperties": {
              "$ref": "#/components/schemas/Column"
            },
            "description": "Columns by name, with their type and description.",
            "type": "object"
          },
          "columns": {
            "description": "Column keys, in dataset order.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "errors": {
            "description": "List of errors. If HTTP response represents an error (4xx or 5xx) this will contain a list of errors. Otherwise, not present.",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "messages": {
            "description": "Optional informational messages. If present, the request was successful and response code will be 2xx.",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "table": {
            "$ref": "#/components/schemas/TableDto",
            "description": "The table, without its row count."
          },
          "view": {
            "$ref": "#/components/schemas/ViewDto",
            "description": "The data-view the table's owning entity presents its records through, resolved. Null means one of three things, and a caller cannot tell them apart: no entity owns the table, the owning entity chose no view, or the view it chose no longer names the table's dataset. All three render the way every table did before data-views existed."
          }
        },
        "type": "object"
      },
      "RecordQualityResponseDto": {
        "description": "Why one record scores what it scores, measured now.",
        "properties": {
          "availablePoints": {
            "description": "The denominator: the summed weight of every applicable field.",
            "format": "int32",
            "type": "integer"
          },
          "contributions": {
            "description": "One entry per applicable field, in the order the dataset declares them.",
            "items": {
              "$ref": "#/components/schemas/QualityContributionDto"
            },
            "type": "array"
          },
          "errorCount": {
            "description": "How many findings are errors.",
            "format": "int32",
            "type": "integer"
          },
          "errors": {
            "description": "List of errors. If HTTP response represents an error (4xx or 5xx) this will contain a list of errors. Otherwise, not present.",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "findings": {
            "description": "The problems this measurement found, rendered in the request's language. These come from the same measurement as the contributions, so the two always agree.",
            "items": {
              "$ref": "#/components/schemas/QualityFindingDto"
            },
            "type": "array"
          },
          "measured": {
            "description": "True when this record could be measured now. False when the table has no dataset, its plan does not compile, or the measurement failed \u2014 in which case every field below except the stored ones is absent and 'unavailableReason' says why.",
            "type": "boolean"
          },
          "messages": {
            "description": "Optional informational messages. If present, the request was successful and response code will be 2xx.",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "rawScore": {
            "description": "The same rounded ratio before the two caps. Equal to 'score' unless a cap moved it: the score is held at 99 when the record carries any error, and lifted to 1 when anything at all was earned. Compare the two rather than inferring.",
            "format": "int32",
            "type": "integer"
          },
          "recordId": {
            "description": "The record.",
            "type": "string"
          },
          "score": {
            "description": "The score as measured now, 0..100. Null means the plan had no applicable measurable field, so there is no ratio to report \u2014 which is not a score of zero.",
            "format": "int32",
            "type": "integer"
          },
          "storedCalculatedAt": {
            "description": "When the stored measurement was taken. Null when there is none.",
            "format": "date-time",
            "type": "string"
          },
          "storedScore": {
            "description": "The score the record is carrying from when it was last written, or null if it has never been measured. Shown beside the fresh one so a difference is visible.",
            "format": "int32",
            "type": "integer"
          },
          "storedState": {
            "description": "What the stored measurement is worth against the definition the table is currently on. UNCALCULATED and STALE both mean the stored score should not be read as a description of the record as it stands.",
            "enum": [
              "UNCALCULATED",
              "STALE",
              "CURRENT"
            ],
            "type": "string"
          },
          "tableId": {
            "description": "The table the record belongs to.",
            "type": "string"
          },
          "unavailableReason": {
            "description": "Localized explanation when the record cannot be measured. Absent when measurement is available; does not contain record values or exception details.",
            "type": "string"
          },
          "unavailableReasonKey": {
            "description": "The stable catalogue key 'unavailableReason' was rendered from, so the three cases \u2014 no data model, a model that will not compile, a measurement that threw \u2014 can be told apart without parsing prose. For diagnostics.",
            "type": "string"
          },
          "warningCount": {
            "description": "How many findings are warnings.",
            "format": "int32",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "ConfigurationListResponseDto": {
        "description": "Represents a list of configurations response.",
        "properties": {
          "configurations": {
            "description": "Configurations.",
            "items": {
              "$ref": "#/components/schemas/Configuration"
            },
            "type": "array"
          },
          "errors": {
            "description": "List of errors. If HTTP response represents an error (4xx or 5xx) this will contain a list of errors. Otherwise, not present.",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "messages": {
            "description": "Optional informational messages. If present, the request was successful and response code will be 2xx.",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          }
        },
        "type": "object"
      },
      "ViewResolveResponseDto": {
        "description": "A data-view draft resolved against its dataset.",
        "properties": {
          "errors": {
            "description": "List of errors. If HTTP response represents an error (4xx or 5xx) this will contain a list of errors. Otherwise, not present.",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "messages": {
            "description": "Optional informational messages. If present, the request was successful and response code will be 2xx.",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "view": {
            "$ref": "#/components/schemas/ViewDto",
            "description": "The resolved view. Null when the draft is not a data-view."
          }
        },
        "type": "object"
      },
      "DailyMetricListResponseDto": {
        "description": "A bounded ascending run of daily metric snapshots.",
        "properties": {
          "aggregateScope": {
            "description": "The snapshots are computed over the whole table, not over the caller's data scope. Always ENTITY.",
            "enum": [
              "ENTITY"
            ],
            "type": "string"
          },
          "errors": {
            "description": "List of errors. If HTTP response represents an error (4xx or 5xx) this will contain a list of errors. Otherwise, not present.",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "family": {
            "description": "The family asked about.",
            "type": "string"
          },
          "fromDay": {
            "description": "The first day of the inclusive window.",
            "format": "date",
            "type": "string"
          },
          "messages": {
            "description": "Optional informational messages. If present, the request was successful and response code will be 2xx.",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "snapshots": {
            "description": "The snapshots that exist in that window, ascending by day.",
            "items": {
              "$ref": "#/components/schemas/DailyMetricDto"
            },
            "type": "array"
          },
          "table": {
            "description": "The table asked about.",
            "type": "string"
          },
          "toDay": {
            "description": "The last day of the inclusive window.",
            "format": "date",
            "type": "string"
          }
        },
        "type": "object"
      },
      "ResourceExportRequestDto": {
        "description": "Represents a request to export resources.",
        "properties": {
          "all": {
            "description": "Export all resources flag.",
            "type": "boolean"
          },
          "id": {
            "description": "Identifiers to export when all is false. Omit when all is true.",
            "items": {
              "type": "string"
            },
            "minItems": 1,
            "type": "array"
          }
        },
        "required": [],
        "type": "object"
      },
      "TzRunDeleteRequest": {
        "properties": {
          "runIds": {
            "items": {
              "format": "uuid",
              "type": "string"
            },
            "type": "array",
            "description": "Identifiers of runs to delete."
          }
        },
        "type": "object",
        "description": "Run deletion request."
      },
      "ScopeColumnRequestDto": {
        "description": "The column, or null to clear",
        "properties": {
          "column": {
            "description": "The dataset column key, or null to clear.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "TzEnabledRequest": {
        "properties": {
          "enabled": {
            "type": "boolean",
            "description": "Whether the definition is enabled for scheduled execution."
          }
        },
        "type": "object",
        "description": "Change to the enabled state of a definition."
      },
      "GoldenDisconnectBucketRequestDto": {
        "description": "Represents a bucket disconnect request",
        "properties": {
          "comment": {
            "description": "Optional comment for the bucket operation.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "TzTypesResponse": {
        "properties": {
          "types": {
            "items": {
              "$ref": "#/components/schemas/TzTypeResponse"
            },
            "type": "array",
            "description": "Registered job types."
          }
        },
        "type": "object",
        "description": "Registered job types."
      },
      "ResourceImportResponseDto": {
        "description": "Represents a response to import resources.",
        "properties": {
          "errors": {
            "description": "List of errors. If HTTP response represents an error (4xx or 5xx) this will contain a list of errors. Otherwise, not present.",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "imported": {
            "description": "Total number of imported resources.",
            "format": "int32",
            "type": "integer"
          },
          "messages": {
            "description": "Optional informational messages. If present, the request was successful and response code will be 2xx.",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "total": {
            "description": "Total number of resources.",
            "format": "int32",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "RecordAudit": {
        "additionalProperties": {
          "description": "A record audit represents auditing information (changes) to a record."
        },
        "description": "Reserved legacy audit representation. Ordinary record responses omit inline audit; use the audit event operations.",
        "properties": {
          "comment": {
            "type": "string",
            "description": "Recorded comment."
          },
          "instant": {
            "format": "date-time",
            "type": "string",
            "description": "Time of the change."
          },
          "records": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "description": "Record identifiers associated with the change."
          },
          "user": {
            "type": "string",
            "description": "User recorded for the change."
          }
        },
        "type": "object"
      },
      "TableDatasetResponseDto": {
        "description": "Exported table configuration package.",
        "properties": {
          "datasets": {
            "additionalProperties": {
              "$ref": "#/components/schemas/Dataset"
            },
            "description": "Map of datasets. Usually it is just one dataset, except if the dataset contains nested datasets.",
            "type": "object"
          },
          "errors": {
            "description": "List of errors. If HTTP response represents an error (4xx or 5xx) this will contain a list of errors. Otherwise, not present.",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "messages": {
            "description": "Optional informational messages. If present, the request was successful and response code will be 2xx.",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          }
        },
        "type": "object"
      },
      "QualityContributionDto": {
        "description": "What one measured field contributed to a record's quality score.",
        "properties": {
          "earnedDenominator": {
            "description": "Denominator of the fraction this field earned, in lowest terms and strictly positive.",
            "type": "string"
          },
          "earnedNumerator": {
            "description": "Numerator of the fraction this field earned, in lowest terms. A decimal integer string, because the value has no bound a JSON number preserves.",
            "type": "string"
          },
          "mandatory": {
            "description": "Whether the column is mandatory, which is what its weight comes from.",
            "type": "boolean"
          },
          "passing": {
            "description": "True when the field earned everything it could, which is what \"this field passes\" means. Derived from the two above and carried so that a consumer counting passing fields does not have to parse them.",
            "type": "boolean"
          },
          "repeated": {
            "description": "Whether the field is repeated, in which case the fraction below is a mean over the occurrences it applied to.",
            "type": "boolean"
          },
          "schemaPath": {
            "description": "Declaration path: dataset keys joined by '.', with '[]' on repeated segments. The same string a finding carries, so the two are joined without building a path.",
            "type": "string"
          },
          "weight": {
            "description": "The field's fixed weight: 2 when it is mandatory, 1 when it is not.",
            "format": "int32",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "TzAuthResponseDto": {
        "description": "Authentication response",
        "properties": {
          "email": {
            "description": "User email",
            "type": "string"
          },
          "errors": {
            "description": "Errors. Present when the request was refused",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "id": {
            "description": "Unique principal identifier",
            "type": "string"
          },
          "messages": {
            "description": "Informational messages. Present on a successful response",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "name": {
            "description": "Display name",
            "type": "string"
          },
          "refreshToken": {
            "description": "Refresh token for obtaining new JWT",
            "type": "string"
          },
          "roles": {
            "description": "Roles assigned",
            "items": {
              "type": "string"
            },
            "type": "array",
            "uniqueItems": true
          },
          "token": {
            "description": "Bearer token (JWT)",
            "type": "string"
          },
          "type": {
            "description": "Principal type. A machine value; never translated.",
            "enum": [
              "NONE",
              "INTERNAL",
              "SSO",
              "TOKEN"
            ],
            "type": "string"
          },
          "typeLabel": {
            "description": "The authentication type in the language of the Accept-Language header",
            "example": "Single sign-on",
            "type": "string"
          },
          "typeLabelKey": {
            "description": "The bundle key typeLabel was rendered from, for a client that would rather translate it itself",
            "example": "security.auth-type.sso",
            "type": "string"
          }
        },
        "type": "object"
      },
      "TzRefreshRequestDto": {
        "description": "Token refresh request",
        "properties": {
          "refreshToken": {
            "description": "Refresh token",
            "minLength": 1,
            "type": "string"
          }
        },
        "required": [
          "refreshToken"
        ],
        "type": "object"
      },
      "GoldenUndoMergeResponseDto": {
        "description": "Represents the result of undoing a merge",
        "properties": {
          "deletedRecordId": {
            "description": "Identifier of the record the merge had produced, now deleted and archived.",
            "type": "string"
          },
          "entity": {
            "$ref": "#/components/schemas/EntityDto",
            "description": "Entity that owns the restored records."
          },
          "errors": {
            "description": "List of errors. If HTTP response represents an error (4xx or 5xx) this will contain a list of errors. Otherwise, not present.",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "messages": {
            "description": "Optional informational messages. If present, the request was successful and response code will be 2xx.",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "records": {
            "description": "The records the merge had absorbed, now back in the table.",
            "items": {
              "$ref": "#/components/schemas/Record"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "GoldenMergeBucketResponseDto": {
        "description": "Represents a bucket merge response",
        "properties": {
          "entity": {
            "$ref": "#/components/schemas/EntityDto",
            "description": "Entity that owns the merged record."
          },
          "errors": {
            "description": "List of errors. If HTTP response represents an error (4xx or 5xx) this will contain a list of errors. Otherwise, not present.",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "messages": {
            "description": "Optional informational messages. If present, the request was successful and response code will be 2xx.",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "record": {
            "additionalProperties": {
              "description": "A record represents an user data record as a JSON document with a unique identifier (_id), metadata (_metadata) and auditing (_audit). A record represents that main data asset in Golden and can also be used to store data in plain (text), XML and binary formats using a JSON structure."
            },
            "description": "Merged record.",
            "properties": {
              "_audit": {
                "description": "Reserved audit member. Ordinary record responses omit this field, including expanded responses. Read events through the dedicated record audit endpoint. Requests carrying _audit are refused with 400.",
                "items": {
                  "$ref": "#/components/schemas/RecordAudit"
                },
                "readOnly": true,
                "type": "array"
              },
              "_id": {
                "type": "string"
              },
              "_metadata": {
                "$ref": "#/components/schemas/RecordMetadata",
                "description": "Server-owned metadata: quality, merge pointers, the last write. Read-only; requests must not include this member.",
                "readOnly": true
              },
              "_search": {
                "additionalProperties": {
                  "description": "Record search metadata."
                },
                "description": "Search metadata associated to the record, present on a search result. Read-only; requests must not include this member.",
                "properties": {
                  "exact": {
                    "description": "True when the match is exact. Decided by the engine, not by the score.",
                    "type": "boolean"
                  },
                  "index": {
                    "description": "Index that found this search result.",
                    "type": "string"
                  },
                  "match": {
                    "description": "Matched text.",
                    "type": "string"
                  },
                  "origin": {
                    "description": "How this result was reached, which is not what matched it.",
                    "enum": [
                      "DIRECT",
                      "CLUSTER",
                      "HISTORY",
                      "MERGED_FORWARD"
                    ],
                    "type": "string"
                  },
                  "rank": {
                    "description": "Search rank.",
                    "format": "double",
                    "type": "number"
                  },
                  "sourceId": {
                    "description": "The record this result was reached through, when that is not the record itself: the absorbed record for a merged-forward hit. Null otherwise.",
                    "type": "string"
                  },
                  "type": {
                    "description": "Search type.",
                    "enum": [
                      "ID",
                      "SOURCE",
                      "EXACT",
                      "PREFIX",
                      "SUFFIX",
                      "INFIX",
                      "FUZZY",
                      "FUZZY_LSH",
                      "GEOGRAPHIC",
                      "NONE"
                    ],
                    "type": "string"
                  }
                },
                "readOnly": true,
                "type": "object"
              },
              "_source": {
                "description": "Where the record came from: one entry per system that has contributed to it, with that system's own key for it. A caller may state this WHEN IT CREATES the record, and never afterwards: an inbound value on an update is refused with a 400. The engine adds to it \u2014 a load that reincorporates the record from a second system, a merge that unions what it absorbs \u2014 and nothing ever removes an entry. When a data set declares which source systems it accepts, a value outside that list is refused.",
                "items": {
                  "$ref": "#/components/schemas/RecordSourceEntry"
                },
                "type": "array"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "TzPasswordUpdateRequestDto": {
        "description": "Password update request",
        "properties": {
          "password": {
            "description": "New password (clear text)",
            "maxLength": 2147483647,
            "minLength": 8,
            "type": "string"
          },
          "token": {
            "description": "Unique reset token (previously provided). Unless this token is valid, the password will not be updated.",
            "type": "string"
          }
        },
        "required": [
          "password",
          "token"
        ],
        "type": "object"
      },
      "TableRecordPageResponseDto": {
        "description": "Represents a page of records in a table",
        "properties": {
          "columnMap": {
            "additionalProperties": {
              "$ref": "#/components/schemas/Column"
            },
            "description": "Map of columns with detailed information.",
            "type": "object"
          },
          "columns": {
            "description": "Column names in this page.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "errors": {
            "description": "List of errors. If HTTP response represents an error (4xx or 5xx) this will contain a list of errors. Otherwise, not present.",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "messages": {
            "description": "Optional informational messages. If present, the request was successful and response code will be 2xx.",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "page": {
            "$ref": "#/components/schemas/Page",
            "description": "Page information."
          },
          "records": {
            "description": "List of records in this page.",
            "items": {
              "$ref": "#/components/schemas/Record"
            },
            "type": "array"
          },
          "table": {
            "$ref": "#/components/schemas/TableDto",
            "description": "Table."
          },
          "view": {
            "$ref": "#/components/schemas/ViewDto",
            "description": "The data-view the table's owning entity presents its records through, resolved. Null means one of three things, and a caller cannot tell them apart: no entity owns the table, the owning entity chose no view, or the view it chose no longer names the table's dataset. All three render the way every table did before data-views existed."
          }
        },
        "type": "object"
      },
      "EntityExportResponseDto": {
        "description": "Exported entity configuration package.",
        "properties": {
          "errors": {
            "description": "List of errors. If HTTP response represents an error (4xx or 5xx) this will contain a list of errors. Otherwise, not present.",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "exchange": {
            "$ref": "#/components/schemas/EntityExchangeDto",
            "description": "Exported entities."
          },
          "messages": {
            "description": "Optional informational messages. If present, the request was successful and response code will be 2xx.",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          }
        },
        "type": "object"
      },
      "ResourceResponseDto": {
        "description": "Represents a resource.",
        "properties": {
          "errors": {
            "description": "List of errors. If HTTP response represents an error (4xx or 5xx) this will contain a list of errors. Otherwise, not present.",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "messages": {
            "description": "Optional informational messages. If present, the request was successful and response code will be 2xx.",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "resource": {
            "description": "Resource.",
            "oneOf": [
              {
                "$ref": "#/components/schemas/ClassifierWeight"
              },
              {
                "$ref": "#/components/schemas/Credential"
              },
              {
                "$ref": "#/components/schemas/DataView"
              },
              {
                "$ref": "#/components/schemas/Dataset"
              },
              {
                "$ref": "#/components/schemas/Indexer"
              },
              {
                "$ref": "#/components/schemas/MergerWeight"
              },
              {
                "$ref": "#/components/schemas/Pipeline"
              },
              {
                "$ref": "#/components/schemas/SinkHttp"
              },
              {
                "$ref": "#/components/schemas/SinkJdbc"
              },
              {
                "$ref": "#/components/schemas/SinkKafka"
              },
              {
                "$ref": "#/components/schemas/SinkTable"
              },
              {
                "$ref": "#/components/schemas/SourceFile"
              },
              {
                "$ref": "#/components/schemas/SourceJdbc"
              },
              {
                "$ref": "#/components/schemas/SourceTable"
              },
              {
                "$ref": "#/components/schemas/StewardBucket"
              },
              {
                "$ref": "#/components/schemas/Transformation"
              }
            ]
          },
          "test": {
            "$ref": "#/components/schemas/Test",
            "description": "Resource test result, when requested."
          },
          "testInputTypes": {
            "description": "Which kinds of input data a test of this resource can run with. The wizard offers the rest disabled: a resource with no dataset cannot resolve records through one.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "testSupported": {
            "type": "boolean",
            "description": "Whether the resource supports testing."
          }
        },
        "required": [
          "resource"
        ],
        "type": "object"
      },
      "RecordSourceEntry": {
        "description": "One provenance: the source system, and optionally that system's own key for the record.",
        "properties": {
          "_src": {
            "description": "The source system this entry names.",
            "type": "string"
          },
          "_src_id": {
            "description": "That system's own identifier for the record. Optional: a source that only ever appends \u2014 readings, events, a transaction feed \u2014 has no key to put there.",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "_src"
        ],
        "type": "object"
      },
      "QualityMeasurementListResponseDto": {
        "description": "The quality measurements of one table, newest first.",
        "properties": {
          "aggregateScope": {
            "description": "The measurements are computed over the whole table, not over the caller's data scope. Always ENTITY.",
            "enum": [
              "ENTITY"
            ],
            "type": "string"
          },
          "errors": {
            "description": "List of errors. If HTTP response represents an error (4xx or 5xx) this will contain a list of errors. Otherwise, not present.",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "fromDay": {
            "description": "The first day of the inclusive window.",
            "format": "date",
            "type": "string"
          },
          "measurements": {
            "description": "The measurements taken in that window, newest first, at most 200.",
            "items": {
              "$ref": "#/components/schemas/QualityMeasurementDto"
            },
            "type": "array"
          },
          "messages": {
            "description": "Optional informational messages. If present, the request was successful and response code will be 2xx.",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "table": {
            "description": "The table asked about.",
            "type": "string"
          },
          "toDay": {
            "description": "The last day of the inclusive window. May be today.",
            "format": "date",
            "type": "string"
          }
        },
        "type": "object"
      },
      "GoldenUpsertRequestDto": {
        "description": "Represents a record upsert (update or insert) request",
        "properties": {
          "comment": {
            "description": "Optional comment describing the change. When present it is recorded on the insert/update audit event, so it appears in the record's history.",
            "type": [
              "string",
              "null"
            ]
          },
          "insert": {
            "description": "Optional forced insert flag. Default is false. If enabled, the record will always be inserted.",
            "type": [
              "boolean",
              "null"
            ]
          },
          "options": {
            "$ref": "#/components/schemas/SearchOptions",
            "description": "Optional search options. If not indicated, default search procedure is used."
          },
          "record": {
            "additionalProperties": {
              "description": "A record represents an user data record as a JSON document with a unique identifier (_id), metadata (_metadata) and auditing (_audit). A record represents that main data asset in Golden and can also be used to store data in plain (text), XML and binary formats using a JSON structure."
            },
            "description": "Record to upsert. The record must contain the primary key columns and values to search for the record. If the record is not found, it will be inserted; otherwise, it will be updated.",
            "properties": {
              "_audit": {
                "description": "Reserved audit member. Ordinary record responses omit this field, including expanded responses. Read events through the dedicated record audit endpoint. Requests carrying _audit are refused with 400.",
                "items": {
                  "$ref": "#/components/schemas/RecordAudit"
                },
                "readOnly": true,
                "type": "array"
              },
              "_id": {
                "type": "string"
              },
              "_metadata": {
                "$ref": "#/components/schemas/RecordMetadata",
                "description": "Server-owned metadata: quality, merge pointers, the last write. Read-only; requests must not include this member.",
                "readOnly": true
              },
              "_search": {
                "additionalProperties": {
                  "description": "Record search metadata."
                },
                "description": "Search metadata associated to the record, present on a search result. Read-only; requests must not include this member.",
                "properties": {
                  "exact": {
                    "description": "True when the match is exact. Decided by the engine, not by the score.",
                    "type": "boolean"
                  },
                  "index": {
                    "description": "Index that found this search result.",
                    "type": "string"
                  },
                  "match": {
                    "description": "Matched text.",
                    "type": "string"
                  },
                  "origin": {
                    "description": "How this result was reached, which is not what matched it.",
                    "enum": [
                      "DIRECT",
                      "CLUSTER",
                      "HISTORY",
                      "MERGED_FORWARD"
                    ],
                    "type": "string"
                  },
                  "rank": {
                    "description": "Search rank.",
                    "format": "double",
                    "type": "number"
                  },
                  "sourceId": {
                    "description": "The record this result was reached through, when that is not the record itself: the absorbed record for a merged-forward hit. Null otherwise.",
                    "type": "string"
                  },
                  "type": {
                    "description": "Search type.",
                    "enum": [
                      "ID",
                      "SOURCE",
                      "EXACT",
                      "PREFIX",
                      "SUFFIX",
                      "INFIX",
                      "FUZZY",
                      "FUZZY_LSH",
                      "GEOGRAPHIC",
                      "NONE"
                    ],
                    "type": "string"
                  }
                },
                "readOnly": true,
                "type": "object"
              },
              "_source": {
                "description": "Where the record came from: one entry per system that has contributed to it, with that system's own key for it. A caller may state this WHEN IT CREATES the record, and never afterwards: an inbound value on an update is refused with a 400. The engine adds to it \u2014 a load that reincorporates the record from a second system, a merge that unions what it absorbs \u2014 and nothing ever removes an entry. When a data set declares which source systems it accepts, a value outside that list is refused.",
                "items": {
                  "$ref": "#/components/schemas/RecordSourceEntry"
                },
                "type": "array"
              }
            },
            "type": "object"
          },
          "transformation": {
            "description": "Optional transformation name. If indicated, the transformation must exist and will be applied to the search record before searching.",
            "type": [
              "string",
              "null"
            ]
          },
          "update": {
            "description": "Optional forced update flag. Default is false. If enabled, the record will always be updated; if not found, an error is returned.",
            "type": [
              "boolean",
              "null"
            ]
          }
        },
        "required": [
          "record"
        ],
        "type": "object"
      },
      "TableOperationExportRequestDto": {
        "description": "Request to transform table data.",
        "properties": {
          "chunkRecords": {
            "description": "Chunk sink file into a maximum number of records. Ignored if 0 or negative. Default is 0 (no chunking).",
            "format": "int64",
            "type": "integer",
            "default": 0
          },
          "maxRecords": {
            "description": "Optional maximum number of records to process (use <0  to process all records). Default is -1 (process all source records).",
            "format": "int32",
            "type": "integer"
          },
          "pipeline": {
            "description": "Optional pipeline identifier. If indicated, the pipeline will be applied after the optional transformation.",
            "type": "string"
          },
          "sampleRecords": {
            "description": "Optionally use sampling when processing records (use <=0 to avoid sampling). Default is -1 (no sampling).",
            "format": "int32",
            "type": "integer"
          },
          "source": {
            "description": "Source or table identifier. Must exist.",
            "minLength": 1,
            "type": "string"
          },
          "transformation": {
            "description": "Optional transformation name. If indicated, the transformation will be applied to the source data after reading from the source.",
            "type": "string"
          }
        },
        "required": [
          "source"
        ],
        "type": "object"
      },
      "TzUserListResponseDto": {
        "description": "User list response",
        "properties": {
          "errors": {
            "description": "Errors. Present when the request was refused",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "messages": {
            "description": "Informational messages. Present on a successful response",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "roles": {
            "description": "List of available roles, described in the request's language",
            "items": {
              "$ref": "#/components/schemas/TzRoleDto"
            },
            "type": "array"
          },
          "users": {
            "description": "List of users",
            "items": {
              "$ref": "#/components/schemas/TzUserDto"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "FileListResponseDto": {
        "description": "Represents a list of files.",
        "properties": {
          "errors": {
            "description": "List of errors. If HTTP response represents an error (4xx or 5xx) this will contain a list of errors. Otherwise, not present.",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "files": {
            "description": "List of files.",
            "items": {
              "$ref": "#/components/schemas/FileGolden"
            },
            "type": "array"
          },
          "messages": {
            "description": "Optional informational messages. If present, the request was successful and response code will be 2xx.",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "page": {
            "$ref": "#/components/schemas/Page",
            "description": "Page."
          }
        },
        "type": "object"
      },
      "TzTokenCreateRequestDto": {
        "description": "Token creation request",
        "properties": {
          "expiryDays": {
            "default": 365,
            "description": "Number of days until expiry",
            "format": "int64",
            "maximum": 3650,
            "minimum": 1,
            "type": "integer"
          },
          "name": {
            "description": "Token name",
            "maxLength": 255,
            "minLength": 1,
            "type": "string"
          },
          "roles": {
            "description": "Roles granted to this token",
            "items": {
              "type": "string"
            },
            "minItems": 1,
            "type": "array",
            "uniqueItems": true
          }
        },
        "required": [
          "name",
          "roles"
        ],
        "type": "object"
      },
      "TzRunView": {
        "properties": {
          "attempt": {
            "format": "int32",
            "type": "integer",
            "description": "Attempt number within the retry chain."
          },
          "cancelForced": {
            "type": "boolean",
            "description": "Whether cancellation was forced."
          },
          "cancelReason": {
            "type": "string",
            "description": "Recorded cancellation reason."
          },
          "cancelRequestedAt": {
            "format": "date-time",
            "type": "string",
            "description": "Time cancellation was requested."
          },
          "createdAt": {
            "format": "date-time",
            "type": "string",
            "description": "Creation timestamp."
          },
          "definitionId": {
            "format": "uuid",
            "type": "string",
            "description": "Definition that created this run, when applicable."
          },
          "description": {
            "type": "string",
            "description": "Human-readable description."
          },
          "errorMessage": {
            "type": "string",
            "description": "Reported failure message, when present."
          },
          "errorType": {
            "enum": [
              "INPUT_INVALID",
              "TYPE_UNKNOWN",
              "PRINCIPAL_UNKNOWN",
              "INFRASTRUCTURE_UNAVAILABLE",
              "JOB_FAILED",
              "JOB_FAILED_PERMANENT",
              "OUTPUT_INVALID",
              "TIMEOUT",
              "PROCESS_INTERRUPTED"
            ],
            "type": "string",
            "description": "Classification of the reported failure."
          },
          "fencedBy": {
            "enum": [
              "REAPER",
              "TIMEOUT",
              "SHUTDOWN",
              "CANCEL"
            ],
            "type": "string",
            "description": "Reason or actor that closed a run that did not finish on its own."
          },
          "finishedAt": {
            "format": "date-time",
            "type": "string",
            "description": "Time the run finished."
          },
          "id": {
            "format": "uuid",
            "type": "string",
            "description": "Identifier of this object."
          },
          "idempotencyExpiresAt": {
            "format": "date-time",
            "type": "string",
            "description": "Expiration time of the submission idempotency key."
          },
          "idempotencyKey": {
            "type": "string",
            "description": "Caller-supplied key used to avoid duplicate submissions within its validity period."
          },
          "identity": {
            "type": "string",
            "description": "Job-specific identity of this input, when the job type defines one."
          },
          "input": {
            "type": "string",
            "description": "Stored job input as a JSON string."
          },
          "jobType": {
            "type": "string",
            "description": "Registered job type identifier. Use the job types operation to list supported values."
          },
          "maxAttempts": {
            "format": "int32",
            "type": "integer",
            "description": "Maximum number of attempts, including the first attempt."
          },
          "maxDuration": {
            "type": "string",
            "description": "Maximum permitted duration of one attempt."
          },
          "message": {
            "type": "string",
            "description": "Latest reported progress or status message."
          },
          "output": {
            "type": "string",
            "description": "Stored job result as a JSON string."
          },
          "owner": {
            "type": "string",
            "description": "Principal recorded as the owner."
          },
          "previousRunId": {
            "format": "uuid",
            "type": "string",
            "description": "Previous attempt in this retry chain, when present."
          },
          "progress": {
            "format": "double",
            "type": "number",
            "description": "Progress reported by the job."
          },
          "retryBackoff": {
            "type": "string",
            "description": "Initial delay before retrying a failed attempt."
          },
          "retryMaxBackoff": {
            "type": "string",
            "description": "Upper limit for retry delay."
          },
          "rootRunId": {
            "format": "uuid",
            "type": "string",
            "description": "First run in this retry chain."
          },
          "scheduleKind": {
            "enum": [
              "CRON",
              "INTERVAL",
              "ONCE",
              "MANUAL"
            ],
            "type": "string",
            "description": "Scheduling mode: CRON, fixed INTERVAL, ONCE, or MANUAL."
          },
          "scheduledAt": {
            "format": "date-time",
            "type": "string",
            "description": "Instant at which the run is eligible to start."
          },
          "skipReason": {
            "type": "string",
            "description": "Reason execution was skipped."
          },
          "startedAt": {
            "format": "date-time",
            "type": "string",
            "description": "Time execution started."
          },
          "status": {
            "enum": [
              "PENDING",
              "RUNNING",
              "CANCELLING",
              "SUCCEEDED",
              "FAILED",
              "CANCELLED",
              "SKIPPED"
            ],
            "type": "string",
            "description": "Current run status."
          },
          "trigger": {
            "enum": [
              "SCHEDULED",
              "MANUAL",
              "API",
              "RETRY"
            ],
            "type": "string",
            "description": "How the run was started."
          }
        },
        "type": "object",
        "description": "Run status, execution policy, and stored payloads."
      },
      "TableExportResponseDto": {
        "description": "Exported table configuration package.",
        "properties": {
          "errors": {
            "description": "List of errors. If HTTP response represents an error (4xx or 5xx) this will contain a list of errors. Otherwise, not present.",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "exchange": {
            "$ref": "#/components/schemas/TableExchangeDto",
            "description": "Exported tables."
          },
          "messages": {
            "description": "Optional informational messages. If present, the request was successful and response code will be 2xx.",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          }
        },
        "type": "object"
      },
      "EntityAccessRequestDto": {
        "description": "The complete access list",
        "properties": {
          "principals": {
            "description": "The principals granted the entity, whole or by row scope.",
            "items": {
              "$ref": "#/components/schemas/EntityAccessEntryDto"
            },
            "type": "array"
          }
        },
        "required": [
          "principals"
        ],
        "type": "object"
      },
      "GoldenDisconnectRecordsBucketRequestDto": {
        "description": "Represents a request to disconnect specific records from a bucket",
        "properties": {
          "comment": {
            "description": "Optional comment for the bucket operation.",
            "type": "string"
          },
          "recordIds": {
            "description": "Identifiers of the records to peel off from the bucket. Must be a non-empty subset of the records currently in the bucket. To disconnect every record, use the bucket-wide disconnect endpoint instead.",
            "items": {
              "type": "string"
            },
            "minItems": 1,
            "type": "array"
          }
        },
        "required": [
          "recordIds"
        ],
        "type": "object"
      },
      "QualityFindingDto": {
        "description": "One quality problem found on one value of one record, ready to display.",
        "properties": {
          "message": {
            "description": "Finding message in the request language.",
            "type": "string"
          },
          "messageArgs": {
            "additionalProperties": {},
            "description": "The named arguments the key declares. For diagnostics.",
            "type": "object"
          },
          "messageKey": {
            "description": "The stable catalogue key the sentence was rendered from. For diagnostics.",
            "type": "string"
          },
          "recordPath": {
            "description": "Occurrence path: the same keys with each repeated segment replaced by its zero-based index, or the container path when the repeated field itself has no items.",
            "type": "string"
          },
          "schemaPath": {
            "description": "Declaration path: dataset keys joined by '.', with '[]' on repeated segments.",
            "type": "string"
          },
          "severity": {
            "description": "How bad the problem is.",
            "enum": [
              "ERROR",
              "WARNING"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "BaseResponseDto": {
        "description": "Common response fields for the Golden API.",
        "properties": {
          "errors": {
            "description": "List of errors. If HTTP response represents an error (4xx or 5xx) this will contain a list of errors. Otherwise, not present.",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "messages": {
            "description": "Optional informational messages. If present, the request was successful and response code will be 2xx.",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          }
        },
        "type": "object"
      },
      "GoldenSplitBucketResponseDto": {
        "description": "Represents a bucket split response",
        "properties": {
          "entity": {
            "$ref": "#/components/schemas/EntityDto",
            "description": "Entity that owns the split record."
          },
          "errors": {
            "description": "List of errors. If HTTP response represents an error (4xx or 5xx) this will contain a list of errors. Otherwise, not present.",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "messages": {
            "description": "Optional informational messages. If present, the request was successful and response code will be 2xx.",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "records": {
            "description": "Split records.",
            "items": {
              "$ref": "#/components/schemas/Record"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "SinkHttp": {
        "allOf": [
          {
            "$ref": "#/components/schemas/Resource"
          },
          {
            "properties": {
              "credentials": {
                "description": "The credentials to use for the HTTP(S) call.",
                "type": "string"
              },
              "dataset": {
                "description": "The dataset to use.",
                "type": "string"
              },
              "method": {
                "description": "The HTTP method to use for the call.",
                "type": "string"
              },
              "timeoutMs": {
                "description": "The timeout in milliseconds for writing a record.",
                "format": "int32",
                "type": "integer",
                "default": 2000,
                "minimum": 1
              },
              "url": {
                "description": "The URL of the remote endpoint.",
                "type": "string"
              },
              "type": {
                "type": "string",
                "enum": [
                  "sink-http"
                ],
                "description": "Resource type."
              }
            },
            "type": "object",
            "required": []
          }
        ],
        "description": "An HTTP sink is a resource that writes records to a remote endpoint URL using a certain method (POST, PUT, PATCH).",
        "required": [
          "_id",
          "description",
          "timeoutMs",
          "type",
          "url"
        ]
      },
      "TzRunCancelRequest": {
        "properties": {
          "reason": {
            "type": "string",
            "description": "Reason supplied for cancellation."
          }
        },
        "type": "object",
        "description": "Cancellation request."
      },
      "TzUserResponseDto": {
        "description": "User response",
        "properties": {
          "errors": {
            "description": "Errors. Present when the request was refused",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "messages": {
            "description": "Informational messages. Present on a successful response",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "user": {
            "$ref": "#/components/schemas/TzUserDto",
            "description": "User data"
          }
        },
        "type": "object"
      },
      "ResourceListResponseDto": {
        "description": "Represents a list of resources.",
        "properties": {
          "errors": {
            "description": "List of errors. If HTTP response represents an error (4xx or 5xx) this will contain a list of errors. Otherwise, not present.",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "messages": {
            "description": "Optional informational messages. If present, the request was successful and response code will be 2xx.",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "resources": {
            "description": "List of resources.",
            "items": {
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ClassifierWeight"
                },
                {
                  "$ref": "#/components/schemas/Credential"
                },
                {
                  "$ref": "#/components/schemas/DataView"
                },
                {
                  "$ref": "#/components/schemas/Dataset"
                },
                {
                  "$ref": "#/components/schemas/Indexer"
                },
                {
                  "$ref": "#/components/schemas/MergerWeight"
                },
                {
                  "$ref": "#/components/schemas/Pipeline"
                },
                {
                  "$ref": "#/components/schemas/SinkHttp"
                },
                {
                  "$ref": "#/components/schemas/SinkJdbc"
                },
                {
                  "$ref": "#/components/schemas/SinkKafka"
                },
                {
                  "$ref": "#/components/schemas/SinkTable"
                },
                {
                  "$ref": "#/components/schemas/SourceFile"
                },
                {
                  "$ref": "#/components/schemas/SourceJdbc"
                },
                {
                  "$ref": "#/components/schemas/SourceTable"
                },
                {
                  "$ref": "#/components/schemas/StewardBucket"
                },
                {
                  "$ref": "#/components/schemas/Transformation"
                }
              ]
            },
            "type": "array"
          }
        },
        "required": [
          "resources"
        ],
        "type": "object"
      },
      "TzTokenResponseDto": {
        "description": "Token response",
        "properties": {
          "errors": {
            "description": "Errors. Present when the request was refused",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "messages": {
            "description": "Informational messages. Present on a successful response",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "token": {
            "$ref": "#/components/schemas/TzTokenDto",
            "description": "Token data"
          }
        },
        "type": "object"
      },
      "TzSsoConfigResponseDto": {
        "description": "SSO configuration for frontend OAuth integration",
        "properties": {
          "enabled": {
            "description": "Whether SSO authentication is enabled",
            "type": "boolean"
          },
          "errors": {
            "description": "Errors. Present when the request was refused",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "messages": {
            "description": "Informational messages. Present on a successful response",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "providers": {
            "description": "Available SSO providers",
            "items": {
              "$ref": "#/components/schemas/SsoProviderInfo"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "GoldenMergeRecordsRequestDto": {
        "description": "Represents a request to merge specific records of a cluster",
        "properties": {
          "comment": {
            "description": "Optional comment for the bucket operation.",
            "type": "string"
          },
          "crossSeparations": {
            "description": "Merge even though the selection holds a pair of records recorded as different (_metadata._unrelated). Off by default, and without it such a merge is refused with 409. When set, a comment is mandatory, and the merge revokes only the pairs it crosses: the survivor keeps every other separation of the records it absorbs. Ignored by the preview's comment rule, since a preview files nothing.",
            "type": "boolean"
          },
          "recordIds": {
            "description": "Identifiers of the records to merge. At least two, every one of them in the cluster.",
            "items": {
              "type": "string"
            },
            "minItems": 2,
            "type": "array"
          }
        },
        "required": [
          "recordIds"
        ],
        "type": "object"
      },
      "GoldenSearchCapabilitiesResponseDto": {
        "description": "What an entity can be searched by",
        "properties": {
          "entity": {
            "description": "Entity these capabilities belong to.",
            "type": "string"
          },
          "errors": {
            "description": "List of errors. If HTTP response represents an error (4xx or 5xx) this will contain a list of errors. Otherwise, not present.",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "fields": {
            "description": "The searchable fields, in indexer order.",
            "items": {
              "$ref": "#/components/schemas/GoldenSearchFieldDto"
            },
            "type": "array"
          },
          "freeTextIndexed": {
            "description": "Whether free-text search has an index available. When false, search can still return matching records, but may reach its time limit and report truncated results.",
            "type": "boolean"
          },
          "messages": {
            "description": "Optional informational messages. If present, the request was successful and response code will be 2xx.",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "provenanceSearchable": {
            "description": "True when a free-text term is also looked up as a source system's own key for a record (_source._src_id), right after the identifier. It does not depend on the indexer's mappings: the engine writes provenance on every record.",
            "type": "boolean"
          },
          "searchable": {
            "description": "False when the entity has no indexer at all: nothing can be searched.",
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "TableAuditResponseDto": {
        "description": "A table and the result of switching its audit capability.",
        "properties": {
          "errors": {
            "description": "List of errors. If HTTP response represents an error (4xx or 5xx) this will contain a list of errors. Otherwise, not present.",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "messages": {
            "description": "Optional informational messages. If present, the request was successful and response code will be 2xx.",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "outcome": {
            "description": "What the call did. Enabling is idempotent and repairs missing storage.",
            "enum": [
              "ENABLED",
              "REPAIRED",
              "ALREADY_IN_ORDER",
              "DISABLED",
              "ALREADY_DISABLED"
            ],
            "type": "string"
          },
          "table": {
            "$ref": "#/components/schemas/TableDto",
            "description": "Table."
          }
        },
        "type": "object"
      },
      "Column": {
        "description": "Column definition, including name, description, dataset, validation rules, error rules and formatting/parsing. Also some UI guidelines.",
        "properties": {
          "array": {
            "default": false,
            "description": "Array flag. Indicates if the column supports multiple values. Default is false. Nested DATASET columns require true.",
            "type": "boolean"
          },
          "dataset": {
            "description": "Dataset identifier.",
            "type": "string"
          },
          "description": {
            "description": "Column description, in one language: the language of the request on a record or table response, the base language on a resource document. The other languages, when there are any, are in descriptionLocalized.",
            "type": [
              "string",
              "null"
            ]
          },
          "descriptionLocalized": {
            "description": "Every language this column's description was written in. Absent when it was written in one language with no language named, which is what description alone means.",
            "items": {
              "$ref": "#/components/schemas/LocalizedTextEntry"
            },
            "type": "array"
          },
          "empty": {
            "default": true,
            "description": "Empty flag. Indicates if the column can be empty. Default is true. SOURCE columns are always mandatory, regardless of this flag.",
            "type": [
              "boolean",
              "null"
            ]
          },
          "enumerations": {
            "description": "Allowed values and labels. Applies to ENUM and SOURCE tokens.",
            "items": {
              "$ref": "#/components/schemas/EnumerationOption"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "error": {
            "default": "IGNORE",
            "description": "Error handling. Indicates what to do when an error is found.",
            "enum": [
              "CLEAR",
              "REPLACE",
              "FIX",
              "IGNORE",
              "REFUSE"
            ],
            "type": [
              "string",
              "null"
            ]
          },
          "errorReplacement": {
            "description": "Error replacement. Indicates what to replace when an error is found if error policy is to replace.",
            "type": [
              "string",
              "null"
            ]
          },
          "foreignKey": {
            "description": "Lookup column in table.key[.key]* form, including nested columns. Applies to FOREIGN_ID tokens.",
            "type": [
              "string",
              "null"
            ]
          },
          "identity": {
            "default": false,
            "description": "Identity flag. Indicates if the column is to be used for generating identity. Default is false.",
            "type": "boolean"
          },
          "key": {
            "description": "Column name",
            "type": "string"
          },
          "lookup": {
            "default": false,
            "description": "Lookup flag. Indicates if the column can be leveraged for lookups. Default is false.",
            "type": [
              "boolean",
              "null"
            ]
          },
          "lookupDescription": {
            "description": "Flag to indicate if the column is leveraged in as a lookup description. Default is false.",
            "type": [
              "boolean",
              "null"
            ]
          },
          "regex": {
            "description": "Regular expression. Used for validation.",
            "type": [
              "string",
              "null"
            ]
          },
          "script": {
            "description": "Groovy script. Used for validation.",
            "type": [
              "string",
              "null"
            ]
          },
          "source": {
            "description": "Data format. Used for validating the format.",
            "type": [
              "string",
              "null"
            ]
          },
          "sourceLocale": {
            "description": "Data locale. Used for validating the localized format.",
            "type": [
              "string",
              "null"
            ]
          },
          "token": {
            "default": "TEXT",
            "description": "Token type. Only meaningful if column is a token.",
            "enum": [
              "COUNTRY_CODE",
              "COUNTRY_NAME",
              "LANGUAGE",
              "PHONE_COUNTRY_CODE",
              "PHONE_NUMBER",
              "PHONE",
              "NAME_PREFIX",
              "NAME_FIRST",
              "NAME_MIDDLE",
              "NAME_LAST",
              "NAME",
              "ADDRESS_STREET_TYPE",
              "ADDRESS_STREET_NAME",
              "ADDRESS_NUMBER",
              "ADDRESS_STREET",
              "ADDRESS_CITY",
              "ADDRESS_POSTCODE",
              "ADDRESS_STATE",
              "ADDRESS",
              "GEO_LONGITUDE",
              "GEO_LATITUDE",
              "GEO_COORDINATES",
              "ID",
              "FOREIGN_ID",
              "EMAIL",
              "NUMBER",
              "DATE",
              "ENUM",
              "SOURCE",
              "URL",
              "TEXT",
              "TEXT_AS_IS",
              "IGNORE"
            ],
            "type": [
              "string",
              "null"
            ]
          },
          "type": {
            "default": "TOKEN",
            "description": "Column type",
            "enum": [
              "TOKEN",
              "DATASET"
            ],
            "type": "string"
          },
          "validation": {
            "default": "NONE",
            "description": "Validation type. Indicates how to validate the column.",
            "enum": [
              "NONE",
              "DEFAULT",
              "PARSER",
              "REGEX",
              "SCRIPT"
            ],
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "key"
        ],
        "type": "object"
      },
      "TzTokenListResponseDto": {
        "description": "Token list response",
        "properties": {
          "errors": {
            "description": "Errors. Present when the request was refused",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "messages": {
            "description": "Informational messages. Present on a successful response",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "roles": {
            "description": "List of available roles, described in the request's language",
            "items": {
              "$ref": "#/components/schemas/TzRoleDto"
            },
            "type": "array"
          },
          "tokens": {
            "description": "List of tokens",
            "items": {
              "$ref": "#/components/schemas/TzTokenDto"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "Configuration": {
        "description": "Configuration",
        "properties": {
          "category": {
            "description": "Configuration category",
            "type": "string"
          },
          "payload": {
            "description": "Configuration payload",
            "type": "string"
          }
        },
        "type": "object"
      },
      "ScopeValuesResponseDto": {
        "description": "Distinct values of an entity's scope column.",
        "properties": {
          "column": {
            "description": "The scope column the values were read from.",
            "type": "string"
          },
          "entity": {
            "description": "The entity.",
            "type": "string"
          },
          "errors": {
            "description": "List of errors. If HTTP response represents an error (4xx or 5xx) this will contain a list of errors. Otherwise, not present.",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "messages": {
            "description": "Optional informational messages. If present, the request was successful and response code will be 2xx.",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "truncated": {
            "description": "True when the cap or the time budget cut the list short.",
            "type": "boolean"
          },
          "values": {
            "description": "The distinct values, sorted, capped.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "TableResponseDto": {
        "description": "Represents a table.",
        "properties": {
          "errors": {
            "description": "List of errors. If HTTP response represents an error (4xx or 5xx) this will contain a list of errors. Otherwise, not present.",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "messages": {
            "description": "Optional informational messages. If present, the request was successful and response code will be 2xx.",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "table": {
            "$ref": "#/components/schemas/TableDto",
            "description": "Table."
          }
        },
        "type": "object"
      },
      "TzPageTzRunSummary": {
        "properties": {
          "content": {
            "items": {
              "$ref": "#/components/schemas/TzRunSummary"
            },
            "type": "array",
            "description": "Items in this result page."
          },
          "page": {
            "format": "int32",
            "type": "integer",
            "description": "Zero-based page number."
          },
          "size": {
            "format": "int32",
            "type": "integer",
            "description": "Requested page size."
          },
          "totalElements": {
            "format": "int64",
            "type": "integer",
            "description": "Total number of matching items."
          }
        },
        "type": "object",
        "description": "Page of run summaries, without input and output payloads."
      },
      "EntityListResponseDto": {
        "description": "Represents a list of entities.",
        "properties": {
          "entities": {
            "description": "List of entities.",
            "items": {
              "$ref": "#/components/schemas/EntityDto"
            },
            "type": "array"
          },
          "errors": {
            "description": "List of errors. If HTTP response represents an error (4xx or 5xx) this will contain a list of errors. Otherwise, not present.",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "messages": {
            "description": "Optional informational messages. If present, the request was successful and response code will be 2xx.",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          }
        },
        "type": "object"
      },
      "TableDto": {
        "description": "Represents a data table.",
        "properties": {
          "aggregateScope": {
            "description": "`size` is computed over the whole table, not over the caller's data scope. Always ENTITY.",
            "enum": [
              "ENTITY"
            ],
            "type": "string"
          },
          "audit": {
            "description": "Table audit flag.",
            "type": "boolean"
          },
          "created": {
            "description": "Table creation ISO timestamp.",
            "format": "date-time",
            "type": "string"
          },
          "dataset": {
            "description": "Table dataset.",
            "type": "string"
          },
          "dependency": {
            "$ref": "#/components/schemas/Dependency",
            "description": "Table dependencies."
          },
          "description": {
            "description": "Table description.",
            "type": "string"
          },
          "hasIndex": {
            "description": "Indicates if this table has an index (entity with type different from NONE).",
            "type": "boolean"
          },
          "history": {
            "description": "Table history flag.",
            "type": "boolean"
          },
          "id": {
            "description": "Table identifier.",
            "type": "string"
          },
          "locked": {
            "description": "Table locked flag.",
            "type": "boolean"
          },
          "qualityEnabled": {
            "description": "Whether this table is included in quality measurement and aggregate quality figures. Omission means enabled.",
            "type": "boolean"
          },
          "size": {
            "description": "Number of records.",
            "format": "int64",
            "type": "integer"
          },
          "type": {
            "description": "Table type.",
            "enum": [
              "TABLE",
              "HISTORY"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "TableOperationResponseDto": {
        "description": "Represents a response from a data ETL operation",
        "properties": {
          "errors": {
            "description": "List of errors. If HTTP response represents an error (4xx or 5xx) this will contain a list of errors. Otherwise, not present.",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "messages": {
            "description": "Optional informational messages. If present, the request was successful and response code will be 2xx.",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "run": {
            "$ref": "#/components/schemas/TzRunView",
            "description": "The queued run."
          }
        },
        "required": [
          "run"
        ],
        "type": "object"
      },
      "SinkKafka": {
        "allOf": [
          {
            "$ref": "#/components/schemas/Resource"
          },
          {
            "properties": {
              "bootstrapServers": {
                "description": "The list of Kafka brokers to connect to.",
                "type": "string"
              },
              "credentials": {
                "description": "The credentials to use for the Kafka producer.",
                "type": "string"
              },
              "dataset": {
                "description": "The dataset to use.",
                "type": "string"
              },
              "properties": {
                "description": "The properties to use for the Kafka producer.",
                "items": {
                  "$ref": "#/components/schemas/Option"
                },
                "type": "array"
              },
              "timeoutMs": {
                "description": "The timeout in milliseconds for writing a record.",
                "format": "int32",
                "type": "integer",
                "default": 2000,
                "minimum": 1
              },
              "topicName": {
                "description": "The name of the topic in the Kafka broker.",
                "type": "string"
              },
              "type": {
                "type": "string",
                "enum": [
                  "sink-kafka"
                ],
                "description": "Resource type."
              }
            },
            "type": "object",
            "required": []
          }
        ],
        "description": "A Kafka sink is a resource that writes records to an external Kafka.",
        "required": [
          "_id",
          "bootstrapServers",
          "credentials",
          "description",
          "timeoutMs",
          "topicName",
          "type"
        ]
      },
      "Indexer": {
        "allOf": [
          {
            "$ref": "#/components/schemas/Resource"
          },
          {
            "properties": {
              "dataset": {
                "description": "The dataset to use.",
                "type": "string"
              },
              "defaultKeyOptions": {
                "description": "Default key options to use when calculating indexes.",
                "items": {
                  "description": "A text option is a transformation that can be applied to a text to normalize it.",
                  "enum": [
                    "NONE",
                    "IGNORE_CASE",
                    "IGNORE_SPACES",
                    "ONLY_ALPHANUMERIC",
                    "IGNORE_ACCENTS",
                    "AGGRESSIVE"
                  ],
                  "type": "string"
                },
                "type": "array"
              },
              "mappings": {
                "description": "Mappings to calculate indexes.",
                "items": {
                  "$ref": "#/components/schemas/IndexerMapping"
                },
                "type": "array"
              },
              "type": {
                "type": "string",
                "enum": [
                  "indexer"
                ],
                "description": "Resource type."
              }
            },
            "type": "object"
          }
        ],
        "description": "An indexer is used to calculate indexes for records.",
        "required": [
          "_id",
          "description",
          "mappings",
          "type"
        ]
      },
      "TableExchangeDto": {
        "description": "Represents an set of table in exchange format (used for import/export).",
        "properties": {
          "count": {
            "description": "Number of exported entities.",
            "format": "int32",
            "type": "integer"
          },
          "tables": {
            "description": "Exported table.",
            "items": {
              "$ref": "#/components/schemas/TablePostDto"
            },
            "type": "array"
          },
          "timestamp": {
            "description": "Export timestamp.",
            "format": "int64",
            "type": "integer"
          },
          "version": {
            "description": "Export version.",
            "type": "string"
          }
        },
        "required": [
          "tables"
        ],
        "type": "object"
      },
      "ConfigurationResponseDto": {
        "description": "Represents a configuration response.",
        "properties": {
          "configuration": {
            "$ref": "#/components/schemas/Configuration",
            "description": "Configuration."
          },
          "errors": {
            "description": "List of errors. If HTTP response represents an error (4xx or 5xx) this will contain a list of errors. Otherwise, not present.",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "messages": {
            "description": "Optional informational messages. If present, the request was successful and response code will be 2xx.",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          }
        },
        "type": "object"
      },
      "DataScopeListResponseDto": {
        "description": "Every principal that has a data scope.",
        "properties": {
          "errors": {
            "description": "List of errors. If HTTP response represents an error (4xx or 5xx) this will contain a list of errors. Otherwise, not present.",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "messages": {
            "description": "Optional informational messages. If present, the request was successful and response code will be 2xx.",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "scopes": {
            "description": "The scopes.",
            "items": {
              "$ref": "#/components/schemas/DataScopeDto"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "TzDefinitionRunResponse": {
        "properties": {
          "runId": {
            "format": "uuid",
            "type": "string",
            "description": "Identifier of the created run."
          }
        },
        "type": "object",
        "description": "Identifier of a requested execution."
      },
      "SampleDto": {
        "description": "An installable sample project.",
        "properties": {
          "description": {
            "description": "What the sample demonstrates.",
            "type": "string"
          },
          "entity": {
            "description": "The entity the sample installs.",
            "type": "string"
          },
          "id": {
            "description": "Identifier, and the directory the sample ships in.",
            "type": "string"
          },
          "installed": {
            "description": "Whether the sample is currently installed.",
            "type": "boolean"
          },
          "name": {
            "description": "Display name.",
            "type": "string"
          },
          "table": {
            "description": "The records table the entity is built on.",
            "type": "string"
          },
          "version": {
            "description": "Version of the sample bundle.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "TzRunSummary": {
        "properties": {
          "attempt": {
            "format": "int32",
            "type": "integer",
            "description": "Attempt number within the retry chain."
          },
          "cancelForced": {
            "type": "boolean",
            "description": "Whether cancellation was forced."
          },
          "cancelReason": {
            "type": "string",
            "description": "Recorded cancellation reason."
          },
          "cancelRequestedAt": {
            "format": "date-time",
            "type": "string",
            "description": "Time cancellation was requested."
          },
          "createdAt": {
            "format": "date-time",
            "type": "string",
            "description": "Creation timestamp."
          },
          "definitionId": {
            "format": "uuid",
            "type": "string",
            "description": "Definition that created this run, when applicable."
          },
          "description": {
            "type": "string",
            "description": "Human-readable description."
          },
          "errorMessage": {
            "type": "string",
            "description": "Reported failure message, when present."
          },
          "errorType": {
            "enum": [
              "INPUT_INVALID",
              "TYPE_UNKNOWN",
              "PRINCIPAL_UNKNOWN",
              "INFRASTRUCTURE_UNAVAILABLE",
              "JOB_FAILED",
              "JOB_FAILED_PERMANENT",
              "OUTPUT_INVALID",
              "TIMEOUT",
              "PROCESS_INTERRUPTED"
            ],
            "type": "string",
            "description": "Classification of the reported failure."
          },
          "fencedBy": {
            "enum": [
              "REAPER",
              "TIMEOUT",
              "SHUTDOWN",
              "CANCEL"
            ],
            "type": "string",
            "description": "Reason or actor that closed a run that did not finish on its own."
          },
          "finishedAt": {
            "format": "date-time",
            "type": "string",
            "description": "Time the run finished."
          },
          "id": {
            "format": "uuid",
            "type": "string",
            "description": "Identifier of this object."
          },
          "idempotencyExpiresAt": {
            "format": "date-time",
            "type": "string",
            "description": "Expiration time of the submission idempotency key."
          },
          "idempotencyKey": {
            "type": "string",
            "description": "Caller-supplied key used to avoid duplicate submissions within its validity period."
          },
          "identity": {
            "type": "string",
            "description": "Job-specific identity of this input, when the job type defines one."
          },
          "jobType": {
            "type": "string",
            "description": "Registered job type identifier. Use the job types operation to list supported values."
          },
          "maxAttempts": {
            "format": "int32",
            "type": "integer",
            "description": "Maximum number of attempts, including the first attempt."
          },
          "maxDuration": {
            "type": "string",
            "description": "Maximum permitted duration of one attempt."
          },
          "message": {
            "type": "string",
            "description": "Latest reported progress or status message."
          },
          "owner": {
            "type": "string",
            "description": "Principal recorded as the owner."
          },
          "previousRunId": {
            "format": "uuid",
            "type": "string",
            "description": "Previous attempt in this retry chain, when present."
          },
          "progress": {
            "format": "double",
            "type": "number",
            "description": "Progress reported by the job."
          },
          "retryBackoff": {
            "type": "string",
            "description": "Initial delay before retrying a failed attempt."
          },
          "retryMaxBackoff": {
            "type": "string",
            "description": "Upper limit for retry delay."
          },
          "rootRunId": {
            "format": "uuid",
            "type": "string",
            "description": "First run in this retry chain."
          },
          "scheduleKind": {
            "enum": [
              "CRON",
              "INTERVAL",
              "ONCE",
              "MANUAL"
            ],
            "type": "string",
            "description": "Scheduling mode: CRON, fixed INTERVAL, ONCE, or MANUAL."
          },
          "scheduledAt": {
            "format": "date-time",
            "type": "string",
            "description": "Instant at which the run is eligible to start."
          },
          "skipReason": {
            "type": "string",
            "description": "Reason execution was skipped."
          },
          "startedAt": {
            "format": "date-time",
            "type": "string",
            "description": "Time execution started."
          },
          "status": {
            "enum": [
              "PENDING",
              "RUNNING",
              "CANCELLING",
              "SUCCEEDED",
              "FAILED",
              "CANCELLED",
              "SKIPPED"
            ],
            "type": "string",
            "description": "Current run status."
          },
          "trigger": {
            "enum": [
              "SCHEDULED",
              "MANUAL",
              "API",
              "RETRY"
            ],
            "type": "string",
            "description": "How the run was started."
          }
        },
        "type": "object",
        "description": "Run status without input and output payloads."
      },
      "ConfigurationRequestDto": {
        "description": "Represents a configuration request.",
        "properties": {
          "configuration": {
            "$ref": "#/components/schemas/Configuration",
            "description": "Configuration."
          }
        },
        "required": [
          "configuration"
        ],
        "type": "object"
      },
      "DataScopeResponseDto": {
        "description": "One principal's data scope.",
        "properties": {
          "errors": {
            "description": "List of errors. If HTTP response represents an error (4xx or 5xx) this will contain a list of errors. Otherwise, not present.",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "messages": {
            "description": "Optional informational messages. If present, the request was successful and response code will be 2xx.",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "scope": {
            "$ref": "#/components/schemas/DataScopeDto",
            "description": "The scope."
          }
        },
        "type": "object"
      },
      "TzDefinitionResponse": {
        "properties": {
          "code": {
            "type": "string",
            "description": "Stable identifier of a product-provided definition."
          },
          "createdAt": {
            "format": "date-time",
            "type": "string",
            "description": "Creation timestamp."
          },
          "cronExpression": {
            "type": "string",
            "description": "Quartz cron expression used when scheduleKind is CRON."
          },
          "customized": {
            "type": "boolean",
            "description": "Whether the product-provided definition has customer modifications."
          },
          "description": {
            "type": "string",
            "description": "Human-readable description."
          },
          "enabled": {
            "type": "boolean",
            "description": "Whether the definition is enabled for scheduled execution."
          },
          "id": {
            "format": "uuid",
            "type": "string",
            "description": "Identifier of this object."
          },
          "inertReason": {
            "enum": [
              "ORPHANED",
              "WINDOW_INVERTED",
              "WINDOW_EXPIRED",
              "MANUAL",
              "ONCE_CONSUMED",
              "ONCE_IN_THE_PAST",
              "ZONE_UNKNOWN",
              "NO_OCCURRENCE_IN_WINDOW",
              "NO_NEXT_OCCURRENCE"
            ],
            "type": "string",
            "description": "Reason the definition cannot currently schedule work, when applicable."
          },
          "intervalSeconds": {
            "format": "int64",
            "type": "integer",
            "description": "Interval between scheduled starts, in seconds, for INTERVAL schedules."
          },
          "jobType": {
            "type": "string",
            "description": "Registered job type identifier. Use the job types operation to list supported values."
          },
          "lastRunAt": {
            "format": "date-time",
            "type": "string",
            "description": "Most recent recorded run time."
          },
          "maxAttempts": {
            "format": "int32",
            "type": "integer",
            "description": "Maximum number of attempts, including the first attempt."
          },
          "maxDuration": {
            "type": "string",
            "description": "Maximum permitted duration of one attempt."
          },
          "misfirePolicy": {
            "enum": [
              "FIRE_ONCE",
              "SKIP"
            ],
            "type": "string",
            "description": "Handling of a missed scheduled start: FIRE_ONCE starts once and advances to the next occurrence; SKIP advances without running the missed occurrence."
          },
          "name": {
            "type": "string",
            "description": "Human-readable definition name."
          },
          "nextRunAt": {
            "format": "date-time",
            "type": "string",
            "description": "Next scheduled run time, when available."
          },
          "orphanedAt": {
            "format": "date-time",
            "type": "string",
            "description": "Time the definition lost its registered job type, when applicable."
          },
          "overlapPolicy": {
            "enum": [
              "SKIP",
              "ALLOW"
            ],
            "type": "string",
            "description": "Handling when the definition already has a live run: SKIP skips this occurrence; ALLOW permits overlap."
          },
          "owner": {
            "type": "string",
            "description": "Principal recorded as the owner."
          },
          "rawInput": {
            "type": "string",
            "description": "Job input encoded as a JSON string, not as a nested JSON object."
          },
          "retryBackoff": {
            "type": "string",
            "description": "Initial delay before retrying a failed attempt."
          },
          "retryMaxBackoff": {
            "type": "string",
            "description": "Upper limit for retry delay."
          },
          "runAt": {
            "format": "date-time",
            "type": "string",
            "description": "Scheduled instant for a ONCE definition."
          },
          "scheduleKind": {
            "enum": [
              "CRON",
              "INTERVAL",
              "ONCE",
              "MANUAL"
            ],
            "type": "string",
            "description": "Scheduling mode: CRON, fixed INTERVAL, ONCE, or MANUAL."
          },
          "skipStreakCount": {
            "format": "int32",
            "type": "integer",
            "description": "Number of consecutive skipped scheduled occurrences."
          },
          "source": {
            "enum": [
              "DECLARED",
              "API"
            ],
            "type": "string",
            "description": "Origin of the definition."
          },
          "timeZone": {
            "type": "string",
            "description": "Time zone used to evaluate the schedule."
          },
          "updatedAt": {
            "format": "date-time",
            "type": "string",
            "description": "Last modification timestamp."
          },
          "validFrom": {
            "format": "date-time",
            "type": "string",
            "description": "Start of the scheduling validity window."
          },
          "validUntil": {
            "format": "date-time",
            "type": "string",
            "description": "End of the scheduling validity window."
          },
          "version": {
            "format": "int64",
            "type": "integer",
            "description": "Version used for concurrent modification control."
          }
        },
        "type": "object",
        "description": "Scheduling definition and current scheduling state."
      },
      "GoldenDisconnectBucketResponseDto": {
        "description": "Represents a bucket disconnect response",
        "properties": {
          "entity": {
            "$ref": "#/components/schemas/EntityDto",
            "description": "Entity that owns the disconnected records."
          },
          "errors": {
            "description": "List of errors. If HTTP response represents an error (4xx or 5xx) this will contain a list of errors. Otherwise, not present.",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "messages": {
            "description": "Optional informational messages. If present, the request was successful and response code will be 2xx.",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "records": {
            "description": "Disconnected records.",
            "items": {
              "$ref": "#/components/schemas/Record"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "GoldenDeleteBucketResponseDto": {
        "description": "Represents a bucket delete response",
        "properties": {
          "entity": {
            "$ref": "#/components/schemas/EntityDto",
            "description": "Entity that owns the deleted records."
          },
          "errors": {
            "description": "List of errors. If HTTP response represents an error (4xx or 5xx) this will contain a list of errors. Otherwise, not present.",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "messages": {
            "description": "Optional informational messages. If present, the request was successful and response code will be 2xx.",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "records": {
            "description": "Deleted records.",
            "items": {
              "$ref": "#/components/schemas/Record"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "TzChainView": {
        "properties": {
          "attempts": {
            "items": {
              "$ref": "#/components/schemas/TzRunSummary"
            },
            "type": "array",
            "description": "Attempts in the retry chain."
          },
          "requestedRunId": {
            "format": "uuid",
            "type": "string",
            "description": "Run whose retry chain was requested."
          },
          "rootRunId": {
            "format": "uuid",
            "type": "string",
            "description": "First run in this retry chain."
          }
        },
        "type": "object",
        "description": "Retry chain for a run."
      },
      "ResourceSaveRequestDto": {
        "description": "Represents a resource object in JSON format.",
        "properties": {
          "create": {
            "default": false,
            "description": "Create flag. If true, the resource will be created if it does not exist. Otherwise, it will be updated.",
            "type": "boolean"
          },
          "resource": {
            "description": "A resource in JSON format.",
            "type": "string"
          },
          "test": {
            "default": false,
            "description": "Test configuration instead of saving. Default is false.",
            "type": "boolean"
          },
          "testOptions": {
            "description": "Test configuration options in JSON format. Ignored if not testing.",
            "type": "string"
          }
        },
        "required": [
          "resource"
        ],
        "type": "object"
      },
      "SampleListResponseDto": {
        "description": "The available sample projects.",
        "properties": {
          "errors": {
            "description": "List of errors. If HTTP response represents an error (4xx or 5xx) this will contain a list of errors. Otherwise, not present.",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "messages": {
            "description": "Optional informational messages. If present, the request was successful and response code will be 2xx.",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "samples": {
            "description": "The samples, in a stable order.",
            "items": {
              "$ref": "#/components/schemas/SampleDto"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "TzRefreshResponseDto": {
        "description": "Token refresh response",
        "properties": {
          "errors": {
            "description": "Errors. Present when the request was refused",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "messages": {
            "description": "Informational messages. Present on a successful response",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "refreshToken": {
            "description": "New refresh token",
            "type": "string"
          },
          "token": {
            "description": "New JWT token",
            "type": "string"
          }
        },
        "type": "object"
      },
      "TableOperationTransformRequestDto": {
        "description": "Request to transform table data.",
        "properties": {
          "maxRecords": {
            "description": "Optional maximum number of records to process (use <0  to process all records). Default is -1 (process all source records).",
            "format": "int32",
            "type": "integer"
          },
          "pipeline": {
            "description": "Optional pipeline identifier. If indicated, the pipeline will be applied after the optional transformation.",
            "type": "string"
          },
          "sampleRecords": {
            "description": "Optionally use sampling when processing records (use <=0 to avoid sampling). Default is -1 (no sampling).",
            "format": "int32",
            "type": "integer"
          },
          "source": {
            "description": "Source or table identifier. Must exist.",
            "minLength": 1,
            "type": "string"
          },
          "transformation": {
            "description": "Optional transformation name. If indicated, the transformation will be applied to the source data after reading from the source.",
            "type": "string"
          }
        },
        "required": [
          "source"
        ],
        "type": "object"
      },
      "TzAuthRequestDto": {
        "description": "Authentication request",
        "properties": {
          "email": {
            "description": "User email",
            "format": "email",
            "minLength": 1,
            "type": "string"
          },
          "password": {
            "description": "Password (in clear text) for user/password authentication",
            "type": "string"
          },
          "token": {
            "description": "Token for OAuth2/SSO authentication",
            "type": "string"
          }
        },
        "required": [
          "email"
        ],
        "type": "object"
      },
      "Pipeline": {
        "allOf": [
          {
            "$ref": "#/components/schemas/Resource"
          },
          {
            "properties": {
              "dataset": {
                "description": "The dataset to use.",
                "type": "string"
              },
              "processors": {
                "description": "The processors in the pipeline.",
                "items": {
                  "$ref": "#/components/schemas/Processor"
                },
                "type": "array"
              },
              "type": {
                "type": "string",
                "enum": [
                  "pipeline"
                ],
                "description": "Resource type."
              }
            },
            "type": "object"
          }
        ],
        "description": "A pipeline is a sequence of processors that are applied to records of a certain dataset.",
        "required": [
          "_id",
          "description",
          "processors",
          "type"
        ]
      },
      "TableRecordResponseDto": {
        "description": "Represents one record and optional expanded data.",
        "properties": {
          "columnMap": {
            "additionalProperties": {
              "$ref": "#/components/schemas/Column"
            },
            "description": "Map of columns with detailed information.",
            "type": "object"
          },
          "columnRules": {
            "additionalProperties": {
              "additionalProperties": {
                "$ref": "#/components/schemas/ColumnRuleDto"
              },
              "type": "object"
            },
            "description": "Value constraints indexed by dataset identifier and column key. Use these resolved rules when building record forms.",
            "type": "object"
          },
          "columns": {
            "description": "Basic columns for this record.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "datasets": {
            "additionalProperties": {
              "$ref": "#/components/schemas/Dataset"
            },
            "description": "Map of datasets.",
            "type": "object"
          },
          "errors": {
            "description": "List of errors. If HTTP response represents an error (4xx or 5xx) this will contain a list of errors. Otherwise, not present.",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "findings": {
            "description": "The problems the last measurement found, rendered in the request's language. Absent unless qualityState is CURRENT.",
            "items": {
              "$ref": "#/components/schemas/QualityFindingDto"
            },
            "type": "array"
          },
          "merged": {
            "description": "If this record is the result of a merge, these are the original records.",
            "items": {
              "$ref": "#/components/schemas/Record"
            },
            "type": "array"
          },
          "messages": {
            "description": "Optional informational messages. If present, the request was successful and response code will be 2xx.",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "qualityState": {
            "description": "What this record's stored quality measurement is worth against the definition its table is currently on.",
            "enum": [
              "UNCALCULATED",
              "STALE",
              "CURRENT"
            ],
            "type": "string"
          },
          "record": {
            "additionalProperties": {
              "description": "A record represents an user data record as a JSON document with a unique identifier (_id), metadata (_metadata) and auditing (_audit). A record represents that main data asset in Golden and can also be used to store data in plain (text), XML and binary formats using a JSON structure."
            },
            "description": "Record itself.",
            "properties": {
              "_audit": {
                "description": "Reserved audit member. Ordinary record responses omit this field, including expanded responses. Read events through the dedicated record audit endpoint. Requests carrying _audit are refused with 400.",
                "items": {
                  "$ref": "#/components/schemas/RecordAudit"
                },
                "readOnly": true,
                "type": "array"
              },
              "_id": {
                "type": "string"
              },
              "_metadata": {
                "$ref": "#/components/schemas/RecordMetadata",
                "description": "Server-owned metadata: quality, merge pointers, the last write. Read-only; requests must not include this member.",
                "readOnly": true
              },
              "_search": {
                "additionalProperties": {
                  "description": "Record search metadata."
                },
                "description": "Search metadata associated to the record, present on a search result. Read-only; requests must not include this member.",
                "properties": {
                  "exact": {
                    "description": "True when the match is exact. Decided by the engine, not by the score.",
                    "type": "boolean"
                  },
                  "index": {
                    "description": "Index that found this search result.",
                    "type": "string"
                  },
                  "match": {
                    "description": "Matched text.",
                    "type": "string"
                  },
                  "origin": {
                    "description": "How this result was reached, which is not what matched it.",
                    "enum": [
                      "DIRECT",
                      "CLUSTER",
                      "HISTORY",
                      "MERGED_FORWARD"
                    ],
                    "type": "string"
                  },
                  "rank": {
                    "description": "Search rank.",
                    "format": "double",
                    "type": "number"
                  },
                  "sourceId": {
                    "description": "The record this result was reached through, when that is not the record itself: the absorbed record for a merged-forward hit. Null otherwise.",
                    "type": "string"
                  },
                  "type": {
                    "description": "Search type.",
                    "enum": [
                      "ID",
                      "SOURCE",
                      "EXACT",
                      "PREFIX",
                      "SUFFIX",
                      "INFIX",
                      "FUZZY",
                      "FUZZY_LSH",
                      "GEOGRAPHIC",
                      "NONE"
                    ],
                    "type": "string"
                  }
                },
                "readOnly": true,
                "type": "object"
              },
              "_source": {
                "description": "Where the record came from: one entry per system that has contributed to it, with that system's own key for it. A caller may state this WHEN IT CREATES the record, and never afterwards: an inbound value on an update is refused with a 400. The engine adds to it \u2014 a load that reincorporates the record from a second system, a merge that unions what it absorbs \u2014 and nothing ever removes an entry. When a data set declares which source systems it accepts, a value outside that list is refused.",
                "items": {
                  "$ref": "#/components/schemas/RecordSourceEntry"
                },
                "type": "array"
              }
            },
            "type": "object"
          },
          "servedFromOtherTable": {
            "description": "True when the record was not in the table type the caller asked for and was served from the other relation instead \u2014 a record deleted or superseded in the data table and read out of history, or the reverse. `table` names where it actually came from.",
            "type": "boolean"
          },
          "table": {
            "$ref": "#/components/schemas/TableDto",
            "description": "Table that owns this record."
          },
          "view": {
            "$ref": "#/components/schemas/ViewDto",
            "description": "The data-view the table's owning entity presents its records through, resolved. Null means one of three things, and a caller cannot tell them apart: no entity owns the table, the owning entity chose no view, or the view it chose no longer names the table's dataset. All three render the way every table did before data-views existed."
          }
        },
        "type": "object"
      },
      "TableImportResponseDto": {
        "description": "Represents a response to import tables.",
        "properties": {
          "errors": {
            "description": "List of errors. If HTTP response represents an error (4xx or 5xx) this will contain a list of errors. Otherwise, not present.",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "imported": {
            "description": "Total number of imported tables.",
            "format": "int32",
            "type": "integer"
          },
          "messages": {
            "description": "Optional informational messages. If present, the request was successful and response code will be 2xx.",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "total": {
            "description": "Total number of tables.",
            "format": "int32",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "DailyMetricDto": {
        "description": "One daily metric snapshot: envelope and payload.",
        "properties": {
          "calculatedAt": {
            "description": "When the aggregation was actually taken. May be after the day closed.",
            "format": "date-time",
            "type": "string"
          },
          "day": {
            "description": "The UTC day the snapshot describes, in ISO yyyy-MM-dd. It identifies [00:00Z, next 00:00Z).",
            "format": "date",
            "type": "string"
          },
          "family": {
            "description": "The metric family. Stable machine identifier.",
            "type": "string"
          },
          "familyVersion": {
            "description": "The version of that family's payload schema and calculation semantics. Not the record-quality definition, which travels inside the quality payload.",
            "type": "string"
          },
          "issues": {
            "$ref": "#/components/schemas/QualityIssuesMetricDto",
            "description": "The typed issue ranking. Set when, and only when, the family is quality-issues."
          },
          "payload": {
            "additionalProperties": {},
            "description": "The stored payload as a JSON object, for a registered family this API version has no typed view of. Set when, and only when, no typed member above is.",
            "type": "object"
          },
          "quality": {
            "$ref": "#/components/schemas/QualityDailyMetricDto",
            "description": "The typed quality payload. Set when, and only when, the family is quality."
          },
          "table": {
            "description": "The business table the snapshot describes.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "TzRunSubmitRequest": {
        "properties": {
          "description": {
            "type": "string",
            "description": "Human-readable description."
          },
          "idempotencyKey": {
            "type": "string",
            "description": "Caller-supplied key used to avoid duplicate submissions within its validity period."
          },
          "jobType": {
            "type": "string",
            "description": "Registered job type identifier. Use the job types operation to list supported values."
          },
          "maxAttempts": {
            "format": "int32",
            "type": "integer",
            "description": "Maximum number of attempts, including the first attempt."
          },
          "maxDuration": {
            "type": "string",
            "description": "Maximum permitted duration of one attempt."
          },
          "rawInput": {
            "type": "string",
            "description": "Job input encoded as a JSON string, not as a nested JSON object."
          },
          "retryBackoff": {
            "type": "string",
            "description": "Initial delay before retrying a failed attempt."
          },
          "retryMaxBackoff": {
            "type": "string",
            "description": "Upper limit for retry delay."
          },
          "scheduledAt": {
            "format": "date-time",
            "type": "string",
            "description": "Instant at which the run is eligible to start."
          }
        },
        "type": "object",
        "description": "Request for a one-off run."
      },
      "TableCreateRequestDto": {
        "description": "Represents a request to create a table.",
        "properties": {
          "auditable": {
            "default": false,
            "description": "Auditable flag to keep track of changes to each individual record (eg. changed values). Default is false.",
            "type": "boolean"
          },
          "dataset": {
            "description": "Dataset identifier. Must exist.",
            "minLength": 1,
            "type": "string"
          },
          "description": {
            "description": "Table description",
            "type": "string"
          },
          "history": {
            "default": false,
            "description": "History flag to keep track of changes to records (eg. merged or deleted). Default is false.",
            "type": "boolean"
          },
          "quality": {
            "default": true,
            "description": "Whether this table is measured for quality. Default is true; set it to false for a table whose quality nobody acts on \u2014 a test copy of another table, typically \u2014 and it is skipped by the background re-measurement and left out of the quality figures. A table switched off reads as \"not measured by choice\" on screen, which is a different state from \"not measured yet\".",
            "type": "boolean"
          },
          "table": {
            "description": "Table identifier",
            "minLength": 1,
            "type": "string"
          }
        },
        "required": [
          "dataset",
          "table"
        ],
        "type": "object"
      },
      "GoldenDuplicateRecordCountResponseDto": {
        "description": "Records with at least one possible duplicate, per entity.",
        "properties": {
          "counts": {
            "additionalProperties": {
              "format": "int64",
              "type": "integer"
            },
            "description": "Entity id to the number of its records that have at least one possible duplicate. An entity whose count could not be read is absent rather than zero.",
            "type": "object"
          },
          "errors": {
            "description": "List of errors. If HTTP response represents an error (4xx or 5xx) this will contain a list of errors. Otherwise, not present.",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "messages": {
            "description": "Optional informational messages. If present, the request was successful and response code will be 2xx.",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          }
        },
        "type": "object"
      },
      "TzUserCreateRequestDto": {
        "description": "User creation request",
        "properties": {
          "email": {
            "description": "User email (must be unique)",
            "format": "email",
            "type": "string"
          },
          "internal": {
            "default": true,
            "description": "Flag to indicate if user is internal or external (Single Sign-On)",
            "type": "boolean"
          },
          "language": {
            "default": "en",
            "description": "Optional user language as a BCP 47 tag (for example es or en-GB)",
            "example": "es-ES",
            "type": "string"
          },
          "name": {
            "description": "User name",
            "minLength": 1,
            "type": "string"
          },
          "roles": {
            "description": "User roles",
            "items": {
              "type": "string"
            },
            "type": "array",
            "uniqueItems": true
          },
          "surname": {
            "description": "User surname(s)",
            "minLength": 1,
            "type": "string"
          },
          "timeZone": {
            "default": "Europe/Madrid",
            "description": "Optional user time zone as an IANA id or ISO-8601 UTC offset",
            "example": "Europe/Madrid",
            "type": "string"
          }
        },
        "required": [
          "email",
          "name",
          "roles",
          "surname"
        ],
        "type": "object"
      },
      "Dataset": {
        "allOf": [
          {
            "$ref": "#/components/schemas/Resource"
          },
          {
            "properties": {
              "columns": {
                "description": "List of columns in this dataset.",
                "items": {
                  "$ref": "#/components/schemas/Column"
                },
                "type": "array"
              },
              "dataType": {
                "description": "Data type.",
                "enum": [
                  "RECORD",
                  "JSON",
                  "TEXT",
                  "BINARY",
                  "XML"
                ],
                "type": "string"
              },
              "identityScript": {
                "description": "Identity function script.",
                "type": "string"
              },
              "identityType": {
                "description": "Identity function type.",
                "enum": [
                  "DEFAULT",
                  "COLUMN",
                  "SCRIPT"
                ],
                "type": "string"
              },
              "lookup": {
                "description": "Flag to indicate if the dataset can be used for lookups. A lookup table might be referenced in other tables. Default is false.",
                "type": [
                  "boolean",
                  "null"
                ]
              },
              "merger": {
                "description": "Optional merger. The default merger uses the identity.",
                "type": "string"
              },
              "provenance": {
                "$ref": "#/components/schemas/DatasetProvenance",
                "description": "What this data set declares about record provenance: the format of the source system and of its identifier there. Optional.",
                "type": "null"
              },
              "qualityHash": {
                "description": "Server-controlled quality definition hash: a lowercase 64-character SHA-256 hexadecimal digest of this dataset's quality projection, including the hash of every nested dataset it references. Read-only.",
                "readOnly": true,
                "type": [
                  "string",
                  "null"
                ]
              },
              "type": {
                "type": "string",
                "enum": [
                  "dataset"
                ],
                "description": "Resource type."
              }
            },
            "type": "object"
          }
        ],
        "description": "Record structure and semantic column definitions, including identity, validation, nested datasets, and provenance.",
        "required": [
          "_id",
          "columns",
          "description",
          "type"
        ]
      },
      "EntitySaveRequestDto": {
        "description": "Request to synchronize an entity with its configured sources and destinations.",
        "properties": {
          "classifier": {
            "description": "Classifier identifier",
            "type": "string"
          },
          "create": {
            "description": "Create entity flag. Default is true. If not set, the entity is meant to be updated.",
            "type": "boolean"
          },
          "datasetViews": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Data-view per dataset the entity uses, keyed by dataset id, root included; blank means none. When present it is the whole answer and view is ignored; when absent, view names the root dataset's view and the nested datasets have none.",
            "type": "object"
          },
          "description": {
            "description": "Entity description",
            "type": "string"
          },
          "id": {
            "description": "Entity identifier",
            "type": "string"
          },
          "indexer": {
            "description": "Indexer identifier",
            "type": "string"
          },
          "merger": {
            "description": "Merger identifier",
            "type": "string"
          },
          "pipeline": {
            "description": "Pipeline identifier",
            "type": "string"
          },
          "sinks": {
            "description": "Sinks.",
            "items": {
              "$ref": "#/components/schemas/EntityResourceTransformationSinkDto"
            },
            "type": "array"
          },
          "sources": {
            "description": "Sources.",
            "items": {
              "$ref": "#/components/schemas/EntityResourceTransformationSourceDto"
            },
            "type": "array"
          },
          "steward": {
            "description": "Steward identifier",
            "type": "string"
          },
          "stewardCron": {
            "description": "Steward cron scheduling expression.",
            "type": "string"
          },
          "stewardCronType": {
            "description": "Steward cron scheduling type.",
            "enum": [
              "EVERY_5_MINUTES",
              "EVERY_15_MINUTES",
              "EVERY_30_MINUTES",
              "EVERY_HOUR",
              "EVERY_DAY_AT_2AM",
              "EXPERT"
            ],
            "type": "string"
          },
          "table": {
            "description": "Table identifier",
            "type": "string"
          },
          "type": {
            "description": "Entity type",
            "enum": [
              "NONE",
              "SEARCH",
              "DUPLICATES",
              "AUTO_DUPLICATES"
            ],
            "type": "string"
          },
          "view": {
            "description": "Data-view of the root dataset. Read only when datasetViews is absent; when the map is present it is the whole answer and this field is ignored.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "TzTokenDto": {
        "description": "Represents an access token",
        "properties": {
          "created": {
            "description": "Creation timestamp",
            "format": "date-time",
            "type": "string"
          },
          "enabled": {
            "default": false,
            "description": "Token enabled flag",
            "type": "boolean"
          },
          "expiresAt": {
            "description": "Expiration timestamp",
            "format": "date-time",
            "type": "string"
          },
          "id": {
            "description": "Token identifier",
            "type": "string"
          },
          "name": {
            "description": "Token name",
            "type": "string"
          },
          "roles": {
            "description": "Roles granted to this token",
            "items": {
              "type": "string"
            },
            "type": "array",
            "uniqueItems": true
          },
          "token": {
            "description": "The secret. Only populated by the create and rotate operations.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "EventResponseDto": {
        "description": "Represents an event.",
        "properties": {
          "errors": {
            "description": "List of errors. If HTTP response represents an error (4xx or 5xx) this will contain a list of errors. Otherwise, not present.",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "event": {
            "$ref": "#/components/schemas/EventDto",
            "description": "Event."
          },
          "messages": {
            "description": "Optional informational messages. If present, the request was successful and response code will be 2xx.",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          }
        },
        "type": "object"
      },
      "ResourceExportResponseDto": {
        "description": "Represents a response with exported resources.",
        "properties": {
          "errors": {
            "description": "List of errors. If HTTP response represents an error (4xx or 5xx) this will contain a list of errors. Otherwise, not present.",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "exchange": {
            "$ref": "#/components/schemas/ResourceExchangeDto",
            "description": "Exported resources."
          },
          "messages": {
            "description": "Optional informational messages. If present, the request was successful and response code will be 2xx.",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          }
        },
        "type": "object"
      },
      "RecordAuditPageResponseDto": {
        "description": "One page of audit events, newest first.",
        "properties": {
          "errors": {
            "description": "List of errors. If HTTP response represents an error (4xx or 5xx) this will contain a list of errors. Otherwise, not present.",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "events": {
            "description": "The events, ordered by occurrence instant descending then event id descending.",
            "items": {
              "$ref": "#/components/schemas/RecordAuditEventDto"
            },
            "type": "array"
          },
          "messages": {
            "description": "Optional informational messages. If present, the request was successful and response code will be 2xx.",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "nextCursor": {
            "description": "Hand this back as the cursor parameter to get the next older page. Absent when there is no older page. Opaque: do not parse it.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "MergerWeight": {
        "allOf": [
          {
            "$ref": "#/components/schemas/Resource"
          },
          {
            "properties": {
              "constant": {
                "type": "string"
              },
              "dataset": {
                "description": "The dataset to use.",
                "type": "string"
              },
              "key": {
                "description": "The key of the column to be used for the merge. By default, the first column of the dataset.",
                "type": "string"
              },
              "mergeSort": {
                "description": "The sort of merge to perform.",
                "enum": [
                  "HIGHEST_WEIGHT",
                  "LOWEST_WEIGHT"
                ],
                "type": "string"
              },
              "mergeType": {
                "description": "The type of merge to perform.",
                "enum": [
                  "RANDOM",
                  "CONSTANT",
                  "DATE",
                  "NUMBER",
                  "SCRIPT"
                ],
                "type": "string"
              },
              "script": {
                "type": "string"
              },
              "type": {
                "type": "string",
                "enum": [
                  "merger-weight"
                ],
                "description": "Resource type."
              }
            },
            "type": "object"
          }
        ],
        "description": "A weight merger is a resource aimed at merging records by calculating a weight for each record and then merging the values of each column, considering that the higher the weight, the more important the record/column.",
        "required": [
          "_id",
          "description",
          "mergeType",
          "type"
        ]
      },
      "IndexStatusResponseDto": {
        "description": "Indexing status for a record under async indexing",
        "properties": {
          "attempts": {
            "description": "Number of indexing attempts made.",
            "format": "int32",
            "type": [
              "integer",
              "null"
            ]
          },
          "error": {
            "description": "Error message if status is FAILED.",
            "type": [
              "string",
              "null"
            ]
          },
          "errors": {
            "description": "List of errors. If HTTP response represents an error (4xx or 5xx) this will contain a list of errors. Otherwise, not present.",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "messages": {
            "description": "Optional informational messages. If present, the request was successful and response code will be 2xx.",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "modifiedAt": {
            "description": "Timestamp of the last status change.",
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "queuedAt": {
            "description": "Timestamp when the record was first queued.",
            "format": "date-time",
            "type": [
              "string",
              "null"
            ]
          },
          "recordId": {
            "description": "Record identifier.",
            "type": "string"
          },
          "status": {
            "description": "Current indexing status.",
            "enum": [
              "PENDING",
              "INDEXED",
              "FAILED"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "Resource": {
        "description": "Represents a generic Golden resource. Specific resources extend this resource with more specific configuration fields.",
        "discriminator": {
          "propertyName": "type",
          "mapping": {
            "classifier-weight": "#/components/schemas/ClassifierWeight",
            "credentials": "#/components/schemas/Credential",
            "data-view": "#/components/schemas/DataView",
            "dataset": "#/components/schemas/Dataset",
            "indexer": "#/components/schemas/Indexer",
            "merger-weight": "#/components/schemas/MergerWeight",
            "pipeline": "#/components/schemas/Pipeline",
            "sink-http": "#/components/schemas/SinkHttp",
            "sink-jdbc": "#/components/schemas/SinkJdbc",
            "sink-kafka": "#/components/schemas/SinkKafka",
            "sink-table": "#/components/schemas/SinkTable",
            "source-file": "#/components/schemas/SourceFile",
            "source-jdbc": "#/components/schemas/SourceJdbc",
            "source-table": "#/components/schemas/SourceTable",
            "steward-bucket": "#/components/schemas/StewardBucket",
            "transformation": "#/components/schemas/Transformation"
          }
        },
        "properties": {
          "_id": {
            "description": "Resource identifier",
            "type": "string"
          },
          "category": {
            "type": "string",
            "description": "Functional category of the resource."
          },
          "dependency": {
            "$ref": "#/components/schemas/Dependency",
            "description": "Resources and objects related by configuration dependencies."
          },
          "description": {
            "description": "Resource description",
            "type": "string"
          },
          "id": {
            "type": "string",
            "writeOnly": true,
            "description": "Alternative input identifier; use _id in resource definitions."
          },
          "lastUpdated": {
            "description": "Last update timestamp",
            "format": "date-time",
            "type": "string"
          },
          "lockCount": {
            "description": "Resource lock count. Resource unlocked only if count is zero.",
            "format": "int32",
            "type": "integer"
          },
          "locked": {
            "description": "Locking flag to indicate if resource can be modified",
            "type": "boolean"
          },
          "type": {
            "description": "Resource type",
            "type": "string",
            "enum": [
              "classifier-weight",
              "credentials",
              "data-view",
              "dataset",
              "indexer",
              "merger-weight",
              "pipeline",
              "sink-http",
              "sink-jdbc",
              "sink-kafka",
              "sink-table",
              "source-file",
              "source-jdbc",
              "source-table",
              "steward-bucket",
              "transformation"
            ]
          },
          "validation": {
            "$ref": "#/components/schemas/Validation",
            "description": "Current validation result."
          }
        },
        "required": [
          "_id",
          "description",
          "type"
        ],
        "type": "object"
      },
      "TzSetPasswordRequestDto": {
        "description": "Set another user's password",
        "properties": {
          "password": {
            "description": "The new password (clear text). Must satisfy the deployment's policy.",
            "maxLength": 2147483647,
            "minLength": 8,
            "type": "string"
          }
        },
        "required": [
          "password"
        ],
        "type": "object"
      },
      "GoldenTextSearchRequestDto": {
        "description": "Free-text search request",
        "properties": {
          "entity": {
            "description": "Flag to return entity information. By default is false.",
            "type": "boolean"
          },
          "filter": {
            "$ref": "#/components/schemas/TableFilter",
            "description": "Optional metadata filter, the same one the record page sends. Applied to the records the search found, before ranking and paging, so the total and the page windows describe the filtered answer. Absent means no filtering."
          },
          "options": {
            "$ref": "#/components/schemas/SearchOptions",
            "description": "Search options. Identity, result cap and the deadline all apply."
          },
          "pageNumber": {
            "description": "Optional page number for multiple results. Default is 0.",
            "format": "int32",
            "minimum": 0,
            "type": "integer"
          },
          "pageSize": {
            "description": "Optional page size for multiple results. Default is 10. Page size, at most 1000. A larger value is a 400, not a clamped page.",
            "format": "int32",
            "maximum": 1000,
            "minimum": 1,
            "type": "integer"
          },
          "query": {
            "description": "The text to search for. Whitespace separates terms; double quotes hold a phrase together. Every term is probed against every searchable field, and a record that matches more of them ranks higher.",
            "type": "string"
          },
          "similarity": {
            "description": "Word-similarity floor, 0.0..1.0. Higher is stricter. Left unset it is 0.7, which admits a one-letter typo and a phone without its country prefix while keeping out everything that merely shares a mail domain or a dialling prefix -- word similarity scores a term against the best-matching fragment of a key, so a low floor is cleared by shared boilerplate alone. It governs only the approximate half of the search: a term found by identifier or by exact key is returned whatever this says, and a term that appears verbatim inside a key is matched by substring rather than by score, so a partial surname does not need a loose floor.",
            "format": "double",
            "type": "number"
          },
          "tableType": {
            "description": "Optional table scope. TABLE searches only the records that are in the table; HISTORY only the ones that have left it. When absent, both are searched and the answer is their union: a record that left the table by a merge is returned as the record it was merged into, annotated MERGED_FORWARD, so a value that is no longer in any column still leads to the record that is current today.",
            "enum": [
              "TABLE",
              "HISTORY"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "TableListResponseDto": {
        "description": "Represents a list of tables.",
        "properties": {
          "errors": {
            "description": "List of errors. If HTTP response represents an error (4xx or 5xx) this will contain a list of errors. Otherwise, not present.",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "messages": {
            "description": "Optional informational messages. If present, the request was successful and response code will be 2xx.",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "tables": {
            "description": "List of tables.",
            "items": {
              "$ref": "#/components/schemas/TableDto"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "GoldenBucketPageResponseDto": {
        "description": "Represents a page of lightweight buckets.",
        "properties": {
          "buckets": {
            "description": "List of lightweight buckets.",
            "items": {
              "$ref": "#/components/schemas/GoldenBucketLightResponseDto"
            },
            "type": "array"
          },
          "entity": {
            "$ref": "#/components/schemas/EntityDto",
            "description": "Entity."
          },
          "errors": {
            "description": "List of errors. If HTTP response represents an error (4xx or 5xx) this will contain a list of errors. Otherwise, not present.",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "messages": {
            "description": "Optional informational messages. If present, the request was successful and response code will be 2xx.",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "page": {
            "$ref": "#/components/schemas/Page",
            "description": "Page information."
          }
        },
        "type": "object"
      },
      "TzPageTzDefinitionResponse": {
        "properties": {
          "content": {
            "items": {
              "$ref": "#/components/schemas/TzDefinitionResponse"
            },
            "type": "array",
            "description": "Items in this result page."
          },
          "page": {
            "format": "int32",
            "type": "integer",
            "description": "Zero-based page number."
          },
          "size": {
            "format": "int32",
            "type": "integer",
            "description": "Requested page size."
          },
          "totalElements": {
            "format": "int64",
            "type": "integer",
            "description": "Total number of matching items."
          }
        },
        "type": "object",
        "description": "Page of scheduling definitions."
      },
      "TableImportRequestDto": {
        "description": "Represents a request to import tables.",
        "properties": {
          "exchange": {
            "$ref": "#/components/schemas/TableExchangeDto",
            "description": "Previously exported tables in JSON format."
          }
        },
        "required": [
          "exchange"
        ],
        "type": "object"
      },
      "EntityImportRequestDto": {
        "description": "Represents a request to import entities.",
        "properties": {
          "exchange": {
            "$ref": "#/components/schemas/EntityExchangeDto",
            "description": "Previously exported entities in JSON format."
          }
        },
        "required": [
          "exchange"
        ],
        "type": "object"
      },
      "EntityImportResponseDto": {
        "description": "Represents a response to import entities.",
        "properties": {
          "errors": {
            "description": "List of errors. If HTTP response represents an error (4xx or 5xx) this will contain a list of errors. Otherwise, not present.",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "imported": {
            "description": "Total number of imported entities.",
            "format": "int32",
            "type": "integer"
          },
          "messages": {
            "description": "Optional informational messages. If present, the request was successful and response code will be 2xx.",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "total": {
            "description": "Total number of entities.",
            "format": "int32",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "DependencyResponseDto": {
        "description": "The dependencies of one resource, table or entity.",
        "properties": {
          "dependency": {
            "$ref": "#/components/schemas/Dependency",
            "description": "What this item uses and what uses it."
          },
          "errors": {
            "description": "List of errors. If HTTP response represents an error (4xx or 5xx) this will contain a list of errors. Otherwise, not present.",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "messages": {
            "description": "Optional informational messages. If present, the request was successful and response code will be 2xx.",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          }
        },
        "type": "object"
      },
      "TableExportRequestDto": {
        "description": "Request to transform table data.",
        "properties": {
          "ids": {
            "description": "Table identifiers to be exported.",
            "items": {
              "type": "string"
            },
            "minItems": 1,
            "type": "array"
          }
        },
        "required": [
          "ids"
        ],
        "type": "object"
      },
      "Credential": {
        "allOf": [
          {
            "$ref": "#/components/schemas/Resource"
          },
          {
            "properties": {
              "credentialType": {
                "description": "Type of credential.",
                "enum": [
                  "NONE",
                  "PASSWORD",
                  "SSH",
                  "TOKEN"
                ],
                "type": "string"
              },
              "password": {
                "description": "Password.",
                "type": "string"
              },
              "sshPrivateCertificate": {
                "description": "Private SSH certificate.",
                "type": "string"
              },
              "sshPublicCertificate": {
                "description": "Public SSH certificate.",
                "type": "string"
              },
              "token": {
                "description": "Token.",
                "type": "string"
              },
              "user": {
                "description": "User name.",
                "type": "string"
              },
              "type": {
                "type": "string",
                "enum": [
                  "credentials"
                ],
                "description": "Resource type."
              }
            },
            "type": "object"
          }
        ],
        "description": "Credentials to authenticate resources.",
        "required": [
          "_id",
          "credentialType",
          "description",
          "type"
        ]
      },
      "EntityResponseDto": {
        "description": "Represents an entity.",
        "properties": {
          "entity": {
            "$ref": "#/components/schemas/EntityDto",
            "description": "Entity."
          },
          "errors": {
            "description": "List of errors. If HTTP response represents an error (4xx or 5xx) this will contain a list of errors. Otherwise, not present.",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "messages": {
            "description": "Optional informational messages. If present, the request was successful and response code will be 2xx.",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          }
        },
        "type": "object"
      },
      "DataScopeDto": {
        "description": "The data scope of one principal.",
        "properties": {
          "entities": {
            "additionalProperties": {
              "$ref": "#/components/schemas/RowScopeDto"
            },
            "description": "The granted entities. A null value means the whole entity; a row scope means only the matching rows. Entities absent from the map are invisible to the principal.",
            "type": "object"
          },
          "principalId": {
            "description": "Identifier of the user or access token to which the grant applies.",
            "type": "string"
          },
          "principalName": {
            "description": "The principal's display name, when it can still be resolved.",
            "type": "string"
          },
          "principalType": {
            "description": "The kind of principal.",
            "enum": [
              "USER",
              "ACCESS_TOKEN"
            ],
            "type": "string"
          },
          "updated": {
            "description": "When the scope was last written, epoch milliseconds.",
            "format": "int64",
            "type": "integer"
          },
          "updatedBy": {
            "description": "Who last wrote the scope.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "FileGolden": {
        "description": "Represents a Golden file.",
        "properties": {
          "contentType": {
            "description": "Content type as MIME type.",
            "type": "string"
          },
          "created": {
            "description": "Created instant ISO 8601 timestamp.",
            "format": "date-time",
            "type": "string"
          },
          "description": {
            "description": "File description.",
            "type": "string"
          },
          "id": {
            "description": "File identifier.",
            "type": "string"
          },
          "length": {
            "description": "Length in bytes.",
            "format": "int64",
            "type": "integer"
          },
          "name": {
            "description": "File name.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "GoldenSearchResponseDto": {
        "description": "Represents found records",
        "properties": {
          "count": {
            "description": "Total number of records found.",
            "format": "int32",
            "type": "integer"
          },
          "entity": {
            "$ref": "#/components/schemas/EntityDto",
            "description": "Optional entity that was searched. Only included if the entity flag was enabled."
          },
          "errors": {
            "description": "List of errors. If HTTP response represents an error (4xx or 5xx) this will contain a list of errors. Otherwise, not present.",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "messages": {
            "description": "Optional informational messages. If present, the request was successful and response code will be 2xx.",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "page": {
            "$ref": "#/components/schemas/Page",
            "description": "Page returned."
          },
          "result": {
            "description": "List of found records. If no records are found, this list will be empty.",
            "items": {
              "$ref": "#/components/schemas/Record"
            },
            "type": "array"
          },
          "search": {
            "additionalProperties": {
              "description": "A record represents an user data record as a JSON document with a unique identifier (_id), metadata (_metadata) and auditing (_audit). A record represents that main data asset in Golden and can also be used to store data in plain (text), XML and binary formats using a JSON structure."
            },
            "description": "Record that was used to search.",
            "properties": {
              "_audit": {
                "description": "Reserved audit member. Ordinary record responses omit this field, including expanded responses. Read events through the dedicated record audit endpoint. Requests carrying _audit are refused with 400.",
                "items": {
                  "$ref": "#/components/schemas/RecordAudit"
                },
                "readOnly": true,
                "type": "array"
              },
              "_id": {
                "type": "string"
              },
              "_metadata": {
                "$ref": "#/components/schemas/RecordMetadata",
                "description": "Server-owned metadata: quality, merge pointers, the last write. Read-only; requests must not include this member.",
                "readOnly": true
              },
              "_search": {
                "additionalProperties": {
                  "description": "Record search metadata."
                },
                "description": "Search metadata associated to the record, present on a search result. Read-only; requests must not include this member.",
                "properties": {
                  "exact": {
                    "description": "True when the match is exact. Decided by the engine, not by the score.",
                    "type": "boolean"
                  },
                  "index": {
                    "description": "Index that found this search result.",
                    "type": "string"
                  },
                  "match": {
                    "description": "Matched text.",
                    "type": "string"
                  },
                  "origin": {
                    "description": "How this result was reached, which is not what matched it.",
                    "enum": [
                      "DIRECT",
                      "CLUSTER",
                      "HISTORY",
                      "MERGED_FORWARD"
                    ],
                    "type": "string"
                  },
                  "rank": {
                    "description": "Search rank.",
                    "format": "double",
                    "type": "number"
                  },
                  "sourceId": {
                    "description": "The record this result was reached through, when that is not the record itself: the absorbed record for a merged-forward hit. Null otherwise.",
                    "type": "string"
                  },
                  "type": {
                    "description": "Search type.",
                    "enum": [
                      "ID",
                      "SOURCE",
                      "EXACT",
                      "PREFIX",
                      "SUFFIX",
                      "INFIX",
                      "FUZZY",
                      "FUZZY_LSH",
                      "GEOGRAPHIC",
                      "NONE"
                    ],
                    "type": "string"
                  }
                },
                "readOnly": true,
                "type": "object"
              },
              "_source": {
                "description": "Where the record came from: one entry per system that has contributed to it, with that system's own key for it. A caller may state this WHEN IT CREATES the record, and never afterwards: an inbound value on an update is refused with a 400. The engine adds to it \u2014 a load that reincorporates the record from a second system, a merge that unions what it absorbs \u2014 and nothing ever removes an entry. When a data set declares which source systems it accepts, a value outside that list is refused.",
                "items": {
                  "$ref": "#/components/schemas/RecordSourceEntry"
                },
                "type": "array"
              }
            },
            "type": "object"
          },
          "truncated": {
            "description": "True when the search stopped early -- it hit the result cap or the deadline -- so this is part of the answer and not all of it. A truncated search that says nothing cannot be told apart from one that found exactly this much.",
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "Transformation": {
        "allOf": [
          {
            "$ref": "#/components/schemas/Resource"
          },
          {
            "properties": {
              "carryOverData": {
                "description": "Carry over (copy) data from source to target.",
                "type": "boolean"
              },
              "carryOverMetadata": {
                "description": "Carry over (copy) metadata from source to target.",
                "type": "boolean"
              },
              "mappings": {
                "description": "The transformation mappings.",
                "items": {
                  "$ref": "#/components/schemas/TransformationMapping"
                },
                "type": "array"
              },
              "script": {
                "description": "Optional transformation script.",
                "type": "string"
              },
              "source": {
                "description": "The source dataset identifier.",
                "type": "string"
              },
              "target": {
                "description": "The target dataset identifier.",
                "type": "string"
              },
              "transformationType": {
                "description": "The transformation type.",
                "enum": [
                  "MAPPINGS",
                  "SCRIPT"
                ],
                "type": "string"
              },
              "type": {
                "type": "string",
                "enum": [
                  "transformation"
                ],
                "description": "Resource type."
              }
            },
            "type": "object"
          }
        ],
        "description": "A transformation is a resource that maps data from a source dataset to a target dataset.",
        "required": [
          "_id",
          "description",
          "mappings",
          "source",
          "target",
          "type"
        ]
      },
      "FileResponseDto": {
        "description": "Represents an file response.",
        "properties": {
          "errors": {
            "description": "List of errors. If HTTP response represents an error (4xx or 5xx) this will contain a list of errors. Otherwise, not present.",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "file": {
            "$ref": "#/components/schemas/FileGolden",
            "description": "File."
          },
          "messages": {
            "description": "Optional informational messages. If present, the request was successful and response code will be 2xx.",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          }
        },
        "type": "object"
      },
      "ResourceEnumsDto": {
        "description": "The data catalogues the resource editors are filled from.",
        "properties": {
          "allRoles": {
            "description": "System and user roles.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "allRolesLabels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "System and user roles labels.",
            "type": "object"
          },
          "classifiers": {
            "description": "Classifiers.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "classifiersLabels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Classifiers and labels.",
            "type": "object"
          },
          "credentials": {
            "description": "Credentials.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "credentialsLabels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Credentials and labels.",
            "type": "object"
          },
          "datasetByTable": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Each table's dataset, table id to dataset id.",
            "type": "object"
          },
          "datasetColumns": {
            "additionalProperties": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "description": "Datasets and columns.",
            "type": "object"
          },
          "datasetColumnsLabels": {
            "additionalProperties": {
              "additionalProperties": {
                "type": "string"
              },
              "type": "object"
            },
            "description": "Datasets, columns and labels.",
            "type": "object"
          },
          "datasetNesting": {
            "additionalProperties": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "description": "The datasets each dataset nests directly, dataset id to the ids its DATASET columns point at, in column order. Walked transitively by whoever needs every dataset an entity uses; a dataset with no nested column is absent.",
            "type": "object"
          },
          "datasets": {
            "description": "Datasets.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "datasetsLabels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Datasets and labels.",
            "type": "object"
          },
          "entities": {
            "description": "Entities.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "entitiesLabels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Entities and labels.",
            "type": "object"
          },
          "errors": {
            "description": "List of errors. If HTTP response represents an error (4xx or 5xx) this will contain a list of errors. Otherwise, not present.",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "foreignKeys": {
            "description": "Foreign keys.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "foreignKeysLabels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Foreign keys and labels.",
            "type": "object"
          },
          "indexerMappings": {
            "additionalProperties": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "description": "Indexers and mappings.",
            "type": "object"
          },
          "indexerMappingsLabels": {
            "additionalProperties": {
              "additionalProperties": {
                "type": "string"
              },
              "type": "object"
            },
            "description": "Indexers, mappings and labels.",
            "type": "object"
          },
          "indexers": {
            "description": "Indexers.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "indexersLabels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Indexers and labels.",
            "type": "object"
          },
          "mergers": {
            "description": "Mergers.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "mergersLabels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Mergers and labels.",
            "type": "object"
          },
          "messages": {
            "description": "Optional informational messages. If present, the request was successful and response code will be 2xx.",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "pipelines": {
            "description": "Pipelines.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "pipelinesLabels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Pipelines and labels.",
            "type": "object"
          },
          "roles": {
            "description": "Roles.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "rolesLabels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Roles and labels.",
            "type": "object"
          },
          "sinks": {
            "description": "Sinks.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "sinksLabels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Sinks and labels.",
            "type": "object"
          },
          "sources": {
            "description": "Sources.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "sourcesLabels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Sources and labels.",
            "type": "object"
          },
          "stewards": {
            "description": "Stewards.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "stewardsLabels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Stewards and labels.",
            "type": "object"
          },
          "systemRoles": {
            "description": "System roles.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "systemRolesLabels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "System roles labels.",
            "type": "object"
          },
          "tables": {
            "description": "Tables.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "tablesEntitiesResources": {
            "description": "Tables, entities and resources.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "tablesEntitiesResourcesLabels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Tables, entities and resources, with labels.",
            "type": "object"
          },
          "tablesLabels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Tables and labels.",
            "type": "object"
          },
          "transformations": {
            "description": "Transformations.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "transformationsLabels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Transformations and labels.",
            "type": "object"
          },
          "views": {
            "description": "Data-views.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "viewsByDataset": {
            "additionalProperties": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "description": "Views available per dataset, dataset id to view ids.",
            "type": "object"
          },
          "viewsLabels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Data-views and labels.",
            "type": "object"
          }
        },
        "type": "object"
      },
      "RecordCheckRequestDto": {
        "description": "A draft record to measure without writing it.",
        "properties": {
          "record": {
            "additionalProperties": {
              "description": "A record represents an user data record as a JSON document with a unique identifier (_id), metadata (_metadata) and auditing (_audit). A record represents that main data asset in Golden and can also be used to store data in plain (text), XML and binary formats using a JSON structure."
            },
            "description": "The record as it currently stands, values included.",
            "properties": {
              "_audit": {
                "description": "Reserved audit member. Ordinary record responses omit this field, including expanded responses. Read events through the dedicated record audit endpoint. Requests carrying _audit are refused with 400.",
                "items": {
                  "$ref": "#/components/schemas/RecordAudit"
                },
                "readOnly": true,
                "type": "array"
              },
              "_id": {
                "type": "string"
              },
              "_metadata": {
                "$ref": "#/components/schemas/RecordMetadata",
                "description": "Server-owned metadata: quality, merge pointers, the last write. Read-only; requests must not include this member.",
                "readOnly": true
              },
              "_search": {
                "additionalProperties": {
                  "description": "Record search metadata."
                },
                "description": "Search metadata associated to the record, present on a search result. Read-only; requests must not include this member.",
                "properties": {
                  "exact": {
                    "description": "True when the match is exact. Decided by the engine, not by the score.",
                    "type": "boolean"
                  },
                  "index": {
                    "description": "Index that found this search result.",
                    "type": "string"
                  },
                  "match": {
                    "description": "Matched text.",
                    "type": "string"
                  },
                  "origin": {
                    "description": "How this result was reached, which is not what matched it.",
                    "enum": [
                      "DIRECT",
                      "CLUSTER",
                      "HISTORY",
                      "MERGED_FORWARD"
                    ],
                    "type": "string"
                  },
                  "rank": {
                    "description": "Search rank.",
                    "format": "double",
                    "type": "number"
                  },
                  "sourceId": {
                    "description": "The record this result was reached through, when that is not the record itself: the absorbed record for a merged-forward hit. Null otherwise.",
                    "type": "string"
                  },
                  "type": {
                    "description": "Search type.",
                    "enum": [
                      "ID",
                      "SOURCE",
                      "EXACT",
                      "PREFIX",
                      "SUFFIX",
                      "INFIX",
                      "FUZZY",
                      "FUZZY_LSH",
                      "GEOGRAPHIC",
                      "NONE"
                    ],
                    "type": "string"
                  }
                },
                "readOnly": true,
                "type": "object"
              },
              "_source": {
                "description": "Where the record came from: one entry per system that has contributed to it, with that system's own key for it. A caller may state this WHEN IT CREATES the record, and never afterwards: an inbound value on an update is refused with a 400. The engine adds to it \u2014 a load that reincorporates the record from a second system, a merge that unions what it absorbs \u2014 and nothing ever removes an entry. When a data set declares which source systems it accepts, a value outside that list is refused.",
                "items": {
                  "$ref": "#/components/schemas/RecordSourceEntry"
                },
                "type": "array"
              }
            },
            "type": "object"
          }
        },
        "required": [
          "record"
        ],
        "type": "object"
      },
      "ColumnRuleDto": {
        "description": "Resolved value constraints for one column.",
        "properties": {
          "key": {
            "description": "The column key this rule is about.",
            "type": "string"
          },
          "mandatory": {
            "description": "True when a value is required. It is the negation of the column's 'empty' flag, with the token's own mandatoriness already folded in \u2014 a SOURCE column is mandatory whatever the flag says.",
            "type": "boolean"
          },
          "pattern": {
            "description": "An ECMAScript regular expression, anchored so that a substring test is a whole-string test. Null unless patternScope is PUBLISHED.",
            "type": "string"
          },
          "patternMessage": {
            "description": "Localized message for a pattern mismatch. Null unless patternScope is PUBLISHED.",
            "type": "string"
          },
          "patternMessageKey": {
            "description": "The stable catalogue key 'patternMessage' was rendered from. For diagnostics, and so a consumer can group across languages without parsing prose.",
            "type": "string"
          },
          "patternScope": {
            "description": "Whether the pattern is published, and if not, why not.",
            "enum": [
              "NONE",
              "PUBLISHED",
              "WITHHELD_DIALECT",
              "SERVER_ONLY_NORMALISED",
              "WITHHELD_UNCOMPILABLE"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "SinkJdbc": {
        "allOf": [
          {
            "$ref": "#/components/schemas/Resource"
          },
          {
            "properties": {
              "credentials": {
                "description": "The credentials to use for the JDBC connection.",
                "type": "string"
              },
              "dataset": {
                "description": "The dataset to use.",
                "type": "string"
              },
              "logicalDelete": {
                "description": "Flag to enable logical delete. By default, records are physically deleted.",
                "type": "boolean"
              },
              "operationColumn": {
                "description": "The column to use for logical delete.",
                "type": "string"
              },
              "properties": {
                "description": "The properties to use for the JDBC connection.",
                "items": {
                  "$ref": "#/components/schemas/Option"
                },
                "type": "array"
              },
              "table": {
                "description": "The name of the table to write. Eventually include catalog and schema.",
                "type": "string"
              },
              "timeoutMs": {
                "description": "The timeout in milliseconds for writing a record.",
                "format": "int32",
                "type": "integer",
                "default": 2000,
                "minimum": 1
              },
              "url": {
                "description": "The JDBC URL to connect to the database.",
                "type": "string"
              },
              "writeIdColumn": {
                "description": "The column to use for writing Golden identifier.",
                "type": "string"
              },
              "writeIdFlag": {
                "description": "Flag to enable writing Golden identifier. False by default.",
                "type": "boolean"
              },
              "writeTimestampColumn": {
                "description": "The column to use for writing Golden timestamp.",
                "type": "string"
              },
              "writeTimestampFlag": {
                "description": "Flag to enable writing Golden timestamp. False by default.",
                "type": "boolean"
              },
              "type": {
                "type": "string",
                "enum": [
                  "sink-jdbc"
                ],
                "description": "Resource type."
              }
            },
            "type": "object",
            "required": []
          }
        ],
        "description": "A JDBC sink is a resource that writes records to a JDBC database.",
        "required": [
          "_id",
          "description",
          "table",
          "timeoutMs",
          "type",
          "url"
        ]
      },
      "TzUserDto": {
        "description": "Represents a user",
        "properties": {
          "attributes": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Product-owned settings for this account, as opaque string values under namespaced keys. Empty when nothing is stored",
            "example": {
              "golden.list-density": "compact"
            },
            "type": "object"
          },
          "email": {
            "description": "User email. Must be unique.",
            "format": "email",
            "type": "string"
          },
          "enabled": {
            "default": false,
            "description": "User enabled flag",
            "type": "boolean"
          },
          "id": {
            "description": "User identifier",
            "type": "string"
          },
          "internal": {
            "default": true,
            "description": "Flag to indicate if user is internal or external (Single Sign-On)",
            "type": "boolean"
          },
          "language": {
            "description": "User language as a BCP 47 tag. Independent of Security's i18n languages",
            "example": "es-ES",
            "type": "string"
          },
          "lastAccess": {
            "description": "Last successful login as ISO timestamp",
            "format": "date-time",
            "type": "string"
          },
          "locked": {
            "default": false,
            "description": "User locked flag",
            "type": "boolean"
          },
          "name": {
            "description": "User name",
            "type": "string"
          },
          "roles": {
            "description": "Roles assigned to this user",
            "items": {
              "type": "string"
            },
            "type": "array",
            "uniqueItems": true
          },
          "surname": {
            "description": "User surname(s)",
            "type": "string"
          },
          "timeZone": {
            "description": "User time zone as an IANA id or ISO-8601 UTC offset",
            "example": "Europe/Madrid",
            "type": "string"
          },
          "totalFailedAccesses": {
            "description": "Total number of failed login attempts since last successful login",
            "format": "int32",
            "type": "integer"
          }
        },
        "required": [
          "email",
          "roles"
        ],
        "type": "object"
      },
      "GoldenSearchRequestDto": {
        "description": "Represents a record search request",
        "properties": {
          "entity": {
            "description": "Flag to return entity information. By default is false.",
            "type": "boolean"
          },
          "filter": {
            "$ref": "#/components/schemas/TableFilter",
            "description": "Optional metadata filter, the same one the record page and the free-text search send. Applied to the records the search found, before ranking and paging. Absent means no filtering."
          },
          "options": {
            "$ref": "#/components/schemas/SearchOptions",
            "description": "Optional search options. If not indicated, default search options are used."
          },
          "pageNumber": {
            "description": "Optional page number for multiple results. Default is 0.",
            "format": "int32",
            "minimum": 0,
            "type": "integer"
          },
          "pageSize": {
            "description": "Optional page size for multiple results. Default is 10. Page size, at most 1000. A larger value is a 400, not a clamped page.",
            "format": "int32",
            "maximum": 1000,
            "minimum": 1,
            "type": "integer"
          },
          "record": {
            "additionalProperties": {},
            "description": "Search record document: contains the column and values to search for. Search is performed using the indexer associated to the entity.",
            "properties": {
              "empty": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "tableType": {
            "description": "Optional table scope. TABLE searches only current records; HISTORY searches only historical records. When absent, the established combined search is preserved.",
            "enum": [
              "TABLE",
              "HISTORY"
            ],
            "type": "string"
          },
          "transformation": {
            "description": "Optional transformation name. If indicated, the transformation must exist and will be applied to the search record before searching.",
            "type": "string"
          }
        },
        "required": [
          "record"
        ],
        "type": "object"
      },
      "QualityMeasurementRequestDto": {
        "description": "A request to measure one entity's quality now.",
        "properties": {
          "entity": {
            "description": "The entity whose table is measured.",
            "type": "string"
          },
          "label": {
            "description": "What to call this measurement, at most 120 characters. Optional.",
            "type": "string"
          }
        },
        "required": [
          "entity"
        ],
        "type": "object"
      },
      "GoldenDeleteRequestDto": {
        "description": "Represents a record delete request",
        "properties": {
          "comment": {
            "description": "Optional comment describing why the record is being deleted. When present it is recorded on the REMOVE audit event, so it appears in the record's history.",
            "type": [
              "string",
              "null"
            ]
          },
          "recordId": {
            "description": "Record identifier.",
            "type": "string"
          }
        },
        "required": [
          "recordId"
        ],
        "type": "object"
      },
      "SourceFile": {
        "allOf": [
          {
            "$ref": "#/components/schemas/Resource"
          },
          {
            "properties": {
              "dataset": {
                "description": "The dataset to use.",
                "type": "string"
              },
              "format": {
                "description": "The format of the file.",
                "enum": [
                  "CSV",
                  "JSON"
                ],
                "type": "string"
              },
              "fromFilter": {
                "description": "The from instant filter (optional).",
                "format": "date-time",
                "type": "string"
              },
              "header": {
                "description": "The file has a header (only for CSV).",
                "type": "boolean"
              },
              "ignoreQuotes": {
                "description": "Ignore quotes in the file (only for CSV).",
                "type": "boolean"
              },
              "inputPattern": {
                "description": "The pattern of the file name. Supports wildcards.",
                "type": "string"
              },
              "separator": {
                "description": "The separator in the file (only for CSV).",
                "type": "string"
              },
              "toFilter": {
                "description": "The to instant filter (optional).",
                "format": "date-time",
                "type": "string"
              },
              "type": {
                "type": "string",
                "enum": [
                  "source-file"
                ],
                "description": "Resource type."
              }
            },
            "type": "object"
          }
        ],
        "description": "A source file is a resource that reads records from a Golden file.",
        "required": [
          "_id",
          "description",
          "format",
          "inputPattern",
          "type"
        ]
      },
      "LocalizedTextEntry": {
        "description": "One language's text.",
        "properties": {
          "language": {
            "description": "ISO 639-1 language code.",
            "type": "string"
          },
          "text": {
            "description": "The text in that language.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "GoldenClusterPageResponseDto": {
        "description": "Represents a page of logical duplicate clusters.",
        "properties": {
          "clusters": {
            "description": "List of logical clusters.",
            "items": {
              "$ref": "#/components/schemas/GoldenLogicalClusterDto"
            },
            "type": "array"
          },
          "entity": {
            "$ref": "#/components/schemas/EntityDto",
            "description": "Entity."
          },
          "errors": {
            "description": "List of errors. If HTTP response represents an error (4xx or 5xx) this will contain a list of errors. Otherwise, not present.",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "messages": {
            "description": "Optional informational messages. If present, the request was successful and response code will be 2xx.",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "page": {
            "description": "Current page number (0-based).",
            "format": "int32",
            "type": "integer"
          },
          "pageSize": {
            "description": "Number of clusters per page.",
            "format": "int32",
            "type": "integer"
          },
          "totalPages": {
            "description": "Total number of pages.",
            "format": "int32",
            "type": "integer"
          },
          "totalRecords": {
            "description": "Total number of matching clusters.",
            "format": "int32",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "SinkTable": {
        "allOf": [
          {
            "$ref": "#/components/schemas/Resource"
          },
          {
            "properties": {
              "dataset": {
                "description": "The dataset to use.",
                "type": "string"
              },
              "table": {
                "description": "The name of the table.",
                "type": "string"
              },
              "timeoutMs": {
                "description": "The timeout in milliseconds for writing a record.",
                "format": "int32",
                "type": "integer",
                "default": 2000,
                "minimum": 1
              },
              "type": {
                "type": "string",
                "enum": [
                  "sink-table"
                ],
                "description": "Resource type."
              }
            },
            "type": "object",
            "required": []
          }
        ],
        "description": "A sink table is a resource that writes records to a Golden table.",
        "required": [
          "_id",
          "description",
          "table",
          "timeoutMs",
          "type"
        ]
      },
      "GoldenIgnoreBucketRequestDto": {
        "description": "Represents a bucket ignore or un-ignore request",
        "properties": {
          "comment": {
            "description": "Optional comment for the bucket operation.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "SampleOperationResponseDto": {
        "description": "The run started by a sample install or remove.",
        "properties": {
          "errors": {
            "description": "List of errors. If HTTP response represents an error (4xx or 5xx) this will contain a list of errors. Otherwise, not present.",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "messages": {
            "description": "Optional informational messages. If present, the request was successful and response code will be 2xx.",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "run": {
            "$ref": "#/components/schemas/TzRunView",
            "description": "The queued run."
          },
          "sampleId": {
            "description": "The sample the task is operating on.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "TzTokenUpdateRequestDto": {
        "description": "Token update request",
        "properties": {
          "expiryDays": {
            "default": 365,
            "description": "Number of days until expiry, counted from now",
            "format": "int64",
            "maximum": 3650,
            "minimum": 1,
            "type": "integer"
          },
          "name": {
            "description": "Token name",
            "maxLength": 255,
            "minLength": 1,
            "type": "string"
          },
          "roles": {
            "description": "Roles granted to this token",
            "items": {
              "type": "string"
            },
            "minItems": 1,
            "type": "array",
            "uniqueItems": true
          }
        },
        "required": [
          "name",
          "roles"
        ],
        "type": "object"
      },
      "QualityIssuesMetricDto": {
        "description": "The issue-ranking payload of a daily metric snapshot.",
        "properties": {
          "entries": {
            "description": "The ranked problem types, most occurrences first. At most the stored limit; what falls outside it is summarised by the two 'other' members rather than dropped.",
            "items": {
              "$ref": "#/components/schemas/EntryDto"
            },
            "type": "array"
          },
          "otherOccurrenceCount": {
            "description": "Occurrences belonging to types beyond the stored limit.",
            "format": "int64",
            "type": "integer"
          },
          "otherTypeCount": {
            "description": "Types beyond the stored limit. A pager that reaches the end of 'entries' has not reached the end of the ranking while this is above zero.",
            "format": "int64",
            "type": "integer"
          },
          "qualityDefinition": {
            "description": "The combined quality definition the aggregation was taken against.",
            "type": "string"
          },
          "totalOccurrenceCount": {
            "description": "Every finding on every current record, stored types and beyond alike.",
            "format": "int64",
            "type": "integer"
          },
          "totalTypeCount": {
            "description": "Every distinct problem type, stored or not.",
            "format": "int64",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "EnumerationOption": {
        "description": "One entry of a column's closed vocabulary: its stored key and its label.",
        "properties": {
          "key": {
            "description": "The value stored in the record. Never translated.",
            "type": "string"
          },
          "value": {
            "description": "Label in the request language for resolved options, or the base language in a resource definition. Other translations appear in valueLocalized.",
            "type": "string"
          },
          "valueLocalized": {
            "description": "Every language this label was written in. Absent when it was written in one language with no language named, which is what value alone means.",
            "items": {
              "$ref": "#/components/schemas/LocalizedTextEntry"
            },
            "type": "array"
          }
        },
        "required": [
          "key",
          "value"
        ],
        "type": "object"
      },
      "DataView": {
        "allOf": [
          {
            "$ref": "#/components/schemas/Resource"
          },
          {
            "properties": {
              "dataset": {
                "description": "The dataset to use.",
                "type": "string"
              },
              "form": {
                "$ref": "#/components/schemas/ViewForm",
                "description": "How the record form is sectioned and rendered."
              },
              "list": {
                "$ref": "#/components/schemas/ViewList",
                "description": "How the record list renders."
              },
              "title": {
                "description": "Mustache template naming a record, e.g. \"{{apellido1}} {{apellido2}}, {{nombre}}\", in one language. See GoldenTemplate. The other languages, when there are any, are in titleLocalized.",
                "type": "string"
              },
              "titleLocalized": {
                "description": "Every language this record title was written in.",
                "items": {
                  "$ref": "#/components/schemas/LocalizedTextEntry"
                },
                "type": "array"
              },
              "type": {
                "type": "string",
                "enum": [
                  "data-view"
                ],
                "description": "Resource type."
              }
            },
            "type": "object"
          }
        ],
        "description": "A data-view governs how a dataset's records are presented.",
        "required": [
          "_id",
          "description",
          "type"
        ]
      },
      "EntityAccessResponseDto": {
        "description": "An entity's access list.",
        "properties": {
          "entity": {
            "description": "The entity.",
            "type": "string"
          },
          "errors": {
            "description": "List of errors. If HTTP response represents an error (4xx or 5xx) this will contain a list of errors. Otherwise, not present.",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "messages": {
            "description": "Optional informational messages. If present, the request was successful and response code will be 2xx.",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "principals": {
            "description": "The principals granted the entity. Empty means only ADMINs see it.",
            "items": {
              "$ref": "#/components/schemas/EntityAccessEntryDto"
            },
            "type": "array"
          },
          "scopeColumn": {
            "description": "The entity's scope column, or null when rows cannot be scoped.",
            "type": "string"
          },
          "scopeIndexState": {
            "description": "State of the scope column's index: NONE, BUILDING, VALID or FAILED.",
            "enum": [
              "NONE",
              "BUILDING",
              "VALID",
              "FAILED"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "TzDefinitionRequest": {
        "properties": {
          "cronExpression": {
            "type": "string",
            "description": "Quartz cron expression used when scheduleKind is CRON."
          },
          "description": {
            "type": "string",
            "description": "Human-readable description."
          },
          "enabled": {
            "type": "boolean",
            "description": "Whether the definition is enabled for scheduled execution."
          },
          "intervalSeconds": {
            "format": "int64",
            "type": "integer",
            "description": "Interval between scheduled starts, in seconds, for INTERVAL schedules."
          },
          "jobType": {
            "type": "string",
            "description": "Registered job type identifier. Use the job types operation to list supported values."
          },
          "maxAttempts": {
            "format": "int32",
            "type": "integer",
            "description": "Maximum number of attempts, including the first attempt."
          },
          "maxDuration": {
            "type": "string",
            "description": "Maximum permitted duration of one attempt."
          },
          "misfirePolicy": {
            "enum": [
              "FIRE_ONCE",
              "SKIP"
            ],
            "type": "string",
            "description": "Handling of a missed scheduled start: FIRE_ONCE starts once and advances to the next occurrence; SKIP advances without running the missed occurrence."
          },
          "name": {
            "type": "string",
            "description": "Human-readable definition name."
          },
          "overlapPolicy": {
            "enum": [
              "SKIP",
              "ALLOW"
            ],
            "type": "string",
            "description": "Handling when the definition already has a live run: SKIP skips this occurrence; ALLOW permits overlap."
          },
          "rawInput": {
            "type": "string",
            "description": "Job input encoded as a JSON string, not as a nested JSON object."
          },
          "retryBackoff": {
            "type": "string",
            "description": "Initial delay before retrying a failed attempt."
          },
          "retryMaxBackoff": {
            "type": "string",
            "description": "Upper limit for retry delay."
          },
          "runAt": {
            "format": "date-time",
            "type": "string",
            "description": "Scheduled instant for a ONCE definition."
          },
          "scheduleKind": {
            "enum": [
              "CRON",
              "INTERVAL",
              "ONCE",
              "MANUAL"
            ],
            "type": "string",
            "description": "Scheduling mode: CRON, fixed INTERVAL, ONCE, or MANUAL."
          },
          "timeZone": {
            "type": "string",
            "description": "Time zone used to evaluate the schedule."
          },
          "validFrom": {
            "format": "date-time",
            "type": "string",
            "description": "Start of the scheduling validity window."
          },
          "validUntil": {
            "format": "date-time",
            "type": "string",
            "description": "End of the scheduling validity window."
          }
        },
        "type": "object",
        "description": "Complete editable scheduling definition."
      },
      "EventStatsResponseDto": {
        "description": "Represents event system statistics.",
        "properties": {
          "errors": {
            "description": "List of errors. If HTTP response represents an error (4xx or 5xx) this will contain a list of errors. Otherwise, not present.",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "messages": {
            "description": "Optional informational messages. If present, the request was successful and response code will be 2xx.",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "stats": {
            "additionalProperties": {
              "$ref": "#/components/schemas/EventStats"
            },
            "description": "Event statistics map indexed by sink.",
            "type": "object"
          }
        },
        "type": "object"
      },
      "GoldenEscalateRequestDto": {
        "description": "Escalates a bucket or cluster to an administrator, with a note",
        "properties": {
          "comment": {
            "description": "Optional comment for the bucket operation.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "EntitySynchronizationResponseDto": {
        "description": "Represents an entity synchronization response.",
        "properties": {
          "entity": {
            "$ref": "#/components/schemas/EntityDto",
            "description": "Entity synchronized."
          },
          "errors": {
            "description": "List of errors. If HTTP response represents an error (4xx or 5xx) this will contain a list of errors. Otherwise, not present.",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "messages": {
            "description": "Optional informational messages. If present, the request was successful and response code will be 2xx.",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "run": {
            "$ref": "#/components/schemas/TzRunView",
            "description": "The queued run, or null when the entity was already up to date."
          }
        },
        "type": "object"
      },
      "EventDeleteResponseDto": {
        "description": "Represents a set of delete events.",
        "properties": {
          "deleted": {
            "description": "Number of deleted events.",
            "format": "int32",
            "type": "integer"
          },
          "errors": {
            "description": "List of errors. If HTTP response represents an error (4xx or 5xx) this will contain a list of errors. Otherwise, not present.",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "messages": {
            "description": "Optional informational messages. If present, the request was successful and response code will be 2xx.",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          }
        },
        "type": "object"
      },
      "ConfigurationVersionResponseDto": {
        "description": "Represents product version.",
        "properties": {
          "errors": {
            "description": "List of errors. If HTTP response represents an error (4xx or 5xx) this will contain a list of errors. Otherwise, not present.",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "messages": {
            "description": "Optional informational messages. If present, the request was successful and response code will be 2xx.",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "version": {
            "description": "Build version",
            "example": "1.0.0",
            "type": "string"
          }
        },
        "type": "object"
      },
      "TzTypeResponse": {
        "properties": {
          "description": {
            "type": "string",
            "description": "Human-readable description."
          },
          "jobType": {
            "type": "string",
            "description": "Registered job type identifier. Use the job types operation to list supported values."
          },
          "maxConcurrent": {
            "format": "int32",
            "type": "integer",
            "description": "Maximum concurrent executions for this job type."
          }
        },
        "type": "object",
        "description": "Registered job type and concurrency limit."
      },
      "ResourceImportRequestDto": {
        "description": "Represents a request to import resources.",
        "properties": {
          "exchange": {
            "$ref": "#/components/schemas/ResourceExchangeDto",
            "description": "Previously exported resources in JSON format."
          }
        },
        "required": [
          "exchange"
        ],
        "type": "object"
      },
      "TableOperationLoadRequestDto": {
        "description": "Represents a request to load data into a table",
        "properties": {
          "maxRecords": {
            "description": "Optional maximum number of records to process (use <0  to process all records). Default is -1 (process all source records).",
            "format": "int32",
            "type": "integer"
          },
          "operation": {
            "description": "Load operation. Default is INSERT records.",
            "enum": [
              "INSERT",
              "UPSERT",
              "DELETE"
            ],
            "type": "string"
          },
          "pipeline": {
            "description": "Optional pipeline identifier. If indicated, the pipeline will be applied after the optional transformation.",
            "type": "string"
          },
          "sampleRecords": {
            "description": "Optionally use sampling when processing records (use <=0 to avoid sampling). Default is -1 (no sampling).",
            "format": "int32",
            "type": "integer"
          },
          "sinkTable": {
            "description": "Sink table identifier. Must exist.",
            "minLength": 1,
            "type": "string"
          },
          "source": {
            "description": "Source or table identifier. Must exist.",
            "minLength": 1,
            "type": "string"
          },
          "transformation": {
            "description": "Optional transformation name. If indicated, the transformation will be applied to the source data after reading from the source.",
            "type": "string"
          }
        },
        "required": [
          "sinkTable",
          "source"
        ],
        "type": "object"
      },
      "SourceTable": {
        "allOf": [
          {
            "$ref": "#/components/schemas/Resource"
          },
          {
            "properties": {
              "dataset": {
                "description": "The dataset to use.",
                "type": "string"
              },
              "fromFilter": {
                "description": "The from instant filter (optional).",
                "format": "date-time",
                "type": "string"
              },
              "table": {
                "description": "The name of the table.",
                "type": "string"
              },
              "toFilter": {
                "description": "The to instant filter (optional).",
                "format": "date-time",
                "type": "string"
              },
              "type": {
                "type": "string",
                "enum": [
                  "source-table"
                ],
                "description": "Resource type."
              }
            },
            "type": "object"
          }
        ],
        "description": "A table source is a resource that reads records from a Golden table.",
        "required": [
          "_id",
          "description",
          "table",
          "type"
        ]
      },
      "ViewDto": {
        "description": "A data-view resolved against its dataset.",
        "properties": {
          "columns": {
            "description": "Columns the record list shows, in order.",
            "items": {
              "$ref": "#/components/schemas/ViewColumnDto"
            },
            "type": "array"
          },
          "dataset": {
            "description": "The dataset this view presents. A nested column's datasetView names the nested dataset, which is how a consumer tells whose records an item is.",
            "type": "string"
          },
          "diagnostics": {
            "description": "What the resolution had to drop, and why.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "id": {
            "description": "The data-view this was resolved from. Null for a draft resolved unsaved.",
            "type": "string"
          },
          "sections": {
            "description": "The record form's sections, in order.",
            "items": {
              "$ref": "#/components/schemas/ViewSectionDto"
            },
            "type": "array"
          },
          "title": {
            "description": "Expression that names a record, already resolved: the authored one, or one built from the dataset's title columns, its identity or the record id. Never blank, so a consumer renders it without a fallback of its own.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "SearchOptions": {
        "description": "Search options",
        "properties": {
          "combine": {
            "description": "How populated search fields combine: ANY returns records found through any field; ALL requires all populated fields. API default: ANY. The web interface requests ALL.",
            "enum": [
              "ALL",
              "ANY"
            ],
            "type": "string"
          },
          "exact": {
            "description": "Exact search type. Default is EXACT. Can not be null.",
            "enum": [
              "EXACT",
              "PREFIX",
              "SUFFIX",
              "INFIX"
            ],
            "type": "string",
            "default": "EXACT"
          },
          "fieldModes": {
            "additionalProperties": {
              "description": "How one search field is probed.",
              "enum": [
                "MAPPING",
                "EXACT",
                "SIMILAR"
              ],
              "type": "string"
            },
            "description": "Per-field probe mode, keyed by dataset column. A column absent from this map is probed with its mapping's own matching type. Only meaningful for the structured search: free text always probes by word similarity.",
            "type": "object"
          },
          "fuzzy": {
            "description": "Fuzzy search flag. If enabled, the search also considers fuzzy search. Default is true.",
            "type": "boolean"
          },
          "fuzzyMaximumTypos": {
            "description": "Fuzzy search maximum number of typographical errors considered during the search. Must be positive (at least 1 typo). Default is 2.",
            "format": "int32",
            "minimum": 1,
            "type": "integer"
          },
          "geo": {
            "description": "Geographic search flag. If enabled, the search also considers geographic search. Default is true.",
            "type": "boolean"
          },
          "geoPrecision": {
            "description": "Geographical precision for searching.",
            "enum": [
              "L1",
              "L2",
              "L3",
              "L4",
              "L5",
              "L6",
              "L7",
              "L8",
              "L9",
              "L10"
            ],
            "type": "string",
            "default": "L6"
          },
          "geoSteps": {
            "description": "Steps around center to create a geographical search area. Must be positive. Default is 1.",
            "format": "int32",
            "minimum": 1,
            "type": "integer"
          },
          "identity": {
            "description": "Identity search flag. If enabled and record identity is available, the search is done by identity. Default is true.",
            "type": "boolean"
          },
          "maximumDuration": {
            "description": "Maximum duration of the search. Default is 5 seconds.",
            "type": "string"
          },
          "maximumResults": {
            "description": "Maximum number of search results. Default is -1 (no limits).",
            "format": "int32",
            "type": "integer"
          },
          "provenance": {
            "description": "Provenance search flag. If enabled, a free-text term is also looked up as a source system's own key for a record (_source._src_id), right after the identifier. Default is true.",
            "type": "boolean"
          },
          "radiusMeters": {
            "description": "Radius in metres for a geographic search. When positive it is used as-is; when zero or negative the radius falls back to geoPrecision, which is what the search did before this field existed. Default is 0 (fall back).",
            "format": "double",
            "type": "number"
          }
        },
        "required": [],
        "type": "object"
      },
      "EntityAccessEntryDto": {
        "description": "One principal granted an entity, whole or by row scope.",
        "properties": {
          "principalId": {
            "description": "The principal's identifier.",
            "type": "string"
          },
          "principalName": {
            "description": "The principal's display name, when it can still be resolved.",
            "type": "string"
          },
          "principalType": {
            "description": "The kind of principal.",
            "enum": [
              "USER",
              "ACCESS_TOKEN"
            ],
            "type": "string"
          },
          "values": {
            "description": "The allowed values of the scope column, or null for the whole entity.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "GoldenSplitBucketRequestDto": {
        "description": "Represents a bucket split request",
        "properties": {
          "comment": {
            "description": "Optional comment for the bucket operation.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "GoldenDeleteResponseDto": {
        "description": "Represents delete record result",
        "properties": {
          "deleted": {
            "description": "Indicates if the record was deleted.",
            "type": "boolean"
          },
          "errors": {
            "description": "List of errors. If HTTP response represents an error (4xx or 5xx) this will contain a list of errors. Otherwise, not present.",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "messages": {
            "description": "Optional informational messages. If present, the request was successful and response code will be 2xx.",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "record": {
            "additionalProperties": {
              "description": "A record represents an user data record as a JSON document with a unique identifier (_id), metadata (_metadata) and auditing (_audit). A record represents that main data asset in Golden and can also be used to store data in plain (text), XML and binary formats using a JSON structure."
            },
            "description": "Deleted record",
            "properties": {
              "_audit": {
                "description": "Reserved audit member. Ordinary record responses omit this field, including expanded responses. Read events through the dedicated record audit endpoint. Requests carrying _audit are refused with 400.",
                "items": {
                  "$ref": "#/components/schemas/RecordAudit"
                },
                "readOnly": true,
                "type": "array"
              },
              "_id": {
                "type": "string"
              },
              "_metadata": {
                "$ref": "#/components/schemas/RecordMetadata",
                "description": "Server-owned metadata: quality, merge pointers, the last write. Read-only; requests must not include this member.",
                "readOnly": true
              },
              "_search": {
                "additionalProperties": {
                  "description": "Record search metadata."
                },
                "description": "Search metadata associated to the record, present on a search result. Read-only; requests must not include this member.",
                "properties": {
                  "exact": {
                    "description": "True when the match is exact. Decided by the engine, not by the score.",
                    "type": "boolean"
                  },
                  "index": {
                    "description": "Index that found this search result.",
                    "type": "string"
                  },
                  "match": {
                    "description": "Matched text.",
                    "type": "string"
                  },
                  "origin": {
                    "description": "How this result was reached, which is not what matched it.",
                    "enum": [
                      "DIRECT",
                      "CLUSTER",
                      "HISTORY",
                      "MERGED_FORWARD"
                    ],
                    "type": "string"
                  },
                  "rank": {
                    "description": "Search rank.",
                    "format": "double",
                    "type": "number"
                  },
                  "sourceId": {
                    "description": "The record this result was reached through, when that is not the record itself: the absorbed record for a merged-forward hit. Null otherwise.",
                    "type": "string"
                  },
                  "type": {
                    "description": "Search type.",
                    "enum": [
                      "ID",
                      "SOURCE",
                      "EXACT",
                      "PREFIX",
                      "SUFFIX",
                      "INFIX",
                      "FUZZY",
                      "FUZZY_LSH",
                      "GEOGRAPHIC",
                      "NONE"
                    ],
                    "type": "string"
                  }
                },
                "readOnly": true,
                "type": "object"
              },
              "_source": {
                "description": "Where the record came from: one entry per system that has contributed to it, with that system's own key for it. A caller may state this WHEN IT CREATES the record, and never afterwards: an inbound value on an update is refused with a 400. The engine adds to it \u2014 a load that reincorporates the record from a second system, a merge that unions what it absorbs \u2014 and nothing ever removes an entry. When a data set declares which source systems it accepts, a value outside that list is refused.",
                "items": {
                  "$ref": "#/components/schemas/RecordSourceEntry"
                },
                "type": "array"
              }
            },
            "type": "object"
          }
        },
        "type": "object"
      },
      "GoldenBucketFullResponseDto": {
        "description": "Represents a bucket with all available information.",
        "properties": {
          "classification": {
            "description": "Bucket classification outcome.",
            "enum": [
              "MATCH",
              "NON_MATCH",
              "REVIEW",
              "IGNORE"
            ],
            "type": "string"
          },
          "columnMap": {
            "additionalProperties": {
              "$ref": "#/components/schemas/Column"
            },
            "description": "Map of columns with detailed information.",
            "type": "object"
          },
          "columns": {
            "description": "Column names in this bucket",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "count": {
            "description": "Number of records in the bucket.",
            "format": "int32",
            "type": "integer"
          },
          "details": {
            "description": "Optional classification information",
            "items": {
              "$ref": "#/components/schemas/ClassificationDetail"
            },
            "type": "array"
          },
          "deviation": {
            "description": "Score standard deviation.",
            "format": "int32",
            "type": "integer"
          },
          "entity": {
            "$ref": "#/components/schemas/EntityDto",
            "description": "Entity that owns this bucket"
          },
          "errors": {
            "description": "List of errors. If HTTP response represents an error (4xx or 5xx) this will contain a list of errors. Otherwise, not present.",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "escalated": {
            "description": "True when a steward escalated this group to an administrator (data access scopes).",
            "type": "boolean"
          },
          "escalatedAt": {
            "description": "When it was escalated, when it is escalated.",
            "format": "date-time",
            "type": "string"
          },
          "escalatedBy": {
            "description": "Who escalated it, when it is escalated.",
            "type": "string"
          },
          "escalationNote": {
            "description": "The steward's note, when it is escalated.",
            "type": "string"
          },
          "historyKept": {
            "description": "True when the entity keeps history, so the records a merge absorbs are archived rather than gone. False means a merge is irreversible: there is no copy of the sources and no undo to build on.",
            "type": "boolean"
          },
          "id": {
            "description": "Bucket identifier.",
            "type": "string"
          },
          "ignore": {
            "description": "Ignore flag.",
            "type": "boolean"
          },
          "index": {
            "description": "Index that created this bucket",
            "type": "string"
          },
          "judgedPairs": {
            "description": "The pairs of records inside this group that somebody recorded as different, each as two record ids. A pair is judged when either record lists the other in _metadata._unrelated. A merge whose selection holds one of these pairs is refused unless it crosses the separation on purpose. Empty when there is none.",
            "items": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "type": "array"
          },
          "key": {
            "description": "Bucket key.",
            "type": "string"
          },
          "merged": {
            "$ref": "#/components/schemas/Record",
            "description": "Candidate to merged record"
          },
          "messages": {
            "description": "Optional informational messages. If present, the request was successful and response code will be 2xx.",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "mixed": {
            "description": "True when at least one member of the group lies outside the caller's data scope. Always false for an unrestricted caller. The group is returned whole; the members outside are listed in `outOfScope`.",
            "type": "boolean"
          },
          "outOfScope": {
            "description": "Identifiers of the members that lie outside the caller's data scope. They are returned in `records` like the others so the group can be read whole, and listed here so the client can mark them. Empty for an unrestricted caller.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "reasoning": {
            "description": "Bucket classification reasoning.",
            "type": "string"
          },
          "records": {
            "description": "Records in this bucket",
            "items": {
              "$ref": "#/components/schemas/Record"
            },
            "type": "array"
          },
          "score": {
            "description": "Bucket average score (0-100).",
            "format": "int32",
            "type": "integer"
          },
          "split": {
            "description": "Candidates to split records",
            "items": {
              "$ref": "#/components/schemas/Record"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "TzNextRunsResponse": {
        "properties": {
          "nextRuns": {
            "items": {
              "format": "date-time",
              "type": "string"
            },
            "type": "array",
            "description": "Upcoming execution instants for the schedule."
          }
        },
        "type": "object",
        "description": "Preview of upcoming scheduled instants."
      },
      "ViewList": {
        "description": "Record list presentation for a data-view.",
        "properties": {
          "columns": {
            "description": "Ordered columns the list shows.",
            "items": {
              "$ref": "#/components/schemas/ViewListColumn"
            },
            "type": "array"
          },
          "summaries": {
            "description": "Summary per collection or nested-dataset column.",
            "items": {
              "$ref": "#/components/schemas/ColumnSummary"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "LookupPageResponseDto": {
        "description": "A page of a lookup table's values.",
        "properties": {
          "errors": {
            "description": "List of errors. If HTTP response represents an error (4xx or 5xx) this will contain a list of errors. Otherwise, not present.",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "key": {
            "description": "The column that holds the catalogue's values.",
            "type": "string"
          },
          "limit": {
            "description": "The maximum number of entries this page could hold.",
            "format": "int32",
            "type": "integer"
          },
          "messages": {
            "description": "Optional informational messages. If present, the request was successful and response code will be 2xx.",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "narrowed": {
            "description": "True when the caller is restricted on the entity owning this catalogue and its scope column is the catalogue's key, so the values are narrowed to the caller's own.",
            "type": "boolean"
          },
          "offset": {
            "description": "The offset this page starts at.",
            "format": "int32",
            "type": "integer"
          },
          "table": {
            "description": "The lookup table read.",
            "type": "string"
          },
          "total": {
            "description": "Number of distinct values matching the query, across every page.",
            "format": "int64",
            "type": "integer"
          },
          "values": {
            "description": "The entries of this page, ordered by value.",
            "items": {
              "$ref": "#/components/schemas/LookupValueDto"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "EventPageResponseDto": {
        "description": "Represents a page of events",
        "properties": {
          "errors": {
            "description": "List of errors. If HTTP response represents an error (4xx or 5xx) this will contain a list of errors. Otherwise, not present.",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "events": {
            "description": "List of events in this page.",
            "items": {
              "$ref": "#/components/schemas/EventDto"
            },
            "type": "array"
          },
          "messages": {
            "description": "Optional informational messages. If present, the request was successful and response code will be 2xx.",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "page": {
            "$ref": "#/components/schemas/Page",
            "description": "Page information."
          },
          "sink": {
            "description": "Sink identifier.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "TzTokenRotateRequestDto": {
        "description": "Token rotation request",
        "properties": {
          "expiryDays": {
            "description": "Days until the new secret expires, counted from now. Required.",
            "format": "int64",
            "maximum": 3650,
            "minimum": 1,
            "type": "integer"
          }
        },
        "required": [
          "expiryDays"
        ],
        "type": "object"
      },
      "TransformationMapping": {
        "description": "A transformation mapping is a mapping between columns of two datasets.",
        "properties": {
          "constant": {
            "description": "The constant value used as source.",
            "type": "string"
          },
          "delimiter": {
            "description": "The delimiter used to concatenate source columns. By default, a space.",
            "type": "string"
          },
          "description": {
            "description": "The description of the transformation mapping.",
            "type": "string"
          },
          "id": {
            "description": "The identifier of the transformation mapping.",
            "type": "string"
          },
          "mappingType": {
            "description": "The type of transformation mapping.",
            "enum": [
              "COLUMN",
              "CONSTANT"
            ],
            "type": "string"
          },
          "source": {
            "description": "The source columns of the transformation mapping.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "target": {
            "description": "The target columns of the transformation mapping.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "GoldenClusterEvaluationResponseDto": {
        "description": "The exhaustive, on-demand evaluation of one cluster: every pair of records compared through the entity's classifier \u2014 n(n-1)/2 comparisons, the half matrix. The stored classification only ever measures adjacent pairs; this answers the expert's deeper question of which records group with which.",
        "properties": {
          "clusterId": {
            "description": "Cluster identifier.",
            "type": "string"
          },
          "errors": {
            "description": "List of errors. If HTTP response represents an error (4xx or 5xx) this will contain a list of errors. Otherwise, not present.",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "messages": {
            "description": "Optional informational messages. If present, the request was successful and response code will be 2xx.",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "pairs": {
            "description": "Every pair of records, compared: n(n-1)/2 entries.",
            "items": {
              "$ref": "#/components/schemas/GoldenPairComparisonDto"
            },
            "type": "array"
          },
          "recordIds": {
            "description": "Record identifiers, in the order the pairs reference them.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "GoldenDeleteBucketRequestDto": {
        "description": "Represents a bucket delete request",
        "properties": {
          "comment": {
            "description": "Optional comment for the bucket operation.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "GoldenUndoMergeRequestDto": {
        "description": "Represents a request to undo the merge that produced a record",
        "properties": {
          "comment": {
            "description": "Optional comment describing why the merge is being undone. When present it is recorded on the operation, so it appears in the history of both the record that is deleted and the records that come back.",
            "type": [
              "string",
              "null"
            ]
          },
          "recordId": {
            "description": "Identifier of the record a merge produced.",
            "type": "string"
          }
        },
        "required": [
          "recordId"
        ],
        "type": "object"
      },
      "GoldenLogicalClusterDto": {
        "description": "A logical duplicate group joining candidate groups that share at least one record.",
        "properties": {
          "bucketIds": {
            "description": "Candidate-group identifiers in this cluster, in ascending order.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "classification": {
            "description": "Classification of the representative bucket.",
            "enum": [
              "MATCH",
              "NON_MATCH",
              "REVIEW",
              "IGNORE"
            ],
            "type": "string"
          },
          "clusterId": {
            "description": "Cluster identifier: the smallest candidate-group identifier in the cluster.",
            "type": "string"
          },
          "deviation": {
            "description": "Deviation score of the representative bucket (0-100).",
            "format": "int32",
            "type": "integer"
          },
          "escalated": {
            "description": "True when a steward escalated this cluster to an administrator (data access scopes).",
            "type": "boolean"
          },
          "escalatedAt": {
            "description": "When it was escalated, when it is escalated.",
            "format": "date-time",
            "type": "string"
          },
          "escalatedBy": {
            "description": "Who escalated it, when it is escalated.",
            "type": "string"
          },
          "escalationNote": {
            "description": "The steward's note, when it is escalated.",
            "type": "string"
          },
          "ignore": {
            "description": "Whether the representative bucket is ignored.",
            "type": "boolean"
          },
          "label": {
            "description": "Human-friendly label derived from the indexer mapping keys of a sample record (e.g. 'Gilbert Chable' for a name-sur1-fuzzy cluster). Falls back to clusterId when no sample is available.",
            "type": "string"
          },
          "mappingId": {
            "description": "Indexer mapping id that produced the cluster.",
            "type": "string"
          },
          "reasoning": {
            "description": "Classification reasoning of the representative bucket.",
            "type": "string"
          },
          "recordCount": {
            "description": "Distinct records in the listed candidate groups. Ignore and classification filters restrict both bucketIds and this count.",
            "format": "int32",
            "type": "integer"
          },
          "resolved": {
            "description": "True when every pair of records inside this group has been recorded as different, so there is nothing left to decide \u2014 which requires every bucket of the group to be marked, not just the one the other fields are read from. Groups like this are left out of the listing unless it is asked for them with 'resolved=true'.",
            "type": "boolean"
          },
          "score": {
            "description": "Average score of the representative bucket (0-100).",
            "format": "int32",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "TzUserUpdateRequestDto": {
        "description": "User update request",
        "properties": {
          "attributes": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Optional patch over this account's product-owned settings. Omit it to preserve them all; map a key to null to remove that key. Keys are namespaced, lowercase and dot-separated",
            "example": {
              "golden.list-density": "compact"
            },
            "type": "object"
          },
          "email": {
            "description": "User email (must be unique)",
            "format": "email",
            "type": "string"
          },
          "enabled": {
            "description": "User enabled flag. Required: this request replaces the whole user",
            "type": "boolean"
          },
          "internal": {
            "description": "Whether the user authenticates with a password (true) or through SSO (false). Required: this request replaces the whole user",
            "type": "boolean"
          },
          "language": {
            "description": "Optional user language as a BCP 47 tag (for example es or en-GB). Omit it to preserve the stored value",
            "example": "es-ES",
            "type": "string"
          },
          "name": {
            "description": "User name",
            "minLength": 1,
            "type": "string"
          },
          "roles": {
            "description": "User roles. Required: this request replaces the whole user",
            "items": {
              "type": "string"
            },
            "minItems": 1,
            "type": "array",
            "uniqueItems": true
          },
          "surname": {
            "description": "User surname(s)",
            "minLength": 1,
            "type": "string"
          },
          "timeZone": {
            "description": "Optional user time zone as an IANA id or ISO-8601 UTC offset. Omit it to preserve the stored value",
            "example": "Europe/Madrid",
            "type": "string"
          }
        },
        "required": [
          "email",
          "enabled",
          "internal",
          "name",
          "roles",
          "surname"
        ],
        "type": "object"
      },
      "DatasetQualityImpactResponseDto": {
        "description": "What saving a dataset would invalidate, computed without writing anything.",
        "properties": {
          "affectedDatasets": {
            "description": "Every dataset whose stored hash would move: the edited one and every dataset that reaches it through a nested-dataset column, because a nested hash participates in every ancestor's.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "affectedTables": {
            "description": "Every table whose records would become awaiting re-measurement. Empty when no table names an affected dataset.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "changes": {
            "$ref": "#/components/schemas/DatasetProjectionDiffDto",
            "description": "What moved in the quality projection, or null when the previous projection was never retained by this installation \u2014 which is not the same as nothing having moved."
          },
          "currentQualityHash": {
            "description": "The stored quality hash, or null when the dataset is being created.",
            "type": "string"
          },
          "dataset": {
            "description": "The dataset the draft would write.",
            "type": "string"
          },
          "errors": {
            "description": "List of errors. If HTTP response represents an error (4xx or 5xx) this will contain a list of errors. Otherwise, not present.",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "messages": {
            "description": "Optional informational messages. If present, the request was successful and response code will be 2xx.",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "newQualityHash": {
            "description": "The quality hash the write would store.",
            "type": "string"
          },
          "qualityHashChanges": {
            "description": "Whether the quality hash would move. False is the ordinary outcome of editing a description, retitling an enumeration option or reordering columns: none of them is a quality input.",
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "QualityMeasurementDto": {
        "description": "One quality measurement taken on demand.",
        "properties": {
          "issues": {
            "$ref": "#/components/schemas/QualityIssuesMetricDto",
            "description": "The issue ranking, as the daily snapshot carries it."
          },
          "label": {
            "description": "What the person who asked for it called it, as typed. Absent when unnamed.",
            "type": "string"
          },
          "measuredAt": {
            "description": "When the measurement was taken. Both payloads describe this instant.",
            "format": "date-time",
            "type": "string"
          },
          "quality": {
            "$ref": "#/components/schemas/QualityDailyMetricDto",
            "description": "The quality payload, as the daily snapshot carries it."
          },
          "requestedBy": {
            "description": "The principal that asked for the measurement.",
            "type": "string"
          },
          "table": {
            "description": "The business table measured.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "QualityMeasurementOperationResponseDto": {
        "description": "The run started by a quality measurement request.",
        "properties": {
          "entity": {
            "description": "The entity being measured.",
            "type": "string"
          },
          "errors": {
            "description": "List of errors. If HTTP response represents an error (4xx or 5xx) this will contain a list of errors. Otherwise, not present.",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "messages": {
            "description": "Optional informational messages. If present, the request was successful and response code will be 2xx.",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "run": {
            "$ref": "#/components/schemas/TzRunView",
            "description": "The queued run."
          }
        },
        "type": "object"
      },
      "Record": {
        "additionalProperties": {},
        "description": "A projected record containing dataset-defined business fields and reserved metadata. See [Record metadata](/golden/data-reference/record-metadata/) for the stored JSON representation. Read audit events through the dedicated audit operation.",
        "properties": {
          "_audit": {
            "description": "Reserved audit member. Ordinary record responses omit this field, including expanded responses. Read events through the dedicated record audit endpoint. Requests carrying _audit are refused with 400.",
            "items": {
              "$ref": "#/components/schemas/RecordAudit"
            },
            "readOnly": true,
            "type": "array"
          },
          "_id": {
            "type": "string",
            "description": "Record identifier."
          },
          "_metadata": {
            "$ref": "#/components/schemas/RecordMetadata",
            "description": "Server-owned metadata: quality, merge pointers, the last write. Read-only; requests must not include this member.",
            "readOnly": true
          },
          "_search": {
            "additionalProperties": {
              "description": "Record search metadata."
            },
            "description": "Search metadata associated to the record, present on a search result. Read-only; requests must not include this member.",
            "properties": {
              "exact": {
                "description": "True when the match is exact. Decided by the engine, not by the score.",
                "type": "boolean"
              },
              "index": {
                "description": "Index that found this search result.",
                "type": "string"
              },
              "match": {
                "description": "Matched text.",
                "type": "string"
              },
              "origin": {
                "description": "How this result was reached, which is not what matched it.",
                "enum": [
                  "DIRECT",
                  "CLUSTER",
                  "HISTORY",
                  "MERGED_FORWARD"
                ],
                "type": "string"
              },
              "rank": {
                "description": "Search rank.",
                "format": "double",
                "type": "number"
              },
              "sourceId": {
                "description": "The record this result was reached through, when that is not the record itself: the absorbed record for a merged-forward hit. Null otherwise.",
                "type": "string"
              },
              "type": {
                "description": "Search type.",
                "enum": [
                  "ID",
                  "SOURCE",
                  "EXACT",
                  "PREFIX",
                  "SUFFIX",
                  "INFIX",
                  "FUZZY",
                  "FUZZY_LSH",
                  "GEOGRAPHIC",
                  "NONE"
                ],
                "type": "string"
              }
            },
            "readOnly": true,
            "type": "object"
          },
          "_source": {
            "description": "Where the record came from: one entry per system that has contributed to it, with that system's own key for it. A caller may state this WHEN IT CREATES the record, and never afterwards: an inbound value on an update is refused with a 400. The engine adds to it \u2014 a load that reincorporates the record from a second system, a merge that unions what it absorbs \u2014 and nothing ever removes an entry. When a data set declares which source systems it accepts, a value outside that list is refused.",
            "items": {
              "$ref": "#/components/schemas/RecordSourceEntry"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "EventStats": {
        "description": "Event statistics.",
        "properties": {
          "description": {
            "description": "Description of the sink.",
            "type": "string"
          },
          "eventsCount": {
            "description": "Total number of events pending to be sunk.",
            "format": "int64",
            "type": "integer"
          },
          "invalidCount": {
            "description": "Total number of invalid events.",
            "format": "int64",
            "type": "integer"
          },
          "nextCheck": {
            "description": "Timestamp in ISO 8601 format for the next check (if sink is stalled).",
            "format": "date-time",
            "type": "string"
          },
          "sink": {
            "description": "Sink identifier.",
            "type": "string"
          },
          "stalled": {
            "description": "Flag to indicate if the sink is stalled.",
            "type": "boolean"
          },
          "validCount": {
            "description": "Total number of valid events.",
            "format": "int64",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "TzRoleDto": {
        "description": "An available role",
        "properties": {
          "description": {
            "description": "Role description, in the language of the request's Accept-Language header",
            "example": "Administrator",
            "type": "string"
          },
          "descriptionKey": {
            "description": "The bundle key the description was rendered from, for a client that would rather translate it itself. Null when the application supplied a literal description.",
            "example": "security.role.admin",
            "type": "string"
          },
          "role": {
            "description": "Role identifier. A machine value; never translated.",
            "example": "ADMIN",
            "type": "string"
          }
        },
        "type": "object"
      },
      "QualityDailyMetricDto": {
        "description": "The quality family payload of a daily metric snapshot.",
        "properties": {
          "averageQuality": {
            "description": "Mean of the scalars of current records, two decimals, half-up. Null when no current record carried a scalar.",
            "type": "number"
          },
          "coveragePercentage": {
            "description": "100 x current / total, two decimals, half-up. Null when the table had no records: zero records is not applicable, not 0%.",
            "type": "number"
          },
          "currentQualityRecordCount": {
            "description": "Records measured under the definition this payload names, including a current record with no scalar because its plan had no measurable field.",
            "format": "int64",
            "type": "integer"
          },
          "histogram": {
            "description": "Exactly ten counts: 0..9, 10..19, ... 80..89, and 90..100. The last bucket is eleven scores wide because 100 has to land somewhere.",
            "items": {
              "format": "int64",
              "type": "integer"
            },
            "type": "array"
          },
          "maximumQuality": {
            "description": "Highest scalar among current records. Null on the same condition as the average.",
            "format": "int32",
            "type": "integer"
          },
          "minimumQuality": {
            "description": "Lowest scalar among current records. Null on the same condition as the average.",
            "format": "int32",
            "type": "integer"
          },
          "qualityDefinition": {
            "description": "The combined quality definition the aggregation was taken against.",
            "type": "string"
          },
          "recordsWithErrorsCount": {
            "description": "Current records carrying at least one error. Not totalErrorCount, which sums findings: a record with three errors adds three there and one here.",
            "format": "int64",
            "type": "integer"
          },
          "recordsWithIssuesCount": {
            "description": "Current records carrying at least one error or warning. Never below recordsWithErrorsCount; the difference is the records whose only problem is a warning.",
            "format": "int64",
            "type": "integer"
          },
          "totalErrorCount": {
            "description": "Sum of the stored error counts of current records.",
            "format": "int64",
            "type": "integer"
          },
          "totalRecordCount": {
            "description": "Every current record of the table. History records are never counted.",
            "format": "int64",
            "type": "integer"
          },
          "totalWarningCount": {
            "description": "Sum of the stored warning counts of current records.",
            "format": "int64",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "EntityDto": {
        "description": "Represents an entity.",
        "properties": {
          "aggregateScope": {
            "description": "The stats and counts in this response are computed over the whole entity, not over the caller's data scope. Always ENTITY.",
            "enum": [
              "ENTITY"
            ],
            "type": "string"
          },
          "automatic": {
            "description": "Automatic synchronization flag.",
            "type": "boolean"
          },
          "bucketCount": {
            "description": "Number of managed buckets.",
            "format": "int64",
            "type": "integer"
          },
          "classifier": {
            "description": "Associated classifier.",
            "type": "string"
          },
          "dataset": {
            "description": "Associated dataset.",
            "type": "string"
          },
          "datasetViews": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Every dataset the entity uses, root first, then the nested ones, mapped to the data-view that presents it or null for none. A dataset is listed even when it has no view.",
            "type": "object"
          },
          "dependency": {
            "$ref": "#/components/schemas/Dependency",
            "description": "Configuration dependencies."
          },
          "description": {
            "description": "Entity description.",
            "type": "string"
          },
          "duplicateBucketCount": {
            "description": "Total number of potential duplicated buckets.",
            "format": "int64",
            "type": "integer"
          },
          "duplicates": {
            "description": "Duplicates supported flag.",
            "type": "boolean"
          },
          "enabled": {
            "description": "Enabled flag.",
            "type": "boolean"
          },
          "id": {
            "description": "Entity identifier.",
            "type": "string"
          },
          "indexDuplicateCounts": {
            "additionalProperties": {
              "format": "int64",
              "type": "integer"
            },
            "description": "Map of indexes and number of potential duplicate buckets per index.",
            "type": "object"
          },
          "indexLabels": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Index description.",
            "type": "object"
          },
          "indexer": {
            "description": "Associated indexer.",
            "type": "string"
          },
          "locked": {
            "description": "Locked flag.",
            "type": "boolean"
          },
          "merger": {
            "description": "Associated merger.",
            "type": "string"
          },
          "pipeline": {
            "description": "Associated pipeline.",
            "type": "string"
          },
          "recordCount": {
            "description": "Number of managed records.",
            "format": "int64",
            "type": "integer"
          },
          "scopeColumn": {
            "description": "Dataset column that partitions the entity for data access scopes.",
            "type": "string"
          },
          "scopeIndexState": {
            "description": "State of the index on the scope column: NONE, BUILDING, VALID, FAILED.",
            "enum": [
              "NONE",
              "BUILDING",
              "VALID",
              "FAILED"
            ],
            "type": "string"
          },
          "searches": {
            "description": "Search supported flag.",
            "type": "boolean"
          },
          "sinks": {
            "description": "Sinks.",
            "items": {
              "$ref": "#/components/schemas/EntityResourceTransformationSinkDto"
            },
            "type": "array"
          },
          "sources": {
            "description": "Sources.",
            "items": {
              "$ref": "#/components/schemas/EntityResourceTransformationSourceDto"
            },
            "type": "array"
          },
          "status": {
            "description": "Entity status.",
            "enum": [
              "EMPTY",
              "WORKING",
              "READY",
              "INCONSISTENT",
              "ERROR"
            ],
            "type": "string"
          },
          "steward": {
            "description": "Associated steward.",
            "type": "string"
          },
          "stewardCron": {
            "description": "Steward cron scheduling expression.",
            "type": "string"
          },
          "stewardCronType": {
            "description": "Steward cron scheduling type.",
            "enum": [
              "EVERY_5_MINUTES",
              "EVERY_15_MINUTES",
              "EVERY_30_MINUTES",
              "EVERY_HOUR",
              "EVERY_DAY_AT_2AM",
              "EXPERT"
            ],
            "type": "string"
          },
          "stewarding": {
            "description": "Steward supported flag.",
            "type": "boolean"
          },
          "table": {
            "description": "Associated table.",
            "type": "string"
          },
          "type": {
            "description": "Entity type.",
            "enum": [
              "NONE",
              "SEARCH",
              "DUPLICATES",
              "AUTO_DUPLICATES"
            ],
            "type": "string"
          },
          "validation": {
            "$ref": "#/components/schemas/Validation",
            "description": "Current configuration validation result."
          },
          "view": {
            "description": "The data-view of the root dataset, or null when the entity has none. Equal to the root dataset's entry in datasetViews.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "GoldenSearchFieldDto": {
        "description": "A searchable field of an entity",
        "properties": {
          "columns": {
            "description": "Dataset columns this field is built from. More than one when combined.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "combined": {
            "description": "True when the mapping combines its columns into a single key. A free-text term still reaches it -- word similarity scores against the best-matching fragment of the key -- so this is for display, not for deciding whether to probe.",
            "type": "boolean"
          },
          "description": {
            "description": "The mapping's description, written for a person.",
            "type": "string"
          },
          "freeText": {
            "description": "True when a free-text term can probe this field. False only for geographic mappings, whose keys are coordinates: those belong in the advanced form, with a radius.",
            "type": "boolean"
          },
          "mapping": {
            "description": "Identifier of the indexer mapping behind this field.",
            "type": "string"
          },
          "matching": {
            "description": "How the mapping matches when it is asked its own question.",
            "enum": [
              "ID",
              "SOURCE",
              "EXACT",
              "PREFIX",
              "SUFFIX",
              "INFIX",
              "FUZZY",
              "FUZZY_LSH",
              "GEOGRAPHIC",
              "NONE"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "Processor": {
        "description": "A processor is used to process records as a stage of a pipeline.",
        "properties": {
          "processorType": {
            "description": "The type of processor.",
            "enum": [
              "CLEANER",
              "TRANSFORMER",
              "SCRIPT"
            ],
            "type": "string"
          },
          "properties": {
            "description": "Additional properties of the processor.",
            "items": {
              "$ref": "#/components/schemas/Option"
            },
            "type": "array"
          },
          "script": {
            "description": "Optional script to execute.",
            "type": "string"
          },
          "transformation": {
            "description": "Optional transformation to execute.",
            "type": "string"
          }
        },
        "required": [
          "processorType"
        ],
        "type": "object"
      },
      "EntityExchangeDto": {
        "description": "Represents an set of entity in exchange format (used for import/export).",
        "properties": {
          "count": {
            "description": "Number of exported entities.",
            "format": "int32",
            "type": "integer"
          },
          "entities": {
            "description": "Exported entity.",
            "items": {
              "$ref": "#/components/schemas/EntityPostDto"
            },
            "type": "array"
          },
          "timestamp": {
            "description": "Export timestamp.",
            "format": "int64",
            "type": "integer"
          },
          "version": {
            "description": "Export version.",
            "type": "string"
          }
        },
        "required": [
          "entities"
        ],
        "type": "object"
      },
      "Test": {
        "description": "Test helper object to store (eventually formatted) messages and errors.",
        "properties": {
          "duration": {
            "description": "Test duration. Contains the duration of the test as ISO 8601 string.",
            "type": "string"
          },
          "errorCount": {
            "description": "Test error count. Contains the number of errors in the test.",
            "format": "int32",
            "type": "integer"
          },
          "format": {
            "description": "Test payload format. Indicates the format of the payload.",
            "enum": [
              "PLAIN",
              "HTML"
            ],
            "type": "string"
          },
          "options": {
            "additionalProperties": {},
            "description": "Test options. Contains the options used for the test.",
            "properties": {
              "empty": {
                "type": "boolean"
              }
            },
            "type": "object"
          },
          "payload": {
            "description": "Test payload. Contains the formatted messages and errors.",
            "type": "string"
          },
          "result": {
            "description": "Test result. Indicates the result of the test.",
            "enum": [
              "OK",
              "ERROR",
              "WARNING",
              "NOT_SUPPORTED"
            ],
            "type": "string"
          },
          "timeEnd": {
            "description": "Test end time. Contains the end time of the test as ISO 8601 string.",
            "format": "date-time",
            "type": "string"
          },
          "timeStart": {
            "description": "Test start time. Contains the start time of the test as ISO 8601 string.",
            "format": "date-time",
            "type": "string"
          },
          "warningCount": {
            "description": "Test warning count. Contains the number of warnings in the test.",
            "format": "int32",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "DatasetProvenance": {
        "description": "What a data set declares about the provenance the engine writes: the format of the source system (_src) and of its own identifier for the record (_src_id). The structure is the product's and is not configurable; only what the values may be.",
        "properties": {
          "enabled": {
            "description": "Whether this data set records where its records came from. Off by default: when it is on, the declaration below is binding on every writer.",
            "type": "boolean"
          },
          "reference": {
            "$ref": "#/components/schemas/Column",
            "description": "Format of the source system's own identifier for the record (_src_id).",
            "type": "null"
          },
          "source": {
            "$ref": "#/components/schemas/Column",
            "description": "Format of the source system value (_src).",
            "type": "null"
          },
          "sourceDefault": {
            "description": "The source system a record gets when the caller states no origin at all. Must be one of the declared sources. It applies to ABSENCE only: a value that is not in the list is refused, never replaced by this one.",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "type": "object"
      },
      "RowScopeDto": {
        "description": "A restriction to the rows whose scope column holds one of the values.",
        "properties": {
          "column": {
            "description": "The entity's scope column this restriction was validated against.",
            "type": "string"
          },
          "values": {
            "description": "The allowed values. A record is in scope when its column holds any.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "Option": {
        "description": "A key-value pair.",
        "properties": {
          "key": {
            "description": "The key of the option.",
            "type": "string"
          },
          "value": {
            "description": "The value of the option.",
            "type": "string"
          }
        },
        "required": [
          "key",
          "value"
        ],
        "type": "object"
      },
      "SourceJdbc": {
        "allOf": [
          {
            "$ref": "#/components/schemas/Resource"
          },
          {
            "properties": {
              "count": {
                "description": "Flag to enable count query.",
                "type": "boolean"
              },
              "countQueryScript": {
                "description": "The custom count query script to use for reading.",
                "type": "string"
              },
              "credentials": {
                "description": "The credentials to use for the JDBC connection.",
                "type": "string"
              },
              "customScripts": {
                "description": "Flag to enable custom scripts for reading.",
                "type": "boolean"
              },
              "dataset": {
                "description": "The dataset to use.",
                "type": "string"
              },
              "fromFilter": {
                "description": "The from instant filter (optional).",
                "format": "date-time",
                "type": "string"
              },
              "properties": {
                "description": "The properties to use for the JDBC connection.",
                "items": {
                  "$ref": "#/components/schemas/Option"
                },
                "type": "array"
              },
              "queryScript": {
                "description": "The custom query script to use for reading.",
                "type": "string"
              },
              "readIdColumn": {
                "description": "The column to use for reading Golden identifier.",
                "type": "string"
              },
              "readIdFlag": {
                "description": "Flag to enable reading Golden identifier. False by default.",
                "type": "boolean"
              },
              "readTimestampColumn": {
                "description": "The column to use for reading Golden timestamp.",
                "type": "string"
              },
              "readTimestampFlag": {
                "description": "Flag to enable reading Golden timestamp. False by default.",
                "type": "boolean"
              },
              "table": {
                "description": "The name of the table to read. Eventually include catalog and schema.",
                "type": "string"
              },
              "timestampFilteringColumn": {
                "description": "The column to use for timestamp filtering.",
                "type": "string"
              },
              "timestampFilteringFlag": {
                "description": "Flag to enable timestamp filtering.",
                "type": "boolean"
              },
              "toFilter": {
                "description": "The to instant filter (optional).",
                "format": "date-time",
                "type": "string"
              },
              "url": {
                "description": "The JDBC URL of the database.",
                "type": "string"
              },
              "type": {
                "type": "string",
                "enum": [
                  "source-jdbc"
                ],
                "description": "Resource type."
              }
            },
            "type": "object"
          }
        ],
        "description": "A JDBC source is a resource that reads records from a database table using a JDBC connection.",
        "required": [
          "_id",
          "description",
          "table",
          "type",
          "url"
        ]
      },
      "SsoProviderInfo": {
        "description": "SSO provider configuration",
        "properties": {
          "authorizationEndpoint": {
            "description": "Authorization endpoint URL for OAuth2 flow",
            "example": "https://accounts.google.com/o/oauth2/v2/auth",
            "type": "string"
          },
          "clientId": {
            "description": "OAuth2 client ID",
            "example": "123456789.apps.googleusercontent.com",
            "type": "string"
          },
          "displayName": {
            "description": "The provider's name for a login button, in the language of the Accept-Language header. Falls back to the deployment's display-name property, and then to the identifier, so it is never empty.",
            "example": "Google",
            "type": "string"
          },
          "displayNameKey": {
            "description": "Translation key for the provider name, for clients that provide their own translations.",
            "example": "security.sso.provider.google",
            "type": "string"
          },
          "name": {
            "description": "Provider identifier (e.g., 'google', 'keycloak'). A machine value; never translated.",
            "example": "google",
            "type": "string"
          },
          "scopes": {
            "description": "Requested OAuth2 scopes",
            "example": [
              "openid",
              "email",
              "profile"
            ],
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "ResourceExchangeDto": {
        "description": "Represents an set of resources in exchange format (used for import/export).",
        "properties": {
          "count": {
            "description": "Exported resource count.",
            "format": "int32",
            "type": "integer"
          },
          "resources": {
            "description": "Exported resources.",
            "items": {
              "oneOf": [
                {
                  "$ref": "#/components/schemas/ClassifierWeight"
                },
                {
                  "$ref": "#/components/schemas/Credential"
                },
                {
                  "$ref": "#/components/schemas/DataView"
                },
                {
                  "$ref": "#/components/schemas/Dataset"
                },
                {
                  "$ref": "#/components/schemas/Indexer"
                },
                {
                  "$ref": "#/components/schemas/MergerWeight"
                },
                {
                  "$ref": "#/components/schemas/Pipeline"
                },
                {
                  "$ref": "#/components/schemas/SinkHttp"
                },
                {
                  "$ref": "#/components/schemas/SinkJdbc"
                },
                {
                  "$ref": "#/components/schemas/SinkKafka"
                },
                {
                  "$ref": "#/components/schemas/SinkTable"
                },
                {
                  "$ref": "#/components/schemas/SourceFile"
                },
                {
                  "$ref": "#/components/schemas/SourceJdbc"
                },
                {
                  "$ref": "#/components/schemas/SourceTable"
                },
                {
                  "$ref": "#/components/schemas/StewardBucket"
                },
                {
                  "$ref": "#/components/schemas/Transformation"
                }
              ]
            },
            "minItems": 1,
            "type": "array"
          },
          "timestamp": {
            "description": "Export timestamp.",
            "format": "int64",
            "type": "integer"
          },
          "version": {
            "description": "Export version.",
            "type": "string"
          }
        },
        "required": [
          "resources",
          "version"
        ],
        "type": "object"
      },
      "ClassifierWeight": {
        "allOf": [
          {
            "$ref": "#/components/schemas/Resource"
          },
          {
            "properties": {
              "bucketSizeReviewThreshold": {
                "description": "Bucket size review threshold. If a bucket has more records than this threshold, it will marked to be reviewed.",
                "format": "int32",
                "type": "integer"
              },
              "dataset": {
                "description": "The dataset to use.",
                "type": "string"
              },
              "defaultOptions": {
                "description": "Default text options used for mappings that do not have specific options. By default, aggressive.",
                "items": {
                  "description": "A text option is a transformation that can be applied to a text to normalize it.",
                  "enum": [
                    "NONE",
                    "IGNORE_CASE",
                    "IGNORE_SPACES",
                    "ONLY_ALPHANUMERIC",
                    "IGNORE_ACCENTS",
                    "AGGRESSIVE"
                  ],
                  "type": "string"
                },
                "type": "array"
              },
              "defaultWeight": {
                "description": "Default weight used for mappings that do not have a specific weight. By default, 1.0.",
                "format": "double",
                "type": "number"
              },
              "mappings": {
                "description": "List of mappings that define the comparison between columns.",
                "items": {
                  "$ref": "#/components/schemas/ClassifierWeightMapping"
                },
                "type": "array"
              },
              "matchThreshold": {
                "description": "Upper threshold to consider a match. Any score above this threshold will be considered a match.",
                "format": "double",
                "type": "number"
              },
              "nonMatchThreshold": {
                "description": "Lower threshold to consider a non-match. Any score below this threshold will be considered a non-match.",
                "format": "double",
                "type": "number"
              },
              "reviewScoreThreshold": {
                "description": "Minimum representative score (0-1) a bucket/cluster must reach to appear in the default duplicate-review (candidates) view. Fail-safe: when unset or out of the (0,1] range, the effective value is 0.75.",
                "format": "double",
                "type": "number"
              },
              "type": {
                "type": "string",
                "enum": [
                  "classifier-weight"
                ],
                "description": "Resource type."
              }
            },
            "type": "object"
          }
        ],
        "description": "Weighted classifier is a resource that classifies records according to classification mappings and weights.",
        "required": [
          "_id",
          "description",
          "mappings",
          "type"
        ]
      },
      "Dependency": {
        "description": "Represents a dependency between objects.",
        "properties": {
          "usedBy": {
            "description": "Set of objects that are using this object.",
            "items": {
              "type": "string"
            },
            "type": "array",
            "uniqueItems": true
          },
          "usedByCount": {
            "description": "Number of objects that are using this object.",
            "format": "int32",
            "type": "integer"
          },
          "uses": {
            "description": "Set of objects that this object is using.",
            "items": {
              "type": "string"
            },
            "type": "array",
            "uniqueItems": true
          },
          "usesCount": {
            "description": "Number of objects that this object is using.",
            "format": "int32",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "StewardBucket": {
        "allOf": [
          {
            "$ref": "#/components/schemas/Resource"
          },
          {
            "properties": {
              "coffeeBreak": {
                "description": "The maximum number of items to steward before taking a coffee break. Must be positive. Default is 100.",
                "format": "int32",
                "type": "integer"
              },
              "entity": {
                "description": "The entity to steward.",
                "type": "string"
              },
              "rules": {
                "description": "The rules to apply to steward the buckets.",
                "items": {
                  "$ref": "#/components/schemas/StewardRule"
                },
                "type": "array"
              },
              "type": {
                "type": "string",
                "enum": [
                  "steward-bucket"
                ],
                "description": "Resource type."
              }
            },
            "type": "object"
          }
        ],
        "description": "A steward to automatically curate duplicated buckets.",
        "required": [
          "_id",
          "description",
          "entity",
          "rules",
          "type"
        ]
      },
      "Page": {
        "description": "Represents a page of data.",
        "properties": {
          "page": {
            "description": "Current page number.",
            "format": "int32",
            "type": "integer"
          },
          "pageSize": {
            "description": "Number of items per page.",
            "format": "int32",
            "type": "integer"
          },
          "totalPages": {
            "description": "Number of total pages.",
            "format": "int32",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "ViewColumnDto": {
        "description": "A resolved data-view column.",
        "properties": {
          "align": {
            "description": "How a list cell aligns its content: LEFT, RIGHT or CENTER.",
            "type": "string"
          },
          "children": {
            "description": "Layout of the fields inside a nested dataset. Empty when the view says nothing, which lays the nested columns out in dataset order.",
            "items": {
              "$ref": "#/components/schemas/ViewColumnDto"
            },
            "type": "array"
          },
          "column": {
            "$ref": "#/components/schemas/Column",
            "description": "The dataset column, or a synthetic one for a pseudo-column. Never null."
          },
          "datasetView": {
            "$ref": "#/components/schemas/ViewDto",
            "description": "The nested dataset's own resolved view when the entity names one; null otherwise. Already folded into itemTitle, summary and children; carried whole for a consumer that draws a nested item as a record, and recursively for its own nested columns."
          },
          "expression": {
            "description": "A list column's authored expression, evaluated once per row to produce the cell. Set only on a column that has no dataset column of its own: the two are mutually exclusive. Null on every ordinary column, which reads its value from the record by path.",
            "type": "string"
          },
          "format": {
            "description": "How a list cell draws its value: LINK, BADGE, MONO or TEXT.",
            "type": "string"
          },
          "itemTitle": {
            "description": "Expression naming one entry of a nested dataset. Null names it by the nested dataset's identity columns, which is what every nested item was named by before the view could say.",
            "type": "string"
          },
          "key": {
            "description": "How the view names the column.",
            "type": "string"
          },
          "label": {
            "description": "Label override, or null to use the column's own description.",
            "type": "string"
          },
          "newline": {
            "description": "Whether the row breaks after this field.",
            "type": "boolean"
          },
          "path": {
            "description": "Where the value is read from in the record. The key itself for an ordinary column; a metadata path for a pseudo-column such as _quality.",
            "type": "string"
          },
          "render": {
            "description": "How an array is edited. Null where arrays do not apply.",
            "enum": [
              "DEFAULT",
              "TABLE",
              "TABS",
              "TABS_TOP",
              "GRID"
            ],
            "type": "string"
          },
          "summary": {
            "$ref": "#/components/schemas/ViewSummary",
            "description": "How a collection collapses into one cell. Null when not a collection."
          },
          "truncate": {
            "description": "How many characters a list cell shows before it is cut short. Null for no limit.",
            "format": "int32",
            "type": "integer"
          },
          "width": {
            "description": "Width in grid columns, 1 to 12. Resolved: never inherit, never absent.",
            "format": "int32",
            "type": "integer"
          },
          "widthPercent": {
            "description": "A table column's width, as a percentage (1-100) of the table -- never a grid column. Null means auto: the browser's own sizing. Only set on a list column; a form field leaves this null.",
            "format": "int32",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "ViewSummary": {
        "description": "Summary rendering for a collection or nested-dataset column.",
        "properties": {
          "max": {
            "description": "How many items before the rest become '+N more'. Null means the default.",
            "format": "int32",
            "type": [
              "integer",
              "null"
            ]
          },
          "mode": {
            "description": "Summary mode: TEMPLATE, COUNT, or LIST.",
            "type": "string"
          },
          "separator": {
            "description": "Separator between LIST items in the base language; null uses a comma followed by a space. Other translations appear in separatorLocalized.",
            "type": [
              "string",
              "null"
            ]
          },
          "separatorLocalized": {
            "description": "Every language this separator was written in.",
            "items": {
              "$ref": "#/components/schemas/LocalizedTextEntry"
            },
            "type": "array"
          },
          "template": {
            "description": "Mustache template for one item, for example {{street}}, {{city}}. Other translations appear in templateLocalized.",
            "type": "string"
          },
          "templateLocalized": {
            "description": "Every language this template was written in.",
            "items": {
              "$ref": "#/components/schemas/LocalizedTextEntry"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "EntryDto": {
        "description": "One ranked problem type.",
        "properties": {
          "message": {
            "description": "The rendered sentence, in the request's locale.",
            "type": "string"
          },
          "messageArgs": {
            "additionalProperties": {},
            "description": "The named arguments the key declares.",
            "type": "object"
          },
          "messageKey": {
            "description": "The stable catalogue key, retained for diagnostics and support.",
            "type": "string"
          },
          "occurrenceCount": {
            "description": "How many findings fell into this group. Occurrences, not records: one record with two malformed emails in a repeated field contributes two.",
            "format": "int64",
            "type": "integer"
          },
          "schemaPath": {
            "description": "The declaration path: dataset keys joined by '.', with '[]' on every repeated segment. It is what groups the problem across records.",
            "type": "string"
          },
          "severity": {
            "description": "ERROR or WARNING.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "Validation": {
        "description": "Configuration validation result.",
        "properties": {
          "errorCount": {
            "format": "int32",
            "type": "integer",
            "description": "Number of validation errors."
          },
          "errors": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "description": "Validation error messages."
          }
        },
        "type": "object"
      },
      "RecordMetadata": {
        "description": "Record metadata.",
        "properties": {
          "_errors": {
            "description": "List of errors.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "_history": {
            "type": "boolean",
            "description": "Whether this is a retained history record."
          },
          "_merged": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "description": "Identifiers of contributing records."
          },
          "_operation": {
            "description": "Record operation.",
            "enum": [
              "none",
              "insert",
              "update",
              "remove"
            ],
            "type": "string"
          },
          "_operation_bucket": {
            "description": "Bucket operation.",
            "enum": [
              "merge",
              "remove",
              "split",
              "disconnect",
              "unmerge"
            ],
            "type": "string"
          },
          "_unrelated": {
            "items": {
              "type": "string"
            },
            "type": "array",
            "description": "Identifiers recorded as different subjects."
          },
          "_updated": {
            "format": "date-time",
            "type": "string",
            "description": "Time of the last recorded update."
          },
          "_quality": {
            "type": "integer",
            "description": "Stored quality score, from 0 to 100; absent when unavailable.",
            "readOnly": true,
            "minimum": 0,
            "maximum": 100
          },
          "_quality_error_count": {
            "type": "integer",
            "description": "Number of errors in the stored measurement.",
            "readOnly": true
          },
          "_quality_warning_count": {
            "type": "integer",
            "description": "Number of warnings in the stored measurement.",
            "readOnly": true
          },
          "_quality_available_points": {
            "type": "integer",
            "description": "Total applicable weighted points used to calculate the stored score.",
            "readOnly": true
          },
          "_quality_definition": {
            "type": "string",
            "description": "Identifier of the quality definition used for this measurement.",
            "readOnly": true
          },
          "_quality_calculated_at": {
            "type": "string",
            "description": "Time of the stored measurement.",
            "readOnly": true,
            "format": "date-time"
          },
          "_quality_facts": {
            "type": "array",
            "readOnly": true,
            "description": "Stored findings, with severity, schemaPath, recordPath, messageKey and messageArgs. Read localized explanations through the record quality operation.",
            "items": {
              "type": "object",
              "properties": {
                "severity": {
                  "type": "string",
                  "enum": [
                    "ERROR",
                    "WARNING"
                  ]
                },
                "schemaPath": {
                  "type": "string"
                },
                "recordPath": {
                  "type": "string"
                },
                "messageKey": {
                  "type": "string"
                },
                "messageArgs": {
                  "type": "object",
                  "additionalProperties": {}
                }
              }
            }
          }
        },
        "type": "object"
      },
      "ViewForm": {
        "description": "Record form presentation for a data-view.",
        "properties": {
          "render": {
            "description": "Array-editor override per applicable column.",
            "items": {
              "$ref": "#/components/schemas/ColumnRender"
            },
            "type": "array"
          },
          "sections": {
            "description": "Form sections, in order.",
            "items": {
              "$ref": "#/components/schemas/ViewFormSection"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "EntityResourceTransformationSinkDto": {
        "description": "Represents an entity sink.",
        "properties": {
          "audit": {
            "description": "Flag to include metadata audit when sinking.",
            "type": "boolean"
          },
          "resource": {
            "description": "Resource identifier.",
            "type": "string"
          },
          "transformation": {
            "description": "Optional transformation identifier.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "EntityPostDto": {
        "description": "Represents a Golden entity in exchange format.",
        "properties": {
          "asyncIndexing": {
            "description": "Whether HTTP upserts queue indexing after records have been stored.",
            "type": "boolean"
          },
          "automatic": {
            "description": "Whether the entity is automatic.",
            "type": "boolean"
          },
          "classifier": {
            "description": "Identifier of the classifier associated with the entity.",
            "type": "string"
          },
          "datasetViews": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "Data-view per dataset the entity uses, keyed by dataset id, root included. Null on an entity saved before the per-dataset association existed, whose view field alone names the root dataset's view.",
            "type": "object"
          },
          "description": {
            "description": "Description of the entity.",
            "type": "string"
          },
          "enabled": {
            "description": "Whether the entity is enabled.",
            "type": "boolean"
          },
          "entityStats": {
            "$ref": "#/components/schemas/EntityStatsDto",
            "description": "EntityStats."
          },
          "id": {
            "description": "Unique identifier for the entity.",
            "type": "string"
          },
          "indexer": {
            "description": "Identifier of the indexer associated with the entity.",
            "type": "string"
          },
          "locked": {
            "description": "Whether the entity is locked.",
            "type": "boolean"
          },
          "merger": {
            "description": "Identifier of the merger associated with the entity.",
            "type": "string"
          },
          "pipeline": {
            "description": "Identifier of the pipeline associated with the entity.",
            "type": "string"
          },
          "scopeColumn": {
            "description": "Dataset column that partitions the entity for data access scopes.",
            "type": "string"
          },
          "sinks": {
            "description": "List of sinks associated with the entity.",
            "items": {
              "$ref": "#/components/schemas/ResourceTransformationSink"
            },
            "type": "array"
          },
          "sources": {
            "description": "List of sources associated with the entity.",
            "items": {
              "$ref": "#/components/schemas/ResourceTransformationSource"
            },
            "type": "array"
          },
          "status": {
            "description": "Status of the entity.",
            "enum": [
              "EMPTY",
              "WORKING",
              "READY",
              "INCONSISTENT",
              "ERROR"
            ],
            "type": "string"
          },
          "steward": {
            "description": "Identifier of the steward associated with the entity.",
            "type": "string"
          },
          "stewardCron": {
            "description": "Cron expression for the steward associated with the entity.",
            "type": "string"
          },
          "table": {
            "description": "Identifier of the table associated with the entity.",
            "type": "string"
          },
          "type": {
            "description": "Type of the entity.",
            "enum": [
              "NONE",
              "SEARCH",
              "DUPLICATES",
              "AUTO_DUPLICATES"
            ],
            "type": "string"
          },
          "view": {
            "description": "Data-view this entity presents its records through.",
            "type": "string"
          }
        },
        "required": [
          "id"
        ],
        "type": "object"
      },
      "StewardRule": {
        "description": "A rule to filter buckets and execute an action.",
        "properties": {
          "action": {
            "description": "The action to execute on the selected buckets.",
            "enum": [
              "MERGE",
              "DISCONNECT",
              "SPLIT",
              "DELETE",
              "IGNORE"
            ],
            "type": "string"
          },
          "conditions": {
            "description": "The bucket conditions.",
            "items": {
              "$ref": "#/components/schemas/StewardCondition"
            },
            "type": "array"
          },
          "crossSeparations": {
            "description": "Only for MERGE. Merge a cluster even though it holds a pair of records recorded as different, revoking that separation; the rule's own sentence is the comment. Off by default: such a cluster is skipped and counted, never merged.",
            "type": "boolean"
          },
          "description": {
            "description": "The description of the rule.",
            "type": "string"
          },
          "filtering": {
            "$ref": "#/components/schemas/StewardFiltering",
            "description": "The filtering to apply to the buckets."
          },
          "id": {
            "description": "The identifier of the rule.",
            "type": "string"
          },
          "sorting": {
            "description": "The sorting used to filter. Optional. Default is to consider natural sorting.",
            "items": {
              "description": "The sorting criteria for a bucket.",
              "enum": [
                "SIZE_ASC",
                "SIZE_DESC",
                "SCORE_ASC",
                "SCORE_DESC",
                "DEVIATION_ASC",
                "DEVIATION_DESC",
                "NATURAL"
              ],
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "action",
          "id"
        ],
        "type": "object"
      },
      "ViewListColumn": {
        "description": "Presentation of one record-list column.",
        "properties": {
          "align": {
            "type": "string",
            "description": "Alignment of the list column."
          },
          "column": {
            "type": "string",
            "description": "Dataset column key."
          },
          "expression": {
            "type": "string",
            "description": "Display expression in the base language."
          },
          "expressionLocalized": {
            "items": {
              "$ref": "#/components/schemas/LocalizedTextEntry"
            },
            "type": "array",
            "description": "Translated display expressions by language."
          },
          "format": {
            "type": "string",
            "description": "Value display format."
          },
          "label": {
            "type": "string",
            "description": "Column heading in the base language."
          },
          "labelLocalized": {
            "items": {
              "$ref": "#/components/schemas/LocalizedTextEntry"
            },
            "type": "array",
            "description": "Translated headings by language."
          },
          "truncate": {
            "format": "int32",
            "type": "integer",
            "description": "Maximum displayed character count before truncation."
          },
          "widthPercent": {
            "format": "int32",
            "type": "integer",
            "description": "Preferred column width as a percentage."
          }
        },
        "type": "object"
      },
      "IndexerMapping": {
        "description": "An indexer mapping is used to calculate one index based on different criteria.",
        "properties": {
          "combine": {
            "description": "If true, the mapping combines the keys using permutations or a single key.",
            "type": "boolean",
            "default": false
          },
          "description": {
            "description": "The description of the mapping.",
            "type": "string"
          },
          "duplicates": {
            "description": "If true, the mapping allows finding duplicates.",
            "type": "boolean"
          },
          "fuzzyMaximumTypos": {
            "description": "The maximum number of typographical errors considered for fuzzy indexing.",
            "format": "int32",
            "type": "integer"
          },
          "geoPrecision": {
            "description": "The geographic precision used for indexing.",
            "enum": [
              "L1",
              "L2",
              "L3",
              "L4",
              "L5",
              "L6",
              "L7",
              "L8",
              "L9",
              "L10"
            ],
            "type": "string"
          },
          "geoSteps": {
            "description": "The steps around considered to index a geographical area.",
            "format": "int32",
            "type": "integer"
          },
          "id": {
            "description": "The unique identifier of the mapping.",
            "type": "string"
          },
          "keyOptions": {
            "description": "The options to use when calculating the keys. Can override the default options.",
            "items": {
              "description": "A text option is a transformation that can be applied to a text to normalize it.",
              "enum": [
                "NONE",
                "IGNORE_CASE",
                "IGNORE_SPACES",
                "ONLY_ALPHANUMERIC",
                "IGNORE_ACCENTS",
                "AGGRESSIVE"
              ],
              "type": "string"
            },
            "type": "array"
          },
          "keys": {
            "description": "The column keys to use when calculating the index (if type is columns).",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "lshBands": {
            "description": "Deprecated compatibility field. Ignored during processing; configure fuzzyMaximumTypos instead.",
            "format": "int32",
            "type": "integer"
          },
          "lshRows": {
            "description": "Deprecated compatibility field. Ignored during processing; configure fuzzyMaximumTypos instead.",
            "format": "int32",
            "type": "integer"
          },
          "matching": {
            "description": "The matching/search used when comparing indexing keys.",
            "enum": [
              "ID",
              "SOURCE",
              "EXACT",
              "PREFIX",
              "SUFFIX",
              "INFIX",
              "FUZZY",
              "FUZZY_LSH",
              "GEOGRAPHIC",
              "NONE"
            ],
            "type": "string"
          },
          "script": {
            "description": "The script to use when calculating the index (if type is script).",
            "type": "string"
          },
          "type": {
            "description": "How the mapping key is calculated.",
            "enum": [
              "COLUMNS",
              "SCRIPT"
            ],
            "type": "string"
          }
        },
        "required": [
          "description",
          "id",
          "keys"
        ],
        "type": "object"
      },
      "EntityStatsDto": {
        "description": "Statistics of an entity in exchange format.",
        "properties": {
          "bucketStats": {
            "$ref": "#/components/schemas/BucketStatsDto",
            "description": "Bucket statistics."
          },
          "recordCount": {
            "description": "Number of managed records.",
            "format": "int64",
            "type": "integer"
          },
          "recordCountValue": {
            "format": "int64",
            "type": "integer",
            "description": "Unformatted record count."
          }
        },
        "type": "object"
      },
      "TablePostDto": {
        "description": "Represents a Golden table in exchange format.",
        "properties": {
          "_id": {
            "description": "Table identifier.",
            "type": "string"
          },
          "audit": {
            "description": "Table audit flag.",
            "type": "boolean"
          },
          "created": {
            "description": "Created instant.",
            "format": "date-time",
            "type": "string"
          },
          "dataset": {
            "description": "Dataset for this table.",
            "type": "string"
          },
          "dependency": {
            "$ref": "#/components/schemas/Dependency",
            "description": "Table dependencies."
          },
          "description": {
            "description": "Table description.",
            "type": "string"
          },
          "history": {
            "description": "Table history flag.",
            "type": "boolean"
          },
          "lockCount": {
            "description": "Table lock count.",
            "format": "int32",
            "type": "integer"
          },
          "locked": {
            "description": "Table lock flag.",
            "type": "boolean"
          },
          "updated": {
            "description": "Updated instant.",
            "format": "date-time",
            "type": "string"
          }
        },
        "required": [
          "_id",
          "created",
          "dataset",
          "updated"
        ],
        "type": "object"
      },
      "ClassificationDetail": {
        "description": "Represents a detailed comparison between two records.",
        "properties": {
          "score": {
            "description": "Overall comparison score",
            "format": "int32",
            "type": "integer"
          },
          "similarities": {
            "additionalProperties": {
              "format": "double",
              "type": "number"
            },
            "description": "Map of similarities between compared records, key is column, value is similarity",
            "type": "object"
          },
          "tuple0": {
            "description": "Index of first compared record",
            "format": "int32",
            "type": "integer"
          },
          "tuple1": {
            "description": "Index of second compared record",
            "format": "int32",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "EventDto": {
        "description": "Event",
        "properties": {
          "created": {
            "description": "Event creation timestamp in ISO 8601 format",
            "format": "date-time",
            "type": "string"
          },
          "error": {
            "description": "Event error message",
            "type": "string"
          },
          "id": {
            "description": "Event identifier",
            "type": "string"
          },
          "modified": {
            "description": "Event modification timestamp in ISO 8601 format",
            "format": "date-time",
            "type": "string"
          },
          "payload": {
            "description": "Event payload",
            "type": "string"
          },
          "sink": {
            "description": "Sink identifier",
            "type": "string"
          },
          "valid": {
            "description": "Event valid flag",
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "EntityResourceTransformationSourceDto": {
        "description": "Represents an entity source.",
        "properties": {
          "cron": {
            "description": "Cron scheduling expression.",
            "type": "string"
          },
          "cronType": {
            "description": "Cron scheduling type.",
            "enum": [
              "EVERY_5_MINUTES",
              "EVERY_15_MINUTES",
              "EVERY_30_MINUTES",
              "EVERY_HOUR",
              "EVERY_DAY_AT_2AM",
              "EXPERT"
            ],
            "type": "string"
          },
          "incremental": {
            "description": "Source incremental loading.",
            "type": "boolean"
          },
          "lastExecution": {
            "description": "Source last execution.",
            "format": "date-time",
            "type": "string"
          },
          "resource": {
            "description": "Resource identifier.",
            "type": "string"
          },
          "transformation": {
            "description": "Optional transformation identifier.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "GoldenBucketLightResponseDto": {
        "description": "Represents a lightweight bucket (contains less information that a full weight bucket).",
        "properties": {
          "classification": {
            "description": "Bucket classification outcome.",
            "enum": [
              "MATCH",
              "NON_MATCH",
              "REVIEW",
              "IGNORE"
            ],
            "type": "string"
          },
          "count": {
            "description": "Number of records in the bucket.",
            "format": "int32",
            "type": "integer"
          },
          "deviation": {
            "description": "Score standard deviation.",
            "format": "int32",
            "type": "integer"
          },
          "errors": {
            "description": "List of errors. If HTTP response represents an error (4xx or 5xx) this will contain a list of errors. Otherwise, not present.",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "escalated": {
            "description": "True when a steward escalated this group to an administrator (data access scopes).",
            "type": "boolean"
          },
          "escalatedAt": {
            "description": "When it was escalated, when it is escalated.",
            "format": "date-time",
            "type": "string"
          },
          "escalatedBy": {
            "description": "Who escalated it, when it is escalated.",
            "type": "string"
          },
          "escalationNote": {
            "description": "The steward's note, when it is escalated.",
            "type": "string"
          },
          "id": {
            "description": "Bucket identifier.",
            "type": "string"
          },
          "ignore": {
            "description": "Ignore flag.",
            "type": "boolean"
          },
          "key": {
            "description": "Bucket key.",
            "type": "string"
          },
          "messages": {
            "description": "Optional informational messages. If present, the request was successful and response code will be 2xx.",
            "items": {
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "reasoning": {
            "description": "Bucket classification reasoning.",
            "type": "string"
          },
          "score": {
            "description": "Bucket average score (0-100).",
            "format": "int32",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "ColumnSummary": {
        "description": "Summary override for one column.",
        "properties": {
          "column": {
            "type": "string",
            "description": "Column key."
          },
          "summary": {
            "$ref": "#/components/schemas/ViewSummary",
            "description": "Summary configuration for the column."
          }
        },
        "type": "object"
      },
      "StewardCondition": {
        "description": "A steward condition to apply to the buckets.",
        "properties": {
          "interval": {
            "description": "The type of the interval. Default is MINIMUM.",
            "enum": [
              "MINIMUM",
              "MAXIMUM",
              "INTERVAL"
            ],
            "type": "string"
          },
          "max": {
            "description": "The maximum value of the interval. Must be greater than or equal to 0 and eventually greater than min. Default is -1 (no limit). Required and non-negative for MAXIMUM or INTERVAL conditions; unused otherwise.",
            "format": "double",
            "type": "number",
            "default": -1.0
          },
          "min": {
            "description": "The minimum value of the interval. Must be greater than or equal to 0. Default is -1 (no limit). Required and non-negative for MINIMUM or INTERVAL conditions; unused otherwise.",
            "format": "double",
            "type": "number",
            "default": -1.0
          },
          "type": {
            "description": "An interval used to check the condition.",
            "enum": [
              "RECORD_COUNT",
              "SCORE",
              "DEVIATION"
            ],
            "type": "string"
          }
        },
        "required": [],
        "type": "object"
      },
      "RecordAuditEventDto": {
        "description": "One audit event.",
        "properties": {
          "actorId": {
            "description": "Their immutable identifier, exactly as the row stores it.",
            "type": "string"
          },
          "actorLabel": {
            "description": "The display name resolved now, or the localized deleted/unknown label. A response decoration: it is never written back into the event.",
            "type": "string"
          },
          "actorType": {
            "description": "Who acted, in the audit vocabulary: USER, TOKEN, SYSTEM or UNKNOWN.",
            "enum": [
              "USER",
              "TOKEN",
              "SYSTEM",
              "UNKNOWN"
            ],
            "type": "string"
          },
          "changes": {
            "description": "The ordered changes. Empty for COMMENT and for CLEAR.",
            "items": {
              "$ref": "#/components/schemas/RecordAuditChangeDto"
            },
            "type": "array"
          },
          "comment": {
            "description": "The operator's own words, when they left any.",
            "type": "string"
          },
          "eventId": {
            "description": "The event identifier.",
            "type": "string"
          },
          "occurredAt": {
            "description": "When it happened, UTC, microsecond precision.",
            "format": "date-time",
            "type": "string"
          },
          "operationId": {
            "description": "The logical business command this event belongs to. Every event one command wrote carries the same value.",
            "type": "string"
          },
          "operationType": {
            "description": "What happened.",
            "enum": [
              "INSERT",
              "UPDATE",
              "REMOVE",
              "MERGE",
              "SPLIT",
              "DISCONNECT",
              "COMMENT",
              "CLEAR",
              "AUDIT_ENABLED",
              "AUDIT_DISABLED",
              "BUCKET_IGNORED",
              "BUCKET_UNIGNORED",
              "BUCKET_ESCALATED",
              "BUCKET_ESCALATION_RESOLVED"
            ],
            "type": "string"
          },
          "reasonArgs": {
            "additionalProperties": {},
            "description": "That key's named arguments.",
            "type": "object"
          },
          "reasonKey": {
            "description": "The operation-level machine reason key.",
            "type": "string"
          },
          "recordId": {
            "description": "The record this event is about. Absent on a table-level CLEAR.",
            "type": "string"
          },
          "relatedRecordIds": {
            "description": "The other side of a relationship operation: the survivor on an absorbed record's MERGE, the absorbed records on the survivor's, every record of the operation on a SPLIT, the records declared unrelated on a DISCONNECT. Absent on every other operation. Migrated and new events alike.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "removedRecordCount": {
            "description": "How many current data rows a CLEAR removed. Present only on a CLEAR.",
            "format": "int64",
            "type": "integer"
          },
          "sources": {
            "additionalProperties": {
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "description": "Merge provenance, keyed by column key: the absorbed records whose value each merged column took. One record for a single-valued column, every contributor for a repeated one, since there the merge unions rather than choosing. The keys are the merger's own column names, not the canonical leaf paths the changes array uses. Present only on the survivor's MERGE. Merge weights are deliberately not stored: they are a function of a merger configuration that can change.",
            "type": "object"
          }
        },
        "type": "object"
      },
      "GoldenPairComparisonDto": {
        "description": "One exhaustive comparison between two records of a cluster: the overall score and the per-column similarities, exactly as the classifier measures them.",
        "properties": {
          "recordA": {
            "description": "Identifier of the first record of the pair.",
            "type": "string"
          },
          "recordB": {
            "description": "Identifier of the second record of the pair.",
            "type": "string"
          },
          "score": {
            "description": "Overall comparison score, 0-100.",
            "format": "int32",
            "type": "integer"
          },
          "similarities": {
            "additionalProperties": {
              "format": "double",
              "type": "number"
            },
            "description": "Map of similarities between the two records; key is column, value 0-1.",
            "type": "object"
          }
        },
        "type": "object"
      },
      "LookupValueDto": {
        "description": "One value of a lookup (master reference) table.",
        "properties": {
          "description": {
            "description": "The catalogue's description columns joined by a space, or the value itself when the catalogue declares none.",
            "type": "string"
          },
          "label": {
            "description": "Display label in the form [value] description.",
            "type": "string"
          },
          "value": {
            "description": "The stored value, which is what a referencing record holds.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "ClassifierWeightMapping": {
        "description": "A weight classifier mapping is a mapping between columns of a record that are compared to retrieve a weighted score.",
        "properties": {
          "id": {
            "description": "The identifier of the weight classifier mapping.",
            "type": "string"
          },
          "keys": {
            "description": "The column(s) of the record that are compared.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "nullMismatch": {
            "description": "When true, a missing value counts as a mismatch (0) against a present value, and two missing values count as equal (1). When false (default), missing values are excluded from the comparison.",
            "type": "boolean"
          },
          "object": {
            "description": "Whether the comparison is an object comparison. By default is not.",
            "type": "boolean"
          },
          "options": {
            "description": "The options used for the comparison.",
            "items": {
              "description": "A text option is a transformation that can be applied to a text to normalize it.",
              "enum": [
                "NONE",
                "IGNORE_CASE",
                "IGNORE_SPACES",
                "ONLY_ALPHANUMERIC",
                "IGNORE_ACCENTS",
                "AGGRESSIVE"
              ],
              "type": "string"
            },
            "type": "array"
          },
          "threshold": {
            "description": "The threshold for object comparison. By default is 50.",
            "format": "int32",
            "type": "integer"
          },
          "weight": {
            "description": "The weight of the mapping.",
            "format": "double",
            "type": "number"
          }
        },
        "type": "object"
      },
      "TableFilter": {
        "properties": {
          "filterError": {
            "default": false,
            "description": "Filter records that have quality errors.",
            "type": "boolean"
          },
          "filterQualityGreater": {
            "description": "Filter records whose quality score is greater than or equal to this value (0-100). Omit the parameter to apply no lower bound.",
            "format": "int32",
            "type": "integer"
          },
          "filterQualityLess": {
            "description": "Filter records whose quality score is less than or equal to this value (0-100). Omit the parameter to apply no upper bound.",
            "format": "int32",
            "type": "integer"
          },
          "filterSource": {
            "description": "Filter records whose provenance names this source system. Combined with filterSourceId it matches one provenance entry carrying both, never the two separately.",
            "type": "string"
          },
          "filterSourceId": {
            "description": "Filter records whose provenance carries this key. It is the source system's own identifier for the record, not the record's _id.",
            "type": "string"
          },
          "filterUpdatedAfter": {
            "description": "Filter records that have been updated after this ISO 8601 timestamp (included)",
            "format": "date-time",
            "type": "string"
          },
          "filterUpdatedBefore": {
            "description": "Filter records that have been updated before this ISO 8601 timestamp (included)",
            "format": "date-time",
            "type": "string"
          }
        },
        "type": "object",
        "description": "Filters for table record queries."
      },
      "ResourceTransformationSource": {
        "description": "Represents an entity source in exchange format.",
        "properties": {
          "cron": {
            "description": "Cron scheduling expression.",
            "type": "string"
          },
          "incremental": {
            "description": "Source incremental loading.",
            "type": "boolean"
          },
          "lastExecution": {
            "description": "Source last execution.",
            "format": "date-time",
            "type": "string"
          },
          "resource": {
            "description": "Resource identifier.",
            "type": "string"
          },
          "transformation": {
            "description": "Optional transformation identifier.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "ViewSectionDto": {
        "description": "A resolved data-view form section.",
        "properties": {
          "collapsed": {
            "description": "Accepted and ignored: a section always renders open.",
            "type": "boolean"
          },
          "columns": {
            "description": "The section's columns, in order.",
            "items": {
              "$ref": "#/components/schemas/ViewColumnDto"
            },
            "type": "array"
          },
          "frame": {
            "description": "Section border style. Resolves to NONE when unspecified.",
            "type": "string"
          },
          "label": {
            "description": "Section label. Null for the catch-all section holding every column.",
            "type": "string"
          },
          "newline": {
            "description": "Whether this section starts a new row rather than flowing beside.",
            "type": "boolean"
          },
          "width": {
            "description": "Width in grid columns, 1 to 12. Resolved: never inherit, never absent.",
            "format": "int32",
            "type": "integer"
          }
        },
        "type": "object"
      },
      "StewardFiltering": {
        "description": "A filtering to apply to the buckets.",
        "properties": {
          "classification": {
            "description": "The classification used to filter. Optional. Default is to consider all classifications.",
            "enum": [
              "MATCH",
              "NON_MATCH",
              "REVIEW",
              "IGNORE"
            ],
            "type": "string"
          },
          "index": {
            "description": "The index identifier used to filter. Optional. Default is to consider all indexes.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "DatasetProjectionDiffDto": {
        "description": "What moved in a dataset's quality projection.",
        "properties": {
          "addedColumns": {
            "description": "Column keys the write would add.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "changedColumns": {
            "description": "Columns present before and after whose projected attributes moved.",
            "items": {
              "$ref": "#/components/schemas/ColumnChangeDto"
            },
            "type": "array"
          },
          "newDataType": {
            "description": "The projected data type after the change, or null when it did not move.",
            "type": "string"
          },
          "previousDataType": {
            "description": "The projected data type before the change, or null when it did not move.",
            "type": "string"
          },
          "removedColumns": {
            "description": "Column keys the write would remove.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "type": "object"
      },
      "BucketStatsDto": {
        "description": "Bucket statistics of an entity in exchange format.",
        "properties": {
          "bucketsByIndex": {
            "additionalProperties": {
              "format": "int64",
              "type": "integer"
            },
            "description": "Indexes with buckets, duplicated or not.",
            "type": "object"
          },
          "duplicatesByIndex": {
            "additionalProperties": {
              "format": "int64",
              "type": "integer"
            },
            "description": "Indexes with duplicate buckets.",
            "type": "object"
          },
          "totalBuckets": {
            "description": "Total number of buckets.",
            "format": "int64",
            "type": "integer"
          },
          "totalBucketsValue": {
            "format": "int64",
            "type": "integer",
            "description": "Unformatted total candidate-group count."
          },
          "totalDuplicatedBuckets": {
            "description": "Total number of duplicated buckets.",
            "format": "int64",
            "type": "integer"
          },
          "totalDuplicatedBucketsValue": {
            "format": "int64",
            "type": "integer",
            "description": "Unformatted count of candidate groups containing duplicates."
          }
        },
        "type": "object"
      },
      "ViewFormSection": {
        "description": "A labelled section of fields in the record form.",
        "properties": {
          "collapsed": {
            "description": "Accepted and ignored: a section always renders open.",
            "type": [
              "boolean",
              "null"
            ]
          },
          "columns": {
            "description": "Fields in this section, in order.",
            "items": {
              "$ref": "#/components/schemas/ViewFormField"
            },
            "type": "array"
          },
          "frame": {
            "description": "The edge the form draws around this section: NONE, RULE_ABOVE, RULE_BELOW or BOX. Null draws nothing.",
            "type": [
              "string",
              "null"
            ]
          },
          "label": {
            "description": "The heading shown above this group of fields, as literal text in one language. It is not a template: a section names a group of fields, not a record. The other languages, when there are any, are in labelLocalized.",
            "type": "string"
          },
          "labelLocalized": {
            "description": "Every language this heading was written in.",
            "items": {
              "$ref": "#/components/schemas/LocalizedTextEntry"
            },
            "type": "array"
          },
          "newline": {
            "description": "Start this section on a new row. Null lets it flow beside the previous one.",
            "type": [
              "boolean",
              "null"
            ]
          },
          "width": {
            "description": "Width in grid columns, 1 to 12. Null means the full width.",
            "format": "int32",
            "type": [
              "integer",
              "null"
            ]
          }
        },
        "type": "object"
      },
      "RecordAuditChangeDto": {
        "description": "One field-level change carried by an audit event.",
        "properties": {
          "after": {
            "$ref": "#/components/schemas/JsonNode",
            "description": "The native JSON value after, when the change type carries one."
          },
          "before": {
            "$ref": "#/components/schemas/JsonNode",
            "description": "The native JSON value before, when the change type carries one."
          },
          "field": {
            "description": "The raw column name, present exactly when no path could be derived: a migrated change whose legacy field name is not a declared root key, or a column the cleaner deleted because the dataset does not declare it.",
            "type": "string"
          },
          "legacyReason": {
            "description": "The migrated free-text reason, untrusted. Migration only; new changes carry a key instead, because the free text embedded the offending value.",
            "type": "string"
          },
          "path": {
            "description": "The canonical concrete record path, such as contact[0].email. Absent when the change names a column the dataset does not declare, which has no path.",
            "type": "string"
          },
          "reasonArgs": {
            "additionalProperties": {},
            "description": "That key's named arguments.",
            "type": "object"
          },
          "reasonKey": {
            "description": "The change-level machine reason key, from the audit.reason.* catalogue.",
            "type": "string"
          },
          "type": {
            "description": "What happened to the field.",
            "enum": [
              "INSERT",
              "REMOVE",
              "UPDATE",
              "IGNORED"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "ViewFormField": {
        "description": "How one field is laid out in the record form.",
        "properties": {
          "column": {
            "description": "The dataset column this field shows.",
            "type": "string"
          },
          "fields": {
            "description": "Layout of the fields inside a nested dataset. Null lays them out flat.",
            "items": {
              "$ref": "#/components/schemas/ViewFormField"
            },
            "type": "array"
          },
          "itemTitle": {
            "description": "Mustache template naming ONE ENTRY of a nested dataset, e.g. \"{{via}}, {{ciudad}}\", in one language. Null names it by the nested dataset's identity columns, which is what it did before this field existed. Only meaningful on a nested-dataset column. The other languages, when there are any, are in itemTitleLocalized.",
            "type": "string"
          },
          "itemTitleLocalized": {
            "description": "Every language this item title was written in.",
            "items": {
              "$ref": "#/components/schemas/LocalizedTextEntry"
            },
            "type": "array"
          },
          "label": {
            "description": "Label override, as literal text in one language. Null uses the column's own description. It is not a template: a label names a field, not a record. The other languages, when there are any, are in labelLocalized.",
            "type": "string"
          },
          "labelLocalized": {
            "description": "Every language this label was written in.",
            "items": {
              "$ref": "#/components/schemas/LocalizedTextEntry"
            },
            "type": "array"
          },
          "newline": {
            "description": "Break the row after this field. Null inherits the column's own UI hint.",
            "type": [
              "boolean",
              "null"
            ]
          },
          "render": {
            "description": "How a collection is rendered: DEFAULT, TABLE, TABS, TABS_TOP or GRID. Null inherits.",
            "type": [
              "string",
              "null"
            ]
          },
          "width": {
            "description": "Width in grid columns, 1 to 12. Null inherits the column's own UI hint.",
            "format": "int32",
            "type": [
              "integer",
              "null"
            ]
          }
        },
        "type": "object"
      },
      "ResourceTransformationSink": {
        "description": "Represents an entity sink in exchange format.",
        "properties": {
          "audit": {
            "description": "Flag to include metadata audit when sinking.",
            "type": "boolean"
          },
          "resource": {
            "description": "Resource identifier.",
            "type": "string"
          },
          "transformation": {
            "description": "Optional transformation identifier.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "ColumnRender": {
        "description": "Rendering override for one column.",
        "properties": {
          "column": {
            "type": "string",
            "description": "Column key."
          },
          "render": {
            "type": "string",
            "description": "Rendering configuration for the column."
          }
        },
        "type": "object"
      },
      "JsonNode": {
        "description": "Any JSON value: an object, array, string, number, boolean, or null."
      },
      "ColumnChangeDto": {
        "description": "One column whose quality inputs moved.",
        "properties": {
          "attributes": {
            "description": "The projected attribute names that differ.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "key": {
            "description": "The column key.",
            "type": "string"
          }
        },
        "type": "object"
      }
    },
    "securitySchemes": {
      "bearerAuth": {
        "bearerFormat": "JWT",
        "scheme": "Bearer",
        "type": "http"
      }
    }
  },
  "info": {
    "contact": {
      "email": "support@trazadera.com",
      "name": "Contact",
      "url": "https://www.trazadera.com"
    },
    "description": "Curated public API contract for Trazadera Golden SaaS.",
    "license": {
      "name": "Legal Notice",
      "url": "https://www.trazadera.com"
    },
    "title": "Trazadera Golden API",
    "version": "3.0.0"
  },
  "openapi": "3.1.0",
  "paths": {
    "/api/configuration": {
      "post": {
        "description": "Saves indicated configuration. Requires the ADMIN role.",
        "operationId": "saveConfiguration",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ConfigurationRequestDto"
              }
            }
          },
          "description": "Configuration to save",
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConfigurationResponseDto"
                }
              }
            },
            "description": "Successful operation"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Invalid parameters"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Authentication required"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Not authorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Object is not in the correct state"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Saves a configuration.",
        "tags": [
          "Configuration"
        ]
      }
    },
    "/api/configuration/category/{category}": {
      "get": {
        "description": "Retrieves a configuration with indicated identifier. Requires the ADMIN role.",
        "operationId": "listConfigurations",
        "parameters": [
          {
            "description": "Configuration category",
            "in": "path",
            "name": "category",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConfigurationListResponseDto"
                }
              }
            },
            "description": "Successful operation"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Invalid parameters"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Authentication required"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Not authorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Object is not in the correct state"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Retrieves a configuration by identifier.",
        "tags": [
          "Configuration"
        ]
      },
      "delete": {
        "description": "Locates all configurations for indicated category and deletes them. 404 when no configuration carries that category, like the delete by identifier. Requires the ADMIN role.",
        "operationId": "deleteConfigurationsByCategory",
        "parameters": [
          {
            "description": "Configuration category",
            "in": "path",
            "name": "category",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConfigurationListResponseDto"
                }
              }
            },
            "description": "Successful operation"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Invalid parameters"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Authentication required"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Not authorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Object is not in the correct state"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Deletes configurations by category.",
        "tags": [
          "Configuration"
        ]
      }
    },
    "/api/configuration/id/{id}": {
      "get": {
        "description": "Retrieves a configuration with indicated identifier. Requires the ADMIN role.",
        "operationId": "getConfiguration",
        "parameters": [
          {
            "description": "Configuration identifier",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConfigurationResponseDto"
                }
              }
            },
            "description": "Successful operation"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Invalid parameters"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Authentication required"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Not authorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Object is not in the correct state"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Retrieves a configuration by identifier.",
        "tags": [
          "Configuration"
        ]
      },
      "delete": {
        "description": "Locates a configuration with indicated identifier and deletes it. Requires the ADMIN role.",
        "operationId": "deleteConfigurationById",
        "parameters": [
          {
            "description": "Configuration identifier",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConfigurationResponseDto"
                }
              }
            },
            "description": "Successful operation"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Invalid parameters"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Authentication required"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Not authorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Object is not in the correct state"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Deletes a configuration by identifier.",
        "tags": [
          "Configuration"
        ]
      }
    },
    "/api/configuration/openapi": {
      "get": {
        "description": "Retrieves latest OpenAPI definition in JSON format. Restricted to authenticated users.",
        "operationId": "getOpenApi",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            },
            "description": "Successful operation"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Invalid parameters"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Authentication required"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Not authorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Object is not in the correct state"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Retrieves OpenAPI definition.",
        "tags": [
          "Configuration"
        ]
      }
    },
    "/api/configuration/version": {
      "get": {
        "description": "Retrieves product version. Restricted to authenticated users.",
        "operationId": "getVersion",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ConfigurationVersionResponseDto"
                }
              }
            },
            "description": "Successful operation"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Invalid parameters"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Authentication required"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Not authorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Object is not in the correct state"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Retrieves product version.",
        "tags": [
          "Configuration"
        ]
      }
    },
    "/api/data-scopes": {
      "get": {
        "description": "One entry per user or access token with a scope row: the entities it may see and, per entity, whether whole or by row scope. ADMINs never have a row. Requires the ADMIN role.",
        "operationId": "list_2",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DataScopeListResponseDto"
                }
              }
            },
            "description": "Successful operation"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Invalid parameters"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Authentication required"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Not authorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Object is not in the correct state"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Lists every principal that has a data scope.",
        "tags": [
          "Data scopes"
        ]
      }
    },
    "/api/data-scopes/bootstrap": {
      "post": {
        "description": "Creates default data grants for principals without an existing grant. Existing grants remain unchanged. Requires the ADMIN role.",
        "operationId": "bootstrap",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Successful operation"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Invalid parameters"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Authentication required"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Not authorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Object is not in the correct state"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Grants every entity, whole, to every non-ADMIN principal that has no scope yet.",
        "tags": [
          "Data scopes"
        ]
      }
    },
    "/api/data-scopes/me": {
      "get": {
        "description": "The entities the caller may see and how much of each. An ADMIN gets no scope: it is unrestricted. A principal with no row gets an empty map. Any authenticated principal.",
        "operationId": "me",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DataScopeResponseDto"
                }
              }
            },
            "description": "Successful operation"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Invalid parameters"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Authentication required"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Not authorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Object is not in the correct state"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "The caller's own effective data scope.",
        "tags": [
          "Data scopes"
        ]
      }
    },
    "/api/data-scopes/{type}/{id}": {
      "get": {
        "description": "404 when the principal has no scope row. Requires the ADMIN role.",
        "operationId": "get_4",
        "parameters": [
          {
            "description": "USER or ACCESS_TOKEN",
            "in": "path",
            "name": "type",
            "required": true,
            "schema": {
              "description": "The kind of principal a data scope belongs to.",
              "enum": [
                "USER",
                "ACCESS_TOKEN"
              ],
              "type": "string"
            }
          },
          {
            "description": "Principal identifier",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DataScopeResponseDto"
                }
              }
            },
            "description": "Successful operation"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Invalid parameters"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Authentication required"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Not authorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Object is not in the correct state"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "One principal's data scope.",
        "tags": [
          "Data scopes"
        ]
      },
      "delete": {
        "description": "Back to no access at all. 404 when the principal has no scope row, exactly like the read: a delete that answers 200 for a principal that never existed reports a removal that did not happen. 409 when the row grants a locked entity, naming them: this route revokes across every entity at once, so it is the other way into a locked entity's access list. Requires the ADMIN role.",
        "operationId": "delete_2",
        "parameters": [
          {
            "description": "USER or ACCESS_TOKEN",
            "in": "path",
            "name": "type",
            "required": true,
            "schema": {
              "description": "The kind of principal a data scope belongs to.",
              "enum": [
                "USER",
                "ACCESS_TOKEN"
              ],
              "type": "string"
            }
          },
          {
            "description": "Principal identifier",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Successful operation"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Invalid parameters"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Authentication required"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Not authorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Object is not in the correct state"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Removes a principal's data scope.",
        "tags": [
          "Data scopes"
        ]
      }
    },
    "/api/entities": {
      "get": {
        "description": "Locates all entities and returns. Requires the ADMIN, STEWARD or VIEWER role.",
        "operationId": "getAllEntities",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityListResponseDto"
                }
              }
            },
            "description": "Successful operation"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Invalid parameters"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Authentication required"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Not authorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Object is not in the correct state"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Retrieves all available entities.",
        "tags": [
          "Entities"
        ]
      },
      "post": {
        "description": "Creates a new entity or updates existing one using provided information. Functional validations are applied. Requires the ADMIN role.",
        "operationId": "saveEntity",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EntitySaveRequestDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityResponseDto"
                }
              }
            },
            "description": "Successful operation"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Invalid parameters"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Authentication required"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Not authorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Object is not in the correct state"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Creates a new entity or updates existing one.",
        "tags": [
          "Entities"
        ]
      }
    },
    "/api/entities/export": {
      "post": {
        "description": "Exports selected entities and returns the configuration package in exchange. The response contains the export; no background task is created. Requires the ADMIN role.",
        "operationId": "exportEntity",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EntityExportRequestDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityExportResponseDto"
                }
              }
            },
            "description": "Successful operation"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Invalid parameters"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Authentication required"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Not authorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Object is not in the correct state"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Runs a entities export.",
        "tags": [
          "Entities"
        ]
      }
    },
    "/api/entities/export/all": {
      "get": {
        "description": "Exports all entities and returns the configuration package in exchange. The response contains the export; no background task is created. Requires the ADMIN role.",
        "operationId": "exportAllEntities",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityExportResponseDto"
                }
              }
            },
            "description": "Successful operation"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Invalid parameters"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Authentication required"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Not authorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Object is not in the correct state"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Exports all entities.",
        "tags": [
          "Entities"
        ]
      }
    },
    "/api/entities/import": {
      "post": {
        "description": "Receives a list of entities as JSON and tries to import one by one. Requires the ADMIN role.",
        "operationId": "importEntities",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EntityImportRequestDto"
              }
            }
          },
          "description": "Entity resource dto",
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityImportResponseDto"
                }
              }
            },
            "description": "Successful operation"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Invalid parameters"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Authentication required"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Not authorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Object is not in the correct state"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Import entities.",
        "tags": [
          "Entities"
        ]
      }
    },
    "/api/entities/synchronize": {
      "put": {
        "description": "Locates a existing entity and executes a manual synchronization using provided parameters. The entity must be enabled, unlocked and set to manual mode. Requires the ADMIN role.",
        "operationId": "synchronizeEntity",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EntitySynchronizationRequestDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntitySynchronizationResponseDto"
                }
              }
            },
            "description": "Successful operation"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Invalid parameters"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Authentication required"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Not authorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Object is not in the correct state"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Manual entity synchronization.",
        "tags": [
          "Entities"
        ]
      }
    },
    "/api/entities/table/{table}": {
      "get": {
        "description": "Locates that is associated to indicated table, or none if table is not associated to an entity. Requires the ADMIN, STEWARD or VIEWER role.",
        "operationId": "getEntityForTable",
        "parameters": [
          {
            "description": "Table identifier",
            "in": "path",
            "name": "table",
            "required": true,
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityResponseDto"
                }
              }
            },
            "description": "Successful operation"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Invalid parameters"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Authentication required"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Not authorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Object is not in the correct state"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Retrieves the entity associated to a table.",
        "tags": [
          "Entities"
        ]
      }
    },
    "/api/entities/{entity}": {
      "get": {
        "description": "Locates a entity by identifier and returns it. Requires the ADMIN, STEWARD or VIEWER role.",
        "operationId": "getEntity",
        "parameters": [
          {
            "description": "Entity identifier",
            "in": "path",
            "name": "entity",
            "required": true,
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityResponseDto"
                }
              }
            },
            "description": "Successful operation"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Invalid parameters"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Authentication required"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Not authorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Object is not in the correct state"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Retrieves a entity by identifier.",
        "tags": [
          "Entities"
        ]
      },
      "delete": {
        "description": "Locates a entity and deletes it. Requires the ADMIN role.",
        "operationId": "deleteEntity",
        "parameters": [
          {
            "description": "Entity identifier to be deleted",
            "in": "path",
            "name": "entity",
            "required": true,
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityResponseDto"
                }
              }
            },
            "description": "Successful operation"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Invalid parameters"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Authentication required"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Not authorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Object is not in the correct state"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Deletes a entity.",
        "tags": [
          "Entities"
        ]
      }
    },
    "/api/entities/{entity}/access": {
      "get": {
        "description": "Who sees the entity and how much of it, plus the scope column and the state of its index. An empty list means only ADMINs see it. Requires the ADMIN role.",
        "operationId": "access",
        "parameters": [
          {
            "description": "Entity identifier",
            "in": "path",
            "name": "entity",
            "required": true,
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityAccessResponseDto"
                }
              }
            },
            "description": "Successful operation"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Invalid parameters"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Authentication required"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Not authorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Object is not in the correct state"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "The entity's access list.",
        "tags": [
          "Data scopes"
        ]
      },
      "put": {
        "description": "Replaces all entity access grants. Each principal receives whole-entity access (values:null) or row access through the entity's scope column. Omitted principals lose access. The complete request is validated before applying any grant. Unknown principals, missing scope columns for row grants, and empty or oversized value lists return 400. A locked entity returns 409. Requires the ADMIN role.",
        "operationId": "replaceAccess",
        "parameters": [
          {
            "description": "Entity identifier",
            "in": "path",
            "name": "entity",
            "required": true,
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/EntityAccessRequestDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityAccessResponseDto"
                }
              }
            },
            "description": "Successful operation"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Invalid parameters"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Authentication required"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Not authorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Object is not in the correct state"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Replaces the entity's access list.",
        "tags": [
          "Data scopes"
        ]
      }
    },
    "/api/entities/{entity}/automatic/{automatic}": {
      "put": {
        "description": "Locates a existing entity and sets automatic synchronization behaviour. An entity in automatic synchronization mode does automatic synchronization and does not allow any changes, so the entity becomes locked; if not automatic, synchronization needs to be manually called. Requires the ADMIN role.",
        "operationId": "setEntityAutomatic",
        "parameters": [
          {
            "description": "Entity name",
            "in": "path",
            "name": "entity",
            "required": true,
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          },
          {
            "description": "Automatic flag",
            "in": "path",
            "name": "automatic",
            "required": true,
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityResponseDto"
                }
              }
            },
            "description": "Successful operation"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Invalid parameters"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Authentication required"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Not authorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Object is not in the correct state"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Set automatic/manual synchronization mode for an entity.",
        "tags": [
          "Entities"
        ]
      }
    },
    "/api/entities/{entity}/clear": {
      "put": {
        "description": "Locates a existing entity and clears all buckets if not locked. Requires the ADMIN role.",
        "operationId": "clearEntity",
        "parameters": [
          {
            "description": "Entity identifier to be cleared",
            "in": "path",
            "name": "entity",
            "required": true,
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityResponseDto"
                }
              }
            },
            "description": "Successful operation"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Invalid parameters"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Authentication required"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Not authorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Object is not in the correct state"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Clears an entity.",
        "tags": [
          "Entities"
        ]
      }
    },
    "/api/entities/{entity}/dependencies": {
      "get": {
        "description": "Builds the dependency graph and returns this entity's place in it. \u26a0\ufe0f The cost is the whole installation, not this one entity: every resource, every table and every entity is loaded to build the graph. That is why it is a call of its own and why neither the listing nor the entity read carries it. Requires the ADMIN, STEWARD or VIEWER role, and the entity has to be one the caller may see.",
        "operationId": "getEntityDependencies",
        "parameters": [
          {
            "description": "Entity identifier",
            "in": "path",
            "name": "entity",
            "required": true,
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DependencyResponseDto"
                }
              }
            },
            "description": "Successful operation"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Invalid parameters"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Authentication required"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Not authorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Object is not in the correct state"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Retrieves what an entity uses and what uses it.",
        "tags": [
          "Entities"
        ]
      }
    },
    "/api/entities/{entity}/enabled/{enabled}": {
      "put": {
        "description": "Locates a existing entity and sets/unsets enabled flag. A disabled entity does not allow any data operation, but allows changes to configuration. Requires the ADMIN role.",
        "operationId": "setEntityEnabled",
        "parameters": [
          {
            "description": "Entity name",
            "in": "path",
            "name": "entity",
            "required": true,
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          },
          {
            "description": "Enabled flag",
            "in": "path",
            "name": "enabled",
            "required": true,
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityResponseDto"
                }
              }
            },
            "description": "Successful operation"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Invalid parameters"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Authentication required"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Not authorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Object is not in the correct state"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Enable/disable an entity.",
        "tags": [
          "Entities"
        ]
      }
    },
    "/api/entities/{entity}/locked/{locked}": {
      "put": {
        "description": "Locates a existing entity and locks/unlocks. A locked entity prevents any change to be made to the entity and underlying table and resources. Requires the ADMIN role.",
        "operationId": "setEntityLocking",
        "parameters": [
          {
            "description": "Entity name",
            "in": "path",
            "name": "entity",
            "required": true,
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          },
          {
            "description": "Locking flag",
            "in": "path",
            "name": "locked",
            "required": true,
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityResponseDto"
                }
              }
            },
            "description": "Successful operation"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Invalid parameters"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Authentication required"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Not authorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Object is not in the correct state"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Locks/unlocks an entity.",
        "tags": [
          "Entities"
        ]
      }
    },
    "/api/entities/{entity}/scope-column": {
      "put": {
        "description": "A root token column of the dataset whose values are strings, scalar or array. Answers at once; the GIN index builds behind and the access list reports its state. Setting the same column again rebuilds a missing or invalid index. 409 when row scopes exist on a different column. Requires the ADMIN role.",
        "operationId": "setScopeColumn",
        "parameters": [
          {
            "description": "Entity identifier",
            "in": "path",
            "name": "entity",
            "required": true,
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ScopeColumnRequestDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EntityAccessResponseDto"
                }
              }
            },
            "description": "Successful operation"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Invalid parameters"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Authentication required"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Not authorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Object is not in the correct state"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Sets or clears the entity's scope column.",
        "tags": [
          "Data scopes"
        ]
      }
    },
    "/api/entities/{entity}/scope-values": {
      "get": {
        "description": "For the administrator's picker: sorted, capped, under a time budget; the flag says when the list was cut short. A scope for a value with no record yet is legitimate, so the picker also accepts typed values. Requires the ADMIN role.",
        "operationId": "scopeValues",
        "parameters": [
          {
            "description": "Entity identifier",
            "in": "path",
            "name": "entity",
            "required": true,
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ScopeValuesResponseDto"
                }
              }
            },
            "description": "Successful operation"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Invalid parameters"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Authentication required"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Not authorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Object is not in the correct state"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "The distinct values of the entity's scope column.",
        "tags": [
          "Data scopes"
        ]
      }
    },
    "/api/events/id/{id}": {
      "get": {
        "description": "Locates an event by identifier and returns it. Requires the ADMIN role.",
        "operationId": "getSingleEvent",
        "parameters": [
          {
            "description": "Event identifier",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EventResponseDto"
                }
              }
            },
            "description": "Successful operation"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Invalid parameters"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Authentication required"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Not authorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Object is not in the correct state"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Retrieves a single event.",
        "tags": [
          "Product events"
        ]
      },
      "delete": {
        "description": "Locates an event by identifier and deletes it. Requires the ADMIN role.",
        "operationId": "deleteEventByIdentifier",
        "parameters": [
          {
            "description": "Event identifier to be deleted",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EventResponseDto"
                }
              }
            },
            "description": "Successful operation"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Invalid parameters"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Authentication required"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Not authorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Object is not in the correct state"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Deletes an event by identifier.",
        "tags": [
          "Product events"
        ]
      }
    },
    "/api/events/sink/{id}": {
      "get": {
        "description": "Locates events for indicated sink, filters and returns the page of events. Requires the ADMIN role.",
        "operationId": "getEventPage",
        "parameters": [
          {
            "description": "Sink identifier",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          },
          {
            "description": "Event filter",
            "in": "query",
            "name": "filter",
            "required": true,
            "schema": {
              "default": "ALL",
              "description": "Event filter represents the filter to apply to the events.",
              "enum": [
                "ALL",
                "VALID",
                "INVALID"
              ],
              "type": "string"
            }
          },
          {
            "description": "Page number",
            "in": "query",
            "name": "pageNumber",
            "required": true,
            "schema": {
              "default": 0,
              "format": "int32",
              "minimum": 0,
              "type": "integer"
            }
          },
          {
            "description": "Page size, at most 1000. A larger value is a 400, not a clamped page.",
            "in": "query",
            "name": "pageSize",
            "required": true,
            "schema": {
              "default": 10,
              "exclusiveMinimum": 0,
              "format": "int32",
              "maximum": 1000,
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EventPageResponseDto"
                }
              }
            },
            "description": "Successful operation"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Invalid parameters"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Authentication required"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Not authorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Object is not in the correct state"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Retrieves a page of filtered events for a certain sink.",
        "tags": [
          "Product events"
        ]
      },
      "delete": {
        "description": "Locates all event for a certain sink and deletes them all. 404 when the sink does not exist and holds no events. Requires the ADMIN role.",
        "operationId": "deleteEventsBySink",
        "parameters": [
          {
            "description": "Sink identifier to delete events for",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EventDeleteResponseDto"
                }
              }
            },
            "description": "Successful operation"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Invalid parameters"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Authentication required"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Not authorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Object is not in the correct state"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Deletes all events for a certain sink.",
        "tags": [
          "Product events"
        ]
      }
    },
    "/api/events/stats": {
      "get": {
        "description": "Calculates statistics for available events organized by sink. Requires the ADMIN role.",
        "operationId": "getStats",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EventStatsResponseDto"
                }
              }
            },
            "description": "Successful operation"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Invalid parameters"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Authentication required"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Not authorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Object is not in the correct state"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Retrieves global statistics for events.",
        "tags": [
          "Product events"
        ]
      }
    },
    "/api/events/valid/{id}": {
      "put": {
        "description": "Locates an existing event and sets validity to true. This only makes sense for events that are not valid. This event will be retried. Requires the ADMIN role.",
        "operationId": "validEvent",
        "parameters": [
          {
            "description": "Event identifier to be set valid",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EventResponseDto"
                }
              }
            },
            "description": "Successful operation"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Invalid parameters"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Authentication required"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Not authorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Object is not in the correct state"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Sets an event as valid.",
        "tags": [
          "Product events"
        ]
      }
    },
    "/api/files": {
      "get": {
        "description": "Locates all files and returns. Requires the ADMIN role.",
        "operationId": "getFiles",
        "parameters": [
          {
            "description": "Sorting criteria. Sorted by name by default",
            "in": "query",
            "name": "sorting",
            "required": false,
            "schema": {
              "default": "NAME",
              "description": "File sorting options",
              "enum": [
                "NAME",
                "SIZE",
                "CREATED"
              ],
              "type": "string"
            }
          },
          {
            "description": "Sorting direction. Ascending by default",
            "in": "query",
            "name": "direction",
            "required": false,
            "schema": {
              "default": "ASC",
              "description": "File sorting options",
              "enum": [
                "ASC",
                "DESC"
              ],
              "type": "string"
            }
          },
          {
            "description": "Page number. Page 0 by default.",
            "in": "query",
            "name": "pageNumber",
            "required": false,
            "schema": {
              "default": 0,
              "format": "int32",
              "minimum": 0,
              "type": "integer"
            }
          },
          {
            "description": "Page size, at most 1000. A larger value is a 400, not a clamped page.",
            "in": "query",
            "name": "pageSize",
            "required": false,
            "schema": {
              "default": 10,
              "exclusiveMinimum": 0,
              "format": "int32",
              "maximum": 1000,
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FileListResponseDto"
                }
              }
            },
            "description": "Successful operation"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Invalid parameters"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Authentication required"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Not authorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Object is not in the correct state"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Retrieves all available files.",
        "tags": [
          "Files"
        ]
      },
      "post": {
        "description": "Receives a stream of binary data and creates a new file with provided metadata. Requires the ADMIN role.",
        "operationId": "uploadFile",
        "parameters": [
          {
            "description": "File name. Name is important because it determines if the file is compressed (.gz extension) and the mime type (eg. csv or json extension)",
            "in": "query",
            "name": "name",
            "required": true,
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          },
          {
            "description": "File description",
            "in": "query",
            "name": "description",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "properties": {
                  "file": {
                    "description": "Multipart file to be uploaded",
                    "format": "binary",
                    "type": "string"
                  }
                },
                "required": [
                  "file"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FileResponseDto"
                }
              }
            },
            "description": "Successful operation"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Invalid parameters"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Authentication required"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Not authorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Object is not in the correct state"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Uploads a new file.",
        "tags": [
          "Files"
        ]
      }
    },
    "/api/files/download/{file}": {
      "get": {
        "description": "Locates a file by identifier and returns the binary content. Requires the ADMIN role.",
        "operationId": "downloadFile",
        "parameters": [
          {
            "description": "File identifier",
            "in": "path",
            "name": "file",
            "required": true,
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          }
        ],
        "responses": {
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Invalid parameters"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Authentication required"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Not authorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Object is not in the correct state"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Retrieves a file by identifier.",
        "tags": [
          "Files"
        ]
      }
    },
    "/api/files/{file}": {
      "get": {
        "description": "Locates one file by identifier and returns. Requires the ADMIN role.",
        "operationId": "getFile",
        "parameters": [
          {
            "description": "File identifier",
            "in": "path",
            "name": "file",
            "required": true,
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FileResponseDto"
                }
              }
            },
            "description": "Successful operation"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Invalid parameters"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Authentication required"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Not authorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Object is not in the correct state"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Retrieves one file.",
        "tags": [
          "Files"
        ]
      },
      "delete": {
        "description": "Locates a file and deletes it. Requires the ADMIN role.",
        "operationId": "deleteFile",
        "parameters": [
          {
            "description": "File identifier to be deleted",
            "in": "path",
            "name": "file",
            "required": true,
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/FileResponseDto"
                }
              }
            },
            "description": "Successful operation"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Invalid parameters"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Authentication required"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Not authorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Object is not in the correct state"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Deletes a file.",
        "tags": [
          "Files"
        ]
      }
    },
    "/api/golden/duplicates/record-counts": {
      "get": {
        "description": "For each visible entity, counts distinct records in at least one non-ignored duplicate group. This counts records, not groups, and respects the caller's data scope. Requires the ADMIN, STEWARD or VIEWER role.",
        "operationId": "getDuplicateRecordCounts",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GoldenDuplicateRecordCountResponseDto"
                }
              }
            },
            "description": "Successful operation"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Invalid parameters"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Authentication required"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Not authorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Object is not in the correct state"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Records with at least one possible duplicate, per entity.",
        "tags": [
          "Golden records"
        ]
      }
    },
    "/api/golden/{entity}/buckets": {
      "get": {
        "description": "Finds a retrieves buckets associated to an entity of potentially duplicated records, using different filtering, sorting and paging criteria. Entity must be enabled. Requires the ADMIN, STEWARD or VIEWER role.",
        "operationId": "getBuckets",
        "parameters": [
          {
            "description": "Entity name",
            "in": "path",
            "name": "entity",
            "required": true,
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          },
          {
            "description": "Index name",
            "in": "query",
            "name": "index",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Classification outcome filter",
            "in": "query",
            "name": "classification",
            "required": false,
            "schema": {
              "description": "The classification of a bucket. Used to determine what to do with the bucket.",
              "enum": [
                "MATCH",
                "NON_MATCH",
                "REVIEW",
                "IGNORE"
              ],
              "type": "string"
            }
          },
          {
            "description": "When true, applies the entity classifier's configured review score threshold (fail-safe 0.75), hiding buckets whose displayed score is below it regardless of classification. Ignored when 'minScore' is supplied.",
            "in": "query",
            "name": "candidatesOnly",
            "required": false,
            "schema": {
              "default": false,
              "type": "boolean"
            }
          },
          {
            "description": "Explicit minimum displayed score (0-1) override. When set, hides buckets whose average_score is below it; takes precedence over 'candidatesOnly'.",
            "in": "query",
            "name": "minScore",
            "required": false,
            "schema": {
              "format": "double",
              "type": "number"
            }
          },
          {
            "description": "Bucket sorting criteria. Natural order by default. More than one criteria is accepted, sorting will be applied in order.",
            "in": "query",
            "name": "sort",
            "required": false,
            "schema": {
              "items": {
                "description": "The sorting criteria for a bucket.",
                "enum": [
                  "SIZE_ASC",
                  "SIZE_DESC",
                  "SCORE_ASC",
                  "SCORE_DESC",
                  "DEVIATION_ASC",
                  "DEVIATION_DESC",
                  "NATURAL"
                ],
                "type": "string"
              },
              "type": "array"
            }
          },
          {
            "description": "Page number",
            "in": "query",
            "name": "pageNumber",
            "required": true,
            "schema": {
              "default": 0,
              "format": "int32",
              "minimum": 0,
              "type": "integer"
            }
          },
          {
            "description": "Page size, at most 1000. A larger value is a 400, not a clamped page.",
            "in": "query",
            "name": "pageSize",
            "required": true,
            "schema": {
              "default": 10,
              "exclusiveMinimum": 0,
              "format": "int32",
              "maximum": 1000,
              "type": "integer"
            }
          },
          {
            "description": "Only the groups a steward escalated to an administrator (data access scopes). ADMIN only; anyone else asking for it is refused with 403. False applies no filter, which is the listing every caller has always received.",
            "in": "query",
            "name": "escalated",
            "required": false,
            "schema": {
              "default": false,
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GoldenBucketPageResponseDto"
                }
              }
            },
            "description": "Successful operation"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Invalid parameters"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Authentication required"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Not authorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Object is not in the correct state"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Retrieves buckets for an entity.",
        "tags": [
          "Golden records"
        ]
      }
    },
    "/api/golden/{entity}/buckets/delete/{bucket}": {
      "delete": {
        "description": "Locates a bucket associated to an entity and deletes the bucket and the records in the bucket. The record deletion can be physical or logical (but bucket deletion is always physical). Entity must be enabled. Requires the ADMIN or STEWARD role.",
        "operationId": "deleteBucket",
        "parameters": [
          {
            "description": "Entity identifier",
            "in": "path",
            "name": "entity",
            "required": true,
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          },
          {
            "description": "Bucket identifier",
            "in": "path",
            "name": "bucket",
            "required": true,
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GoldenDeleteBucketRequestDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GoldenDeleteBucketResponseDto"
                }
              }
            },
            "description": "Successful operation"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Invalid parameters"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Authentication required"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Not authorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Object is not in the correct state"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Deletes a bucket.",
        "tags": [
          "Golden records"
        ]
      }
    },
    "/api/golden/{entity}/buckets/disconnect/{bucket}": {
      "post": {
        "description": "Locates a bucket associated to an entity and records that its records are different from each other: every record is marked as unrelated to every other one (_metadata._unrelated, by set-union with what it already listed). Nothing is deleted and the group is not recomposed: the records stay in the bucket, and a merge whose selection holds any of these pairs is refused unless it crosses the separation on purpose. Entity must be enabled. Requires the ADMIN or STEWARD role.",
        "operationId": "disconnectBucket",
        "parameters": [
          {
            "description": "Entity identifier",
            "in": "path",
            "name": "entity",
            "required": true,
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          },
          {
            "description": "Bucket identifier",
            "in": "path",
            "name": "bucket",
            "required": true,
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GoldenDisconnectBucketRequestDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GoldenDisconnectBucketResponseDto"
                }
              }
            },
            "description": "Successful operation"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Invalid parameters"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Authentication required"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Not authorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Object is not in the correct state"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Disconnects a bucket.",
        "tags": [
          "Golden records"
        ]
      }
    },
    "/api/golden/{entity}/buckets/disconnect/{bucket}/records": {
      "post": {
        "description": "Marks the records identified by 'recordIds' as unrelated to the rest of the bucket's records (and vice versa); the remaining records keep their pairwise relationships untouched. Nobody leaves the bucket: a merge whose selection holds one of these pairs is refused unless it crosses the separation on purpose. Existing _unrelated entries on the touched records are preserved. Entity must be enabled. Requires the ADMIN or STEWARD role.",
        "operationId": "disconnectRecordsFromBucket",
        "parameters": [
          {
            "description": "Entity identifier",
            "in": "path",
            "name": "entity",
            "required": true,
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          },
          {
            "description": "Bucket identifier",
            "in": "path",
            "name": "bucket",
            "required": true,
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GoldenDisconnectRecordsBucketRequestDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GoldenDisconnectBucketResponseDto"
                }
              }
            },
            "description": "Successful operation"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Invalid parameters"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Authentication required"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Not authorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Object is not in the correct state"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Disconnects a subset of records from a bucket.",
        "tags": [
          "Golden records"
        ]
      }
    },
    "/api/golden/{entity}/buckets/escalate/{bucket}": {
      "put": {
        "description": "A steward who may read a group but not decide it \u2014 a mixed group, with members outside their data scope \u2014 hands it to an administrator. The group stays as it is; it is flagged, with the actor, the time and the note, and the administrator's list filters on it. Requires the ADMIN or STEWARD role; the group must have at least one member in the caller's data scope.",
        "operationId": "escalateBucket",
        "parameters": [
          {
            "description": "Entity identifier",
            "in": "path",
            "name": "entity",
            "required": true,
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          },
          {
            "description": "Bucket identifier",
            "in": "path",
            "name": "bucket",
            "required": true,
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GoldenEscalateRequestDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GoldenBucketFullResponseDto"
                }
              }
            },
            "description": "Successful operation"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Invalid parameters"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Authentication required"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Not authorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Object is not in the correct state"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Escalates a bucket to an administrator, with a note.",
        "tags": [
          "Golden records"
        ]
      }
    },
    "/api/golden/{entity}/buckets/ignore/{bucket}": {
      "put": {
        "description": "Locates a bucket associated to an entity and sets the ignore flag to true to ignore the bucket. Entity must be enabled. Requires the ADMIN role: ignoring is a judgement about the grouping rather than about the records in it, and the group leaves every duplicates list once it is set.",
        "operationId": "ignoreBucket",
        "parameters": [
          {
            "description": "Entity identifier",
            "in": "path",
            "name": "entity",
            "required": true,
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          },
          {
            "description": "Bucket identifier",
            "in": "path",
            "name": "bucket",
            "required": true,
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GoldenIgnoreBucketRequestDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GoldenBucketFullResponseDto"
                }
              }
            },
            "description": "Successful operation"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Invalid parameters"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Authentication required"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Not authorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Object is not in the correct state"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Sets ignore flag for a bucket.",
        "tags": [
          "Golden records"
        ]
      }
    },
    "/api/golden/{entity}/buckets/merge/{bucket}": {
      "post": {
        "description": "Locates a bucket associated to an entity and merges the records in the bucket. The merge is done using the record generated automatically using the merger resource. A bucket holding two records recorded as different (_metadata._unrelated, written by a disconnect) is refused with 409 naming the pair, unless 'crossSeparations' is set: then a comment is mandatory and only the crossed pairs are revoked. The survivor inherits every other separation of the records it absorbs. Entity must be enabled. Requires the ADMIN or STEWARD role.",
        "operationId": "mergeBucket",
        "parameters": [
          {
            "description": "Entity identifier",
            "in": "path",
            "name": "entity",
            "required": true,
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          },
          {
            "description": "Bucket identifier",
            "in": "path",
            "name": "bucket",
            "required": true,
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GoldenMergeBucketRequestDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GoldenMergeBucketResponseDto"
                }
              }
            },
            "description": "Successful operation"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Invalid parameters"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Authentication required"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Not authorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Object is not in the correct state"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Merges a bucket.",
        "tags": [
          "Golden records"
        ]
      }
    },
    "/api/golden/{entity}/buckets/resolve-escalation/{bucket}": {
      "put": {
        "description": "The administrator has looked at the escalated group; the flag, the actor and the note are cleared. Requires the ADMIN role.",
        "operationId": "resolveBucketEscalation",
        "parameters": [
          {
            "description": "Entity identifier",
            "in": "path",
            "name": "entity",
            "required": true,
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          },
          {
            "description": "Bucket identifier",
            "in": "path",
            "name": "bucket",
            "required": true,
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GoldenBucketFullResponseDto"
                }
              }
            },
            "description": "Successful operation"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Invalid parameters"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Authentication required"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Not authorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Object is not in the correct state"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Clears the escalation of a bucket.",
        "tags": [
          "Golden records"
        ]
      }
    },
    "/api/golden/{entity}/buckets/split/{bucket}": {
      "post": {
        "description": "Locates a bucket associated to an entity and splits (modifies) the records using the calculated split records or provided ones. Entity must be enabled. Requires the ADMIN or STEWARD role.",
        "operationId": "splitBucket",
        "parameters": [
          {
            "description": "Entity identifier",
            "in": "path",
            "name": "entity",
            "required": true,
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          },
          {
            "description": "Bucket identifier",
            "in": "path",
            "name": "bucket",
            "required": true,
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GoldenSplitBucketRequestDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GoldenSplitBucketResponseDto"
                }
              }
            },
            "description": "Successful operation"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Invalid parameters"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Authentication required"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Not authorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Object is not in the correct state"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Splits a bucket.",
        "tags": [
          "Golden records"
        ]
      }
    },
    "/api/golden/{entity}/buckets/unignore/{bucket}": {
      "put": {
        "description": "Locates a bucket associated to an entity and sets the ignore flag to false to consider the bucket. Entity must be enabled. Requires the ADMIN role, as its counterpart does: undoing a decision is the same decision.",
        "operationId": "unignoreBucket",
        "parameters": [
          {
            "description": "Entity identifier",
            "in": "path",
            "name": "entity",
            "required": true,
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          },
          {
            "description": "Bucket identifier",
            "in": "path",
            "name": "bucket",
            "required": true,
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GoldenIgnoreBucketRequestDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GoldenBucketFullResponseDto"
                }
              }
            },
            "description": "Successful operation"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Invalid parameters"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Authentication required"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Not authorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Object is not in the correct state"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Sets ignore flag for a bucket.",
        "tags": [
          "Golden records"
        ]
      }
    },
    "/api/golden/{entity}/buckets/{bucket}": {
      "get": {
        "description": "Locates a certain bucket by identifier, associated to an entity, and returns the bucket of potentially duplicated records. Entity must be enabled. Requires the ADMIN, STEWARD or VIEWER role.",
        "operationId": "getBucket",
        "parameters": [
          {
            "description": "Entity name",
            "in": "path",
            "name": "entity",
            "required": true,
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          },
          {
            "description": "Bucket id",
            "in": "path",
            "name": "bucket",
            "required": true,
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GoldenBucketFullResponseDto"
                }
              }
            },
            "description": "Successful operation"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Invalid parameters"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Authentication required"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Not authorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Object is not in the correct state"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Retrieves one bucket.",
        "tags": [
          "Golden records"
        ]
      }
    },
    "/api/golden/{entity}/delete": {
      "delete": {
        "description": "Locates a golden record by identifier into the indicated entity (table) and deletes it. Entity must be enabled. If the entity has history enabled then logical delete will take place, otherwise physical delete. Record audit information is not returned. An optional comment is recorded on the REMOVE audit event. Requires the ADMIN or STEWARD role.",
        "operationId": "deleteRecord",
        "parameters": [
          {
            "description": "Entity identifier",
            "in": "path",
            "name": "entity",
            "required": true,
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GoldenDeleteRequestDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GoldenDeleteResponseDto"
                }
              }
            },
            "description": "Successful operation"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Invalid parameters"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Authentication required"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Not authorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Object is not in the correct state"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Deletes a golden record from an entity.",
        "tags": [
          "Golden records"
        ]
      }
    },
    "/api/golden/{entity}/duplicates/clusters": {
      "get": {
        "description": "Lists logical duplicate groups and their distinct record counts. Groups share at least one record across their candidate groups. By default, fully resolved groups are excluded; pass resolved=true to list them. Requires the ADMIN, STEWARD or VIEWER role.",
        "operationId": "getDuplicateClusters",
        "parameters": [
          {
            "description": "Entity identifier",
            "in": "path",
            "name": "entity",
            "required": true,
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          },
          {
            "description": "Mapping id filter (optional). Only a mapping flagged duplicates=true is admitted: a search-only index groups records that were never duplicate candidates. An unknown mapping answers 404, one that exists but is not for duplicates answers 400.",
            "in": "query",
            "name": "index",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Classification outcome filter (optional). Repeatable: several values combine with OR, IGNORE meaning the steward's ignore flag.",
            "in": "query",
            "name": "classification",
            "required": false,
            "schema": {
              "items": {
                "description": "The classification of a bucket. Used to determine what to do with the bucket.",
                "enum": [
                  "MATCH",
                  "NON_MATCH",
                  "REVIEW",
                  "IGNORE"
                ],
                "type": "string"
              },
              "type": "array"
            }
          },
          {
            "description": "When true, applies the entity classifier's configured review score threshold (fail-safe 0.75), hiding clusters whose representative (displayed) score is below it regardless of classification. Ignored when 'minScore' is supplied.",
            "in": "query",
            "name": "candidatesOnly",
            "required": false,
            "schema": {
              "default": false,
              "type": "boolean"
            }
          },
          {
            "description": "Explicit minimum representative score (0-1) override. When set, hides clusters whose representative average_score is below it; takes precedence over 'candidatesOnly'.",
            "in": "query",
            "name": "minScore",
            "required": false,
            "schema": {
              "format": "double",
              "type": "number"
            }
          },
          {
            "description": "Sorting criteria, applied in the order supplied. Omission sorts by the sum of candidate-group sizes, descending; NATURAL sorts by cluster identifier. SIZE sorting uses that sum, which may exceed the distinct recordCount when records belong to several candidate groups.",
            "in": "query",
            "name": "sort",
            "required": false,
            "schema": {
              "items": {
                "description": "The sorting criteria for a bucket.",
                "enum": [
                  "SIZE_ASC",
                  "SIZE_DESC",
                  "SCORE_ASC",
                  "SCORE_DESC",
                  "DEVIATION_ASC",
                  "DEVIATION_DESC",
                  "NATURAL"
                ],
                "type": "string"
              },
              "type": "array"
            }
          },
          {
            "description": "Page number (0-based)",
            "in": "query",
            "name": "page",
            "required": true,
            "schema": {
              "default": 0,
              "format": "int32",
              "minimum": 0,
              "type": "integer"
            }
          },
          {
            "description": "Page size, at most 1000. A larger value is a 400, not a clamped page.",
            "in": "query",
            "name": "pageSize",
            "required": true,
            "schema": {
              "default": 20,
              "exclusiveMinimum": 0,
              "format": "int32",
              "maximum": 1000,
              "type": "integer"
            }
          },
          {
            "description": "Only the clusters a steward escalated to an administrator (data access scopes)",
            "in": "query",
            "name": "escalated",
            "required": false,
            "schema": {
              "default": false,
              "type": "boolean"
            }
          },
          {
            "description": "When true, lists groups for which every pair has been recorded as different. When false or omitted, lists pending groups.",
            "in": "query",
            "name": "resolved",
            "required": false,
            "schema": {
              "default": false,
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GoldenClusterPageResponseDto"
                }
              }
            },
            "description": "Successful operation"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Invalid parameters"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Authentication required"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Not authorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Object is not in the correct state"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Retrieves logical duplicate clusters for a FUZZY_LSH entity.",
        "tags": [
          "Golden records"
        ]
      }
    },
    "/api/golden/{entity}/duplicates/clusters/{clusterId}": {
      "get": {
        "description": "Locates a logical cluster by id (the smallest candidate-group identifier) and returns the union of records across all of its candidate-groups, deduped. Falls back to a single bucket if no cluster row exists. Entity must be enabled. Requires the ADMIN, STEWARD or VIEWER role.",
        "operationId": "getCluster",
        "parameters": [
          {
            "description": "Entity identifier",
            "in": "path",
            "name": "entity",
            "required": true,
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          },
          {
            "description": "Cluster id",
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GoldenBucketFullResponseDto"
                }
              }
            },
            "description": "Successful operation"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Invalid parameters"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Authentication required"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Not authorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Object is not in the correct state"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Retrieves one logical cluster (union of its band-buckets).",
        "tags": [
          "Golden records"
        ]
      }
    },
    "/api/golden/{entity}/duplicates/clusters/{clusterId}/delete": {
      "delete": {
        "description": "Deletes the union of records across all candidate-groups of the logical cluster (and the now-empty buckets). The record deletion can be physical or logical. Entity must be enabled. Requires the ADMIN or STEWARD role.",
        "operationId": "deleteCluster",
        "parameters": [
          {
            "description": "Entity identifier",
            "in": "path",
            "name": "entity",
            "required": true,
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          },
          {
            "description": "Cluster id",
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GoldenDeleteBucketRequestDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GoldenDeleteBucketResponseDto"
                }
              }
            },
            "description": "Successful operation"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Invalid parameters"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Authentication required"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Not authorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Object is not in the correct state"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Deletes a whole cluster.",
        "tags": [
          "Golden records"
        ]
      }
    },
    "/api/golden/{entity}/duplicates/clusters/{clusterId}/delete/records": {
      "delete": {
        "description": "Deletes the named records of the logical cluster, leaving the rest untouched. The record deletion can be physical or logical. Entity must be enabled. Requires the ADMIN or STEWARD role.",
        "operationId": "deleteRecordsFromCluster",
        "parameters": [
          {
            "description": "Entity identifier",
            "in": "path",
            "name": "entity",
            "required": true,
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          },
          {
            "description": "Cluster id",
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GoldenDisconnectRecordsBucketRequestDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GoldenDeleteBucketResponseDto"
                }
              }
            },
            "description": "Successful operation"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Invalid parameters"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Authentication required"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Not authorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Object is not in the correct state"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Deletes a subset of a cluster's records.",
        "tags": [
          "Golden records"
        ]
      }
    },
    "/api/golden/{entity}/duplicates/clusters/{clusterId}/disconnect": {
      "post": {
        "description": "Disconnects all records across all candidate-groups of the logical cluster, marking them mutually unrelated (_metadata._unrelated, by set-union with what each already listed). The cluster is left exactly as the index formed it \u2014 the index does not read _unrelated \u2014 and what keeps the records apart is the merge, which refuses a selection holding any of these pairs unless it crosses the separation on purpose. Entity must be enabled. Requires the ADMIN or STEWARD role.",
        "operationId": "disconnectCluster",
        "parameters": [
          {
            "description": "Entity identifier",
            "in": "path",
            "name": "entity",
            "required": true,
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          },
          {
            "description": "Cluster id",
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GoldenDisconnectBucketRequestDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GoldenDisconnectBucketResponseDto"
                }
              }
            },
            "description": "Successful operation"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Invalid parameters"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Authentication required"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Not authorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Object is not in the correct state"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Disconnects a whole cluster.",
        "tags": [
          "Golden records"
        ]
      }
    },
    "/api/golden/{entity}/duplicates/clusters/{clusterId}/disconnect/records": {
      "post": {
        "description": "Marks the records identified by 'recordIds' as unrelated to the rest of the cluster's union (and vice versa); the remaining records keep their relationships untouched. Nobody leaves the cluster: a merge whose selection holds one of these pairs is refused unless it crosses the separation on purpose. Existing _unrelated entries are preserved. Entity must be enabled. Requires the ADMIN or STEWARD role.",
        "operationId": "disconnectRecordsFromCluster",
        "parameters": [
          {
            "description": "Entity identifier",
            "in": "path",
            "name": "entity",
            "required": true,
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          },
          {
            "description": "Cluster id",
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GoldenDisconnectRecordsBucketRequestDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GoldenDisconnectBucketResponseDto"
                }
              }
            },
            "description": "Successful operation"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Invalid parameters"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Authentication required"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Not authorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Object is not in the correct state"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Disconnects a subset of records from a cluster.",
        "tags": [
          "Golden records"
        ]
      }
    },
    "/api/golden/{entity}/duplicates/clusters/{clusterId}/escalate": {
      "put": {
        "description": "The cluster variant of the bucket escalation: the flag lives on the representative bucket (id == clusterId). Requires the ADMIN or STEWARD role; the cluster must have at least one member in the caller's data scope.",
        "operationId": "escalateCluster",
        "parameters": [
          {
            "description": "Entity identifier",
            "in": "path",
            "name": "entity",
            "required": true,
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          },
          {
            "description": "Cluster id",
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GoldenEscalateRequestDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GoldenBucketFullResponseDto"
                }
              }
            },
            "description": "Successful operation"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Invalid parameters"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Authentication required"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Not authorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Object is not in the correct state"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Escalates a cluster to an administrator, with a note.",
        "tags": [
          "Golden records"
        ]
      }
    },
    "/api/golden/{entity}/duplicates/clusters/{clusterId}/evaluate": {
      "get": {
        "description": "Runs the entity's classifier over every pair of the cluster's records \u2014 n(n-1)/2 comparisons, computed on demand and never stored. The stored classification only measures adjacent pairs; this is the expert's deeper look, which is why it is a separate call with a hard size cap instead of part of the cluster read. Entity must be enabled. Requires the ADMIN, STEWARD or VIEWER role.",
        "operationId": "evaluateCluster",
        "parameters": [
          {
            "description": "Entity identifier",
            "in": "path",
            "name": "entity",
            "required": true,
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          },
          {
            "description": "Cluster id",
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GoldenClusterEvaluationResponseDto"
                }
              }
            },
            "description": "Successful operation"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Invalid parameters"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Authentication required"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Not authorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Object is not in the correct state"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Exhaustively compares every pair of records in one cluster.",
        "tags": [
          "Golden records"
        ]
      }
    },
    "/api/golden/{entity}/duplicates/clusters/{clusterId}/ignore": {
      "put": {
        "description": "Sets the ignore flag to true on every candidate-group of the logical cluster, clearing their classification. Entity must be enabled. Requires the ADMIN role: ignoring is a judgement about the grouping rather than about the records in it, and the cluster leaves every duplicates list once it is set.",
        "operationId": "ignoreCluster",
        "parameters": [
          {
            "description": "Entity identifier",
            "in": "path",
            "name": "entity",
            "required": true,
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          },
          {
            "description": "Cluster id",
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GoldenIgnoreBucketRequestDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GoldenBucketFullResponseDto"
                }
              }
            },
            "description": "Successful operation"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Invalid parameters"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Authentication required"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Not authorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Object is not in the correct state"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Sets ignore flag for a whole cluster.",
        "tags": [
          "Golden records"
        ]
      }
    },
    "/api/golden/{entity}/duplicates/clusters/{clusterId}/merge": {
      "post": {
        "description": "Merges the union of records across all candidate-groups of the logical cluster into a single golden record. A cluster holding two records recorded as different (_metadata._unrelated) is refused with 409 naming the pair, unless 'crossSeparations' is set: then a comment is mandatory and only the crossed pairs are revoked. The survivor inherits every other separation of the records it absorbs. Entity must be enabled. Requires the ADMIN or STEWARD role.",
        "operationId": "mergeCluster",
        "parameters": [
          {
            "description": "Entity identifier",
            "in": "path",
            "name": "entity",
            "required": true,
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          },
          {
            "description": "Cluster id",
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GoldenMergeBucketRequestDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GoldenMergeBucketResponseDto"
                }
              }
            },
            "description": "Successful operation"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Invalid parameters"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Authentication required"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Not authorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Object is not in the correct state"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Merges a whole cluster.",
        "tags": [
          "Golden records"
        ]
      }
    },
    "/api/golden/{entity}/duplicates/clusters/{clusterId}/merge/records": {
      "post": {
        "description": "Merges the named records of the logical cluster into a single golden record, leaving the rest of the cluster untouched. At least two records. A pick holding two records recorded as different (_metadata._unrelated) is refused with 409 naming the pair, unless 'crossSeparations' is set: then a comment is mandatory and only the crossed pairs are revoked. Entity must be enabled. Requires the ADMIN or STEWARD role.",
        "operationId": "mergeRecordsFromCluster",
        "parameters": [
          {
            "description": "Entity identifier",
            "in": "path",
            "name": "entity",
            "required": true,
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          },
          {
            "description": "Cluster id",
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GoldenMergeRecordsRequestDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GoldenMergeBucketResponseDto"
                }
              }
            },
            "description": "Successful operation"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Invalid parameters"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Authentication required"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Not authorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Object is not in the correct state"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Merges a subset of a cluster's records.",
        "tags": [
          "Golden records"
        ]
      }
    },
    "/api/golden/{entity}/duplicates/clusters/{clusterId}/merge/records/preview": {
      "post": {
        "description": "Runs the entity's merger and pipeline over the named records of the logical cluster and returns the golden record the merge would produce. Nothing is written: no record, no bucket, no history and no audit event. The cluster read already publishes this candidate for the WHOLE cluster (its `merged` member); this is the same answer for a subset, which had no way of being asked for. Validated exactly as the merge is \u2014 the entity must be enabled and indexing, the cluster must not be ignored, every named record must be in it, there must be at least two, and a pick holding two records recorded as different is refused with 409 unless 'crossSeparations' is set \u2014 because a preview that answered where the merge would refuse would be believed. Requires the ADMIN, STEWARD or VIEWER role.",
        "operationId": "previewMergeOfRecordsFromCluster",
        "parameters": [
          {
            "description": "Entity identifier",
            "in": "path",
            "name": "entity",
            "required": true,
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          },
          {
            "description": "Cluster id",
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GoldenMergeRecordsRequestDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GoldenMergeBucketResponseDto"
                }
              }
            },
            "description": "Successful operation"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Invalid parameters"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Authentication required"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Not authorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Object is not in the correct state"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Computes the record a subset merge would produce, without merging.",
        "tags": [
          "Golden records"
        ]
      }
    },
    "/api/golden/{entity}/duplicates/clusters/{clusterId}/resolve-escalation": {
      "put": {
        "description": "The cluster variant of the bucket resolution. Requires the ADMIN role.",
        "operationId": "resolveClusterEscalation",
        "parameters": [
          {
            "description": "Entity identifier",
            "in": "path",
            "name": "entity",
            "required": true,
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          },
          {
            "description": "Cluster id",
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GoldenBucketFullResponseDto"
                }
              }
            },
            "description": "Successful operation"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Invalid parameters"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Authentication required"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Not authorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Object is not in the correct state"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Clears the escalation of a cluster.",
        "tags": [
          "Golden records"
        ]
      }
    },
    "/api/golden/{entity}/duplicates/clusters/{clusterId}/split": {
      "post": {
        "description": "Splits (modifies) the union of records across all candidate-groups of the logical cluster using the calculated split records. Entity must be enabled. Requires the ADMIN or STEWARD role.",
        "operationId": "splitCluster",
        "parameters": [
          {
            "description": "Entity identifier",
            "in": "path",
            "name": "entity",
            "required": true,
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          },
          {
            "description": "Cluster id",
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GoldenSplitBucketRequestDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GoldenSplitBucketResponseDto"
                }
              }
            },
            "description": "Successful operation"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Invalid parameters"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Authentication required"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Not authorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Object is not in the correct state"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Splits a whole cluster.",
        "tags": [
          "Golden records"
        ]
      }
    },
    "/api/golden/{entity}/duplicates/clusters/{clusterId}/unignore": {
      "put": {
        "description": "Sets the ignore flag to false on every candidate-group of the logical cluster, (re)classifying them. Entity must be enabled. Requires the ADMIN role, as its counterpart does: undoing a decision is the same decision.",
        "operationId": "unignoreCluster",
        "parameters": [
          {
            "description": "Entity identifier",
            "in": "path",
            "name": "entity",
            "required": true,
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          },
          {
            "description": "Cluster id",
            "in": "path",
            "name": "clusterId",
            "required": true,
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GoldenIgnoreBucketRequestDto"
              }
            }
          }
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GoldenBucketFullResponseDto"
                }
              }
            },
            "description": "Successful operation"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Invalid parameters"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Authentication required"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Not authorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Object is not in the correct state"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Clears ignore flag for a whole cluster.",
        "tags": [
          "Golden records"
        ]
      }
    },
    "/api/golden/{entity}/merge/undo": {
      "post": {
        "description": "Recovers the records a merge absorbed from the entity's history relation and deletes the record it produced, which is archived in their place. The records named are taken from the survivor's own '_metadata._merged', not from the request. Answers 409 when the entity keeps no history (there is nothing archived to recover), when the record is not the result of a merge, when the record was itself merged again (undo that merge first) or when one of the absorbed records is no longer in history. Entity must be enabled. Requires the ADMIN or STEWARD role.",
        "operationId": "undoMerge",
        "parameters": [
          {
            "description": "Entity identifier",
            "in": "path",
            "name": "entity",
            "required": true,
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GoldenUndoMergeRequestDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GoldenUndoMergeResponseDto"
                }
              }
            },
            "description": "Successful operation"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Invalid parameters"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Authentication required"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Not authorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Object is not in the correct state"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Undoes the merge that produced a record.",
        "tags": [
          "Golden records"
        ]
      }
    },
    "/api/golden/{entity}/records/{recordId}/index-status": {
      "get": {
        "description": "Reports indexing status for a record stored by an asynchronous upsert. Returns INDEXED when the record has no pending or failed indexing work. Requires the ADMIN or STEWARD role.",
        "operationId": "recordIndexStatus",
        "parameters": [
          {
            "description": "Entity identifier",
            "in": "path",
            "name": "entity",
            "required": true,
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          },
          {
            "description": "Record identifier",
            "in": "path",
            "name": "recordId",
            "required": true,
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/IndexStatusResponseDto"
                }
              }
            },
            "description": "Successful operation"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Invalid parameters"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Authentication required"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Not authorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Object is not in the correct state"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Returns the indexing status (PENDING / INDEXED / FAILED) of a record.",
        "tags": [
          "Golden records"
        ]
      }
    },
    "/api/golden/{entity}/search": {
      "post": {
        "description": "Searches golden records considering indicated entity and search conditions. Entity must be enabled. The search criteria is expressed as a record that should meet the requirements of the dataset associated to this entity. Requires the ADMIN, STEWARD or VIEWER role.",
        "operationId": "searchRecords",
        "parameters": [
          {
            "description": "Entity identifier",
            "in": "path",
            "name": "entity",
            "required": true,
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GoldenSearchRequestDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GoldenSearchResponseDto"
                }
              }
            },
            "description": "Successful operation"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Invalid parameters"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Authentication required"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Not authorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Object is not in the correct state"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Searches golden records in an entity.",
        "tags": [
          "Golden records"
        ]
      }
    },
    "/api/golden/{entity}/search/capabilities": {
      "get": {
        "description": "Returns searchable fields, supported matching modes, free-text availability, and whether source identifiers can be searched. Use these capabilities to build a search form for the entity. Requires the ADMIN, STEWARD or VIEWER role.",
        "operationId": "searchCapabilities",
        "parameters": [
          {
            "description": "Entity identifier",
            "in": "path",
            "name": "entity",
            "required": true,
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GoldenSearchCapabilitiesResponseDto"
                }
              }
            },
            "description": "Successful operation"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Invalid parameters"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Authentication required"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Not authorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Object is not in the correct state"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "States what an entity can be searched by.",
        "tags": [
          "Golden records"
        ]
      }
    },
    "/api/golden/{entity}/search/text": {
      "post": {
        "description": "Searches an entity with one line of text, the way a search bar does. Whitespace separates terms and double quotes hold a phrase together; every term is probed against every searchable field and against the identifier, and a record that matches more of the terms ranks higher. Records from the history table are included in the same result, with a merged one resolved forward to the record that survived it. Requires the ADMIN, STEWARD or VIEWER role.",
        "operationId": "searchRecordsByText",
        "parameters": [
          {
            "description": "Entity identifier",
            "in": "path",
            "name": "entity",
            "required": true,
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GoldenTextSearchRequestDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GoldenSearchResponseDto"
                }
              }
            },
            "description": "Successful operation"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Invalid parameters"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Authentication required"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Not authorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Object is not in the correct state"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Searches golden records in an entity by free text.",
        "tags": [
          "Golden records"
        ]
      }
    },
    "/api/golden/{entity}/upsert": {
      "post": {
        "description": "Updates or inserts a golden record into indicated entity. Entity must be enabled. The indicated record is searched: if found, then the record will be updated; if not found, the record will be considered as new and inserted. When the update flag forces an update, the record must already exist (matched by id or by the dataset's single identity column); otherwise the operation fails with 409 and nothing is inserted. If more than one record is found in the search, only the first one will be updated. Requires the ADMIN or STEWARD role.",
        "operationId": "upsertRecord",
        "parameters": [
          {
            "description": "Entity identifier",
            "in": "path",
            "name": "entity",
            "required": true,
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GoldenUpsertRequestDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GoldenUpsertResponseDto"
                }
              }
            },
            "description": "Successful operation"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Invalid parameters"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Authentication required"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Not authorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Object is not in the correct state"
          },
          "410": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Record was deleted"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Updates or inserts a golden record in an entity.",
        "tags": [
          "Golden records"
        ]
      }
    },
    "/api/jobs/definitions": {
      "get": {
        "operationId": "list",
        "parameters": [
          {
            "in": "query",
            "name": "type",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "enabled",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "in": "query",
            "name": "source",
            "required": false,
            "schema": {
              "enum": [
                "DECLARED",
                "API"
              ],
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "orphaned",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "in": "query",
            "name": "page",
            "required": false,
            "schema": {
              "default": 0,
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "size",
            "required": false,
            "schema": {
              "default": 20,
              "format": "int32",
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/TzPageTzDefinitionResponse"
                }
              }
            },
            "description": "OK"
          }
        },
        "tags": [
          "Tasks"
        ],
        "summary": "List schedule definitions.",
        "description": "List definitions created by Golden. Uses page and size and optional filters. Requires the ADMIN role.",
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/api/jobs/definitions/{id}": {
      "get": {
        "operationId": "get",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/TzDefinitionResponse"
                }
              }
            },
            "description": "OK"
          }
        },
        "tags": [
          "Tasks"
        ],
        "summary": "Read a schedule definition.",
        "description": "Returns a definition and its ETag. Use that version in If-Match for a subsequent change. Requires the ADMIN role.",
        "security": [
          {
            "bearerAuth": []
          }
        ]
      },
      "put": {
        "operationId": "replace",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "If-Match",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TzDefinitionRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/TzDefinitionResponse"
                }
              }
            },
            "description": "OK"
          }
        },
        "tags": [
          "Tasks"
        ],
        "summary": "Replace a schedule definition.",
        "description": "Requires If-Match with the version read from the definition. Check the full replacement body and owner-managed fields before changing an existing definition. Requires the ADMIN role.",
        "security": [
          {
            "bearerAuth": []
          }
        ]
      },
      "delete": {
        "operationId": "delete",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "If-Match",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Completed with no response body"
          }
        },
        "tags": [
          "Tasks"
        ],
        "summary": "Delete a schedule definition.",
        "description": "Requires If-Match. Product-managed definitions can reject deletion; use the owning entity or source configuration where applicable. Requires the ADMIN role.",
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/api/jobs/definitions/{id}/enabled": {
      "put": {
        "operationId": "setEnabled",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "If-Match",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TzEnabledRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/TzDefinitionResponse"
                }
              }
            },
            "description": "OK"
          }
        },
        "tags": [
          "Tasks"
        ],
        "summary": "Enable or disable a schedule.",
        "description": "Send the enabled boolean and the current If-Match value. Disabling future scheduling does not cancel an execution already in progress. Requires the ADMIN role.",
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/api/jobs/definitions/{id}/next-runs": {
      "get": {
        "operationId": "nextRuns",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "count",
            "required": false,
            "schema": {
              "default": 10,
              "format": "int32",
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/TzNextRunsResponse"
                }
              }
            },
            "description": "OK"
          }
        },
        "tags": [
          "Tasks"
        ],
        "summary": "Preview scheduled execution times.",
        "description": "Returns upcoming times for the definition. Count defaults to 10 and must be between 1 and 365. Requires the ADMIN role.",
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/api/jobs/definitions/{id}/run": {
      "post": {
        "operationId": "run",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "force",
            "required": false,
            "schema": {
              "default": false,
              "type": "boolean"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TzRunNowRequest"
              }
            }
          }
        },
        "responses": {
          "202": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/TzDefinitionRunResponse"
                }
              }
            },
            "description": "Request accepted; follow the execution"
          }
        },
        "tags": [
          "Tasks"
        ],
        "summary": "Run a definition now.",
        "description": "Returns the new run identifier when accepted. Follow that execution separately. The force parameter bypasses the overlap check only. Requires the ADMIN role.",
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/api/jobs/runs": {
      "get": {
        "operationId": "find",
        "parameters": [
          {
            "in": "query",
            "name": "type",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "status",
            "required": false,
            "schema": {
              "enum": [
                "PENDING",
                "RUNNING",
                "CANCELLING",
                "SUCCEEDED",
                "FAILED",
                "CANCELLED",
                "SKIPPED"
              ],
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "definition",
            "required": false,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "from",
            "required": false,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "to",
            "required": false,
            "schema": {
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "owner",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "page",
            "required": false,
            "schema": {
              "default": 0,
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "in": "query",
            "name": "size",
            "required": false,
            "schema": {
              "default": 20,
              "format": "int32",
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/TzPageTzRunSummary"
                }
              }
            },
            "description": "OK"
          }
        },
        "tags": [
          "Tasks"
        ],
        "summary": "List execution summaries.",
        "description": "Filter by type, status, definition, time range, or owner. Uses page and size; read an individual run for its input and output. Requires the ADMIN role.",
        "security": [
          {
            "bearerAuth": []
          }
        ]
      },
      "post": {
        "operationId": "submit",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TzRunSubmitRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/TzRunView"
                }
              }
            },
            "description": "Execution created"
          },
          "200": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/TzRunView"
                }
              }
            },
            "description": "An existing execution was returned for the request"
          }
        },
        "tags": [
          "Tasks"
        ],
        "summary": "Submit an execution.",
        "description": "Submit the input required by an available job type. Prefer the product operation that starts the work when one exists. Acceptance is not successful completion. Requires the ADMIN role.",
        "security": [
          {
            "bearerAuth": []
          }
        ]
      },
      "delete": {
        "operationId": "delete_1",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TzRunDeleteRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "204": {
            "description": "Completed with no response body"
          }
        },
        "tags": [
          "Tasks"
        ],
        "summary": "Delete retained execution records.",
        "description": "Deletes eligible terminal execution records selected by the request. This does not undo the work those executions performed. Requires the ADMIN role.",
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/api/jobs/runs/{id}": {
      "get": {
        "operationId": "get_2",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/TzRunView"
                }
              }
            },
            "description": "OK"
          }
        },
        "tags": [
          "Tasks"
        ],
        "summary": "Read one execution.",
        "description": "Read state, progress, input, output, and failure information for the identified run. Requires the ADMIN role.",
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/api/jobs/runs/{id}/cancel": {
      "post": {
        "operationId": "cancel",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TzRunCancelRequest"
              }
            }
          }
        },
        "responses": {
          "202": {
            "description": "Request accepted; follow the execution"
          }
        },
        "tags": [
          "Tasks"
        ],
        "summary": "Request execution cancellation.",
        "description": "Requests cooperative cancellation. Work already applied is not rolled back by this request. Requires the ADMIN role.",
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/api/jobs/runs/{id}/chain": {
      "get": {
        "operationId": "chain",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/TzChainView"
                }
              }
            },
            "description": "OK"
          }
        },
        "tags": [
          "Tasks"
        ],
        "summary": "Read related executions.",
        "description": "Read the chain of executions associated with this run. Requires the ADMIN role.",
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/api/jobs/runs/{id}/retry": {
      "post": {
        "operationId": "retry",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "force",
            "required": false,
            "schema": {
              "default": false,
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "202": {
            "description": "Request accepted; follow the execution"
          },
          "200": {
            "description": "An existing execution was returned for the request"
          }
        },
        "tags": [
          "Tasks"
        ],
        "summary": "Retry an execution.",
        "description": "Request a new attempt for an eligible execution. Inspect prior effects and the failure before retrying data-changing work. Requires the ADMIN role.",
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/api/jobs/types": {
      "get": {
        "operationId": "list_1",
        "responses": {
          "200": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/TzTypesResponse"
                }
              }
            },
            "description": "OK"
          }
        },
        "tags": [
          "Tasks"
        ],
        "summary": "List available execution types.",
        "description": "Lists execution types available in this Golden service. Requires the ADMIN role.",
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/api/jobs/types/{type}": {
      "get": {
        "operationId": "get_1",
        "parameters": [
          {
            "in": "path",
            "name": "type",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/TzTypeResponse"
                }
              }
            },
            "description": "OK"
          }
        },
        "tags": [
          "Tasks"
        ],
        "summary": "Read an execution type.",
        "description": "Read the input and execution information for one available type. Requires the ADMIN role.",
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/api/metrics/tables/{table}/families/{family}": {
      "get": {
        "description": "Retrieves the daily snapshots of a metric family for one table, ascending by day. The families that exist are enumerated on the family parameter. Both bounds are required, are inclusive, and are UTC days; the range must not be inverted, must end on a day that has already closed, and may span at most 366 days. An unknown table or family answers 404; a valid range holding no snapshots answers 200 with an empty list. Requires the ADMIN, STEWARD or VIEWER role.",
        "operationId": "getDailyMetrics",
        "parameters": [
          {
            "description": "Table identifier",
            "in": "path",
            "name": "table",
            "required": true,
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          },
          {
            "description": "Metric family identifier",
            "in": "path",
            "name": "family",
            "required": true,
            "schema": {
              "enum": [
                "quality",
                "quality-issues"
              ],
              "type": "string"
            }
          },
          {
            "description": "First day (included), in ISO yyyy-MM-dd format",
            "in": "query",
            "name": "fromDay",
            "required": true,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Last day (included), in ISO yyyy-MM-dd format",
            "in": "query",
            "name": "toDay",
            "required": true,
            "schema": {
              "format": "date",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DailyMetricListResponseDto"
                }
              }
            },
            "description": "Successful operation"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Invalid parameters"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Authentication required"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Not authorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Object is not in the correct state"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Retrieves the daily metric snapshots of one table and one family.",
        "tags": [
          "Metrics"
        ]
      }
    },
    "/api/quality/measurements": {
      "post": {
        "description": "Takes a quality measurement of the entity's table as it stands now - the same two payloads the daily snapshot carries - and stores it with the instant it was taken and an optional label of at most 120 characters. It does not recalculate records first. Asynchronous - returns the run to poll. Answers 409 while a measurement of the same entity is already running. Requires the ADMIN role.",
        "operationId": "measure",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/QualityMeasurementRequestDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QualityMeasurementOperationResponseDto"
                }
              }
            },
            "description": "Successful operation"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Invalid parameters"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Authentication required"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Not authorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Object is not in the correct state"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Measures one entity's quality now.",
        "tags": [
          "Metrics"
        ]
      }
    },
    "/api/metrics/tables/{table}/measurements": {
      "get": {
        "description": "Retrieves the quality measurements taken on demand of one table whose instant falls in an inclusive window of UTC days, newest first, at most 200. Unlike the daily read, the window may end today. The range must not be inverted and may span at most 366 days. An unknown table answers 404; a valid range holding no measurements answers 200 with an empty list. Requires the ADMIN, STEWARD or VIEWER role.",
        "operationId": "getMeasurements",
        "parameters": [
          {
            "description": "Table identifier",
            "in": "path",
            "name": "table",
            "required": true,
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          },
          {
            "description": "First day (included), in ISO yyyy-MM-dd format",
            "in": "query",
            "name": "fromDay",
            "required": true,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Last day (included), in ISO yyyy-MM-dd format",
            "in": "query",
            "name": "toDay",
            "required": true,
            "schema": {
              "format": "date",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/QualityMeasurementListResponseDto"
                }
              }
            },
            "description": "Successful operation"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Invalid parameters"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Authentication required"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Not authorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Object is not in the correct state"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Retrieves the quality measurements of one table.",
        "tags": [
          "Metrics"
        ]
      }
    },
    "/api/resources": {
      "get": {
        "description": "Locates all available resources and returns. Requires the ADMIN role.",
        "operationId": "getAllResources",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceListResponseDto"
                }
              }
            },
            "description": "Successful operation"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Invalid parameters"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Authentication required"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Not authorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Object is not in the correct state"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Retrieves all available resources.",
        "tags": [
          "Resources"
        ]
      },
      "post": {
        "description": "Saves or tests a resource using indicated JSON representation. Resource is validated before storing or testing. Requires the ADMIN role.",
        "operationId": "saveResource",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ResourceSaveRequestDto"
              }
            }
          },
          "description": "Resource to store in JSON format",
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceResponseDto"
                }
              }
            },
            "description": "Successful operation"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Invalid parameters"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Authentication required"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Not authorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Object is not in the correct state"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Saves or tests a resource.",
        "tags": [
          "Resources"
        ]
      }
    },
    "/api/resources/describe/{type}": {
      "get": {
        "description": "Given a resource type, returns a document that contains all properties for the resource. This is handy for dynamically creating new resources. Requires the ADMIN role.",
        "operationId": "describeResourceType",
        "parameters": [
          {
            "description": "Resource type",
            "in": "path",
            "name": "type",
            "required": true,
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceResponseDto"
                }
              }
            },
            "description": "Successful operation"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Invalid parameters"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Authentication required"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Not authorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Object is not in the correct state"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Describes a resource type.",
        "tags": [
          "Resources"
        ]
      }
    },
    "/api/resources/duplicate/{id}/{newId}": {
      "put": {
        "description": "Locates a resource by identifier and duplicates using given new identifier. The new identifier must not exist. Requires the ADMIN role.",
        "operationId": "duplicateResource",
        "parameters": [
          {
            "description": "Current resource identifier",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          },
          {
            "description": "New resource identifier",
            "in": "path",
            "name": "newId",
            "required": true,
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceResponseDto"
                }
              }
            },
            "description": "Successful operation"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Invalid parameters"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Authentication required"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Not authorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Object is not in the correct state"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Duplicates a resource.",
        "tags": [
          "Resources"
        ]
      }
    },
    "/api/resources/enums": {
      "get": {
        "description": "Returns handy maps and lists for all available enumerations of resources and auxiliary types. Restricted to authenticated users.",
        "operationId": "getEnumerations",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceEnumsDto"
                }
              }
            },
            "description": "Successful operation"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Invalid parameters"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Authentication required"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Not authorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Object is not in the correct state"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Retrieves all available enumerations.",
        "tags": [
          "Resources"
        ]
      }
    },
    "/api/resources/export": {
      "post": {
        "description": "Locates indicated resources by identifier and returns a packaged file containing the exported resources as JSON. Requires the ADMIN role.",
        "operationId": "exportResources",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ResourceExportRequestDto"
              }
            }
          },
          "description": "Export resource dto",
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceExportResponseDto"
                }
              }
            },
            "description": "Successful operation"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Invalid parameters"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Authentication required"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Not authorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Object is not in the correct state"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Export resources.",
        "tags": [
          "Resources"
        ]
      }
    },
    "/api/resources/id/{id}": {
      "get": {
        "description": "Locates a resource by identifier and returns it. Requires the ADMIN role.",
        "operationId": "getResource",
        "parameters": [
          {
            "description": "Resource identifier",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceResponseDto"
                }
              }
            },
            "description": "Successful operation"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Invalid parameters"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Authentication required"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Not authorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Object is not in the correct state"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Retrieves a resource by identifier.",
        "tags": [
          "Resources"
        ]
      },
      "delete": {
        "description": "Locates a resource by identifier and deletes it. Only works if resource is not used (referenced by other resource). Requires the ADMIN role.",
        "operationId": "deleteResource",
        "parameters": [
          {
            "description": "Resource identifier",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Successful operation"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Invalid parameters"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Authentication required"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Not authorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Object is not in the correct state"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Deletes a resource.",
        "tags": [
          "Resources"
        ]
      }
    },
    "/api/resources/id/{id}/dependencies": {
      "get": {
        "description": "Builds the dependency graph and returns this resource's place in it. \u26a0\ufe0f The cost is the whole installation, not this one resource: every resource, every table and every entity is loaded to build the graph. That is why it is a call of its own and why neither the listing nor the resource read carries it. Requires the ADMIN role.",
        "operationId": "getResourceDependencies",
        "parameters": [
          {
            "description": "Resource identifier",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DependencyResponseDto"
                }
              }
            },
            "description": "Successful operation"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Invalid parameters"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Authentication required"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Not authorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Object is not in the correct state"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Retrieves what a resource uses and what uses it.",
        "tags": [
          "Resources"
        ]
      }
    },
    "/api/resources/import": {
      "post": {
        "description": "Receives a list of resources as JSON and tries to import one by one. Requires the ADMIN role.",
        "operationId": "importResources",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ResourceImportRequestDto"
              }
            }
          },
          "description": "Import resource dto",
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceImportResponseDto"
                }
              }
            },
            "description": "Successful operation"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Invalid parameters"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Authentication required"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Not authorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Object is not in the correct state"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Import resources.",
        "tags": [
          "Resources"
        ]
      }
    },
    "/api/resources/lookup/{table}": {
      "get": {
        "description": "Returns the distinct values of a master reference table's key column, with their description columns, ordered by value and optionally narrowed by a case-insensitive search term. This is what a FOREIGN_ID picker reads. Restricted to authenticated users.",
        "operationId": "getLookupValues",
        "parameters": [
          {
            "description": "Lookup table identifier",
            "in": "path",
            "name": "table",
            "required": true,
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          },
          {
            "description": "Case-insensitive substring matched against the value and its descriptions",
            "in": "query",
            "name": "q",
            "required": false,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "Maximum entries to return, capped at 500",
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Entries to skip",
            "in": "query",
            "name": "offset",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/LookupPageResponseDto"
                }
              }
            },
            "description": "Successful operation"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Invalid parameters"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Authentication required"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Not authorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Object is not in the correct state"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Reads one page of a lookup table's values.",
        "tags": [
          "Resources"
        ]
      }
    },
    "/api/resources/quality/impact": {
      "post": {
        "description": "Takes a dataset draft in the same shape the save endpoint takes and answers whether its quality hash would move, which datasets and tables that would reach, and what moved in the quality projection. Writes nothing and takes no lock. \u26a0\ufe0f It is not an opt-out: there is no way to save a dataset and keep the previous definition, because that would leave records measured under a projection that no longer describes them. Nor does anything get deleted by the change: a daily snapshot is never rewritten and each carries the definition it was taken against, and the projection behind every hash is retained. Requires the ADMIN role.",
        "operationId": "getDatasetQualityImpact",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ResourceSaveRequestDto"
              }
            }
          },
          "description": "The dataset draft, in the same shape the save endpoint takes",
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DatasetQualityImpactResponseDto"
                }
              }
            },
            "description": "Successful operation"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Invalid parameters"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Authentication required"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Not authorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Object is not in the correct state"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Says what saving a dataset would invalidate, without saving it.",
        "tags": [
          "Resources"
        ]
      }
    },
    "/api/resources/rename/{id}/{newId}": {
      "put": {
        "description": "Locates an existing resource by identifier and renames to a new identifier. Only works if resource is not being used (referenced by other resource) and the new identifier does not exist. Requires the ADMIN role.",
        "operationId": "renameResource",
        "parameters": [
          {
            "description": "Existing resource identifier",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "description": "New resource identifier",
            "in": "path",
            "name": "newId",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceResponseDto"
                }
              }
            },
            "description": "Successful operation"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Invalid parameters"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Authentication required"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Not authorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Object is not in the correct state"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Renames a resource.",
        "tags": [
          "Resources"
        ]
      }
    },
    "/api/resources/type/{type}": {
      "get": {
        "description": "Locates all available resources of indicated type and returns the list of resources. Type is a string that matches the resource type. For example, 'dataset' will return all available datasets, while 'source-csv' will return all available CSV sources. Requires the ADMIN role.",
        "operationId": "getResourcesByType",
        "parameters": [
          {
            "description": "Resource type",
            "in": "path",
            "name": "type",
            "required": true,
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ResourceListResponseDto"
                }
              }
            },
            "description": "Successful operation"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Invalid parameters"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Authentication required"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Not authorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Object is not in the correct state"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Retrieves available resources of a certain type.",
        "tags": [
          "Resources"
        ]
      }
    },
    "/api/resources/view/resolve": {
      "post": {
        "description": "Resolves an unsaved data-view against its dataset and returns the effective view: the columns that name a record, the list columns with where each value is read from, the form sections, and what the resolution had to drop. Stores nothing and reads no records. Requires the ADMIN, STEWARD or VIEWER role.",
        "operationId": "resolveView",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ResourceSaveRequestDto"
              }
            }
          },
          "description": "The data-view draft, in the same shape the save endpoint takes",
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/ViewResolveResponseDto"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Invalid parameters"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Authentication required"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Not authorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Object is not in the correct state"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Resolves a data-view draft without saving it.",
        "tags": [
          "Resources"
        ]
      }
    },
    "/api/samples": {
      "get": {
        "description": "Returns every sample project this build ships, each saying whether it is currently installed. Requires the ADMIN role.",
        "operationId": "listSamples",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SampleListResponseDto"
                }
              }
            },
            "description": "Successful operation"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Invalid parameters"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Authentication required"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Not authorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Object is not in the correct state"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Lists the available sample projects.",
        "tags": [
          "Sample projects"
        ]
      }
    },
    "/api/samples/{id}": {
      "get": {
        "description": "Locates a sample project by identifier and returns it, including whether it is installed. Requires the ADMIN role.",
        "operationId": "getSample",
        "parameters": [
          {
            "description": "Sample identifier",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SampleResponseDto"
                }
              }
            },
            "description": "Successful operation"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Invalid parameters"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Authentication required"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Not authorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Object is not in the correct state"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Retrieves a sample project.",
        "tags": [
          "Sample projects"
        ]
      },
      "delete": {
        "description": "Removes everything the sample created: its records, resources, tables, entity, uploaded files, and the task schedulings it produced together with their runs. Nothing outside the sample's own identifier prefixes is touched. Asynchronous - returns a task identifier to poll. Requires the ADMIN role.",
        "operationId": "removeSample",
        "parameters": [
          {
            "description": "Sample identifier",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SampleOperationResponseDto"
                }
              }
            },
            "description": "Successful operation"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Invalid parameters"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Authentication required"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Not authorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Object is not in the correct state"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Removes a sample project.",
        "tags": [
          "Sample projects"
        ]
      }
    },
    "/api/samples/{id}/install": {
      "post": {
        "description": "Removes any previous copy of the sample and installs it: uploads its data files, imports its resources, tables and entity, and runs a full load, index and classification. Asynchronous - returns a task identifier to poll. Installing is also how a sample is reinstalled, because installing over an existing copy cannot work. Requires the ADMIN role.",
        "operationId": "installSample",
        "parameters": [
          {
            "description": "Sample identifier",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/SampleOperationResponseDto"
                }
              }
            },
            "description": "Successful operation"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Invalid parameters"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Authentication required"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Not authorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Object is not in the correct state"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Installs a sample project.",
        "tags": [
          "Sample projects"
        ]
      }
    },
    "/api/security/auth": {
      "post": {
        "description": "Authenticates a user using email and password or SSO token. Returns a JWT bearer token on success. Does not require authentication.",
        "operationId": "authenticate",
        "parameters": [
          {
            "in": "header",
            "name": "Accept-Language",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TzAuthRequestDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TzAuthResponseDto"
                }
              }
            },
            "description": "Successful authentication"
          },
          "401": {
            "content": {
              "*/*": {
                "schema": {
                  "additionalProperties": {},
                  "type": "object"
                }
              }
            },
            "description": "Unauthorized"
          },
          "409": {
            "content": {
              "*/*": {
                "schema": {
                  "additionalProperties": {},
                  "type": "object"
                }
              }
            },
            "description": "Conflict"
          }
        },
        "summary": "Authenticate user",
        "tags": [
          "Authentication"
        ],
        "security": []
      }
    },
    "/api/security/auth/logout": {
      "post": {
        "description": "Revokes every refresh token belonging to the authenticated user, ending their sessions everywhere. Requires authentication. The access token already issued stays valid until it expires -- it is stateless -- so a short JWT lifetime is what bounds the window.",
        "operationId": "logoutEverywhere",
        "responses": {
          "200": {
            "description": "Every session was ended"
          },
          "400": {
            "description": "The caller is an application token, which has no sessions"
          },
          "401": {
            "content": {
              "*/*": {
                "schema": {
                  "additionalProperties": {},
                  "type": "object"
                }
              }
            },
            "description": "Unauthorized"
          },
          "409": {
            "content": {
              "*/*": {
                "schema": {
                  "additionalProperties": {},
                  "type": "object"
                }
              }
            },
            "description": "Conflict"
          }
        },
        "summary": "Log out of every device",
        "tags": [
          "Authentication"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/api/security/auth/refresh": {
      "post": {
        "description": "Exchanges a valid refresh token for a new JWT and refresh token pair. Does not require authentication.",
        "operationId": "refreshToken",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TzRefreshRequestDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TzRefreshResponseDto"
                }
              }
            },
            "description": "Tokens refreshed successfully"
          },
          "401": {
            "content": {
              "*/*": {
                "schema": {
                  "additionalProperties": {},
                  "type": "object"
                }
              }
            },
            "description": "Invalid or expired refresh token"
          },
          "409": {
            "content": {
              "*/*": {
                "schema": {
                  "additionalProperties": {},
                  "type": "object"
                }
              }
            },
            "description": "Conflict"
          }
        },
        "summary": "Refresh authentication token",
        "tags": [
          "Authentication"
        ],
        "security": []
      }
    },
    "/api/security/password/reset/{email}": {
      "put": {
        "description": "Requests a password reset for the specified email. Operation always succeeds (for security reasons, to avoid user enumeration). Does not require authentication.",
        "operationId": "requestPasswordReset",
        "parameters": [
          {
            "in": "path",
            "name": "email",
            "required": true,
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "Accept-Language",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TzAuthResponseDto"
                }
              }
            },
            "description": "Request processed"
          },
          "401": {
            "content": {
              "*/*": {
                "schema": {
                  "additionalProperties": {},
                  "type": "object"
                }
              }
            },
            "description": "Unauthorized"
          },
          "409": {
            "content": {
              "*/*": {
                "schema": {
                  "additionalProperties": {},
                  "type": "object"
                }
              }
            },
            "description": "Conflict"
          }
        },
        "summary": "Request password reset",
        "tags": [
          "Authentication"
        ],
        "security": []
      }
    },
    "/api/security/password/update": {
      "post": {
        "description": "Updates user password using a previously generated reset token. Does not require authentication.",
        "operationId": "updatePassword",
        "parameters": [
          {
            "in": "header",
            "name": "Accept-Language",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TzPasswordUpdateRequestDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TzUserResponseDto"
                }
              }
            },
            "description": "Password updated"
          },
          "401": {
            "content": {
              "*/*": {
                "schema": {
                  "additionalProperties": {},
                  "type": "object"
                }
              }
            },
            "description": "Unauthorized"
          },
          "409": {
            "content": {
              "*/*": {
                "schema": {
                  "additionalProperties": {},
                  "type": "object"
                }
              }
            },
            "description": "Conflict"
          }
        },
        "summary": "Update password",
        "tags": [
          "Authentication"
        ],
        "security": []
      }
    },
    "/api/security/roles": {
      "get": {
        "description": "Returns the list of available roles defined by the application. Requires ADMIN role.",
        "operationId": "getAvailableRoles",
        "parameters": [
          {
            "in": "header",
            "name": "Accept-Language",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {}
            },
            "description": "Roles retrieved"
          },
          "409": {
            "content": {
              "*/*": {
                "schema": {
                  "additionalProperties": {},
                  "type": "object"
                }
              }
            },
            "description": "Conflict"
          },
          "502": {
            "content": {
              "*/*": {
                "schema": {
                  "additionalProperties": {},
                  "type": "object"
                }
              }
            },
            "description": "Bad Gateway"
          }
        },
        "summary": "Get available roles",
        "tags": [
          "Users"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/api/security/sso/config": {
      "get": {
        "description": "Returns SSO provider configuration for frontend OAuth setup. Exposes only public information (client IDs, authorization endpoints, scopes). Does not require authentication.",
        "operationId": "getSsoConfig",
        "parameters": [
          {
            "in": "header",
            "name": "Accept-Language",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TzSsoConfigResponseDto"
                }
              }
            },
            "description": "SSO configuration retrieved"
          },
          "401": {
            "content": {
              "*/*": {
                "schema": {
                  "additionalProperties": {},
                  "type": "object"
                }
              }
            },
            "description": "Unauthorized"
          },
          "409": {
            "content": {
              "*/*": {
                "schema": {
                  "additionalProperties": {},
                  "type": "object"
                }
              }
            },
            "description": "Conflict"
          }
        },
        "summary": "Get SSO configuration",
        "tags": [
          "Authentication"
        ],
        "security": []
      }
    },
    "/api/security/tokens": {
      "get": {
        "description": "Retrieves all tokens. Requires ADMIN role.",
        "operationId": "findAllTokens",
        "parameters": [
          {
            "in": "header",
            "name": "Accept-Language",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TzTokenListResponseDto"
                }
              }
            },
            "description": "Tokens retrieved"
          },
          "400": {
            "content": {
              "*/*": {
                "schema": {
                  "additionalProperties": {},
                  "type": "object"
                }
              }
            },
            "description": "Bad Request"
          },
          "404": {
            "content": {
              "*/*": {
                "schema": {
                  "additionalProperties": {},
                  "type": "object"
                }
              }
            },
            "description": "Not Found"
          },
          "409": {
            "content": {
              "*/*": {
                "schema": {
                  "additionalProperties": {},
                  "type": "object"
                }
              }
            },
            "description": "Conflict"
          }
        },
        "summary": "List all tokens",
        "tags": [
          "Access tokens"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ]
      },
      "post": {
        "description": "Creates a new application token and returns its secret. The secret is shown only here and on rotation; it cannot be retrieved again afterwards. Requires ADMIN role.",
        "operationId": "createToken",
        "parameters": [
          {
            "in": "header",
            "name": "Accept-Language",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TzTokenCreateRequestDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TzTokenResponseDto"
                }
              }
            },
            "description": "Token created"
          },
          "400": {
            "content": {
              "*/*": {
                "schema": {
                  "additionalProperties": {},
                  "type": "object"
                }
              }
            },
            "description": "Bad Request"
          },
          "404": {
            "content": {
              "*/*": {
                "schema": {
                  "additionalProperties": {},
                  "type": "object"
                }
              }
            },
            "description": "Not Found"
          },
          "409": {
            "content": {
              "*/*": {
                "schema": {
                  "additionalProperties": {},
                  "type": "object"
                }
              }
            },
            "description": "Conflict"
          }
        },
        "summary": "Create token",
        "tags": [
          "Access tokens"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/api/security/tokens/{id}": {
      "get": {
        "description": "Retrieves a token by identifier. Requires ADMIN role.",
        "operationId": "findTokenById",
        "parameters": [
          {
            "description": "Token identifier",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TzTokenResponseDto"
                }
              }
            },
            "description": "Token found"
          },
          "400": {
            "content": {
              "*/*": {
                "schema": {
                  "additionalProperties": {},
                  "type": "object"
                }
              }
            },
            "description": "Bad Request"
          },
          "404": {
            "content": {
              "*/*": {
                "schema": {
                  "additionalProperties": {},
                  "type": "object"
                }
              }
            },
            "description": "Not Found"
          },
          "409": {
            "content": {
              "*/*": {
                "schema": {
                  "additionalProperties": {},
                  "type": "object"
                }
              }
            },
            "description": "Conflict"
          }
        },
        "summary": "Get token by ID",
        "tags": [
          "Access tokens"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ]
      },
      "put": {
        "description": "Updates an existing token's name, roles and expiry. Does not reissue the secret. Requires ADMIN role.",
        "operationId": "updateToken",
        "parameters": [
          {
            "description": "Token identifier",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "Accept-Language",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TzTokenUpdateRequestDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TzTokenResponseDto"
                }
              }
            },
            "description": "Token updated"
          },
          "400": {
            "content": {
              "*/*": {
                "schema": {
                  "additionalProperties": {},
                  "type": "object"
                }
              }
            },
            "description": "Bad Request"
          },
          "404": {
            "content": {
              "*/*": {
                "schema": {
                  "additionalProperties": {},
                  "type": "object"
                }
              }
            },
            "description": "Not Found"
          },
          "409": {
            "content": {
              "*/*": {
                "schema": {
                  "additionalProperties": {},
                  "type": "object"
                }
              }
            },
            "description": "Conflict"
          }
        },
        "summary": "Update token",
        "tags": [
          "Access tokens"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ]
      },
      "delete": {
        "description": "Deletes a token. Requires ADMIN role.",
        "operationId": "deleteToken",
        "parameters": [
          {
            "description": "Token identifier",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "Accept-Language",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TzTokenResponseDto"
                }
              }
            },
            "description": "Token deleted"
          },
          "400": {
            "content": {
              "*/*": {
                "schema": {
                  "additionalProperties": {},
                  "type": "object"
                }
              }
            },
            "description": "Bad Request"
          },
          "404": {
            "content": {
              "*/*": {
                "schema": {
                  "additionalProperties": {},
                  "type": "object"
                }
              }
            },
            "description": "Not Found"
          },
          "409": {
            "content": {
              "*/*": {
                "schema": {
                  "additionalProperties": {},
                  "type": "object"
                }
              }
            },
            "description": "Conflict"
          }
        },
        "summary": "Delete token",
        "tags": [
          "Access tokens"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/api/security/tokens/{id}/disable": {
      "put": {
        "description": "Disables a token. Requires ADMIN role.",
        "operationId": "disableToken",
        "parameters": [
          {
            "description": "Token identifier",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "Accept-Language",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TzTokenResponseDto"
                }
              }
            },
            "description": "Token disabled"
          },
          "400": {
            "content": {
              "*/*": {
                "schema": {
                  "additionalProperties": {},
                  "type": "object"
                }
              }
            },
            "description": "Bad Request"
          },
          "404": {
            "content": {
              "*/*": {
                "schema": {
                  "additionalProperties": {},
                  "type": "object"
                }
              }
            },
            "description": "Not Found"
          },
          "409": {
            "content": {
              "*/*": {
                "schema": {
                  "additionalProperties": {},
                  "type": "object"
                }
              }
            },
            "description": "Conflict"
          }
        },
        "summary": "Disable token",
        "tags": [
          "Access tokens"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/api/security/tokens/{id}/enable": {
      "put": {
        "description": "Enables a token. Requires ADMIN role.",
        "operationId": "enableToken",
        "parameters": [
          {
            "description": "Token identifier",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "Accept-Language",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TzTokenResponseDto"
                }
              }
            },
            "description": "Token enabled"
          },
          "400": {
            "content": {
              "*/*": {
                "schema": {
                  "additionalProperties": {},
                  "type": "object"
                }
              }
            },
            "description": "Bad Request"
          },
          "404": {
            "content": {
              "*/*": {
                "schema": {
                  "additionalProperties": {},
                  "type": "object"
                }
              }
            },
            "description": "Not Found"
          },
          "409": {
            "content": {
              "*/*": {
                "schema": {
                  "additionalProperties": {},
                  "type": "object"
                }
              }
            },
            "description": "Conflict"
          }
        },
        "summary": "Enable token",
        "tags": [
          "Access tokens"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/api/security/tokens/{id}/rotate": {
      "post": {
        "description": "Issues a new secret for an existing token, keeping its id, name, roles and enabled flag; resets creation from now. expiryDays is required and relative to now: the previous expiry window is not preserved, because the expiry policy is not stored anywhere. Not idempotent: every call mints a different secret. Requires ADMIN role.",
        "operationId": "rotateToken",
        "parameters": [
          {
            "description": "Token identifier",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "Accept-Language",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TzTokenRotateRequestDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TzTokenResponseDto"
                }
              }
            },
            "description": "Token rotated"
          },
          "400": {
            "content": {
              "*/*": {
                "schema": {
                  "additionalProperties": {},
                  "type": "object"
                }
              }
            },
            "description": "Bad Request"
          },
          "404": {
            "content": {
              "*/*": {
                "schema": {
                  "additionalProperties": {},
                  "type": "object"
                }
              }
            },
            "description": "Not Found"
          },
          "409": {
            "content": {
              "*/*": {
                "schema": {
                  "additionalProperties": {},
                  "type": "object"
                }
              }
            },
            "description": "Conflict"
          }
        },
        "summary": "Rotate token",
        "tags": [
          "Access tokens"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/api/security/users": {
      "get": {
        "description": "Retrieves all users. Requires ADMIN role.",
        "operationId": "findAllUsers",
        "parameters": [
          {
            "in": "header",
            "name": "Accept-Language",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TzUserListResponseDto"
                }
              }
            },
            "description": "Users retrieved"
          },
          "409": {
            "content": {
              "*/*": {
                "schema": {
                  "additionalProperties": {},
                  "type": "object"
                }
              }
            },
            "description": "Conflict"
          },
          "502": {
            "content": {
              "*/*": {
                "schema": {
                  "additionalProperties": {},
                  "type": "object"
                }
              }
            },
            "description": "Bad Gateway"
          }
        },
        "summary": "List all users",
        "tags": [
          "Users"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ]
      },
      "post": {
        "description": "Creates a new user. Requires ADMIN role.",
        "operationId": "createUser",
        "parameters": [
          {
            "in": "header",
            "name": "Accept-Language",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TzUserCreateRequestDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TzUserResponseDto"
                }
              }
            },
            "description": "User created"
          },
          "409": {
            "content": {
              "*/*": {
                "schema": {
                  "additionalProperties": {},
                  "type": "object"
                }
              }
            },
            "description": "Conflict"
          },
          "502": {
            "content": {
              "*/*": {
                "schema": {
                  "additionalProperties": {},
                  "type": "object"
                }
              }
            },
            "description": "Bad Gateway"
          }
        },
        "summary": "Create user",
        "tags": [
          "Users"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/api/security/users/id/{id}": {
      "get": {
        "description": "Retrieves a user by identifier. Requires ADMIN role.",
        "operationId": "findByUserId",
        "parameters": [
          {
            "description": "User identifier",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TzUserResponseDto"
                }
              }
            },
            "description": "User found"
          },
          "409": {
            "content": {
              "*/*": {
                "schema": {
                  "additionalProperties": {},
                  "type": "object"
                }
              }
            },
            "description": "Conflict"
          },
          "502": {
            "content": {
              "*/*": {
                "schema": {
                  "additionalProperties": {},
                  "type": "object"
                }
              }
            },
            "description": "Bad Gateway"
          }
        },
        "summary": "Get user by ID",
        "tags": [
          "Users"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/api/security/users/my": {
      "get": {
        "description": "Retrieves the authenticated user's profile. Restricted to authenticated users.",
        "operationId": "findMyUser",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TzUserResponseDto"
                }
              }
            },
            "description": "User found"
          },
          "409": {
            "content": {
              "*/*": {
                "schema": {
                  "additionalProperties": {},
                  "type": "object"
                }
              }
            },
            "description": "Conflict"
          },
          "502": {
            "content": {
              "*/*": {
                "schema": {
                  "additionalProperties": {},
                  "type": "object"
                }
              }
            },
            "description": "Bad Gateway"
          }
        },
        "summary": "Get my user",
        "tags": [
          "Users"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ]
      },
      "put": {
        "description": "Updates the authenticated user's profile. Restricted to authenticated users.",
        "operationId": "updateMyUser",
        "parameters": [
          {
            "in": "header",
            "name": "Accept-Language",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TzUserUpdateRequestDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TzUserResponseDto"
                }
              }
            },
            "description": "Profile updated"
          },
          "409": {
            "content": {
              "*/*": {
                "schema": {
                  "additionalProperties": {},
                  "type": "object"
                }
              }
            },
            "description": "Conflict"
          },
          "502": {
            "content": {
              "*/*": {
                "schema": {
                  "additionalProperties": {},
                  "type": "object"
                }
              }
            },
            "description": "Bad Gateway"
          }
        },
        "summary": "Update my profile",
        "tags": [
          "Users"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/api/security/users/password/my": {
      "put": {
        "description": "Updates the authenticated user's password. Restricted to authenticated users.",
        "operationId": "updateMyPassword",
        "parameters": [
          {
            "in": "header",
            "name": "Accept-Language",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "minLength": 1,
                "type": "string"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TzUserResponseDto"
                }
              }
            },
            "description": "Password updated"
          },
          "409": {
            "content": {
              "*/*": {
                "schema": {
                  "additionalProperties": {},
                  "type": "object"
                }
              }
            },
            "description": "Conflict"
          },
          "502": {
            "content": {
              "*/*": {
                "schema": {
                  "additionalProperties": {},
                  "type": "object"
                }
              }
            },
            "description": "Bad Gateway"
          }
        },
        "summary": "Update my password",
        "tags": [
          "Users"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/api/security/users/password/{id}": {
      "put": {
        "description": "Sets a user's password directly. Requires ADMIN role. This is the way out on a deployment with no notification provider, where the reset link cannot be delivered.",
        "operationId": "setUserPassword",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "Accept-Language",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TzSetPasswordRequestDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TzUserResponseDto"
                }
              }
            },
            "description": "Password set"
          },
          "409": {
            "content": {
              "*/*": {
                "schema": {
                  "additionalProperties": {},
                  "type": "object"
                }
              }
            },
            "description": "Conflict"
          },
          "502": {
            "content": {
              "*/*": {
                "schema": {
                  "additionalProperties": {},
                  "type": "object"
                }
              }
            },
            "description": "Bad Gateway"
          }
        },
        "summary": "Set user password",
        "tags": [
          "Users"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ]
      },
      "delete": {
        "description": "Resets password for a user. Requires ADMIN role. Answers 502 if the notification provider could not accept the message: the reset link exists only inside that message, so a failed delivery leaves nothing usable behind.",
        "operationId": "resetPassword",
        "parameters": [
          {
            "description": "User identifier",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "Accept-Language",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TzUserResponseDto"
                }
              }
            },
            "description": "Password reset initiated"
          },
          "409": {
            "content": {
              "*/*": {
                "schema": {
                  "additionalProperties": {},
                  "type": "object"
                }
              }
            },
            "description": "Conflict"
          },
          "502": {
            "content": {
              "application/json": {}
            },
            "description": "The notification provider did not accept the message"
          }
        },
        "summary": "Reset user password",
        "tags": [
          "Users"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/api/security/users/{id}": {
      "put": {
        "description": "Updates an existing user. Requires ADMIN role.",
        "operationId": "updateUser",
        "parameters": [
          {
            "description": "User identifier",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "Accept-Language",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TzUserUpdateRequestDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TzUserResponseDto"
                }
              }
            },
            "description": "User updated"
          },
          "409": {
            "content": {
              "*/*": {
                "schema": {
                  "additionalProperties": {},
                  "type": "object"
                }
              }
            },
            "description": "Conflict"
          },
          "502": {
            "content": {
              "*/*": {
                "schema": {
                  "additionalProperties": {},
                  "type": "object"
                }
              }
            },
            "description": "Bad Gateway"
          }
        },
        "summary": "Update user",
        "tags": [
          "Users"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ]
      },
      "delete": {
        "description": "Deletes a user. Requires ADMIN role.",
        "operationId": "deleteUser",
        "parameters": [
          {
            "description": "User identifier",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "Accept-Language",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TzUserResponseDto"
                }
              }
            },
            "description": "User deleted"
          },
          "409": {
            "content": {
              "*/*": {
                "schema": {
                  "additionalProperties": {},
                  "type": "object"
                }
              }
            },
            "description": "Conflict"
          },
          "502": {
            "content": {
              "*/*": {
                "schema": {
                  "additionalProperties": {},
                  "type": "object"
                }
              }
            },
            "description": "Bad Gateway"
          }
        },
        "summary": "Delete user",
        "tags": [
          "Users"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/api/security/users/{id}/disable": {
      "put": {
        "description": "Disables a user without replacing the rest of the aggregate. This is the reversible form of removing an account; DELETE is not reversible. Requires ADMIN.",
        "operationId": "disableUser",
        "parameters": [
          {
            "description": "User identifier",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "Accept-Language",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TzUserResponseDto"
                }
              }
            },
            "description": "User disabled"
          },
          "409": {
            "content": {
              "*/*": {
                "schema": {
                  "additionalProperties": {},
                  "type": "object"
                }
              }
            },
            "description": "Conflict"
          },
          "502": {
            "content": {
              "*/*": {
                "schema": {
                  "additionalProperties": {},
                  "type": "object"
                }
              }
            },
            "description": "Bad Gateway"
          }
        },
        "summary": "Disable user",
        "tags": [
          "Users"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/api/security/users/{id}/enable": {
      "put": {
        "description": "Enables a user without replacing the rest of the aggregate. Requires ADMIN.",
        "operationId": "enableUser",
        "parameters": [
          {
            "description": "User identifier",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "Accept-Language",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TzUserResponseDto"
                }
              }
            },
            "description": "User enabled"
          },
          "409": {
            "content": {
              "*/*": {
                "schema": {
                  "additionalProperties": {},
                  "type": "object"
                }
              }
            },
            "description": "Conflict"
          },
          "502": {
            "content": {
              "*/*": {
                "schema": {
                  "additionalProperties": {},
                  "type": "object"
                }
              }
            },
            "description": "Bad Gateway"
          }
        },
        "summary": "Enable user",
        "tags": [
          "Users"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/api/security/users/{id}/roles/{role}": {
      "post": {
        "description": "Adds a role to a user. Requires ADMIN role.",
        "operationId": "addRole",
        "parameters": [
          {
            "description": "User identifier",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          },
          {
            "description": "Role to add",
            "in": "path",
            "name": "role",
            "required": true,
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "Accept-Language",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TzUserResponseDto"
                }
              }
            },
            "description": "Role added"
          },
          "409": {
            "content": {
              "*/*": {
                "schema": {
                  "additionalProperties": {},
                  "type": "object"
                }
              }
            },
            "description": "Conflict"
          },
          "502": {
            "content": {
              "*/*": {
                "schema": {
                  "additionalProperties": {},
                  "type": "object"
                }
              }
            },
            "description": "Bad Gateway"
          }
        },
        "summary": "Add role to user",
        "tags": [
          "Users"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ]
      },
      "delete": {
        "description": "Removes a role from a user. Requires ADMIN role.",
        "operationId": "removeRole",
        "parameters": [
          {
            "description": "User identifier",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          },
          {
            "description": "Role to remove",
            "in": "path",
            "name": "role",
            "required": true,
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "Accept-Language",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TzUserResponseDto"
                }
              }
            },
            "description": "Role removed"
          },
          "409": {
            "content": {
              "*/*": {
                "schema": {
                  "additionalProperties": {},
                  "type": "object"
                }
              }
            },
            "description": "Conflict"
          },
          "502": {
            "content": {
              "*/*": {
                "schema": {
                  "additionalProperties": {},
                  "type": "object"
                }
              }
            },
            "description": "Bad Gateway"
          }
        },
        "summary": "Remove role from user",
        "tags": [
          "Users"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/api/security/users/{id}/unlock": {
      "put": {
        "description": "Lifts a lockout and resets the failure counter without touching the password. Requires ADMIN.",
        "operationId": "unlockUser",
        "parameters": [
          {
            "description": "User identifier",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          },
          {
            "in": "header",
            "name": "Accept-Language",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TzUserResponseDto"
                }
              }
            },
            "description": "User unlocked"
          },
          "409": {
            "content": {
              "*/*": {
                "schema": {
                  "additionalProperties": {},
                  "type": "object"
                }
              }
            },
            "description": "Conflict"
          },
          "502": {
            "content": {
              "*/*": {
                "schema": {
                  "additionalProperties": {},
                  "type": "object"
                }
              }
            },
            "description": "Bad Gateway"
          }
        },
        "summary": "Unlock user",
        "tags": [
          "Users"
        ],
        "security": [
          {
            "bearerAuth": []
          }
        ]
      }
    },
    "/api/security/whoami": {
      "get": {
        "description": "Returns authentication context information. Does not require authentication.",
        "operationId": "whoami",
        "parameters": [
          {
            "in": "header",
            "name": "Accept-Language",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TzAuthResponseDto"
                }
              }
            },
            "description": "Operation successful"
          },
          "401": {
            "content": {
              "*/*": {
                "schema": {
                  "additionalProperties": {},
                  "type": "object"
                }
              }
            },
            "description": "Unauthorized"
          },
          "409": {
            "content": {
              "*/*": {
                "schema": {
                  "additionalProperties": {},
                  "type": "object"
                }
              }
            },
            "description": "Conflict"
          }
        },
        "summary": "Who am I?",
        "tags": [
          "Authentication"
        ],
        "security": []
      }
    },
    "/api/tables": {
      "get": {
        "description": "Locates all available tables and returns a list. Requires the ADMIN, STEWARD or VIEWER role.",
        "operationId": "getAllTables",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TableListResponseDto"
                }
              }
            },
            "description": "Successful operation"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Invalid parameters"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Authentication required"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Not authorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Object is not in the correct state"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Retrieves all tables.",
        "tags": [
          "Tables"
        ]
      },
      "post": {
        "description": "Creates a new table using provided information. Requires the ADMIN role.",
        "operationId": "createTable",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TableCreateRequestDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TableResponseDto"
                }
              }
            },
            "description": "Successful operation"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Invalid parameters"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Authentication required"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Not authorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Object is not in the correct state"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Creates a new table.",
        "tags": [
          "Tables"
        ]
      }
    },
    "/api/tables/audit/{id}": {
      "put": {
        "description": "Enables or disables auditing on an existing table. Enabling is idempotent. Disabling retains existing events and records an AUDIT_DISABLED event; re-enabling does not reconstruct changes during the gap. A table without a dataset cannot enable auditing. An optional comment explains the setting change. Read the response outcome to distinguish a change from an already-applied setting or repair. Requires the ADMIN role.",
        "operationId": "updateTableAudit",
        "parameters": [
          {
            "description": "Table identifier",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          },
          {
            "description": "Whether audit should be on for this table",
            "in": "query",
            "name": "enabled",
            "required": true,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Optional administrator comment, carried onto the AUDIT_ENABLED or AUDIT_DISABLED event. On a disable this is the only thing that will ever explain the gap it opens in the trail",
            "in": "query",
            "name": "comment",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TableAuditResponseDto"
                }
              }
            },
            "description": "Successful operation"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Invalid parameters"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Authentication required"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Not authorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Object is not in the correct state"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Enables or disables audit for an existing table.",
        "tags": [
          "Tables"
        ]
      }
    },
    "/api/tables/clear/{name}": {
      "put": {
        "description": "Physically removes all current records, retained history and pending record candidates from the table. This is not recoverable through record history. An audited table records one table-level CLEAR event with the current-record count removed. A locked table or an unresolved audit migration prevents clearing. Requires the ADMIN role.",
        "operationId": "clearTable",
        "parameters": [
          {
            "description": "Table identifier to be cleared",
            "in": "path",
            "name": "name",
            "required": true,
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          },
          {
            "description": "Optional operator comment, carried onto the single CLEAR audit event when the table is audited",
            "in": "query",
            "name": "comment",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TableResponseDto"
                }
              }
            },
            "description": "Successful operation"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Invalid parameters"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Authentication required"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Not authorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Object is not in the correct state"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Clears an existing table.",
        "tags": [
          "Tables"
        ]
      }
    },
    "/api/tables/description/{id}": {
      "put": {
        "description": "Locates existing table by identifier and changes its description. Requires the ADMIN role.",
        "operationId": "updateTableDescription",
        "parameters": [
          {
            "description": "Table identifier",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          },
          {
            "description": "Table description",
            "in": "query",
            "name": "description",
            "required": true,
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "*/*": {
                "schema": {
                  "$ref": "#/components/schemas/TableResponseDto"
                }
              }
            },
            "description": "OK"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Invalid parameters"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Authentication required"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Not authorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Object is not in the correct state"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Changes table description.",
        "tags": [
          "Tables"
        ]
      }
    },
    "/api/tables/export": {
      "post": {
        "description": "Schedules a one-off data export task. The data processing includes a table source,an optional transformation to change the data, an optional pipeline to further process the data, and finally writes the exported data in a file that can be downloaded. This operation is asynchronous and returns a task identifier. Requires the ADMIN role.",
        "operationId": "exportData",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TableOperationExportRequestDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TableOperationResponseDto"
                }
              }
            },
            "description": "Successful operation"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Invalid parameters"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Authentication required"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Not authorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Object is not in the correct state"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Runs a table export.",
        "tags": [
          "Tables"
        ]
      }
    },
    "/api/tables/extract": {
      "post": {
        "description": "Returns the selected table definitions in an exchange object. This is a synchronous configuration export, not an export of business records to a downloadable file. Requires the ADMIN role.",
        "operationId": "extractTable",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TableExportRequestDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Table definitions exported synchronously. This response does not contain a background run.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TableExportResponseDto"
                }
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Invalid parameters"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Authentication required"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Not authorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Object is not in the correct state"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Exports selected table definitions.",
        "tags": [
          "Tables"
        ]
      }
    },
    "/api/tables/extract/all": {
      "get": {
        "description": "Exports all table definitions and returns the configuration package in exchange. The response contains the export; no background task is created. Requires the ADMIN role.",
        "operationId": "exportAllTables",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TableExportResponseDto"
                }
              }
            },
            "description": "Successful operation"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Invalid parameters"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Authentication required"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Not authorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Object is not in the correct state"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Exports all tables.",
        "tags": [
          "Tables"
        ]
      }
    },
    "/api/tables/ingest": {
      "post": {
        "description": "Receives a list of tables as JSON and tries to import one by one. Requires the ADMIN role.",
        "operationId": "ingestTable",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TableImportRequestDto"
              }
            }
          },
          "description": "Table resource dto",
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TableImportResponseDto"
                }
              }
            },
            "description": "Successful operation"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Invalid parameters"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Authentication required"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Not authorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Object is not in the correct state"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Import tables.",
        "tags": [
          "Tables"
        ]
      }
    },
    "/api/tables/load": {
      "post": {
        "description": "Schedules a one-off data loading task. The data processing includes a data source (table or source),an optional transformation to change the data, an optional pipeline to further process the data, and finally a table to sink the resulting data. This operation is asynchronous and returns a task identifier. Requires the ADMIN role.",
        "operationId": "loadData",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TableOperationLoadRequestDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TableOperationResponseDto"
                }
              }
            },
            "description": "Successful operation"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Invalid parameters"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Authentication required"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Not authorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Object is not in the correct state"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Runs a table load.",
        "tags": [
          "Tables"
        ]
      }
    },
    "/api/tables/quality/{id}": {
      "put": {
        "description": "Switching a table off stops the background re-measurement walking it and leaves it out of the quality figures; the measurements its records already carry are kept, so switching it back on costs nothing but the next catch-up pass. Nothing is provisioned and nothing is destroyed either way. A table switched off reads as \"not measured by choice\" on screen, which is a different state from \"not measured yet\". The response says whether the flag actually moved. Requires the ADMIN role.",
        "operationId": "updateTableQuality",
        "parameters": [
          {
            "description": "Table identifier",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          },
          {
            "description": "Whether quality should be measured for this table",
            "in": "query",
            "name": "enabled",
            "required": true,
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TableResponseDto"
                }
              }
            },
            "description": "Successful operation"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Invalid parameters"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Authentication required"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Not authorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Object is not in the correct state"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Enables or disables quality measurement for an existing table.",
        "tags": [
          "Tables"
        ]
      }
    },
    "/api/tables/transform": {
      "post": {
        "description": "Schedules a one-off data transformation task. The data transformation includes a table source,a transformation to change the data, an optional pipeline to further process the data, and finally writes the modified data in the same table. This operation is asynchronous and returns a task identifier. Requires the ADMIN role.",
        "operationId": "transformData",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/TableOperationTransformRequestDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TableOperationResponseDto"
                }
              }
            },
            "description": "Successful operation"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Invalid parameters"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Authentication required"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Not authorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Object is not in the correct state"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Runs a table transformation.",
        "tags": [
          "Tables"
        ]
      }
    },
    "/api/tables/{id}": {
      "get": {
        "description": "Locates a table by identifier and returns it. Requires the ADMIN, STEWARD or VIEWER role.",
        "operationId": "getTable",
        "parameters": [
          {
            "description": "Table identifier",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TableResponseDto"
                }
              }
            },
            "description": "Successful operation"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Invalid parameters"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Authentication required"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Not authorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Object is not in the correct state"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Retrieves a table.",
        "tags": [
          "Tables"
        ]
      }
    },
    "/api/tables/{id}/datasets": {
      "get": {
        "description": "Locates a table by identifier and returns a map containing all the datasets associated to this table. Usually there is only one dataset, except if using nested datasets, in which case you will have multiple datasets returned. Requires the ADMIN, STEWARD or VIEWER role.",
        "operationId": "getTableDatasets",
        "parameters": [
          {
            "description": "Table identifier",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TableDatasetResponseDto"
                }
              }
            },
            "description": "Successful operation"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Invalid parameters"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Authentication required"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Not authorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Object is not in the correct state"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Retrieves datasets associated to a table.",
        "tags": [
          "Tables"
        ]
      }
    },
    "/api/tables/{id}/dependencies": {
      "get": {
        "description": "Builds the dependency graph and returns this table's place in it. \u26a0\ufe0f The cost is the whole installation, not this one table: every resource, every table and every entity is loaded to build the graph. That is why it is a call of its own and why the listing no longer carries it. Requires the ADMIN, STEWARD or VIEWER role, and the table has to be one the caller may see.",
        "operationId": "getTableDependencies",
        "parameters": [
          {
            "description": "Table identifier",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DependencyResponseDto"
                }
              }
            },
            "description": "Successful operation"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Invalid parameters"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Authentication required"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Not authorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Object is not in the correct state"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Retrieves what a table uses and what uses it.",
        "tags": [
          "Tables"
        ]
      }
    },
    "/api/tables/{id}/metadata": {
      "get": {
        "description": "Returns the table, its column keys, those columns with their type and description, and the resolved data-view. It reads no records and does not count them. \u26a0\ufe0f This is the TABLE's metadata and is unrelated to a record's _metadata, which is a reserved key inside a record carrying _errors, _merged, _unrelated and _quality. Use this when a screen renders rows it obtained elsewhere -- a search result -- and still needs to know what the grid looks like; the record page would page and count as well, and the count is a sequential scan. Requires the ADMIN, STEWARD or VIEWER role.",
        "operationId": "getMetadata",
        "parameters": [
          {
            "description": "Table identifier",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          },
          {
            "description": "Table type",
            "in": "query",
            "name": "type",
            "required": true,
            "schema": {
              "default": "TABLE",
              "description": "Table type.",
              "enum": [
                "TABLE",
                "HISTORY"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TableMetadataResponseDto"
                }
              }
            },
            "description": "Successful operation"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Invalid parameters"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Authentication required"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Not authorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Object is not in the correct state"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Retrieves the shape of a table: its columns and its data-view.",
        "tags": [
          "Tables"
        ]
      }
    },
    "/api/tables/{id}/records": {
      "get": {
        "description": "Locates a table by identifier and type (TABLE or HISTORY, default is TABLE). Applies metadata filtering if indicated, and returns a page of records. Record audit is not returned. Requires the ADMIN, STEWARD or VIEWER role.",
        "operationId": "getPage",
        "parameters": [
          {
            "description": "Table identifier",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          },
          {
            "description": "Table type",
            "in": "query",
            "name": "type",
            "required": true,
            "schema": {
              "default": "TABLE",
              "description": "Table type.",
              "enum": [
                "TABLE",
                "HISTORY"
              ],
              "type": "string"
            }
          },
          {
            "description": "Filter records that have quality errors.",
            "in": "query",
            "name": "filterError",
            "required": false,
            "schema": {
              "default": false,
              "description": "Filter records that have quality errors.",
              "type": "boolean"
            }
          },
          {
            "description": "Filter records that have been updated after this ISO 8601 timestamp (included)",
            "in": "query",
            "name": "filterUpdatedAfter",
            "required": false,
            "schema": {
              "description": "Filter records that have been updated after this ISO 8601 timestamp (included)",
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Filter records that have been updated before this ISO 8601 timestamp (included)",
            "in": "query",
            "name": "filterUpdatedBefore",
            "required": false,
            "schema": {
              "description": "Filter records that have been updated before this ISO 8601 timestamp (included)",
              "format": "date-time",
              "type": "string"
            }
          },
          {
            "description": "Filter records whose quality score is greater than or equal to this value (0-100). Omit the parameter to apply no lower bound.",
            "in": "query",
            "name": "filterQualityGreater",
            "required": false,
            "schema": {
              "description": "Filter records whose quality score is greater than or equal to this value (0-100). Omit the parameter to apply no lower bound.",
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Filter records whose quality score is less than or equal to this value (0-100). Omit the parameter to apply no upper bound.",
            "in": "query",
            "name": "filterQualityLess",
            "required": false,
            "schema": {
              "description": "Filter records whose quality score is less than or equal to this value (0-100). Omit the parameter to apply no upper bound.",
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Filter records whose provenance names this source system. Combined with filterSourceId it matches one provenance entry carrying both, never the two separately.",
            "in": "query",
            "name": "filterSource",
            "required": false,
            "schema": {
              "description": "Filter records whose provenance names this source system. Combined with filterSourceId it matches one provenance entry carrying both, never the two separately.",
              "type": "string"
            }
          },
          {
            "description": "Filter records whose provenance carries this key. It is the source system's own identifier for the record, not the record's _id.",
            "in": "query",
            "name": "filterSourceId",
            "required": false,
            "schema": {
              "description": "Filter records whose provenance carries this key. It is the source system's own identifier for the record, not the record's _id.",
              "type": "string"
            }
          },
          {
            "description": "Page number",
            "in": "query",
            "name": "pageNumber",
            "required": true,
            "schema": {
              "default": 0,
              "format": "int32",
              "minimum": 0,
              "type": "integer"
            }
          },
          {
            "description": "Page size, at most 1000. A larger value is a 400, not a clamped page.",
            "in": "query",
            "name": "pageSize",
            "required": true,
            "schema": {
              "default": 10,
              "exclusiveMinimum": 0,
              "format": "int32",
              "maximum": 1000,
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TableRecordPageResponseDto"
                }
              }
            },
            "description": "Successful operation"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Invalid parameters"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Authentication required"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Not authorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Object is not in the correct state"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Retrieves a page of records.",
        "tags": [
          "Tables"
        ]
      }
    },
    "/api/tables/{id}/records/empty": {
      "get": {
        "description": "Locates a table by identifier and type and returns a new empty record with full column structure. The record is not saved. Requires the ADMIN, STEWARD or VIEWER role.",
        "operationId": "emptyRecord",
        "parameters": [
          {
            "description": "Table identifier",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TableRecordResponseDto"
                }
              }
            },
            "description": "Successful operation"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Invalid parameters"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Authentication required"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Not authorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Object is not in the correct state"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Retrieves a new empty record.",
        "tags": [
          "Tables"
        ]
      }
    },
    "/api/tables/{name}": {
      "delete": {
        "description": "Locates a table by identifier and deletes it. Table is physically deleted. Requires the ADMIN role.",
        "operationId": "deleteTable",
        "parameters": [
          {
            "description": "Table identifier to be deleted",
            "in": "path",
            "name": "name",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TableResponseDto"
                }
              }
            },
            "description": "Successful operation"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Invalid parameters"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Authentication required"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Not authorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Object is not in the correct state"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Deletes a table.",
        "tags": [
          "Tables"
        ]
      }
    },
    "/api/tables/{table}/audit": {
      "get": {
        "description": "Returns table-level audit events, including clears, audit setting changes, and candidate decisions. Events are newest first. Use the opaque nextCursor value to request the next page. An existing table may return an empty events list; an unknown table returns 404. Requires the ADMIN role.",
        "operationId": "getTableAudit",
        "parameters": [
          {
            "description": "Table identifier",
            "in": "path",
            "name": "table",
            "required": true,
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          },
          {
            "description": "Page size; default 50, maximum 200",
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Opaque cursor from the previous page's nextCursor",
            "in": "query",
            "name": "cursor",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RecordAuditPageResponseDto"
                }
              }
            },
            "description": "Successful operation"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Invalid parameters"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Authentication required"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Not authorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Object is not in the correct state"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Retrieves a table's table-level audit events.",
        "tags": [
          "Tables"
        ]
      }
    },
    "/api/tables/{table}/records/check": {
      "post": {
        "description": "Takes a record in the body and measures it against the table's data model, exactly as a save would, and writes nothing. It is what a form asks for so a user can see what is wrong with the values in front of them before committing to them. \u26a0\ufe0f The STORED members of the response are absent: a draft has no stored score, and the record is never read from storage \u2014 only the body is measured, whatever _id it carries and whether or not a record of that identifier exists. A draft whose measurement cannot be taken answers 200 with measured=false and a reason, never a 500, like the read it mirrors. Requires the ADMIN, STEWARD or VIEWER role.",
        "operationId": "checkRecord",
        "parameters": [
          {
            "description": "Table identifier",
            "in": "path",
            "name": "table",
            "required": true,
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RecordCheckRequestDto"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RecordQualityResponseDto"
                }
              }
            },
            "description": "Successful operation"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Invalid parameters"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Authentication required"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Not authorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Object is not in the correct state"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Measures a record without writing it.",
        "tags": [
          "Tables"
        ]
      }
    },
    "/api/tables/{table}/records/{id}": {
      "get": {
        "description": "Reads a record from TABLE (default) or HISTORY. expanded=true includes supported related records and presentation context, but never inline audit events. If the identifier is absent from the requested collection, Golden checks the other collection and reports servedFromOtherTable=true when found there. Requires ADMIN, STEWARD or VIEWER and access to the record.",
        "operationId": "getRecord",
        "parameters": [
          {
            "description": "Table identifier",
            "in": "path",
            "name": "table",
            "required": true,
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          },
          {
            "description": "Table type",
            "in": "query",
            "name": "type",
            "required": true,
            "schema": {
              "default": "TABLE",
              "description": "Table type.",
              "enum": [
                "TABLE",
                "HISTORY"
              ],
              "type": "string"
            }
          },
          {
            "description": "Record identifier",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          },
          {
            "description": "Include expanded data flag",
            "in": "query",
            "name": "expanded",
            "required": false,
            "schema": {
              "default": false,
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TableRecordResponseDto"
                }
              }
            },
            "description": "Successful operation"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Invalid parameters"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Authentication required"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Not authorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Object is not in the correct state"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Retrieves a single record.",
        "tags": [
          "Tables"
        ]
      }
    },
    "/api/tables/{table}/records/{recordId}/audit": {
      "get": {
        "description": "Returns the audit events recorded for one record, newest first, ordered by occurrence instant then event identifier. The page size defaults to 50 and is capped at 200. Hand nextCursor back as the cursor parameter to walk older pages; the cursor is opaque and a malformed one answers 400 rather than restarting at the first page. An unknown table answers 404, and so does a record that exists in neither the current nor the history relation and about which no event was retained. An existing record with nothing recorded answers 200 with an empty list. Requires the ADMIN or STEWARD role \u2014 not VIEWER, because an event carries the superseded value of every field it changed, which survives nowhere else.",
        "operationId": "getRecordAudit",
        "parameters": [
          {
            "description": "Table identifier",
            "in": "path",
            "name": "table",
            "required": true,
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          },
          {
            "description": "Record identifier",
            "in": "path",
            "name": "recordId",
            "required": true,
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          },
          {
            "description": "Page size; default 50, maximum 200",
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "format": "int32",
              "type": "integer"
            }
          },
          {
            "description": "Opaque cursor from the previous page's nextCursor",
            "in": "query",
            "name": "cursor",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RecordAuditPageResponseDto"
                }
              }
            },
            "description": "Successful operation"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Invalid parameters"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Authentication required"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Not authorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Object is not in the correct state"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Retrieves one record's audit timeline.",
        "tags": [
          "Tables"
        ]
      }
    },
    "/api/tables/{table}/records/{recordId}/quality": {
      "get": {
        "description": "Measures the record as it stands now and returns that measurement together with the line items that produce it: one contribution per field that was applicable, its weight, and the exact fraction it earned. The stored score and its instant travel alongside for comparison. \u26a0\ufe0f This explains the RECORD, not the stored number: a record written by a path that does not measure keeps its previous score, so the two can legitimately differ and that difference is worth showing. A record whose measurement cannot be taken answers 200 with measured=false and a reason, never a 500. Requires the ADMIN, STEWARD or VIEWER role.",
        "operationId": "getRecordQuality",
        "parameters": [
          {
            "description": "Table identifier",
            "in": "path",
            "name": "table",
            "required": true,
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          },
          {
            "description": "Record identifier",
            "in": "path",
            "name": "recordId",
            "required": true,
            "schema": {
              "minLength": 1,
              "type": "string"
            }
          },
          {
            "description": "Table type",
            "in": "query",
            "name": "type",
            "required": true,
            "schema": {
              "default": "TABLE",
              "description": "Table type.",
              "enum": [
                "TABLE",
                "HISTORY"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RecordQualityResponseDto"
                }
              }
            },
            "description": "Successful operation"
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Invalid parameters"
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Authentication required"
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Not authorized"
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Resource not found"
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BaseResponseDto"
                }
              }
            },
            "description": "Object is not in the correct state"
          }
        },
        "security": [
          {
            "bearerAuth": []
          }
        ],
        "summary": "Explains one record's quality score.",
        "tags": [
          "Tables"
        ]
      }
    }
  },
  "tags": [
    {
      "name": "Authentication"
    },
    {
      "name": "Users"
    },
    {
      "name": "Access tokens"
    },
    {
      "name": "Configuration"
    },
    {
      "name": "Entities"
    },
    {
      "name": "Golden records"
    },
    {
      "name": "Tables"
    },
    {
      "name": "Resources"
    },
    {
      "name": "Tasks"
    },
    {
      "name": "Files"
    },
    {
      "name": "Product events"
    },
    {
      "name": "Metrics"
    },
    {
      "name": "Data scopes"
    },
    {
      "name": "Sample projects"
    }
  ],
  "x-trazadera-contract": {
    "audience": "customer",
    "source": "Golden public OpenAPI contract"
  }
}
