From 67b1215b467b93f3eb51587f6bda9b4ae6954250 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Fri, 13 Nov 2026 13:07:40 +0000 Subject: [PATCH] Update API Client --- openapi.yaml | 1181 ++++++++++++++--- ...s_annotation_queues_queue_id_users_post.py | 12 +- ...ontent_datasets_dataset_id_content_head.py | 157 +++ ...ataset_datasets_dataset_id_preview_post.py | 176 ++- ..._id_versions_version_index_preview_post.py | 257 ++++ ...ects_project_id_sessions_session_id_get.py | 20 + ...n_projects_project_id_spans_span_id_get.py | 73 +- ...projects_project_id_traces_trace_id_get.py | 73 +- src/splunk_ao/resources/models/__init__.py | 50 + .../models/aggregated_trace_view_request.py | 23 +- .../models/base_scorer_version_response.py | 41 + ...esponse_luna_validation_contract_type_0.py | 47 + ...ion_scorers_scorer_id_version_code_post.py | 20 +- ...aset_scorers_code_validate_dataset_post.py | 47 +- ...validate_dataset_post_score_type_type_0.py | 11 + ...d_scorers_code_validate_log_record_post.py | 45 + ...idate_log_record_post_score_type_type_0.py | 11 + .../resources/models/column_mapping.py | 170 ++- .../resources/models/create_job_request.py | 9 - .../resources/models/create_job_response.py | 9 - src/splunk_ao/resources/models/dataset_db.py | 20 + .../resources/models/experiment_response.py | 4 +- .../resources/models/input_type_enum.py | 1 + .../models/list_scorer_versions_response.py | 12 +- ...og_records_custom_metrics_query_request.py | 20 + .../models/log_records_export_request.py | 20 + .../log_records_metrics_query_request.py | 20 + .../log_records_partial_query_request.py | 20 + .../models/log_records_query_count_request.py | 20 + .../models/log_records_query_request.py | 20 + .../resources/models/luna_dataset_mappings.py | 271 ++++ .../models/luna_dataset_mappings_mgt.py | 60 + .../resources/models/luna_dataset_preview.py | 165 +++ .../models/luna_dataset_preview_column.py | 144 ++ .../luna_dataset_preview_error_detail.py | 141 ++ .../luna_dataset_preview_error_response.py | 137 ++ .../luna_dataset_preview_field_error.py | 61 + .../models/luna_dataset_preview_request.py | 74 ++ ...ataset_preview_request_validation_error.py | 144 ++ ...iew_request_validation_error_ctx_type_0.py | 47 + .../models/luna_dataset_preview_row.py | 79 ++ .../models/luna_dataset_preview_row_values.py | 47 + .../resources/models/luna_mapping_config.py | 46 + .../models/luna_preview_draft_ref.py | 73 + .../models/luna_preview_version_ref.py | 73 + .../resources/models/luna_semantic_mapping.py | 44 + .../luna_semantic_mapping_target_field.py | 16 + .../recompute_log_records_metrics_request.py | 20 + .../resources/models/scorer_environment.py | 26 +- .../models/scorer_version_list_item.py | 537 ++++++++ src/splunk_ao/resources/models/user_action.py | 1 + src/splunk_ao/resources/models/user_role.py | 1 + .../resources/models/valid_result.py | 9 +- .../models/valid_result_score_type.py | 11 + ...date_decision_scorer_log_record_request.py | 20 + .../validate_llm_scorer_log_record_request.py | 20 + 56 files changed, 4555 insertions(+), 301 deletions(-) create mode 100644 src/splunk_ao/resources/api/datasets/head_dataset_content_datasets_dataset_id_content_head.py create mode 100644 src/splunk_ao/resources/api/datasets/preview_dataset_version_datasets_dataset_id_versions_version_index_preview_post.py create mode 100644 src/splunk_ao/resources/models/base_scorer_version_response_luna_validation_contract_type_0.py create mode 100644 src/splunk_ao/resources/models/body_validate_code_scorer_dataset_scorers_code_validate_dataset_post_score_type_type_0.py create mode 100644 src/splunk_ao/resources/models/body_validate_code_scorer_log_record_scorers_code_validate_log_record_post_score_type_type_0.py create mode 100644 src/splunk_ao/resources/models/luna_dataset_mappings.py create mode 100644 src/splunk_ao/resources/models/luna_dataset_mappings_mgt.py create mode 100644 src/splunk_ao/resources/models/luna_dataset_preview.py create mode 100644 src/splunk_ao/resources/models/luna_dataset_preview_column.py create mode 100644 src/splunk_ao/resources/models/luna_dataset_preview_error_detail.py create mode 100644 src/splunk_ao/resources/models/luna_dataset_preview_error_response.py create mode 100644 src/splunk_ao/resources/models/luna_dataset_preview_field_error.py create mode 100644 src/splunk_ao/resources/models/luna_dataset_preview_request.py create mode 100644 src/splunk_ao/resources/models/luna_dataset_preview_request_validation_error.py create mode 100644 src/splunk_ao/resources/models/luna_dataset_preview_request_validation_error_ctx_type_0.py create mode 100644 src/splunk_ao/resources/models/luna_dataset_preview_row.py create mode 100644 src/splunk_ao/resources/models/luna_dataset_preview_row_values.py create mode 100644 src/splunk_ao/resources/models/luna_mapping_config.py create mode 100644 src/splunk_ao/resources/models/luna_preview_draft_ref.py create mode 100644 src/splunk_ao/resources/models/luna_preview_version_ref.py create mode 100644 src/splunk_ao/resources/models/luna_semantic_mapping.py create mode 100644 src/splunk_ao/resources/models/luna_semantic_mapping_target_field.py create mode 100644 src/splunk_ao/resources/models/scorer_version_list_item.py create mode 100644 src/splunk_ao/resources/models/valid_result_score_type.py diff --git a/openapi.yaml b/openapi.yaml index bf48b851..a4825b65 100644 --- a/openapi.yaml +++ b/openapi.yaml @@ -1786,6 +1786,53 @@ paths: '423': description: Resource lock could not be acquired; another update may be in progress + head: + tags: + - datasets + summary: Head Dataset Content + description: Return the authoritative content revision without transferring + dataset rows. + operationId: head_dataset_content_datasets__dataset_id__content_head + security: + - APIKeyHeader: [] + - ClassicAPIKeyHeader: [] + - OAuth2PasswordBearer: [] + - HTTPBasic: [] + parameters: + - name: dataset_id + in: path + required: true + schema: + type: string + format: uuid4 + title: Dataset Id + responses: + '200': + description: Dataset response + content: + application/json: + schema: {} + headers: + ETag: + description: Dataset content revision, when available + schema: + type: string + '412': + description: Content is missing, unreadable, or changed throughout bounded + revision discovery. + content: {} + '413': + description: Dataset metadata exceeds the bounded revision inspection limit. + content: {} + '503': + description: Revision storage is temporarily unavailable. + content: {} + '422': + description: Validation Error + content: + application/json: + schema: + $ref: '#/components/schemas/HTTPValidationError' get: tags: - datasets @@ -1820,11 +1867,16 @@ paths: title: Limit responses: '200': - description: Successful Response + description: Dataset response content: application/json: schema: $ref: '#/components/schemas/DatasetContent' + headers: + ETag: + description: Dataset content revision, when available + schema: + type: string '422': description: Validation Error content: @@ -1861,7 +1913,12 @@ paths: title: Body responses: '204': - description: Dataset content upserted successfully + description: Dataset content updated successfully + headers: + ETag: + description: New version identifier for the dataset + schema: + type: string '404': description: Dataset not found '422': @@ -1923,6 +1980,26 @@ paths: type: string format: uuid4 title: Dataset Id + - name: cursor + in: query + required: false + schema: + anyOf: + - type: string + - type: 'null' + minLength: 1 + maxLength: 2048 + title: Cursor + - name: limit + in: query + required: false + schema: + anyOf: + - type: integer + - type: 'null' + description: Defaults to 10 for semantic mappings and 100 for legacy column_mapping. + title: Limit + description: Defaults to 10 for semantic mappings and 100 for legacy column_mapping. - name: starting_token in: query required: false @@ -1930,32 +2007,155 @@ paths: type: integer default: 0 title: Starting Token + - name: If-Match + in: header + required: false + schema: + anyOf: + - type: string + - type: 'null' + title: If-Match + requestBody: + required: true + content: + application/json: + schema: + anyOf: + - $ref: '#/components/schemas/PreviewDatasetRequest' + - $ref: '#/components/schemas/LunaDatasetPreviewRequest' + title: Preview Request + responses: + '200': + description: Dataset response + content: + application/json: + schema: + anyOf: + - $ref: '#/components/schemas/DatasetContent' + - $ref: '#/components/schemas/LunaDatasetPreview' + title: Response Preview Dataset Datasets Dataset Id Preview Post + headers: + ETag: + description: Dataset content revision, when available + schema: + type: string + '404': + description: Dataset or immutable version unavailable + content: + application/json: + schema: + $ref: '#/components/schemas/LunaDatasetPreviewErrorResponse' + '412': + description: Draft revision conflict or unavailable revision + content: + application/json: + schema: + $ref: '#/components/schemas/LunaDatasetPreviewErrorResponse' + '422': + description: Invalid preview request, mapping or pagination + content: + application/json: + schema: + $ref: '#/components/schemas/LunaDatasetPreviewErrorResponse' + '428': + description: If-Match is required for draft preview + content: + application/json: + schema: + $ref: '#/components/schemas/LunaDatasetPreviewErrorResponse' + '503': + description: Preview storage is temporarily unavailable + content: + application/json: + schema: + $ref: '#/components/schemas/LunaDatasetPreviewErrorResponse' + /datasets/{dataset_id}/versions/{version_index}/preview: + post: + tags: + - datasets + summary: Preview Dataset Version + operationId: preview_dataset_version_datasets__dataset_id__versions__version_index__preview_post + security: + - APIKeyHeader: [] + - ClassicAPIKeyHeader: [] + - OAuth2PasswordBearer: [] + - HTTPBasic: [] + parameters: + - name: dataset_id + in: path + required: true + schema: + type: string + format: uuid4 + title: Dataset Id + - name: version_index + in: path + required: true + schema: + type: integer + title: Version Index - name: limit in: query required: false schema: type: integer - default: 100 + minimum: 1 + maximum: 100 + default: 10 title: Limit + - name: cursor + in: query + required: false + schema: + anyOf: + - type: string + - type: 'null' + minLength: 1 + maxLength: 2048 + title: Cursor requestBody: required: true content: application/json: schema: - $ref: '#/components/schemas/PreviewDatasetRequest' + $ref: '#/components/schemas/LunaDatasetPreviewRequest' responses: '200': description: Successful Response content: application/json: schema: - $ref: '#/components/schemas/DatasetContent' + $ref: '#/components/schemas/LunaDatasetPreview' + '404': + description: Dataset or immutable version unavailable + content: + application/json: + schema: + $ref: '#/components/schemas/LunaDatasetPreviewErrorResponse' + '412': + description: Draft revision conflict or unavailable revision + content: + application/json: + schema: + $ref: '#/components/schemas/LunaDatasetPreviewErrorResponse' '422': - description: Validation Error + description: Invalid preview request, mapping or pagination content: application/json: schema: - $ref: '#/components/schemas/HTTPValidationError' + $ref: '#/components/schemas/LunaDatasetPreviewErrorResponse' + '428': + description: If-Match is required for draft preview + content: + application/json: + schema: + $ref: '#/components/schemas/LunaDatasetPreviewErrorResponse' + '503': + description: Preview storage is temporarily unavailable + content: + application/json: + schema: + $ref: '#/components/schemas/LunaDatasetPreviewErrorResponse' /datasets/{dataset_id}/variable_preview: get: tags: @@ -2036,11 +2236,16 @@ paths: filters: [] responses: '200': - description: Successful Response + description: Dataset response content: application/json: schema: $ref: '#/components/schemas/DatasetContent' + headers: + ETag: + description: Dataset content revision, when available + schema: + type: string '422': description: Validation Error content: @@ -2490,11 +2695,16 @@ paths: title: Limit responses: '200': - description: Successful Response + description: Dataset response content: application/json: schema: $ref: '#/components/schemas/DatasetContent' + headers: + ETag: + description: Dataset content revision, when available + schema: + type: string '422': description: Validation Error content: @@ -5586,6 +5796,15 @@ paths: type: boolean default: false title: Include Presigned Urls + - name: access_view_id + in: query + required: false + schema: + anyOf: + - type: string + format: uuid4 + - type: 'null' + title: Access View Id responses: '200': description: Successful Response @@ -5685,6 +5904,15 @@ paths: type: boolean default: false title: Include Presigned Urls + - name: access_view_id + in: query + required: false + schema: + anyOf: + - type: string + format: uuid4 + - type: 'null' + title: Access View Id responses: '200': description: Successful Response @@ -6440,6 +6668,15 @@ paths: type: boolean default: false title: Include Presigned Urls + - name: access_view_id + in: query + required: false + schema: + anyOf: + - type: string + format: uuid4 + - type: 'null' + title: Access View Id - name: include_redacted_io in: query required: false @@ -9282,9 +9519,11 @@ paths: Users can be specified by user_id or email. If using email and the user doesn''t exist - in the organization, they will be invited automatically with the ''user'' + in the organization, annotators are invited with the organization annotator role. + Other invitations use the ''user'' role. + Roles: owner, annotator' operationId: share_annotation_queue_with_users_annotation_queues__queue_id__users_post @@ -11283,6 +11522,13 @@ components: title: AggregatedTraceViewNode AggregatedTraceViewRequest: properties: + access_view_id: + anyOf: + - type: string + format: uuid4 + - type: 'null' + title: Access View Id + description: Assigned log view for restricted access. log_stream_id: type: string format: uuid4 @@ -13880,6 +14126,13 @@ components: - type: string - type: 'null' title: Request Id + luna_validation_contract: + anyOf: + - additionalProperties: + $ref: '#/components/schemas/pydantic__types__JsonValue' + type: object + - type: 'null' + title: Luna Validation Contract type: object required: - id @@ -13940,20 +14193,20 @@ components: title: BillingUsageResponse Body_create_code_scorer_version_scorers__scorer_id__version_code_post: properties: - file: - type: string - title: File - format: binary validation_result: type: string title: Validation Result description: 'The result from the validate endpoint, as a JSON string. Only its task_id is read: the version is built from the result stored for that validation task.' + file: + type: string + title: File + format: binary type: object required: - - file - validation_result + - file title: Body_create_code_scorer_version_scorers__scorer_id__version_code_post Body_create_dataset_datasets_post: properties: @@ -14065,10 +14318,6 @@ components: title: Body_manual_llm_validate_multipart_scorers_llm_validate_multipart_post Body_validate_code_scorer_dataset_scorers_code_validate_dataset_post: properties: - file: - type: string - title: File - format: binary dataset_id: type: string format: uuid @@ -14106,19 +14355,24 @@ components: score_type: anyOf: - type: string + enum: + - bool + - int + - float + - str - type: 'null' title: Score Type + file: + type: string + title: File + format: binary type: object required: - - file - dataset_id + - file title: Body_validate_code_scorer_dataset_scorers_code_validate_dataset_post Body_validate_code_scorer_log_record_scorers_code_validate_log_record_post: properties: - file: - type: string - title: File - format: binary log_stream_id: anyOf: - type: string @@ -14168,16 +14422,26 @@ components: type: array - type: 'null' title: Scoreable Node Types + score_type: + anyOf: + - type: string + enum: + - bool + - int + - float + - str + - type: 'null' + title: Score Type + file: + type: string + title: File + format: binary type: object required: - file title: Body_validate_code_scorer_log_record_scorers_code_validate_log_record_post Body_validate_code_scorer_scorers_code_validate_post: properties: - file: - type: string - title: File - format: binary test_input: anyOf: - type: string @@ -14204,6 +14468,10 @@ components: type: array - type: 'null' title: Scoreable Node Types + file: + type: string + title: File + format: binary type: object required: - file @@ -14723,6 +14991,38 @@ components: type: array - type: 'null' title: Metadata + label: + anyOf: + - $ref: '#/components/schemas/ColumnMappingConfig' + - items: + type: string + type: array + - type: 'null' + title: Label + evaluator_ground_truth: + anyOf: + - $ref: '#/components/schemas/ColumnMappingConfig' + - items: + type: string + type: array + - type: 'null' + title: Evaluator Ground Truth + tools: + anyOf: + - $ref: '#/components/schemas/ColumnMappingConfig' + - items: + type: string + type: array + - type: 'null' + title: Tools + documents: + anyOf: + - $ref: '#/components/schemas/ColumnMappingConfig' + - items: + type: string + type: array + - type: 'null' + title: Documents mgt: anyOf: - additionalProperties: @@ -15604,10 +15904,6 @@ components: type: boolean title: Upload Data In Separate Task default: true - log_metric_computing_records: - type: boolean - title: Log Metric Computing Records - default: true multijudge_average_boolean_metrics: type: boolean title: Multijudge Average Boolean Metrics @@ -15847,10 +16143,6 @@ components: type: boolean title: Upload Data In Separate Task default: true - log_metric_computing_records: - type: boolean - title: Log Metric Computing Records - default: true multijudge_average_boolean_metrics: type: boolean title: Multijudge Average Boolean Metrics @@ -16989,6 +17281,11 @@ components: draft: type: boolean title: Draft + draft_revision: + anyOf: + - type: string + - type: 'null' + title: Draft Revision type: object required: - id @@ -17120,7 +17417,7 @@ components: title: Key values: items: - $ref: '#/components/schemas/JsonValue' + $ref: '#/components/schemas/api__schemas__content__dataset__JsonValue' type: array title: Values type: object @@ -25523,6 +25820,7 @@ components: - trace_output_only - agent_spans - workflow_spans + - trace_selected_spans title: InputTypeEnum description: Enumeration of input types. InsightSummary: @@ -25955,15 +26253,6 @@ components: - type: number - type: boolean - type: 'null' - JsonValue: - anyOf: - - $ref: '#/components/schemas/JsonPrimitive' - - items: - $ref: '#/components/schemas/JsonValue' - type: array - - additionalProperties: - $ref: '#/components/schemas/JsonValue' - type: object LLMExportFormat: type: string enum: @@ -26537,7 +26826,7 @@ components: title: Next Starting Token versions: items: - $ref: '#/components/schemas/BaseScorerVersionResponse' + $ref: '#/components/schemas/ScorerVersionListItem' type: array title: Versions type: object @@ -26979,15 +27268,15 @@ components: examples: - columns: - applicable_types: - - session - http - - agent - - workflow - control + - trace + - session + - retriever - llm - tool - - retriever - - trace + - agent + - workflow category: standard data_type: text description: Input to the trace or span. @@ -27001,15 +27290,15 @@ components: multi_valued: false sortable: true - applicable_types: - - session - http - - agent - - workflow - control + - trace + - session + - retriever - llm - tool - - retriever - - trace + - agent + - workflow category: standard data_type: text description: Output of the trace or span. @@ -27023,15 +27312,15 @@ components: multi_valued: false sortable: true - applicable_types: - - session - http - - agent - - workflow - control + - trace + - session + - retriever - llm - tool - - retriever - - trace + - agent + - workflow category: standard data_type: text description: Name of the trace, span or session. @@ -27045,15 +27334,15 @@ components: multi_valued: false sortable: true - applicable_types: - - session - http - - agent - - workflow - control + - trace + - session + - retriever - llm - tool - - retriever - - trace + - agent + - workflow category: standard data_type: timestamp description: Timestamp of the trace or span's creation. @@ -27068,13 +27357,13 @@ components: sortable: true - applicable_types: - http - - agent - - workflow - control + - trace + - retriever - llm - tool - - retriever - - trace + - agent + - workflow category: standard data_type: string_list description: Tags associated with this trace or span. @@ -27089,13 +27378,13 @@ components: sortable: false - applicable_types: - http - - agent - - workflow - control + - trace + - retriever - llm - tool - - retriever - - trace + - agent + - workflow category: standard data_type: integer description: Status code of the trace or span. Used for logging failure @@ -27110,15 +27399,15 @@ components: multi_valued: false sortable: true - applicable_types: - - session - http - - agent - - workflow - control + - trace + - session + - retriever - llm - tool - - retriever - - trace + - agent + - workflow category: standard data_type: text description: A user-provided session, trace or span ID. @@ -27133,13 +27422,13 @@ components: sortable: true - applicable_types: - http - - agent - - workflow - control + - trace + - retriever - llm - tool - - retriever - - trace + - agent + - workflow category: standard data_type: text description: Input to the dataset associated with this trace @@ -27154,13 +27443,13 @@ components: sortable: true - applicable_types: - http - - agent - - workflow - control + - trace + - retriever - llm - tool - - retriever - - trace + - agent + - workflow category: standard data_type: text description: Output from the dataset associated with this trace @@ -27174,15 +27463,15 @@ components: multi_valued: false sortable: true - applicable_types: - - session - http - - agent - - workflow - control + - trace + - session + - retriever - llm - tool - - retriever - - trace + - agent + - workflow category: standard data_type: uuid description: Galileo ID of the session, trace or span @@ -27197,13 +27486,13 @@ components: sortable: true - applicable_types: - http - - agent - - workflow - control + - trace + - retriever - llm - tool - - retriever - - trace + - agent + - workflow category: standard data_type: uuid description: Galileo ID of the session containing the trace (or the @@ -27219,13 +27508,13 @@ components: sortable: true - applicable_types: - http - - agent - - workflow - control + - trace + - retriever - llm - tool - - retriever - - trace + - agent + - workflow category: standard data_type: uuid description: Galileo ID of the project associated with this trace or @@ -27241,13 +27530,13 @@ components: sortable: true - applicable_types: - http - - agent - - workflow - control + - trace + - retriever - llm - tool - - retriever - - trace + - agent + - workflow category: standard data_type: uuid description: Galileo ID of the run (log stream or experiment) associated @@ -27263,13 +27552,13 @@ components: sortable: true - applicable_types: - http - - agent - - workflow - control + - trace + - retriever - llm - tool - - retriever - - trace + - agent + - workflow category: standard data_type: timestamp description: Timestamp of the session or trace or span's last update @@ -27284,13 +27573,13 @@ components: sortable: true - applicable_types: - http - - agent - - workflow - control + - trace + - retriever - llm - tool - - retriever - - trace + - agent + - workflow category: standard data_type: boolean description: Whether or not this trace or span has child spans @@ -27304,15 +27593,15 @@ components: multi_valued: false sortable: true - applicable_types: - - session - http - - agent - - workflow - control + - trace + - session + - retriever - llm - tool - - retriever - - trace + - agent + - workflow category: standard data_type: text description: Runner progress text written directly to CH span @@ -27326,15 +27615,15 @@ components: multi_valued: false sortable: true - applicable_types: - - session - http - - agent - - workflow - control + - trace + - session + - retriever - llm - tool - - retriever - - trace + - agent + - workflow category: standard data_type: text description: Runner error text written directly to CH span @@ -27364,13 +27653,13 @@ components: sortable: true - applicable_types: - http - - agent - - workflow - control + - trace + - retriever - llm - tool - - retriever - - trace + - agent + - workflow category: standard data_type: boolean description: Whether the parent trace is complete or not @@ -27384,23 +27673,23 @@ components: multi_valued: false sortable: true - allowed_values: - - session - http - - agent - - workflow - control + - trace + - session - retriever - llm - - trace - tool - applicable_types: - - http - agent - workflow + applicable_types: + - http - control - retriever - llm - tool + - agent + - workflow category: standard data_type: text description: Type of the trace, span or session. @@ -27415,12 +27704,12 @@ components: sortable: true - applicable_types: - http - - agent - - workflow - control - retriever - llm - tool + - agent + - workflow category: standard data_type: uuid description: Galileo ID of the trace containing the span (or the same @@ -27436,12 +27725,12 @@ components: sortable: true - applicable_types: - http - - agent - - workflow - control - retriever - llm - tool + - agent + - workflow category: standard data_type: uuid description: Galileo ID of the parent of this span @@ -27456,12 +27745,12 @@ components: sortable: true - applicable_types: - http - - agent - - workflow - control - retriever - llm - tool + - agent + - workflow category: standard data_type: integer description: Topological step number of the span. @@ -27475,14 +27764,14 @@ components: multi_valued: false sortable: true - allowed_values: - - judge + - default - planner - - reflection - - router - supervisor - - default - - react + - reflection - classifier + - react + - judge + - router applicable_types: - agent category: standard @@ -27630,10 +27919,10 @@ components: multi_valued: false sortable: true - allowed_values: - - llm_call - - retriever_call - tool_call + - retriever_call - trace_call + - llm_call - session_call applicable_types: - control @@ -27906,6 +28195,16 @@ components: title: LogRecordsColumnInfo LogRecordsCustomMetricsQueryRequest: properties: + start_time: + type: string + format: date-time + title: Start Time + description: Include traces from this time onward. + end_time: + type: string + format: date-time + title: End Time + description: Include traces up to this time. log_stream_id: anyOf: - type: string @@ -27927,21 +28226,18 @@ components: - type: 'null' title: Metrics Testing Id description: Metrics testing id associated with the traces. + access_view_id: + anyOf: + - type: string + format: uuid4 + - type: 'null' + title: Access View Id + description: Assigned log view for restricted access. filter_tree: anyOf: - $ref: '#/components/schemas/FilterExpression_Annotated_Union_LogRecordsIDFilter__LogRecordsDateFilter__LogRecordsNumberFilter__LogRecordsBooleanFilter__LogRecordsCollectionFilter__LogRecordsTextFilter__LogRecordsFullyAnnotatedFilter___FieldInfo_annotation_NoneType__required_True__discriminator__type____' - type: 'null' description: Filter expression tree for complex filtering - start_time: - type: string - format: date-time - title: Start Time - description: Include traces from this time onward. - end_time: - type: string - format: date-time - title: End Time - description: Include traces up to this time. interval_minutes: type: integer title: Interval Minutes @@ -28143,6 +28439,13 @@ components: - type: 'null' title: Metrics Testing Id description: Metrics testing id associated with the traces. + access_view_id: + anyOf: + - type: string + format: uuid4 + - type: 'null' + title: Access View Id + description: Assigned log view for restricted access. filters: items: oneOf: @@ -28285,6 +28588,16 @@ components: title: LogRecordsIDFilter LogRecordsMetricsQueryRequest: properties: + start_time: + type: string + format: date-time + title: Start Time + description: Include traces from this time onward. + end_time: + type: string + format: date-time + title: End Time + description: Include traces up to this time. log_stream_id: anyOf: - type: string @@ -28306,6 +28619,13 @@ components: - type: 'null' title: Metrics Testing Id description: Metrics testing id associated with the traces. + access_view_id: + anyOf: + - type: string + format: uuid4 + - type: 'null' + title: Access View Id + description: Assigned log view for restricted access. filters: items: oneOf: @@ -28328,16 +28648,6 @@ components: text: '#/components/schemas/LogRecordsTextFilter' type: array title: Filters - start_time: - type: string - format: date-time - title: Start Time - description: Include traces from this time onward. - end_time: - type: string - format: date-time - title: End Time - description: Include traces up to this time. interval: type: integer title: Interval @@ -28489,6 +28799,13 @@ components: - type: 'null' title: Metrics Testing Id description: Metrics testing id associated with the traces. + access_view_id: + anyOf: + - type: string + format: uuid4 + - type: 'null' + title: Access View Id + description: Assigned log view for restricted access. filters: items: oneOf: @@ -28669,7 +28986,7 @@ components: annotation_agreement: {} annotation_queue_ids: [] annotations: {} - created_at: '2026-10-29T16:41:53.046189Z' + created_at: '2026-11-11T20:14:01.306741Z' dataset_metadata: {} error_message: '' feedback_rating_info: {} @@ -28688,7 +29005,7 @@ components: annotation_agreement: {} annotation_queue_ids: [] annotations: {} - created_at: '2026-10-29T16:41:53.046327Z' + created_at: '2026-11-11T20:14:01.306876Z' dataset_metadata: {} error_message: '' feedback_rating_info: {} @@ -28731,6 +29048,13 @@ components: - type: 'null' title: Metrics Testing Id description: Metrics testing id associated with the traces. + access_view_id: + anyOf: + - type: string + format: uuid4 + - type: 'null' + title: Access View Id + description: Assigned log view for restricted access. filters: items: oneOf: @@ -28818,6 +29142,13 @@ components: - type: 'null' title: Metrics Testing Id description: Metrics testing id associated with the traces. + access_view_id: + anyOf: + - type: string + format: uuid4 + - type: 'null' + title: Access View Id + description: Assigned log view for restricted access. filters: items: oneOf: @@ -28974,7 +29305,7 @@ components: annotation_agreement: {} annotation_queue_ids: [] annotations: {} - created_at: '2026-10-29T16:41:53.043448Z' + created_at: '2026-11-11T20:14:01.303575Z' dataset_metadata: {} error_message: '' feedback_rating_info: {} @@ -28999,7 +29330,7 @@ components: annotation_agreement: {} annotation_queue_ids: [] annotations: {} - created_at: '2026-10-29T16:41:53.043599Z' + created_at: '2026-11-11T20:14:01.303735Z' dataset_metadata: {} error_message: '' feedback_rating_info: {} @@ -29342,14 +29673,14 @@ components: - log_stream_id: 00000000-0000-0000-0000-000000000000 parent_id: 11000011-0000-0000-0000-110000110000 spans: - - created_at: '2026-10-29T16:41:53.025896Z' + - created_at: '2026-11-11T20:14:01.285559Z' dataset_metadata: {} input: who is a smart LLM? metrics: {} name: '' output: I am! spans: - - created_at: '2026-10-29T16:41:53.014436Z' + - created_at: '2026-11-11T20:14:01.275275Z' dataset_metadata: {} id: 22222222-2222-4222-a222-222222222222 input: @@ -30004,14 +30335,14 @@ components: - log_stream_id: 00000000-0000-0000-0000-000000000000 session_id: 00000000-0000-0000-0000-000000000000 traces: - - created_at: '2026-10-29T16:41:53.010661Z' + - created_at: '2026-11-11T20:14:01.271552Z' dataset_metadata: {} input: who is a smart LLM? metrics: {} name: '' output: I am! spans: - - created_at: '2026-10-29T16:41:53.010623Z' + - created_at: '2026-11-11T20:14:01.271501Z' dataset_metadata: {} input: - content: 'Question: who is a smart LLM?' @@ -30029,14 +30360,14 @@ components: user_metadata: {} - experiment_id: 00000000-0000-0000-0000-000000000000 traces: - - created_at: '2026-10-29T16:41:53.011122Z' + - created_at: '2026-11-11T20:14:01.272033Z' dataset_metadata: {} input: who is a smart LLM? metrics: {} name: '' output: I am! spans: - - created_at: '2026-10-29T16:41:53.011089Z' + - created_at: '2026-11-11T20:14:01.271999Z' dataset_metadata: {} id: 11111111-1111-4111-a111-111111111111 input: @@ -30189,6 +30520,253 @@ components: - created_at - updated_at title: Luna3ScorerResponse + LunaDatasetMappings: + properties: + input: + anyOf: + - $ref: '#/components/schemas/LunaMappingConfig' + - type: 'null' + output: + anyOf: + - $ref: '#/components/schemas/LunaMappingConfig' + - type: 'null' + label: + anyOf: + - $ref: '#/components/schemas/LunaMappingConfig' + - type: 'null' + evaluator_ground_truth: + anyOf: + - $ref: '#/components/schemas/LunaMappingConfig' + - type: 'null' + metadata: + anyOf: + - $ref: '#/components/schemas/LunaMappingConfig' + - type: 'null' + tools: + anyOf: + - $ref: '#/components/schemas/LunaMappingConfig' + - type: 'null' + documents: + anyOf: + - $ref: '#/components/schemas/LunaMappingConfig' + - type: 'null' + mgt: + additionalProperties: + $ref: '#/components/schemas/LunaMappingConfig' + propertyNames: + format: uuid4 + type: object + maxProperties: 32 + title: Mgt + additionalProperties: false + type: object + title: LunaDatasetMappings + description: Semantic mappings shared by preview, validation, and dataset finalization. + LunaDatasetPreview: + properties: + dataset: + oneOf: + - $ref: '#/components/schemas/LunaPreviewDraftRef' + - $ref: '#/components/schemas/LunaPreviewVersionRef' + title: Dataset + discriminator: + propertyName: kind + mapping: + draft: '#/components/schemas/LunaPreviewDraftRef' + version: '#/components/schemas/LunaPreviewVersionRef' + columns: + items: + $ref: '#/components/schemas/LunaDatasetPreviewColumn' + type: array + title: Columns + rows: + items: + $ref: '#/components/schemas/LunaDatasetPreviewRow' + type: array + title: Rows + total_row_count: + type: integer + title: Total Row Count + column_count: + type: integer + title: Column Count + next_cursor: + anyOf: + - type: string + - type: 'null' + title: Next Cursor + type: object + required: + - dataset + - columns + - rows + - total_row_count + - column_count + title: LunaDatasetPreview + LunaDatasetPreviewColumn: + properties: + key: + type: string + title: Key + label: + type: string + title: Label + source_columns: + items: + type: string + type: array + title: Source Columns + source_column: + anyOf: + - type: string + - type: 'null' + title: Source Column + samples: + items: + $ref: '#/components/schemas/pydantic__types__JsonValue' + type: array + title: Samples + group: + anyOf: + - type: string + - type: 'null' + title: Group + scorer_id: + anyOf: + - type: string + format: uuid4 + - type: 'null' + title: Scorer Id + type: object + required: + - key + - label + - source_columns + title: LunaDatasetPreviewColumn + LunaDatasetPreviewErrorDetail: + properties: + code: + type: string + title: Code + message: + anyOf: + - type: string + - type: 'null' + title: Message + current_revision: + anyOf: + - type: string + - type: 'null' + title: Current Revision + field_errors: + anyOf: + - items: + $ref: '#/components/schemas/LunaDatasetPreviewFieldError' + type: array + - type: 'null' + title: Field Errors + type: object + required: + - code + title: LunaDatasetPreviewErrorDetail + LunaDatasetPreviewErrorResponse: + properties: + detail: + anyOf: + - type: string + - $ref: '#/components/schemas/LunaDatasetPreviewErrorDetail' + - items: + $ref: '#/components/schemas/LunaDatasetPreviewRequestValidationError' + type: array + title: Detail + standard_error: + anyOf: + - $ref: '#/components/schemas/StandardError' + - type: 'null' + type: object + required: + - detail + title: LunaDatasetPreviewErrorResponse + description: Catalog failures and ordinary request-validation failures returned + by preview routes. + LunaDatasetPreviewFieldError: + properties: + field: + type: string + title: Field + message: + type: string + title: Message + type: object + required: + - field + - message + title: LunaDatasetPreviewFieldError + LunaDatasetPreviewRequest: + properties: + mappings: + anyOf: + - $ref: '#/components/schemas/LunaDatasetMappings' + - items: + $ref: '#/components/schemas/LunaSemanticMapping' + type: array + additionalProperties: false + type: object + required: + - mappings + title: LunaDatasetPreviewRequest + LunaDatasetPreviewRequestValidationError: + properties: + loc: + items: + anyOf: + - type: string + - type: integer + type: array + title: Loc + msg: + type: string + title: Msg + type: + type: string + title: Type + input: + anyOf: + - $ref: '#/components/schemas/pydantic__types__JsonValue' + - type: 'null' + ctx: + anyOf: + - additionalProperties: + $ref: '#/components/schemas/pydantic__types__JsonValue' + type: object + - type: 'null' + title: Ctx + type: object + required: + - loc + - msg + - type + title: LunaDatasetPreviewRequestValidationError + LunaDatasetPreviewRow: + properties: + row_ref: + type: string + title: Row Ref + values: + additionalProperties: + $ref: '#/components/schemas/pydantic__types__JsonValue' + type: object + title: Values + truncated_columns: + items: + type: string + type: array + title: Truncated Columns + type: object + required: + - row_ref + - values + title: LunaDatasetPreviewRow LunaInputTypeEnum: type: string enum: @@ -30196,6 +30774,26 @@ components: - trace_object - trace_input_output_only title: LunaInputTypeEnum + LunaMappingConfig: + properties: + columns: + items: + type: string + maxLength: 256 + minLength: 1 + type: array + maxItems: 32 + minItems: 1 + title: Columns + flatten: + type: boolean + title: Flatten + default: true + additionalProperties: false + type: object + required: + - columns + title: LunaMappingConfig LunaOutputTypeEnum: type: string enum: @@ -30204,6 +30802,71 @@ components: - string_list - bool_list title: LunaOutputTypeEnum + LunaPreviewDraftRef: + properties: + kind: + type: string + const: draft + title: Kind + default: draft + dataset_id: + type: string + format: uuid4 + title: Dataset Id + draft_revision: + type: string + title: Draft Revision + type: object + required: + - dataset_id + - draft_revision + title: LunaPreviewDraftRef + LunaPreviewVersionRef: + properties: + kind: + type: string + const: version + title: Kind + default: version + dataset_id: + type: string + format: uuid4 + title: Dataset Id + version_index: + type: integer + minimum: 1.0 + title: Version Index + type: object + required: + - dataset_id + - version_index + title: LunaPreviewVersionRef + LunaSemanticMapping: + properties: + source_column: + type: string + maxLength: 256 + minLength: 1 + title: Source Column + target_field: + type: string + enum: + - input + - output + - label + - evaluator_ground_truth + - metadata + - tools + - documents + - generated_output + - ground_truth + title: Target Field + additionalProperties: false + type: object + required: + - source_column + - target_field + title: LunaSemanticMapping MCPApprovalRequestEvent: properties: type: @@ -36850,6 +37513,13 @@ components: - type: 'null' title: Metrics Testing Id description: Metrics testing id associated with the traces. + access_view_id: + anyOf: + - type: string + format: uuid4 + - type: 'null' + title: Access View Id + description: Assigned log view for restricted access. filters: items: oneOf: @@ -38366,6 +39036,12 @@ components: type: boolean title: Includes Standard default: true + hashed_lockfile: + anyOf: + - type: string + maxLength: 786432 + - type: 'null' + title: Hashed Lockfile type: object required: - tier @@ -39234,6 +39910,122 @@ components: - secondary - computed_at title: ScorerVersionHealthScoreEntry + ScorerVersionListItem: + properties: + id: + type: string + format: uuid4 + title: Id + version: + type: integer + title: Version + scorer_id: + type: string + format: uuid4 + title: Scorer Id + generated_scorer: + anyOf: + - $ref: '#/components/schemas/GeneratedScorerResponse' + - type: 'null' + registered_scorer: + anyOf: + - $ref: '#/components/schemas/CreateUpdateRegisteredScorerResponse' + - type: 'null' + finetuned_scorer: + anyOf: + - $ref: '#/components/schemas/FineTunedScorerResponse' + - type: 'null' + luna3_scorer: + anyOf: + - $ref: '#/components/schemas/Luna3ScorerResponse' + - type: 'null' + decision_scorer: + anyOf: + - $ref: '#/components/schemas/DecisionScorerDB' + - type: 'null' + model_name: + anyOf: + - type: string + - type: 'null' + title: Model Name + num_judges: + anyOf: + - type: integer + - type: 'null' + title: Num Judges + cot_enabled: + anyOf: + - type: boolean + - type: 'null' + title: Cot Enabled + runtime: + anyOf: + - type: string + - type: 'null' + title: Runtime + description: The runtime a code metric version runs on, such as python3.14. + Null for a version saved before runtimes were recorded, which runs on + the legacy Python 3.12 runtime. + code_sha256: + anyOf: + - type: string + - type: 'null' + title: Code Sha256 + description: SHA-256 of the code bytes uploaded for a code metric version. + Null for a version saved before digests were recorded. + created_at: + type: string + format: date-time + title: Created At + updated_at: + type: string + format: date-time + title: Updated At + chain_poll_template: + anyOf: + - $ref: '#/components/schemas/ChainPollTemplate' + - type: 'null' + scoreable_node_types: + anyOf: + - items: + type: string + type: array + - type: 'null' + title: Scoreable Node Types + output_type: + anyOf: + - $ref: '#/components/schemas/OutputTypeEnum' + - type: 'null' + allowed_model: + anyOf: + - type: boolean + - type: 'null' + title: Allowed Model + created_by: + anyOf: + - type: string + format: uuid4 + - type: 'null' + title: Created By + validation_task_id: + anyOf: + - type: string + format: uuid4 + - type: 'null' + title: Validation Task Id + request_id: + anyOf: + - type: string + - type: 'null' + title: Request Id + type: object + required: + - id + - version + - scorer_id + - created_at + - updated_at + title: ScorerVersionListItem Segment: properties: start: @@ -40049,11 +40841,7 @@ components: - 18 - 19 title: TaskType - description: 'Valid task types for modeling. - - - We store these as ints instead of strings because we will be looking this - up in the database frequently.' + description: Keep the existing integer values used by stored runs. TemplateStubRequest: properties: templates: @@ -40976,6 +41764,7 @@ components: - change_role_to_manager - change_role_to_user - change_role_to_read_only + - change_role_to_org_annotator - change_role_to_capability_based title: UserAction UserAnnotationQueueCollaborator: @@ -41203,6 +41992,7 @@ components: - manager - user - read_only + - org_annotator - capability_based title: UserRole ValidResult: @@ -41214,6 +42004,11 @@ components: default: valid score_type: type: string + enum: + - bool + - int + - float + - str title: Score Type scoreable_node_types: items: @@ -41372,6 +42167,13 @@ components: - type: 'null' title: Metrics Testing Id description: Metrics testing id associated with the traces. + access_view_id: + anyOf: + - type: string + format: uuid4 + - type: 'null' + title: Access View Id + description: Assigned log view for restricted access. filters: items: oneOf: @@ -41680,6 +42482,13 @@ components: - type: 'null' title: Metrics Testing Id description: Metrics testing id associated with the traces. + access_view_id: + anyOf: + - type: string + format: uuid4 + - type: 'null' + title: Access View Id + description: Assigned log view for restricted access. filters: items: oneOf: @@ -42449,6 +43258,15 @@ components: - reason title: BulkDeleteFailure description: Details about a failed deletion. + api__schemas__content__dataset__JsonValue: + anyOf: + - $ref: '#/components/schemas/JsonPrimitive' + - items: + $ref: '#/components/schemas/api__schemas__content__dataset__JsonValue' + type: array + - additionalProperties: + $ref: '#/components/schemas/api__schemas__content__dataset__JsonValue' + type: object api__schemas__content__prompt__BulkDeleteFailure: properties: template_id: @@ -42820,6 +43638,7 @@ components: \ Mutually exclusive with ``based_on``.\n supports_json_schema:\ \ Whether the endpoint supports an OpenAI-style ``json_schema``\n \ \ ``response_format`` for this model. Defaults to False." + pydantic__types__JsonValue: {} securitySchemes: OAuth2PasswordBearer: type: oauth2 diff --git a/src/splunk_ao/resources/api/annotation_queue/share_annotation_queue_with_users_annotation_queues_queue_id_users_post.py b/src/splunk_ao/resources/api/annotation_queue/share_annotation_queue_with_users_annotation_queues_queue_id_users_post.py index 802ec106..6bd2a550 100644 --- a/src/splunk_ao/resources/api/annotation_queue/share_annotation_queue_with_users_annotation_queues_queue_id_users_post.py +++ b/src/splunk_ao/resources/api/annotation_queue/share_annotation_queue_with_users_annotation_queues_queue_id_users_post.py @@ -100,7 +100,8 @@ def sync_detailed( Share an annotation queue with users by granting them specific roles. Users can be specified by user_id or email. If using email and the user doesn't exist - in the organization, they will be invited automatically with the 'user' role. + in the organization, annotators are invited with the organization annotator role. + Other invitations use the 'user' role. Roles: owner, annotator @@ -131,7 +132,8 @@ def sync( Share an annotation queue with users by granting them specific roles. Users can be specified by user_id or email. If using email and the user doesn't exist - in the organization, they will be invited automatically with the 'user' role. + in the organization, annotators are invited with the organization annotator role. + Other invitations use the 'user' role. Roles: owner, annotator @@ -158,7 +160,8 @@ async def asyncio_detailed( Share an annotation queue with users by granting them specific roles. Users can be specified by user_id or email. If using email and the user doesn't exist - in the organization, they will be invited automatically with the 'user' role. + in the organization, annotators are invited with the organization annotator role. + Other invitations use the 'user' role. Roles: owner, annotator @@ -189,7 +192,8 @@ async def asyncio( Share an annotation queue with users by granting them specific roles. Users can be specified by user_id or email. If using email and the user doesn't exist - in the organization, they will be invited automatically with the 'user' role. + in the organization, annotators are invited with the organization annotator role. + Other invitations use the 'user' role. Roles: owner, annotator diff --git a/src/splunk_ao/resources/api/datasets/head_dataset_content_datasets_dataset_id_content_head.py b/src/splunk_ao/resources/api/datasets/head_dataset_content_datasets_dataset_id_content_head.py new file mode 100644 index 00000000..1d461ae2 --- /dev/null +++ b/src/splunk_ao/resources/api/datasets/head_dataset_content_datasets_dataset_id_content_head.py @@ -0,0 +1,157 @@ +from http import HTTPStatus +from typing import Any, Optional + +import httpx + +from galileo_core.constants.request_method import RequestMethod +from galileo_core.helpers.api_client import ApiClient +from splunk_ao.exceptions import ( + AuthenticationError, + BadRequestError, + ConflictError, + ForbiddenError, + NotFoundError, + RateLimitError, + ServerError, +) +from splunk_ao.utils.headers_data import get_sdk_header + +from ... import errors +from ...models.http_validation_error import HTTPValidationError +from ...types import Response + + +def _get_kwargs(dataset_id: str) -> dict[str, Any]: + headers: dict[str, Any] = {} + + _kwargs: dict[str, Any] = { + "method": RequestMethod.HEAD, + "return_raw_response": True, + "path": "/datasets/{dataset_id}/content".format(dataset_id=dataset_id), + } + + headers["Splunk-AO-SDK"] = get_sdk_header() + + _kwargs["content_headers"] = headers + return _kwargs + + +def _parse_response(*, client: ApiClient, response: httpx.Response) -> Any | HTTPValidationError: + if response.status_code == 200: + response_200 = response.json() + return response_200 + + if response.status_code == 422: + response_422 = HTTPValidationError.from_dict(response.json()) + + return response_422 + + # Handle common HTTP errors with actionable messages + if response.status_code == 400: + raise BadRequestError(response.status_code, response.content) + if response.status_code == 401: + raise AuthenticationError(response.status_code, response.content) + if response.status_code == 403: + raise ForbiddenError(response.status_code, response.content) + if response.status_code == 404: + raise NotFoundError(response.status_code, response.content) + if response.status_code == 409: + raise ConflictError(response.status_code, response.content) + if response.status_code == 429: + raise RateLimitError(response.status_code, response.content) + if response.status_code >= 500: + raise ServerError(response.status_code, response.content) + raise errors.UnexpectedStatus(response.status_code, response.content) + + +def _build_response(*, client: ApiClient, response: httpx.Response) -> Response[Any | HTTPValidationError]: + return Response( + status_code=HTTPStatus(response.status_code), + content=response.content, + headers=response.headers, + parsed=_parse_response(client=client, response=response), + ) + + +def sync_detailed(dataset_id: str, *, client: ApiClient) -> Response[Any | HTTPValidationError]: + """Head Dataset Content + + Return the authoritative content revision without transferring dataset rows. + + Args: + dataset_id (str): + + Raises: + errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. + httpx.TimeoutException: If the request takes longer than Client.timeout. + + Returns: + Response[Any | HTTPValidationError] + """ + + kwargs = _get_kwargs(dataset_id=dataset_id) + + response = client.request(**kwargs) + + return _build_response(client=client, response=response) + + +def sync(dataset_id: str, *, client: ApiClient) -> Optional[Any | HTTPValidationError]: + """Head Dataset Content + + Return the authoritative content revision without transferring dataset rows. + + Args: + dataset_id (str): + + Raises: + errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. + httpx.TimeoutException: If the request takes longer than Client.timeout. + + Returns: + Any | HTTPValidationError + """ + + return sync_detailed(dataset_id=dataset_id, client=client).parsed + + +async def asyncio_detailed(dataset_id: str, *, client: ApiClient) -> Response[Any | HTTPValidationError]: + """Head Dataset Content + + Return the authoritative content revision without transferring dataset rows. + + Args: + dataset_id (str): + + Raises: + errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. + httpx.TimeoutException: If the request takes longer than Client.timeout. + + Returns: + Response[Any | HTTPValidationError] + """ + + kwargs = _get_kwargs(dataset_id=dataset_id) + + response = await client.arequest(**kwargs) + + return _build_response(client=client, response=response) + + +async def asyncio(dataset_id: str, *, client: ApiClient) -> Optional[Any | HTTPValidationError]: + """Head Dataset Content + + Return the authoritative content revision without transferring dataset rows. + + Args: + dataset_id (str): + + Raises: + errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. + httpx.TimeoutException: If the request takes longer than Client.timeout. + + Returns: + Any | HTTPValidationError + """ + + return (await asyncio_detailed(dataset_id=dataset_id, client=client)).parsed diff --git a/src/splunk_ao/resources/api/datasets/preview_dataset_datasets_dataset_id_preview_post.py b/src/splunk_ao/resources/api/datasets/preview_dataset_datasets_dataset_id_preview_post.py index f93b994a..c661f748 100644 --- a/src/splunk_ao/resources/api/datasets/preview_dataset_datasets_dataset_id_preview_post.py +++ b/src/splunk_ao/resources/api/datasets/preview_dataset_datasets_dataset_id_preview_post.py @@ -18,21 +18,43 @@ from ... import errors from ...models.dataset_content import DatasetContent -from ...models.http_validation_error import HTTPValidationError +from ...models.luna_dataset_preview import LunaDatasetPreview +from ...models.luna_dataset_preview_error_response import LunaDatasetPreviewErrorResponse +from ...models.luna_dataset_preview_request import LunaDatasetPreviewRequest from ...models.preview_dataset_request import PreviewDatasetRequest from ...types import UNSET, Response, Unset def _get_kwargs( - dataset_id: str, *, body: PreviewDatasetRequest, starting_token: int | Unset = 0, limit: int | Unset = 100 + dataset_id: str, + *, + body: LunaDatasetPreviewRequest | PreviewDatasetRequest, + cursor: None | str | Unset = UNSET, + limit: int | None | Unset = UNSET, + starting_token: int | Unset = 0, + if_match: None | str | Unset = UNSET, ) -> dict[str, Any]: headers: dict[str, Any] = {} + if not isinstance(if_match, Unset): + headers["If-Match"] = if_match params: dict[str, Any] = {} - params["starting_token"] = starting_token + json_cursor: None | str | Unset + if isinstance(cursor, Unset): + json_cursor = UNSET + else: + json_cursor = cursor + params["cursor"] = json_cursor + + json_limit: int | None | Unset + if isinstance(limit, Unset): + json_limit = UNSET + else: + json_limit = limit + params["limit"] = json_limit - params["limit"] = limit + params["starting_token"] = starting_token params = {k: v for k, v in params.items() if v is not UNSET and v is not None} @@ -43,7 +65,11 @@ def _get_kwargs( "params": params, } - _kwargs["json"] = body.to_dict() + _kwargs["json"]: dict[str, Any] + if isinstance(body, PreviewDatasetRequest): + _kwargs["json"] = body.to_dict() + else: + _kwargs["json"] = body.to_dict() headers["Content-Type"] = "application/json" @@ -53,17 +79,55 @@ def _get_kwargs( return _kwargs -def _parse_response(*, client: ApiClient, response: httpx.Response) -> DatasetContent | HTTPValidationError: +def _parse_response( + *, client: ApiClient, response: httpx.Response +) -> DatasetContent | LunaDatasetPreview | LunaDatasetPreviewErrorResponse: if response.status_code == 200: - response_200 = DatasetContent.from_dict(response.json()) + + def _parse_response_200(data: object) -> DatasetContent | LunaDatasetPreview: + try: + if not isinstance(data, dict): + raise TypeError() + response_200_type_0 = DatasetContent.from_dict(data) + + return response_200_type_0 + except: # noqa: E722 + pass + if not isinstance(data, dict): + raise TypeError() + response_200_type_1 = LunaDatasetPreview.from_dict(data) + + return response_200_type_1 + + response_200 = _parse_response_200(response.json()) return response_200 + if response.status_code == 404: + response_404 = LunaDatasetPreviewErrorResponse.from_dict(response.json()) + + return response_404 + + if response.status_code == 412: + response_412 = LunaDatasetPreviewErrorResponse.from_dict(response.json()) + + return response_412 + if response.status_code == 422: - response_422 = HTTPValidationError.from_dict(response.json()) + response_422 = LunaDatasetPreviewErrorResponse.from_dict(response.json()) return response_422 + if response.status_code == 428: + response_428 = LunaDatasetPreviewErrorResponse.from_dict(response.json()) + + return response_428 + + if response.status_code == 503: + response_503 = LunaDatasetPreviewErrorResponse.from_dict(response.json()) + + return response_503 + # Handle common HTTP errors with actionable messages if response.status_code == 400: raise BadRequestError(response.status_code, response.content) @@ -82,7 +146,9 @@ def _parse_response(*, client: ApiClient, response: httpx.Response) -> DatasetCo raise errors.UnexpectedStatus(response.status_code, response.content) -def _build_response(*, client: ApiClient, response: httpx.Response) -> Response[DatasetContent | HTTPValidationError]: +def _build_response( + *, client: ApiClient, response: httpx.Response +) -> Response[DatasetContent | LunaDatasetPreview | LunaDatasetPreviewErrorResponse]: return Response( status_code=HTTPStatus(response.status_code), content=response.content, @@ -95,27 +161,34 @@ def sync_detailed( dataset_id: str, *, client: ApiClient, - body: PreviewDatasetRequest, + body: LunaDatasetPreviewRequest | PreviewDatasetRequest, + cursor: None | str | Unset = UNSET, + limit: int | None | Unset = UNSET, starting_token: int | Unset = 0, - limit: int | Unset = 100, -) -> Response[DatasetContent | HTTPValidationError]: + if_match: None | str | Unset = UNSET, +) -> Response[DatasetContent | LunaDatasetPreview | LunaDatasetPreviewErrorResponse]: """Preview Dataset Args: dataset_id (str): + cursor (None | str | Unset): + limit (int | None | Unset): Defaults to 10 for semantic mappings and 100 for legacy + column_mapping. starting_token (int | Unset): Default: 0. - limit (int | Unset): Default: 100. - body (PreviewDatasetRequest): + if_match (None | str | Unset): + body (LunaDatasetPreviewRequest | PreviewDatasetRequest): Raises: errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - Response[DatasetContent | HTTPValidationError] + Response[DatasetContent | LunaDatasetPreview | LunaDatasetPreviewErrorResponse] """ - kwargs = _get_kwargs(dataset_id=dataset_id, body=body, starting_token=starting_token, limit=limit) + kwargs = _get_kwargs( + dataset_id=dataset_id, body=body, cursor=cursor, limit=limit, starting_token=starting_token, if_match=if_match + ) response = client.request(**kwargs) @@ -126,28 +199,39 @@ def sync( dataset_id: str, *, client: ApiClient, - body: PreviewDatasetRequest, + body: LunaDatasetPreviewRequest | PreviewDatasetRequest, + cursor: None | str | Unset = UNSET, + limit: int | None | Unset = UNSET, starting_token: int | Unset = 0, - limit: int | Unset = 100, -) -> Optional[DatasetContent | HTTPValidationError]: + if_match: None | str | Unset = UNSET, +) -> Optional[DatasetContent | LunaDatasetPreview | LunaDatasetPreviewErrorResponse]: """Preview Dataset Args: dataset_id (str): + cursor (None | str | Unset): + limit (int | None | Unset): Defaults to 10 for semantic mappings and 100 for legacy + column_mapping. starting_token (int | Unset): Default: 0. - limit (int | Unset): Default: 100. - body (PreviewDatasetRequest): + if_match (None | str | Unset): + body (LunaDatasetPreviewRequest | PreviewDatasetRequest): Raises: errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - DatasetContent | HTTPValidationError + DatasetContent | LunaDatasetPreview | LunaDatasetPreviewErrorResponse """ return sync_detailed( - dataset_id=dataset_id, client=client, body=body, starting_token=starting_token, limit=limit + dataset_id=dataset_id, + client=client, + body=body, + cursor=cursor, + limit=limit, + starting_token=starting_token, + if_match=if_match, ).parsed @@ -155,27 +239,34 @@ async def asyncio_detailed( dataset_id: str, *, client: ApiClient, - body: PreviewDatasetRequest, + body: LunaDatasetPreviewRequest | PreviewDatasetRequest, + cursor: None | str | Unset = UNSET, + limit: int | None | Unset = UNSET, starting_token: int | Unset = 0, - limit: int | Unset = 100, -) -> Response[DatasetContent | HTTPValidationError]: + if_match: None | str | Unset = UNSET, +) -> Response[DatasetContent | LunaDatasetPreview | LunaDatasetPreviewErrorResponse]: """Preview Dataset Args: dataset_id (str): + cursor (None | str | Unset): + limit (int | None | Unset): Defaults to 10 for semantic mappings and 100 for legacy + column_mapping. starting_token (int | Unset): Default: 0. - limit (int | Unset): Default: 100. - body (PreviewDatasetRequest): + if_match (None | str | Unset): + body (LunaDatasetPreviewRequest | PreviewDatasetRequest): Raises: errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - Response[DatasetContent | HTTPValidationError] + Response[DatasetContent | LunaDatasetPreview | LunaDatasetPreviewErrorResponse] """ - kwargs = _get_kwargs(dataset_id=dataset_id, body=body, starting_token=starting_token, limit=limit) + kwargs = _get_kwargs( + dataset_id=dataset_id, body=body, cursor=cursor, limit=limit, starting_token=starting_token, if_match=if_match + ) response = await client.arequest(**kwargs) @@ -186,28 +277,39 @@ async def asyncio( dataset_id: str, *, client: ApiClient, - body: PreviewDatasetRequest, + body: LunaDatasetPreviewRequest | PreviewDatasetRequest, + cursor: None | str | Unset = UNSET, + limit: int | None | Unset = UNSET, starting_token: int | Unset = 0, - limit: int | Unset = 100, -) -> Optional[DatasetContent | HTTPValidationError]: + if_match: None | str | Unset = UNSET, +) -> Optional[DatasetContent | LunaDatasetPreview | LunaDatasetPreviewErrorResponse]: """Preview Dataset Args: dataset_id (str): + cursor (None | str | Unset): + limit (int | None | Unset): Defaults to 10 for semantic mappings and 100 for legacy + column_mapping. starting_token (int | Unset): Default: 0. - limit (int | Unset): Default: 100. - body (PreviewDatasetRequest): + if_match (None | str | Unset): + body (LunaDatasetPreviewRequest | PreviewDatasetRequest): Raises: errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. httpx.TimeoutException: If the request takes longer than Client.timeout. Returns: - DatasetContent | HTTPValidationError + DatasetContent | LunaDatasetPreview | LunaDatasetPreviewErrorResponse """ return ( await asyncio_detailed( - dataset_id=dataset_id, client=client, body=body, starting_token=starting_token, limit=limit + dataset_id=dataset_id, + client=client, + body=body, + cursor=cursor, + limit=limit, + starting_token=starting_token, + if_match=if_match, ) ).parsed diff --git a/src/splunk_ao/resources/api/datasets/preview_dataset_version_datasets_dataset_id_versions_version_index_preview_post.py b/src/splunk_ao/resources/api/datasets/preview_dataset_version_datasets_dataset_id_versions_version_index_preview_post.py new file mode 100644 index 00000000..ceedb70e --- /dev/null +++ b/src/splunk_ao/resources/api/datasets/preview_dataset_version_datasets_dataset_id_versions_version_index_preview_post.py @@ -0,0 +1,257 @@ +from http import HTTPStatus +from typing import Any, Optional + +import httpx + +from galileo_core.constants.request_method import RequestMethod +from galileo_core.helpers.api_client import ApiClient +from splunk_ao.exceptions import ( + AuthenticationError, + BadRequestError, + ConflictError, + ForbiddenError, + NotFoundError, + RateLimitError, + ServerError, +) +from splunk_ao.utils.headers_data import get_sdk_header + +from ... import errors +from ...models.luna_dataset_preview import LunaDatasetPreview +from ...models.luna_dataset_preview_error_response import LunaDatasetPreviewErrorResponse +from ...models.luna_dataset_preview_request import LunaDatasetPreviewRequest +from ...types import UNSET, Response, Unset + + +def _get_kwargs( + dataset_id: str, + version_index: int, + *, + body: LunaDatasetPreviewRequest, + limit: int | Unset = 10, + cursor: None | str | Unset = UNSET, +) -> dict[str, Any]: + headers: dict[str, Any] = {} + + params: dict[str, Any] = {} + + params["limit"] = limit + + json_cursor: None | str | Unset + if isinstance(cursor, Unset): + json_cursor = UNSET + else: + json_cursor = cursor + params["cursor"] = json_cursor + + params = {k: v for k, v in params.items() if v is not UNSET and v is not None} + + _kwargs: dict[str, Any] = { + "method": RequestMethod.POST, + "return_raw_response": True, + "path": "/datasets/{dataset_id}/versions/{version_index}/preview".format( + dataset_id=dataset_id, version_index=version_index + ), + "params": params, + } + + _kwargs["json"] = body.to_dict() + + headers["Content-Type"] = "application/json" + + headers["Splunk-AO-SDK"] = get_sdk_header() + + _kwargs["content_headers"] = headers + return _kwargs + + +def _parse_response( + *, client: ApiClient, response: httpx.Response +) -> LunaDatasetPreview | LunaDatasetPreviewErrorResponse: + if response.status_code == 200: + response_200 = LunaDatasetPreview.from_dict(response.json()) + + return response_200 + + if response.status_code == 404: + response_404 = LunaDatasetPreviewErrorResponse.from_dict(response.json()) + + return response_404 + + if response.status_code == 412: + response_412 = LunaDatasetPreviewErrorResponse.from_dict(response.json()) + + return response_412 + + if response.status_code == 422: + response_422 = LunaDatasetPreviewErrorResponse.from_dict(response.json()) + + return response_422 + + if response.status_code == 428: + response_428 = LunaDatasetPreviewErrorResponse.from_dict(response.json()) + + return response_428 + + if response.status_code == 503: + response_503 = LunaDatasetPreviewErrorResponse.from_dict(response.json()) + + return response_503 + + # Handle common HTTP errors with actionable messages + if response.status_code == 400: + raise BadRequestError(response.status_code, response.content) + if response.status_code == 401: + raise AuthenticationError(response.status_code, response.content) + if response.status_code == 403: + raise ForbiddenError(response.status_code, response.content) + if response.status_code == 404: + raise NotFoundError(response.status_code, response.content) + if response.status_code == 409: + raise ConflictError(response.status_code, response.content) + if response.status_code == 429: + raise RateLimitError(response.status_code, response.content) + if response.status_code >= 500: + raise ServerError(response.status_code, response.content) + raise errors.UnexpectedStatus(response.status_code, response.content) + + +def _build_response( + *, client: ApiClient, response: httpx.Response +) -> Response[LunaDatasetPreview | LunaDatasetPreviewErrorResponse]: + return Response( + status_code=HTTPStatus(response.status_code), + content=response.content, + headers=response.headers, + parsed=_parse_response(client=client, response=response), + ) + + +def sync_detailed( + dataset_id: str, + version_index: int, + *, + client: ApiClient, + body: LunaDatasetPreviewRequest, + limit: int | Unset = 10, + cursor: None | str | Unset = UNSET, +) -> Response[LunaDatasetPreview | LunaDatasetPreviewErrorResponse]: + """Preview Dataset Version + + Args: + dataset_id (str): + version_index (int): + limit (int | Unset): Default: 10. + cursor (None | str | Unset): + body (LunaDatasetPreviewRequest): + + Raises: + errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. + httpx.TimeoutException: If the request takes longer than Client.timeout. + + Returns: + Response[LunaDatasetPreview | LunaDatasetPreviewErrorResponse] + """ + + kwargs = _get_kwargs(dataset_id=dataset_id, version_index=version_index, body=body, limit=limit, cursor=cursor) + + response = client.request(**kwargs) + + return _build_response(client=client, response=response) + + +def sync( + dataset_id: str, + version_index: int, + *, + client: ApiClient, + body: LunaDatasetPreviewRequest, + limit: int | Unset = 10, + cursor: None | str | Unset = UNSET, +) -> Optional[LunaDatasetPreview | LunaDatasetPreviewErrorResponse]: + """Preview Dataset Version + + Args: + dataset_id (str): + version_index (int): + limit (int | Unset): Default: 10. + cursor (None | str | Unset): + body (LunaDatasetPreviewRequest): + + Raises: + errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. + httpx.TimeoutException: If the request takes longer than Client.timeout. + + Returns: + LunaDatasetPreview | LunaDatasetPreviewErrorResponse + """ + + return sync_detailed( + dataset_id=dataset_id, version_index=version_index, client=client, body=body, limit=limit, cursor=cursor + ).parsed + + +async def asyncio_detailed( + dataset_id: str, + version_index: int, + *, + client: ApiClient, + body: LunaDatasetPreviewRequest, + limit: int | Unset = 10, + cursor: None | str | Unset = UNSET, +) -> Response[LunaDatasetPreview | LunaDatasetPreviewErrorResponse]: + """Preview Dataset Version + + Args: + dataset_id (str): + version_index (int): + limit (int | Unset): Default: 10. + cursor (None | str | Unset): + body (LunaDatasetPreviewRequest): + + Raises: + errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. + httpx.TimeoutException: If the request takes longer than Client.timeout. + + Returns: + Response[LunaDatasetPreview | LunaDatasetPreviewErrorResponse] + """ + + kwargs = _get_kwargs(dataset_id=dataset_id, version_index=version_index, body=body, limit=limit, cursor=cursor) + + response = await client.arequest(**kwargs) + + return _build_response(client=client, response=response) + + +async def asyncio( + dataset_id: str, + version_index: int, + *, + client: ApiClient, + body: LunaDatasetPreviewRequest, + limit: int | Unset = 10, + cursor: None | str | Unset = UNSET, +) -> Optional[LunaDatasetPreview | LunaDatasetPreviewErrorResponse]: + """Preview Dataset Version + + Args: + dataset_id (str): + version_index (int): + limit (int | Unset): Default: 10. + cursor (None | str | Unset): + body (LunaDatasetPreviewRequest): + + Raises: + errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. + httpx.TimeoutException: If the request takes longer than Client.timeout. + + Returns: + LunaDatasetPreview | LunaDatasetPreviewErrorResponse + """ + + return ( + await asyncio_detailed( + dataset_id=dataset_id, version_index=version_index, client=client, body=body, limit=limit, cursor=cursor + ) + ).parsed diff --git a/src/splunk_ao/resources/api/trace/get_session_projects_project_id_sessions_session_id_get.py b/src/splunk_ao/resources/api/trace/get_session_projects_project_id_sessions_session_id_get.py index 82c77c76..5c537270 100644 --- a/src/splunk_ao/resources/api/trace/get_session_projects_project_id_sessions_session_id_get.py +++ b/src/splunk_ao/resources/api/trace/get_session_projects_project_id_sessions_session_id_get.py @@ -27,6 +27,7 @@ def _get_kwargs( session_id: str, *, include_presigned_urls: bool | Unset = False, + access_view_id: None | str | Unset = UNSET, include_redacted_io: bool | Unset = True, ) -> dict[str, Any]: headers: dict[str, Any] = {} @@ -35,6 +36,13 @@ def _get_kwargs( params["include_presigned_urls"] = include_presigned_urls + json_access_view_id: None | str | Unset + if isinstance(access_view_id, Unset): + json_access_view_id = UNSET + else: + json_access_view_id = access_view_id + params["access_view_id"] = json_access_view_id + params["include_redacted_io"] = include_redacted_io params = {k: v for k, v in params.items() if v is not UNSET and v is not None} @@ -100,6 +108,7 @@ def sync_detailed( *, client: ApiClient, include_presigned_urls: bool | Unset = False, + access_view_id: None | str | Unset = UNSET, include_redacted_io: bool | Unset = True, ) -> Response[ExtendedReadSessionRecordWithChildren | HTTPValidationError]: """Get Session @@ -108,6 +117,7 @@ def sync_detailed( project_id (str): session_id (str): include_presigned_urls (bool | Unset): Default: False. + access_view_id (None | str | Unset): include_redacted_io (bool | Unset): If False, omit the `redacted_input` and `redacted_output` fields from the response. When redaction is active these hold the same text already returned in `input`/`output`, so clients that do not read them can halve the @@ -125,6 +135,7 @@ def sync_detailed( project_id=project_id, session_id=session_id, include_presigned_urls=include_presigned_urls, + access_view_id=access_view_id, include_redacted_io=include_redacted_io, ) @@ -139,6 +150,7 @@ def sync( *, client: ApiClient, include_presigned_urls: bool | Unset = False, + access_view_id: None | str | Unset = UNSET, include_redacted_io: bool | Unset = True, ) -> Optional[ExtendedReadSessionRecordWithChildren | HTTPValidationError]: """Get Session @@ -147,6 +159,7 @@ def sync( project_id (str): session_id (str): include_presigned_urls (bool | Unset): Default: False. + access_view_id (None | str | Unset): include_redacted_io (bool | Unset): If False, omit the `redacted_input` and `redacted_output` fields from the response. When redaction is active these hold the same text already returned in `input`/`output`, so clients that do not read them can halve the @@ -165,6 +178,7 @@ def sync( session_id=session_id, client=client, include_presigned_urls=include_presigned_urls, + access_view_id=access_view_id, include_redacted_io=include_redacted_io, ).parsed @@ -175,6 +189,7 @@ async def asyncio_detailed( *, client: ApiClient, include_presigned_urls: bool | Unset = False, + access_view_id: None | str | Unset = UNSET, include_redacted_io: bool | Unset = True, ) -> Response[ExtendedReadSessionRecordWithChildren | HTTPValidationError]: """Get Session @@ -183,6 +198,7 @@ async def asyncio_detailed( project_id (str): session_id (str): include_presigned_urls (bool | Unset): Default: False. + access_view_id (None | str | Unset): include_redacted_io (bool | Unset): If False, omit the `redacted_input` and `redacted_output` fields from the response. When redaction is active these hold the same text already returned in `input`/`output`, so clients that do not read them can halve the @@ -200,6 +216,7 @@ async def asyncio_detailed( project_id=project_id, session_id=session_id, include_presigned_urls=include_presigned_urls, + access_view_id=access_view_id, include_redacted_io=include_redacted_io, ) @@ -214,6 +231,7 @@ async def asyncio( *, client: ApiClient, include_presigned_urls: bool | Unset = False, + access_view_id: None | str | Unset = UNSET, include_redacted_io: bool | Unset = True, ) -> Optional[ExtendedReadSessionRecordWithChildren | HTTPValidationError]: """Get Session @@ -222,6 +240,7 @@ async def asyncio( project_id (str): session_id (str): include_presigned_urls (bool | Unset): Default: False. + access_view_id (None | str | Unset): include_redacted_io (bool | Unset): If False, omit the `redacted_input` and `redacted_output` fields from the response. When redaction is active these hold the same text already returned in `input`/`output`, so clients that do not read them can halve the @@ -241,6 +260,7 @@ async def asyncio( session_id=session_id, client=client, include_presigned_urls=include_presigned_urls, + access_view_id=access_view_id, include_redacted_io=include_redacted_io, ) ).parsed diff --git a/src/splunk_ao/resources/api/trace/get_span_projects_project_id_spans_span_id_get.py b/src/splunk_ao/resources/api/trace/get_span_projects_project_id_spans_span_id_get.py index 8db33d9b..3afbf18e 100644 --- a/src/splunk_ao/resources/api/trace/get_span_projects_project_id_spans_span_id_get.py +++ b/src/splunk_ao/resources/api/trace/get_span_projects_project_id_spans_span_id_get.py @@ -28,13 +28,26 @@ from ...types import UNSET, Response, Unset -def _get_kwargs(project_id: str, span_id: str, *, include_presigned_urls: bool | Unset = False) -> dict[str, Any]: +def _get_kwargs( + project_id: str, + span_id: str, + *, + include_presigned_urls: bool | Unset = False, + access_view_id: None | str | Unset = UNSET, +) -> dict[str, Any]: headers: dict[str, Any] = {} params: dict[str, Any] = {} params["include_presigned_urls"] = include_presigned_urls + json_access_view_id: None | str | Unset + if isinstance(access_view_id, Unset): + json_access_view_id = UNSET + else: + json_access_view_id = access_view_id + params["access_view_id"] = json_access_view_id + params = {k: v for k, v in params.items() if v is not UNSET and v is not None} _kwargs: dict[str, Any] = { @@ -239,7 +252,12 @@ def _build_response( def sync_detailed( - project_id: str, span_id: str, *, client: ApiClient, include_presigned_urls: bool | Unset = False + project_id: str, + span_id: str, + *, + client: ApiClient, + include_presigned_urls: bool | Unset = False, + access_view_id: None | str | Unset = UNSET, ) -> Response[ ExtendedAgentSpanRecordWithChildren | ExtendedControlSpanRecord @@ -256,6 +274,7 @@ def sync_detailed( project_id (str): span_id (str): include_presigned_urls (bool | Unset): Default: False. + access_view_id (None | str | Unset): Raises: errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. @@ -265,7 +284,12 @@ def sync_detailed( Response[ExtendedAgentSpanRecordWithChildren | ExtendedControlSpanRecord | ExtendedHttpSpanRecordWithChildren | ExtendedLlmSpanRecord | ExtendedRetrieverSpanRecordWithChildren | ExtendedToolSpanRecordWithChildren | ExtendedWorkflowSpanRecordWithChildren | HTTPValidationError] """ - kwargs = _get_kwargs(project_id=project_id, span_id=span_id, include_presigned_urls=include_presigned_urls) + kwargs = _get_kwargs( + project_id=project_id, + span_id=span_id, + include_presigned_urls=include_presigned_urls, + access_view_id=access_view_id, + ) response = client.request(**kwargs) @@ -273,7 +297,12 @@ def sync_detailed( def sync( - project_id: str, span_id: str, *, client: ApiClient, include_presigned_urls: bool | Unset = False + project_id: str, + span_id: str, + *, + client: ApiClient, + include_presigned_urls: bool | Unset = False, + access_view_id: None | str | Unset = UNSET, ) -> Optional[ ExtendedAgentSpanRecordWithChildren | ExtendedControlSpanRecord @@ -290,6 +319,7 @@ def sync( project_id (str): span_id (str): include_presigned_urls (bool | Unset): Default: False. + access_view_id (None | str | Unset): Raises: errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. @@ -300,12 +330,21 @@ def sync( """ return sync_detailed( - project_id=project_id, span_id=span_id, client=client, include_presigned_urls=include_presigned_urls + project_id=project_id, + span_id=span_id, + client=client, + include_presigned_urls=include_presigned_urls, + access_view_id=access_view_id, ).parsed async def asyncio_detailed( - project_id: str, span_id: str, *, client: ApiClient, include_presigned_urls: bool | Unset = False + project_id: str, + span_id: str, + *, + client: ApiClient, + include_presigned_urls: bool | Unset = False, + access_view_id: None | str | Unset = UNSET, ) -> Response[ ExtendedAgentSpanRecordWithChildren | ExtendedControlSpanRecord @@ -322,6 +361,7 @@ async def asyncio_detailed( project_id (str): span_id (str): include_presigned_urls (bool | Unset): Default: False. + access_view_id (None | str | Unset): Raises: errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. @@ -331,7 +371,12 @@ async def asyncio_detailed( Response[ExtendedAgentSpanRecordWithChildren | ExtendedControlSpanRecord | ExtendedHttpSpanRecordWithChildren | ExtendedLlmSpanRecord | ExtendedRetrieverSpanRecordWithChildren | ExtendedToolSpanRecordWithChildren | ExtendedWorkflowSpanRecordWithChildren | HTTPValidationError] """ - kwargs = _get_kwargs(project_id=project_id, span_id=span_id, include_presigned_urls=include_presigned_urls) + kwargs = _get_kwargs( + project_id=project_id, + span_id=span_id, + include_presigned_urls=include_presigned_urls, + access_view_id=access_view_id, + ) response = await client.arequest(**kwargs) @@ -339,7 +384,12 @@ async def asyncio_detailed( async def asyncio( - project_id: str, span_id: str, *, client: ApiClient, include_presigned_urls: bool | Unset = False + project_id: str, + span_id: str, + *, + client: ApiClient, + include_presigned_urls: bool | Unset = False, + access_view_id: None | str | Unset = UNSET, ) -> Optional[ ExtendedAgentSpanRecordWithChildren | ExtendedControlSpanRecord @@ -356,6 +406,7 @@ async def asyncio( project_id (str): span_id (str): include_presigned_urls (bool | Unset): Default: False. + access_view_id (None | str | Unset): Raises: errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. @@ -367,6 +418,10 @@ async def asyncio( return ( await asyncio_detailed( - project_id=project_id, span_id=span_id, client=client, include_presigned_urls=include_presigned_urls + project_id=project_id, + span_id=span_id, + client=client, + include_presigned_urls=include_presigned_urls, + access_view_id=access_view_id, ) ).parsed diff --git a/src/splunk_ao/resources/api/trace/get_trace_projects_project_id_traces_trace_id_get.py b/src/splunk_ao/resources/api/trace/get_trace_projects_project_id_traces_trace_id_get.py index 343cdcb6..a05988bb 100644 --- a/src/splunk_ao/resources/api/trace/get_trace_projects_project_id_traces_trace_id_get.py +++ b/src/splunk_ao/resources/api/trace/get_trace_projects_project_id_traces_trace_id_get.py @@ -23,13 +23,26 @@ from ...types import UNSET, Response, Unset -def _get_kwargs(project_id: str, trace_id: str, *, include_presigned_urls: bool | Unset = False) -> dict[str, Any]: +def _get_kwargs( + project_id: str, + trace_id: str, + *, + include_presigned_urls: bool | Unset = False, + access_view_id: None | str | Unset = UNSET, +) -> dict[str, Any]: headers: dict[str, Any] = {} params: dict[str, Any] = {} params["include_presigned_urls"] = include_presigned_urls + json_access_view_id: None | str | Unset + if isinstance(access_view_id, Unset): + json_access_view_id = UNSET + else: + json_access_view_id = access_view_id + params["access_view_id"] = json_access_view_id + params = {k: v for k, v in params.items() if v is not UNSET and v is not None} _kwargs: dict[str, Any] = { @@ -166,7 +179,12 @@ def _build_response( def sync_detailed( - project_id: str, trace_id: str, *, client: ApiClient, include_presigned_urls: bool | Unset = False + project_id: str, + trace_id: str, + *, + client: ApiClient, + include_presigned_urls: bool | Unset = False, + access_view_id: None | str | Unset = UNSET, ) -> Response[ExtendedTraceRecordWithChildren | StubTraceRecord | HTTPValidationError]: """Get Trace @@ -174,6 +192,7 @@ def sync_detailed( project_id (str): trace_id (str): include_presigned_urls (bool | Unset): Default: False. + access_view_id (None | str | Unset): Raises: errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. @@ -183,7 +202,12 @@ def sync_detailed( Response[ExtendedTraceRecordWithChildren | StubTraceRecord | HTTPValidationError] """ - kwargs = _get_kwargs(project_id=project_id, trace_id=trace_id, include_presigned_urls=include_presigned_urls) + kwargs = _get_kwargs( + project_id=project_id, + trace_id=trace_id, + include_presigned_urls=include_presigned_urls, + access_view_id=access_view_id, + ) response = client.request(**kwargs) @@ -191,7 +215,12 @@ def sync_detailed( def sync( - project_id: str, trace_id: str, *, client: ApiClient, include_presigned_urls: bool | Unset = False + project_id: str, + trace_id: str, + *, + client: ApiClient, + include_presigned_urls: bool | Unset = False, + access_view_id: None | str | Unset = UNSET, ) -> Optional[ExtendedTraceRecordWithChildren | StubTraceRecord | HTTPValidationError]: """Get Trace @@ -199,6 +228,7 @@ def sync( project_id (str): trace_id (str): include_presigned_urls (bool | Unset): Default: False. + access_view_id (None | str | Unset): Raises: errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. @@ -209,12 +239,21 @@ def sync( """ return sync_detailed( - project_id=project_id, trace_id=trace_id, client=client, include_presigned_urls=include_presigned_urls + project_id=project_id, + trace_id=trace_id, + client=client, + include_presigned_urls=include_presigned_urls, + access_view_id=access_view_id, ).parsed async def asyncio_detailed( - project_id: str, trace_id: str, *, client: ApiClient, include_presigned_urls: bool | Unset = False + project_id: str, + trace_id: str, + *, + client: ApiClient, + include_presigned_urls: bool | Unset = False, + access_view_id: None | str | Unset = UNSET, ) -> Response[ExtendedTraceRecordWithChildren | StubTraceRecord | HTTPValidationError]: """Get Trace @@ -222,6 +261,7 @@ async def asyncio_detailed( project_id (str): trace_id (str): include_presigned_urls (bool | Unset): Default: False. + access_view_id (None | str | Unset): Raises: errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. @@ -231,7 +271,12 @@ async def asyncio_detailed( Response[ExtendedTraceRecordWithChildren | StubTraceRecord | HTTPValidationError] """ - kwargs = _get_kwargs(project_id=project_id, trace_id=trace_id, include_presigned_urls=include_presigned_urls) + kwargs = _get_kwargs( + project_id=project_id, + trace_id=trace_id, + include_presigned_urls=include_presigned_urls, + access_view_id=access_view_id, + ) response = await client.arequest(**kwargs) @@ -239,7 +284,12 @@ async def asyncio_detailed( async def asyncio( - project_id: str, trace_id: str, *, client: ApiClient, include_presigned_urls: bool | Unset = False + project_id: str, + trace_id: str, + *, + client: ApiClient, + include_presigned_urls: bool | Unset = False, + access_view_id: None | str | Unset = UNSET, ) -> Optional[ExtendedTraceRecordWithChildren | StubTraceRecord | HTTPValidationError]: """Get Trace @@ -247,6 +297,7 @@ async def asyncio( project_id (str): trace_id (str): include_presigned_urls (bool | Unset): Default: False. + access_view_id (None | str | Unset): Raises: errors.UnexpectedStatus: If the server returns an undocumented status code and Client.raise_on_unexpected_status is True. @@ -258,6 +309,10 @@ async def asyncio( return ( await asyncio_detailed( - project_id=project_id, trace_id=trace_id, client=client, include_presigned_urls=include_presigned_urls + project_id=project_id, + trace_id=trace_id, + client=client, + include_presigned_urls=include_presigned_urls, + access_view_id=access_view_id, ) ).parsed diff --git a/src/splunk_ao/resources/models/__init__.py b/src/splunk_ao/resources/models/__init__.py index 669d626f..8ce16109 100644 --- a/src/splunk_ao/resources/models/__init__.py +++ b/src/splunk_ao/resources/models/__init__.py @@ -145,6 +145,9 @@ from .base_scorer_extra_type_0 import BaseScorerExtraType0 from .base_scorer_version_db import BaseScorerVersionDB from .base_scorer_version_response import BaseScorerVersionResponse +from .base_scorer_version_response_luna_validation_contract_type_0 import ( + BaseScorerVersionResponseLunaValidationContractType0, +) from .billing_usage_data_point import BillingUsageDataPoint from .billing_usage_metric import BillingUsageMetric from .billing_usage_response import BillingUsageResponse @@ -159,9 +162,15 @@ from .body_validate_code_scorer_dataset_scorers_code_validate_dataset_post import ( BodyValidateCodeScorerDatasetScorersCodeValidateDatasetPost, ) +from .body_validate_code_scorer_dataset_scorers_code_validate_dataset_post_score_type_type_0 import ( + BodyValidateCodeScorerDatasetScorersCodeValidateDatasetPostScoreTypeType0, +) from .body_validate_code_scorer_log_record_scorers_code_validate_log_record_post import ( BodyValidateCodeScorerLogRecordScorersCodeValidateLogRecordPost, ) +from .body_validate_code_scorer_log_record_scorers_code_validate_log_record_post_score_type_type_0 import ( + BodyValidateCodeScorerLogRecordScorersCodeValidateLogRecordPostScoreTypeType0, +) from .body_validate_code_scorer_scorers_code_validate_post import BodyValidateCodeScorerScorersCodeValidatePost from .boolean_color_constraint import BooleanColorConstraint from .bucketed_metric import BucketedMetric @@ -742,8 +751,25 @@ from .logging_method import LoggingMethod from .luna_3_scorer_response import Luna3ScorerResponse from .luna_3_scorer_response_class_name_to_vocab_ix import Luna3ScorerResponseClassNameToVocabIx +from .luna_dataset_mappings import LunaDatasetMappings +from .luna_dataset_mappings_mgt import LunaDatasetMappingsMgt +from .luna_dataset_preview import LunaDatasetPreview +from .luna_dataset_preview_column import LunaDatasetPreviewColumn +from .luna_dataset_preview_error_detail import LunaDatasetPreviewErrorDetail +from .luna_dataset_preview_error_response import LunaDatasetPreviewErrorResponse +from .luna_dataset_preview_field_error import LunaDatasetPreviewFieldError +from .luna_dataset_preview_request import LunaDatasetPreviewRequest +from .luna_dataset_preview_request_validation_error import LunaDatasetPreviewRequestValidationError +from .luna_dataset_preview_request_validation_error_ctx_type_0 import LunaDatasetPreviewRequestValidationErrorCtxType0 +from .luna_dataset_preview_row import LunaDatasetPreviewRow +from .luna_dataset_preview_row_values import LunaDatasetPreviewRowValues from .luna_input_type_enum import LunaInputTypeEnum +from .luna_mapping_config import LunaMappingConfig from .luna_output_type_enum import LunaOutputTypeEnum +from .luna_preview_draft_ref import LunaPreviewDraftRef +from .luna_preview_version_ref import LunaPreviewVersionRef +from .luna_semantic_mapping import LunaSemanticMapping +from .luna_semantic_mapping_target_field import LunaSemanticMappingTargetField from .mcp_approval_request_event import MCPApprovalRequestEvent from .mcp_approval_request_event_metadata_type_0 import MCPApprovalRequestEventMetadataType0 from .mcp_approval_request_event_tool_invocation_type_0 import MCPApprovalRequestEventToolInvocationType0 @@ -1132,6 +1158,7 @@ from .scorer_updated_at_sort import ScorerUpdatedAtSort from .scorer_version_health_score_entry import ScorerVersionHealthScoreEntry from .scorer_version_health_score_entry_secondary_type_0 import ScorerVersionHealthScoreEntrySecondaryType0 +from .scorer_version_list_item import ScorerVersionListItem from .segment import Segment from .segment_filter import SegmentFilter from .select_columns import SelectColumns @@ -1210,6 +1237,7 @@ from .user_info import UserInfo from .user_role import UserRole from .valid_result import ValidResult +from .valid_result_score_type import ValidResultScoreType from .validate_code_scorer_dataset_response import ValidateCodeScorerDatasetResponse from .validate_code_scorer_response import ValidateCodeScorerResponse from .validate_decision_scorer_dataset_request import ValidateDecisionScorerDatasetRequest @@ -1379,6 +1407,7 @@ "BaseScorerExtraType0", "BaseScorerVersionDB", "BaseScorerVersionResponse", + "BaseScorerVersionResponseLunaValidationContractType0", "BillingUsageDataPoint", "BillingUsageMetric", "BillingUsageResponse", @@ -1387,7 +1416,9 @@ "BodyLoginEmailLoginPost", "BodyManualLlmValidateMultipartScorersLlmValidateMultipartPost", "BodyValidateCodeScorerDatasetScorersCodeValidateDatasetPost", + "BodyValidateCodeScorerDatasetScorersCodeValidateDatasetPostScoreTypeType0", "BodyValidateCodeScorerLogRecordScorersCodeValidateLogRecordPost", + "BodyValidateCodeScorerLogRecordScorersCodeValidateLogRecordPostScoreTypeType0", "BodyValidateCodeScorerScorersCodeValidatePost", "BooleanColorConstraint", "BucketedMetric", @@ -1866,8 +1897,25 @@ "LogTraceUpdateResponse", "Luna3ScorerResponse", "Luna3ScorerResponseClassNameToVocabIx", + "LunaDatasetMappings", + "LunaDatasetMappingsMgt", + "LunaDatasetPreview", + "LunaDatasetPreviewColumn", + "LunaDatasetPreviewErrorDetail", + "LunaDatasetPreviewErrorResponse", + "LunaDatasetPreviewFieldError", + "LunaDatasetPreviewRequest", + "LunaDatasetPreviewRequestValidationError", + "LunaDatasetPreviewRequestValidationErrorCtxType0", + "LunaDatasetPreviewRow", + "LunaDatasetPreviewRowValues", "LunaInputTypeEnum", + "LunaMappingConfig", "LunaOutputTypeEnum", + "LunaPreviewDraftRef", + "LunaPreviewVersionRef", + "LunaSemanticMapping", + "LunaSemanticMappingTargetField", "MCPApprovalRequestEvent", "MCPApprovalRequestEventMetadataType0", "MCPApprovalRequestEventToolInvocationType0", @@ -2216,6 +2264,7 @@ "ScorerUpdatedAtSort", "ScorerVersionHealthScoreEntry", "ScorerVersionHealthScoreEntrySecondaryType0", + "ScorerVersionListItem", "Segment", "SegmentFilter", "SelectColumns", @@ -2308,6 +2357,7 @@ "ValidationError", "ValidationErrorContext", "ValidResult", + "ValidResultScoreType", "VertexAIGCSConfig", "VertexAIGCSConfigResponse", "VertexAIIntegration", diff --git a/src/splunk_ao/resources/models/aggregated_trace_view_request.py b/src/splunk_ao/resources/models/aggregated_trace_view_request.py index 320b6a9b..31270b4f 100644 --- a/src/splunk_ao/resources/models/aggregated_trace_view_request.py +++ b/src/splunk_ao/resources/models/aggregated_trace_view_request.py @@ -1,7 +1,7 @@ from __future__ import annotations from collections.abc import Mapping -from typing import TYPE_CHECKING, Any, TypeVar +from typing import TYPE_CHECKING, Any, TypeVar, cast from attrs import define as _attrs_define from attrs import field as _attrs_field @@ -26,12 +26,14 @@ class AggregatedTraceViewRequest: """ Attributes: log_stream_id (str): Log stream id associated with the traces. + access_view_id (None | str | Unset): Assigned log view for restricted access. filters (list[LogRecordsBooleanFilter | LogRecordsCollectionFilter | LogRecordsDateFilter | LogRecordsFullyAnnotatedFilter | LogRecordsIDFilter | LogRecordsNumberFilter | LogRecordsTextFilter] | Unset): Filters to apply on the traces. Note: Only trace-level filters are supported. """ log_stream_id: str + access_view_id: None | str | Unset = UNSET filters: ( list[ LogRecordsBooleanFilter @@ -56,6 +58,12 @@ def to_dict(self) -> dict[str, Any]: log_stream_id = self.log_stream_id + access_view_id: None | str | Unset + if isinstance(self.access_view_id, Unset): + access_view_id = UNSET + else: + access_view_id = self.access_view_id + filters: list[dict[str, Any]] | Unset = UNSET if not isinstance(self.filters, Unset): filters = [] @@ -81,6 +89,8 @@ def to_dict(self) -> dict[str, Any]: field_dict: dict[str, Any] = {} field_dict.update(self.additional_properties) field_dict.update({"log_stream_id": log_stream_id}) + if access_view_id is not UNSET: + field_dict["access_view_id"] = access_view_id if filters is not UNSET: field_dict["filters"] = filters @@ -99,6 +109,15 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: d = dict(src_dict) log_stream_id = d.pop("log_stream_id") + def _parse_access_view_id(data: object) -> None | str | Unset: + if data is None: + return data + if isinstance(data, Unset): + return data + return cast(None | str | Unset, data) + + access_view_id = _parse_access_view_id(d.pop("access_view_id", UNSET)) + _filters = d.pop("filters", UNSET) filters: ( list[ @@ -185,7 +204,7 @@ def _parse_filters_item( filters.append(filters_item) - aggregated_trace_view_request = cls(log_stream_id=log_stream_id, filters=filters) + aggregated_trace_view_request = cls(log_stream_id=log_stream_id, access_view_id=access_view_id, filters=filters) aggregated_trace_view_request.additional_properties = d return aggregated_trace_view_request diff --git a/src/splunk_ao/resources/models/base_scorer_version_response.py b/src/splunk_ao/resources/models/base_scorer_version_response.py index 575d809a..27c4c836 100644 --- a/src/splunk_ao/resources/models/base_scorer_version_response.py +++ b/src/splunk_ao/resources/models/base_scorer_version_response.py @@ -11,6 +11,9 @@ from ..types import UNSET, Unset if TYPE_CHECKING: + from ..models.base_scorer_version_response_luna_validation_contract_type_0 import ( + BaseScorerVersionResponseLunaValidationContractType0, + ) from ..models.chain_poll_template import ChainPollTemplate from ..models.create_update_registered_scorer_response import CreateUpdateRegisteredScorerResponse from ..models.decision_scorer_db import DecisionScorerDB @@ -50,6 +53,7 @@ class BaseScorerVersionResponse: created_by (None | str | Unset): validation_task_id (None | str | Unset): request_id (None | str | Unset): + luna_validation_contract (BaseScorerVersionResponseLunaValidationContractType0 | None | Unset): """ id: str @@ -74,9 +78,13 @@ class BaseScorerVersionResponse: created_by: None | str | Unset = UNSET validation_task_id: None | str | Unset = UNSET request_id: None | str | Unset = UNSET + luna_validation_contract: BaseScorerVersionResponseLunaValidationContractType0 | None | Unset = UNSET additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) def to_dict(self) -> dict[str, Any]: + from ..models.base_scorer_version_response_luna_validation_contract_type_0 import ( + BaseScorerVersionResponseLunaValidationContractType0, + ) from ..models.chain_poll_template import ChainPollTemplate from ..models.create_update_registered_scorer_response import CreateUpdateRegisteredScorerResponse from ..models.decision_scorer_db import DecisionScorerDB @@ -213,6 +221,14 @@ def to_dict(self) -> dict[str, Any]: else: request_id = self.request_id + luna_validation_contract: dict[str, Any] | None | Unset + if isinstance(self.luna_validation_contract, Unset): + luna_validation_contract = UNSET + elif isinstance(self.luna_validation_contract, BaseScorerVersionResponseLunaValidationContractType0): + luna_validation_contract = self.luna_validation_contract.to_dict() + else: + luna_validation_contract = self.luna_validation_contract + field_dict: dict[str, Any] = {} field_dict.update(self.additional_properties) field_dict.update( @@ -252,11 +268,16 @@ def to_dict(self) -> dict[str, Any]: field_dict["validation_task_id"] = validation_task_id if request_id is not UNSET: field_dict["request_id"] = request_id + if luna_validation_contract is not UNSET: + field_dict["luna_validation_contract"] = luna_validation_contract return field_dict @classmethod def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: + from ..models.base_scorer_version_response_luna_validation_contract_type_0 import ( + BaseScorerVersionResponseLunaValidationContractType0, + ) from ..models.chain_poll_template import ChainPollTemplate from ..models.create_update_registered_scorer_response import CreateUpdateRegisteredScorerResponse from ..models.decision_scorer_db import DecisionScorerDB @@ -492,6 +513,25 @@ def _parse_request_id(data: object) -> None | str | Unset: request_id = _parse_request_id(d.pop("request_id", UNSET)) + def _parse_luna_validation_contract( + data: object, + ) -> BaseScorerVersionResponseLunaValidationContractType0 | None | Unset: + if data is None: + return data + if isinstance(data, Unset): + return data + try: + if not isinstance(data, dict): + raise TypeError() + luna_validation_contract_type_0 = BaseScorerVersionResponseLunaValidationContractType0.from_dict(data) + + return luna_validation_contract_type_0 + except: # noqa: E722 + pass + return cast(BaseScorerVersionResponseLunaValidationContractType0 | None | Unset, data) + + luna_validation_contract = _parse_luna_validation_contract(d.pop("luna_validation_contract", UNSET)) + base_scorer_version_response = cls( id=id, version=version, @@ -515,6 +555,7 @@ def _parse_request_id(data: object) -> None | str | Unset: created_by=created_by, validation_task_id=validation_task_id, request_id=request_id, + luna_validation_contract=luna_validation_contract, ) base_scorer_version_response.additional_properties = d diff --git a/src/splunk_ao/resources/models/base_scorer_version_response_luna_validation_contract_type_0.py b/src/splunk_ao/resources/models/base_scorer_version_response_luna_validation_contract_type_0.py new file mode 100644 index 00000000..84009689 --- /dev/null +++ b/src/splunk_ao/resources/models/base_scorer_version_response_luna_validation_contract_type_0.py @@ -0,0 +1,47 @@ +from __future__ import annotations + +from collections.abc import Mapping +from typing import Any, TypeVar + +from attrs import define as _attrs_define +from attrs import field as _attrs_field + +T = TypeVar("T", bound="BaseScorerVersionResponseLunaValidationContractType0") + + +@_attrs_define +class BaseScorerVersionResponseLunaValidationContractType0: + """ """ + + additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) + + def to_dict(self) -> dict[str, Any]: + + field_dict: dict[str, Any] = {} + field_dict.update(self.additional_properties) + + return field_dict + + @classmethod + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: + d = dict(src_dict) + base_scorer_version_response_luna_validation_contract_type_0 = cls() + + base_scorer_version_response_luna_validation_contract_type_0.additional_properties = d + return base_scorer_version_response_luna_validation_contract_type_0 + + @property + def additional_keys(self) -> list[str]: + return list(self.additional_properties.keys()) + + def __getitem__(self, key: str) -> Any: + return self.additional_properties[key] + + def __setitem__(self, key: str, value: Any) -> None: + self.additional_properties[key] = value + + def __delitem__(self, key: str) -> None: + del self.additional_properties[key] + + def __contains__(self, key: str) -> bool: + return key in self.additional_properties diff --git a/src/splunk_ao/resources/models/body_create_code_scorer_version_scorers_scorer_id_version_code_post.py b/src/splunk_ao/resources/models/body_create_code_scorer_version_scorers_scorer_id_version_code_post.py index c11d98a2..6671e421 100644 --- a/src/splunk_ao/resources/models/body_create_code_scorer_version_scorers_scorer_id_version_code_post.py +++ b/src/splunk_ao/resources/models/body_create_code_scorer_version_scorers_scorer_id_version_code_post.py @@ -17,33 +17,33 @@ class BodyCreateCodeScorerVersionScorersScorerIdVersionCodePost: """ Attributes: - file (File): validation_result (str): The result from the validate endpoint, as a JSON string. Only its task_id is read: the version is built from the result stored for that validation task. + file (File): """ - file: File validation_result: str + file: File additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) def to_dict(self) -> dict[str, Any]: - file = self.file.to_tuple() - validation_result = self.validation_result + file = self.file.to_tuple() + field_dict: dict[str, Any] = {} field_dict.update(self.additional_properties) - field_dict.update({"file": file, "validation_result": validation_result}) + field_dict.update({"validation_result": validation_result, "file": file}) return field_dict def to_multipart(self) -> types.RequestFiles: files: types.RequestFiles = [] - files.append(("file", self.file.to_tuple())) - files.append(("validation_result", (None, str(self.validation_result).encode(), "text/plain"))) + files.append(("file", self.file.to_tuple())) + for prop_name, prop in self.additional_properties.items(): files.append((prop_name, (None, str(prop).encode(), "text/plain"))) @@ -52,12 +52,12 @@ def to_multipart(self) -> types.RequestFiles: @classmethod def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: d = dict(src_dict) - file = File(payload=BytesIO(d.pop("file"))) - validation_result = d.pop("validation_result") + file = File(payload=BytesIO(d.pop("file"))) + body_create_code_scorer_version_scorers_scorer_id_version_code_post = cls( - file=file, validation_result=validation_result + validation_result=validation_result, file=file ) body_create_code_scorer_version_scorers_scorer_id_version_code_post.additional_properties = d diff --git a/src/splunk_ao/resources/models/body_validate_code_scorer_dataset_scorers_code_validate_dataset_post.py b/src/splunk_ao/resources/models/body_validate_code_scorer_dataset_scorers_code_validate_dataset_post.py index e005f82f..f7b8cf36 100644 --- a/src/splunk_ao/resources/models/body_validate_code_scorer_dataset_scorers_code_validate_dataset_post.py +++ b/src/splunk_ao/resources/models/body_validate_code_scorer_dataset_scorers_code_validate_dataset_post.py @@ -9,6 +9,9 @@ from attrs import field as _attrs_field from .. import types +from ..models.body_validate_code_scorer_dataset_scorers_code_validate_dataset_post_score_type_type_0 import ( + BodyValidateCodeScorerDatasetScorersCodeValidateDatasetPostScoreTypeType0, +) from ..types import UNSET, File, Unset T = TypeVar("T", bound="BodyValidateCodeScorerDatasetScorersCodeValidateDatasetPost") @@ -18,31 +21,31 @@ class BodyValidateCodeScorerDatasetScorersCodeValidateDatasetPost: """ Attributes: - file (File): dataset_id (UUID): + file (File): dataset_version_index (int | None | Unset): limit (int | Unset): Default: 100. starting_token (int | None | Unset): required_scorers (list[str] | None | str | Unset): scoreable_node_types (list[str] | None | str | Unset): - score_type (None | str | Unset): + score_type (BodyValidateCodeScorerDatasetScorersCodeValidateDatasetPostScoreTypeType0 | None | Unset): """ - file: File dataset_id: UUID + file: File dataset_version_index: int | None | Unset = UNSET limit: int | Unset = 100 starting_token: int | None | Unset = UNSET required_scorers: list[str] | None | str | Unset = UNSET scoreable_node_types: list[str] | None | str | Unset = UNSET - score_type: None | str | Unset = UNSET + score_type: BodyValidateCodeScorerDatasetScorersCodeValidateDatasetPostScoreTypeType0 | None | Unset = UNSET additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) def to_dict(self) -> dict[str, Any]: - file = self.file.to_tuple() - dataset_id = str(self.dataset_id) + file = self.file.to_tuple() + dataset_version_index: int | None | Unset if isinstance(self.dataset_version_index, Unset): dataset_version_index = UNSET @@ -78,12 +81,14 @@ def to_dict(self) -> dict[str, Any]: score_type: None | str | Unset if isinstance(self.score_type, Unset): score_type = UNSET + elif isinstance(self.score_type, BodyValidateCodeScorerDatasetScorersCodeValidateDatasetPostScoreTypeType0): + score_type = self.score_type.value else: score_type = self.score_type field_dict: dict[str, Any] = {} field_dict.update(self.additional_properties) - field_dict.update({"file": file, "dataset_id": dataset_id}) + field_dict.update({"dataset_id": dataset_id, "file": file}) if dataset_version_index is not UNSET: field_dict["dataset_version_index"] = dataset_version_index if limit is not UNSET: @@ -102,10 +107,10 @@ def to_dict(self) -> dict[str, Any]: def to_multipart(self) -> types.RequestFiles: files: types.RequestFiles = [] - files.append(("file", self.file.to_tuple())) - files.append(("dataset_id", (None, str(self.dataset_id), "text/plain"))) + files.append(("file", self.file.to_tuple())) + if not isinstance(self.dataset_version_index, Unset): if isinstance(self.dataset_version_index, int): files.append(("dataset_version_index", (None, str(self.dataset_version_index).encode(), "text/plain"))) @@ -147,8 +152,8 @@ def to_multipart(self) -> types.RequestFiles: files.append(("scoreable_node_types", (None, str(self.scoreable_node_types).encode(), "text/plain"))) if not isinstance(self.score_type, Unset): - if isinstance(self.score_type, str): - files.append(("score_type", (None, str(self.score_type).encode(), "text/plain"))) + if isinstance(self.score_type, BodyValidateCodeScorerDatasetScorersCodeValidateDatasetPostScoreTypeType0): + files.append(("score_type", (None, str(self.score_type.value).encode(), "text/plain"))) else: files.append(("score_type", (None, str(self.score_type).encode(), "text/plain"))) @@ -160,10 +165,10 @@ def to_multipart(self) -> types.RequestFiles: @classmethod def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: d = dict(src_dict) - file = File(payload=BytesIO(d.pop("file"))) - dataset_id = UUID(d.pop("dataset_id")) + file = File(payload=BytesIO(d.pop("file"))) + def _parse_dataset_version_index(data: object) -> int | None | Unset: if data is None: return data @@ -218,18 +223,28 @@ def _parse_scoreable_node_types(data: object) -> list[str] | None | str | Unset: scoreable_node_types = _parse_scoreable_node_types(d.pop("scoreable_node_types", UNSET)) - def _parse_score_type(data: object) -> None | str | Unset: + def _parse_score_type( + data: object, + ) -> BodyValidateCodeScorerDatasetScorersCodeValidateDatasetPostScoreTypeType0 | None | Unset: if data is None: return data if isinstance(data, Unset): return data - return cast(None | str | Unset, data) + try: + if not isinstance(data, str): + raise TypeError() + score_type_type_0 = BodyValidateCodeScorerDatasetScorersCodeValidateDatasetPostScoreTypeType0(data) + + return score_type_type_0 + except: # noqa: E722 + pass + return cast(BodyValidateCodeScorerDatasetScorersCodeValidateDatasetPostScoreTypeType0 | None | Unset, data) score_type = _parse_score_type(d.pop("score_type", UNSET)) body_validate_code_scorer_dataset_scorers_code_validate_dataset_post = cls( - file=file, dataset_id=dataset_id, + file=file, dataset_version_index=dataset_version_index, limit=limit, starting_token=starting_token, diff --git a/src/splunk_ao/resources/models/body_validate_code_scorer_dataset_scorers_code_validate_dataset_post_score_type_type_0.py b/src/splunk_ao/resources/models/body_validate_code_scorer_dataset_scorers_code_validate_dataset_post_score_type_type_0.py new file mode 100644 index 00000000..e25f79fb --- /dev/null +++ b/src/splunk_ao/resources/models/body_validate_code_scorer_dataset_scorers_code_validate_dataset_post_score_type_type_0.py @@ -0,0 +1,11 @@ +from enum import Enum + + +class BodyValidateCodeScorerDatasetScorersCodeValidateDatasetPostScoreTypeType0(str, Enum): + BOOL = "bool" + FLOAT = "float" + INT = "int" + STR = "str" + + def __str__(self) -> str: + return str(self.value) diff --git a/src/splunk_ao/resources/models/body_validate_code_scorer_log_record_scorers_code_validate_log_record_post.py b/src/splunk_ao/resources/models/body_validate_code_scorer_log_record_scorers_code_validate_log_record_post.py index b516878b..088bfa34 100644 --- a/src/splunk_ao/resources/models/body_validate_code_scorer_log_record_scorers_code_validate_log_record_post.py +++ b/src/splunk_ao/resources/models/body_validate_code_scorer_log_record_scorers_code_validate_log_record_post.py @@ -8,6 +8,9 @@ from attrs import field as _attrs_field from .. import types +from ..models.body_validate_code_scorer_log_record_scorers_code_validate_log_record_post_score_type_type_0 import ( + BodyValidateCodeScorerLogRecordScorersCodeValidateLogRecordPostScoreTypeType0, +) from ..types import UNSET, File, Unset T = TypeVar("T", bound="BodyValidateCodeScorerLogRecordScorersCodeValidateLogRecordPost") @@ -26,6 +29,7 @@ class BodyValidateCodeScorerLogRecordScorersCodeValidateLogRecordPost: sort (None | str | Unset): JSON string of LogRecordsSortClause required_scorers (list[str] | None | str | Unset): scoreable_node_types (list[str] | None | str | Unset): + score_type (BodyValidateCodeScorerLogRecordScorersCodeValidateLogRecordPostScoreTypeType0 | None | Unset): """ file: File @@ -37,6 +41,7 @@ class BodyValidateCodeScorerLogRecordScorersCodeValidateLogRecordPost: sort: None | str | Unset = UNSET required_scorers: list[str] | None | str | Unset = UNSET scoreable_node_types: list[str] | None | str | Unset = UNSET + score_type: BodyValidateCodeScorerLogRecordScorersCodeValidateLogRecordPostScoreTypeType0 | None | Unset = UNSET additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) def to_dict(self) -> dict[str, Any]: @@ -92,6 +97,14 @@ def to_dict(self) -> dict[str, Any]: else: scoreable_node_types = self.scoreable_node_types + score_type: None | str | Unset + if isinstance(self.score_type, Unset): + score_type = UNSET + elif isinstance(self.score_type, BodyValidateCodeScorerLogRecordScorersCodeValidateLogRecordPostScoreTypeType0): + score_type = self.score_type.value + else: + score_type = self.score_type + field_dict: dict[str, Any] = {} field_dict.update(self.additional_properties) field_dict.update({"file": file}) @@ -111,6 +124,8 @@ def to_dict(self) -> dict[str, Any]: field_dict["required_scorers"] = required_scorers if scoreable_node_types is not UNSET: field_dict["scoreable_node_types"] = scoreable_node_types + if score_type is not UNSET: + field_dict["score_type"] = score_type return field_dict @@ -177,6 +192,14 @@ def to_multipart(self) -> types.RequestFiles: else: files.append(("scoreable_node_types", (None, str(self.scoreable_node_types).encode(), "text/plain"))) + if not isinstance(self.score_type, Unset): + if isinstance( + self.score_type, BodyValidateCodeScorerLogRecordScorersCodeValidateLogRecordPostScoreTypeType0 + ): + files.append(("score_type", (None, str(self.score_type.value).encode(), "text/plain"))) + else: + files.append(("score_type", (None, str(self.score_type).encode(), "text/plain"))) + for prop_name, prop in self.additional_properties.items(): files.append((prop_name, (None, str(prop).encode(), "text/plain"))) @@ -268,6 +291,27 @@ def _parse_scoreable_node_types(data: object) -> list[str] | None | str | Unset: scoreable_node_types = _parse_scoreable_node_types(d.pop("scoreable_node_types", UNSET)) + def _parse_score_type( + data: object, + ) -> BodyValidateCodeScorerLogRecordScorersCodeValidateLogRecordPostScoreTypeType0 | None | Unset: + if data is None: + return data + if isinstance(data, Unset): + return data + try: + if not isinstance(data, str): + raise TypeError() + score_type_type_0 = BodyValidateCodeScorerLogRecordScorersCodeValidateLogRecordPostScoreTypeType0(data) + + return score_type_type_0 + except: # noqa: E722 + pass + return cast( + BodyValidateCodeScorerLogRecordScorersCodeValidateLogRecordPostScoreTypeType0 | None | Unset, data + ) + + score_type = _parse_score_type(d.pop("score_type", UNSET)) + body_validate_code_scorer_log_record_scorers_code_validate_log_record_post = cls( file=file, log_stream_id=log_stream_id, @@ -278,6 +322,7 @@ def _parse_scoreable_node_types(data: object) -> list[str] | None | str | Unset: sort=sort, required_scorers=required_scorers, scoreable_node_types=scoreable_node_types, + score_type=score_type, ) body_validate_code_scorer_log_record_scorers_code_validate_log_record_post.additional_properties = d diff --git a/src/splunk_ao/resources/models/body_validate_code_scorer_log_record_scorers_code_validate_log_record_post_score_type_type_0.py b/src/splunk_ao/resources/models/body_validate_code_scorer_log_record_scorers_code_validate_log_record_post_score_type_type_0.py new file mode 100644 index 00000000..1a937e80 --- /dev/null +++ b/src/splunk_ao/resources/models/body_validate_code_scorer_log_record_scorers_code_validate_log_record_post_score_type_type_0.py @@ -0,0 +1,11 @@ +from enum import Enum + + +class BodyValidateCodeScorerLogRecordScorersCodeValidateLogRecordPostScoreTypeType0(str, Enum): + BOOL = "bool" + FLOAT = "float" + INT = "int" + STR = "str" + + def __str__(self) -> str: + return str(self.value) diff --git a/src/splunk_ao/resources/models/column_mapping.py b/src/splunk_ao/resources/models/column_mapping.py index 80815a41..ff39ef17 100644 --- a/src/splunk_ao/resources/models/column_mapping.py +++ b/src/splunk_ao/resources/models/column_mapping.py @@ -24,6 +24,10 @@ class ColumnMapping: output (ColumnMappingConfig | list[str] | None | Unset): generated_output (ColumnMappingConfig | list[str] | None | Unset): metadata (ColumnMappingConfig | list[str] | None | Unset): + label (ColumnMappingConfig | list[str] | None | Unset): + evaluator_ground_truth (ColumnMappingConfig | list[str] | None | Unset): + tools (ColumnMappingConfig | list[str] | None | Unset): + documents (ColumnMappingConfig | list[str] | None | Unset): mgt (ColumnMappingMgtType0 | None | Unset): """ @@ -31,6 +35,10 @@ class ColumnMapping: output: ColumnMappingConfig | list[str] | None | Unset = UNSET generated_output: ColumnMappingConfig | list[str] | None | Unset = UNSET metadata: ColumnMappingConfig | list[str] | None | Unset = UNSET + label: ColumnMappingConfig | list[str] | None | Unset = UNSET + evaluator_ground_truth: ColumnMappingConfig | list[str] | None | Unset = UNSET + tools: ColumnMappingConfig | list[str] | None | Unset = UNSET + documents: ColumnMappingConfig | list[str] | None | Unset = UNSET mgt: ColumnMappingMgtType0 | None | Unset = UNSET additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) @@ -82,6 +90,50 @@ def to_dict(self) -> dict[str, Any]: else: metadata = self.metadata + label: dict[str, Any] | list[str] | None | Unset + if isinstance(self.label, Unset): + label = UNSET + elif isinstance(self.label, ColumnMappingConfig): + label = self.label.to_dict() + elif isinstance(self.label, list): + label = self.label + + else: + label = self.label + + evaluator_ground_truth: dict[str, Any] | list[str] | None | Unset + if isinstance(self.evaluator_ground_truth, Unset): + evaluator_ground_truth = UNSET + elif isinstance(self.evaluator_ground_truth, ColumnMappingConfig): + evaluator_ground_truth = self.evaluator_ground_truth.to_dict() + elif isinstance(self.evaluator_ground_truth, list): + evaluator_ground_truth = self.evaluator_ground_truth + + else: + evaluator_ground_truth = self.evaluator_ground_truth + + tools: dict[str, Any] | list[str] | None | Unset + if isinstance(self.tools, Unset): + tools = UNSET + elif isinstance(self.tools, ColumnMappingConfig): + tools = self.tools.to_dict() + elif isinstance(self.tools, list): + tools = self.tools + + else: + tools = self.tools + + documents: dict[str, Any] | list[str] | None | Unset + if isinstance(self.documents, Unset): + documents = UNSET + elif isinstance(self.documents, ColumnMappingConfig): + documents = self.documents.to_dict() + elif isinstance(self.documents, list): + documents = self.documents + + else: + documents = self.documents + mgt: dict[str, Any] | None | Unset if isinstance(self.mgt, Unset): mgt = UNSET @@ -101,6 +153,14 @@ def to_dict(self) -> dict[str, Any]: field_dict["generated_output"] = generated_output if metadata is not UNSET: field_dict["metadata"] = metadata + if label is not UNSET: + field_dict["label"] = label + if evaluator_ground_truth is not UNSET: + field_dict["evaluator_ground_truth"] = evaluator_ground_truth + if tools is not UNSET: + field_dict["tools"] = tools + if documents is not UNSET: + field_dict["documents"] = documents if mgt is not UNSET: field_dict["mgt"] = mgt @@ -213,6 +273,106 @@ def _parse_metadata(data: object) -> ColumnMappingConfig | list[str] | None | Un metadata = _parse_metadata(d.pop("metadata", UNSET)) + def _parse_label(data: object) -> ColumnMappingConfig | list[str] | None | Unset: + if data is None: + return data + if isinstance(data, Unset): + return data + try: + if not isinstance(data, dict): + raise TypeError() + label_type_0 = ColumnMappingConfig.from_dict(data) + + return label_type_0 + except: # noqa: E722 + pass + try: + if not isinstance(data, list): + raise TypeError() + label_type_1 = cast(list[str], data) + + return label_type_1 + except: # noqa: E722 + pass + return cast(ColumnMappingConfig | list[str] | None | Unset, data) + + label = _parse_label(d.pop("label", UNSET)) + + def _parse_evaluator_ground_truth(data: object) -> ColumnMappingConfig | list[str] | None | Unset: + if data is None: + return data + if isinstance(data, Unset): + return data + try: + if not isinstance(data, dict): + raise TypeError() + evaluator_ground_truth_type_0 = ColumnMappingConfig.from_dict(data) + + return evaluator_ground_truth_type_0 + except: # noqa: E722 + pass + try: + if not isinstance(data, list): + raise TypeError() + evaluator_ground_truth_type_1 = cast(list[str], data) + + return evaluator_ground_truth_type_1 + except: # noqa: E722 + pass + return cast(ColumnMappingConfig | list[str] | None | Unset, data) + + evaluator_ground_truth = _parse_evaluator_ground_truth(d.pop("evaluator_ground_truth", UNSET)) + + def _parse_tools(data: object) -> ColumnMappingConfig | list[str] | None | Unset: + if data is None: + return data + if isinstance(data, Unset): + return data + try: + if not isinstance(data, dict): + raise TypeError() + tools_type_0 = ColumnMappingConfig.from_dict(data) + + return tools_type_0 + except: # noqa: E722 + pass + try: + if not isinstance(data, list): + raise TypeError() + tools_type_1 = cast(list[str], data) + + return tools_type_1 + except: # noqa: E722 + pass + return cast(ColumnMappingConfig | list[str] | None | Unset, data) + + tools = _parse_tools(d.pop("tools", UNSET)) + + def _parse_documents(data: object) -> ColumnMappingConfig | list[str] | None | Unset: + if data is None: + return data + if isinstance(data, Unset): + return data + try: + if not isinstance(data, dict): + raise TypeError() + documents_type_0 = ColumnMappingConfig.from_dict(data) + + return documents_type_0 + except: # noqa: E722 + pass + try: + if not isinstance(data, list): + raise TypeError() + documents_type_1 = cast(list[str], data) + + return documents_type_1 + except: # noqa: E722 + pass + return cast(ColumnMappingConfig | list[str] | None | Unset, data) + + documents = _parse_documents(d.pop("documents", UNSET)) + def _parse_mgt(data: object) -> ColumnMappingMgtType0 | None | Unset: if data is None: return data @@ -231,7 +391,15 @@ def _parse_mgt(data: object) -> ColumnMappingMgtType0 | None | Unset: mgt = _parse_mgt(d.pop("mgt", UNSET)) column_mapping = cls( - input_=input_, output=output, generated_output=generated_output, metadata=metadata, mgt=mgt + input_=input_, + output=output, + generated_output=generated_output, + metadata=metadata, + label=label, + evaluator_ground_truth=evaluator_ground_truth, + tools=tools, + documents=documents, + mgt=mgt, ) column_mapping.additional_properties = d diff --git a/src/splunk_ao/resources/models/create_job_request.py b/src/splunk_ao/resources/models/create_job_request.py index 571297c0..e464af44 100644 --- a/src/splunk_ao/resources/models/create_job_request.py +++ b/src/splunk_ao/resources/models/create_job_request.py @@ -81,7 +81,6 @@ class CreateJobRequest: is_session (bool | None | Unset): validation_config (CreateJobRequestValidationConfigType0 | None | Unset): upload_data_in_separate_task (bool | Unset): Default: True. - log_metric_computing_records (bool | Unset): Default: True. multijudge_average_boolean_metrics (bool | Unset): Default: False. trace_ids (list[str] | Unset): """ @@ -143,7 +142,6 @@ class CreateJobRequest: is_session: bool | None | Unset = UNSET validation_config: CreateJobRequestValidationConfigType0 | None | Unset = UNSET upload_data_in_separate_task: bool | Unset = True - log_metric_computing_records: bool | Unset = True multijudge_average_boolean_metrics: bool | Unset = False trace_ids: list[str] | Unset = UNSET additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) @@ -425,8 +423,6 @@ def to_dict(self) -> dict[str, Any]: upload_data_in_separate_task = self.upload_data_in_separate_task - log_metric_computing_records = self.log_metric_computing_records - multijudge_average_boolean_metrics = self.multijudge_average_boolean_metrics trace_ids: list[str] | Unset = UNSET @@ -496,8 +492,6 @@ def to_dict(self) -> dict[str, Any]: field_dict["validation_config"] = validation_config if upload_data_in_separate_task is not UNSET: field_dict["upload_data_in_separate_task"] = upload_data_in_separate_task - if log_metric_computing_records is not UNSET: - field_dict["log_metric_computing_records"] = log_metric_computing_records if multijudge_average_boolean_metrics is not UNSET: field_dict["multijudge_average_boolean_metrics"] = multijudge_average_boolean_metrics if trace_ids is not UNSET: @@ -1136,8 +1130,6 @@ def _parse_validation_config(data: object) -> CreateJobRequestValidationConfigTy upload_data_in_separate_task = d.pop("upload_data_in_separate_task", UNSET) - log_metric_computing_records = d.pop("log_metric_computing_records", UNSET) - multijudge_average_boolean_metrics = d.pop("multijudge_average_boolean_metrics", UNSET) trace_ids = cast(list[str], d.pop("trace_ids", UNSET)) @@ -1175,7 +1167,6 @@ def _parse_validation_config(data: object) -> CreateJobRequestValidationConfigTy is_session=is_session, validation_config=validation_config, upload_data_in_separate_task=upload_data_in_separate_task, - log_metric_computing_records=log_metric_computing_records, multijudge_average_boolean_metrics=multijudge_average_boolean_metrics, trace_ids=trace_ids, ) diff --git a/src/splunk_ao/resources/models/create_job_response.py b/src/splunk_ao/resources/models/create_job_response.py index b7be79d4..7f1248b9 100644 --- a/src/splunk_ao/resources/models/create_job_response.py +++ b/src/splunk_ao/resources/models/create_job_response.py @@ -83,7 +83,6 @@ class CreateJobResponse: is_session (bool | None | Unset): validation_config (CreateJobResponseValidationConfigType0 | None | Unset): upload_data_in_separate_task (bool | Unset): Default: True. - log_metric_computing_records (bool | Unset): Default: True. multijudge_average_boolean_metrics (bool | Unset): Default: False. trace_ids (list[str] | Unset): """ @@ -147,7 +146,6 @@ class CreateJobResponse: is_session: bool | None | Unset = UNSET validation_config: CreateJobResponseValidationConfigType0 | None | Unset = UNSET upload_data_in_separate_task: bool | Unset = True - log_metric_computing_records: bool | Unset = True multijudge_average_boolean_metrics: bool | Unset = False trace_ids: list[str] | Unset = UNSET additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) @@ -433,8 +431,6 @@ def to_dict(self) -> dict[str, Any]: upload_data_in_separate_task = self.upload_data_in_separate_task - log_metric_computing_records = self.log_metric_computing_records - multijudge_average_boolean_metrics = self.multijudge_average_boolean_metrics trace_ids: list[str] | Unset = UNSET @@ -504,8 +500,6 @@ def to_dict(self) -> dict[str, Any]: field_dict["validation_config"] = validation_config if upload_data_in_separate_task is not UNSET: field_dict["upload_data_in_separate_task"] = upload_data_in_separate_task - if log_metric_computing_records is not UNSET: - field_dict["log_metric_computing_records"] = log_metric_computing_records if multijudge_average_boolean_metrics is not UNSET: field_dict["multijudge_average_boolean_metrics"] = multijudge_average_boolean_metrics if trace_ids is not UNSET: @@ -1148,8 +1142,6 @@ def _parse_validation_config(data: object) -> CreateJobResponseValidationConfigT upload_data_in_separate_task = d.pop("upload_data_in_separate_task", UNSET) - log_metric_computing_records = d.pop("log_metric_computing_records", UNSET) - multijudge_average_boolean_metrics = d.pop("multijudge_average_boolean_metrics", UNSET) trace_ids = cast(list[str], d.pop("trace_ids", UNSET)) @@ -1189,7 +1181,6 @@ def _parse_validation_config(data: object) -> CreateJobResponseValidationConfigT is_session=is_session, validation_config=validation_config, upload_data_in_separate_task=upload_data_in_separate_task, - log_metric_computing_records=log_metric_computing_records, multijudge_average_boolean_metrics=multijudge_average_boolean_metrics, trace_ids=trace_ids, ) diff --git a/src/splunk_ao/resources/models/dataset_db.py b/src/splunk_ao/resources/models/dataset_db.py index ce747154..41e46ee4 100644 --- a/src/splunk_ao/resources/models/dataset_db.py +++ b/src/splunk_ao/resources/models/dataset_db.py @@ -32,6 +32,7 @@ class DatasetDB: current_version_index (int): draft (bool): permissions (list[Permission] | Unset): + draft_revision (None | str | Unset): """ id: str @@ -45,6 +46,7 @@ class DatasetDB: current_version_index: int draft: bool permissions: list[Permission] | Unset = UNSET + draft_revision: None | str | Unset = UNSET additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) def to_dict(self) -> dict[str, Any]: @@ -87,6 +89,12 @@ def to_dict(self) -> dict[str, Any]: permissions_item = permissions_item_data.to_dict() permissions.append(permissions_item) + draft_revision: None | str | Unset + if isinstance(self.draft_revision, Unset): + draft_revision = UNSET + else: + draft_revision = self.draft_revision + field_dict: dict[str, Any] = {} field_dict.update(self.additional_properties) field_dict.update( @@ -105,6 +113,8 @@ def to_dict(self) -> dict[str, Any]: ) if permissions is not UNSET: field_dict["permissions"] = permissions + if draft_revision is not UNSET: + field_dict["draft_revision"] = draft_revision return field_dict @@ -174,6 +184,15 @@ def _parse_created_by_user(data: object) -> None | UserInfo: permissions.append(permissions_item) + def _parse_draft_revision(data: object) -> None | str | Unset: + if data is None: + return data + if isinstance(data, Unset): + return data + return cast(None | str | Unset, data) + + draft_revision = _parse_draft_revision(d.pop("draft_revision", UNSET)) + dataset_db = cls( id=id, name=name, @@ -186,6 +205,7 @@ def _parse_created_by_user(data: object) -> None | UserInfo: current_version_index=current_version_index, draft=draft, permissions=permissions, + draft_revision=draft_revision, ) dataset_db.additional_properties = d diff --git a/src/splunk_ao/resources/models/experiment_response.py b/src/splunk_ao/resources/models/experiment_response.py index e600130d..6276ab8b 100644 --- a/src/splunk_ao/resources/models/experiment_response.py +++ b/src/splunk_ao/resources/models/experiment_response.py @@ -35,9 +35,7 @@ class ExperimentResponse: Attributes: id (str): Galileo ID of the experiment project_id (str): Galileo ID of the project associated with this experiment - task_type (TaskType): Valid task types for modeling. - - We store these as ints instead of strings because we will be looking this up in the database frequently. + task_type (TaskType): Keep the existing integer values used by stored runs. created_at (datetime.datetime | Unset): Timestamp of the experiment's creation updated_at (datetime.datetime | None | Unset): Timestamp of the trace or span's last update name (str | Unset): Name of the experiment Default: ''. diff --git a/src/splunk_ao/resources/models/input_type_enum.py b/src/splunk_ao/resources/models/input_type_enum.py index 32af3d15..e0d11ff0 100644 --- a/src/splunk_ao/resources/models/input_type_enum.py +++ b/src/splunk_ao/resources/models/input_type_enum.py @@ -13,6 +13,7 @@ class InputTypeEnum(str, Enum): TRACE_IO_ONLY = "trace_io_only" TRACE_NORMALIZED = "trace_normalized" TRACE_OUTPUT_ONLY = "trace_output_only" + TRACE_SELECTED_SPANS = "trace_selected_spans" WORKFLOW_SPANS = "workflow_spans" def __str__(self) -> str: diff --git a/src/splunk_ao/resources/models/list_scorer_versions_response.py b/src/splunk_ao/resources/models/list_scorer_versions_response.py index ed3f89b6..d75ad3a5 100644 --- a/src/splunk_ao/resources/models/list_scorer_versions_response.py +++ b/src/splunk_ao/resources/models/list_scorer_versions_response.py @@ -9,7 +9,7 @@ from ..types import UNSET, Unset if TYPE_CHECKING: - from ..models.base_scorer_version_response import BaseScorerVersionResponse + from ..models.scorer_version_list_item import ScorerVersionListItem T = TypeVar("T", bound="ListScorerVersionsResponse") @@ -23,14 +23,14 @@ class ListScorerVersionsResponse: limit (int | Unset): Default: 100. paginated (bool | Unset): Default: False. next_starting_token (int | None | Unset): - versions (list[BaseScorerVersionResponse] | Unset): + versions (list[ScorerVersionListItem] | Unset): """ starting_token: int | Unset = 0 limit: int | Unset = 100 paginated: bool | Unset = False next_starting_token: int | None | Unset = UNSET - versions: list[BaseScorerVersionResponse] | Unset = UNSET + versions: list[ScorerVersionListItem] | Unset = UNSET additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) def to_dict(self) -> dict[str, Any]: @@ -71,7 +71,7 @@ def to_dict(self) -> dict[str, Any]: @classmethod def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: - from ..models.base_scorer_version_response import BaseScorerVersionResponse + from ..models.scorer_version_list_item import ScorerVersionListItem d = dict(src_dict) starting_token = d.pop("starting_token", UNSET) @@ -90,11 +90,11 @@ def _parse_next_starting_token(data: object) -> int | None | Unset: next_starting_token = _parse_next_starting_token(d.pop("next_starting_token", UNSET)) _versions = d.pop("versions", UNSET) - versions: list[BaseScorerVersionResponse] | Unset = UNSET + versions: list[ScorerVersionListItem] | Unset = UNSET if _versions is not UNSET: versions = [] for versions_item_data in _versions: - versions_item = BaseScorerVersionResponse.from_dict(versions_item_data) + versions_item = ScorerVersionListItem.from_dict(versions_item_data) versions.append(versions_item) diff --git a/src/splunk_ao/resources/models/log_records_custom_metrics_query_request.py b/src/splunk_ao/resources/models/log_records_custom_metrics_query_request.py index 877ea3e3..23f0b67f 100644 --- a/src/splunk_ao/resources/models/log_records_custom_metrics_query_request.py +++ b/src/splunk_ao/resources/models/log_records_custom_metrics_query_request.py @@ -31,6 +31,7 @@ class LogRecordsCustomMetricsQueryRequest: log_stream_id (None | str | Unset): Log stream id associated with the traces. experiment_id (None | str | Unset): Experiment id associated with the traces. metrics_testing_id (None | str | Unset): Metrics testing id associated with the traces. + access_view_id (None | str | Unset): Assigned log view for restricted access. filter_tree (AndNodeLogRecordsFilter | FilterLeafLogRecordsFilter | None | NotNodeLogRecordsFilter | OrNodeLogRecordsFilter | Unset): Filter expression tree for complex filtering interval_minutes (int | Unset): Time interval in minutes for bucketing Default: 5. @@ -43,6 +44,7 @@ class LogRecordsCustomMetricsQueryRequest: log_stream_id: None | str | Unset = UNSET experiment_id: None | str | Unset = UNSET metrics_testing_id: None | str | Unset = UNSET + access_view_id: None | str | Unset = UNSET filter_tree: ( AndNodeLogRecordsFilter | FilterLeafLogRecordsFilter @@ -88,6 +90,12 @@ def to_dict(self) -> dict[str, Any]: else: metrics_testing_id = self.metrics_testing_id + access_view_id: None | str | Unset + if isinstance(self.access_view_id, Unset): + access_view_id = UNSET + else: + access_view_id = self.access_view_id + filter_tree: dict[str, Any] | None | Unset if isinstance(self.filter_tree, Unset): filter_tree = UNSET @@ -119,6 +127,8 @@ def to_dict(self) -> dict[str, Any]: field_dict["experiment_id"] = experiment_id if metrics_testing_id is not UNSET: field_dict["metrics_testing_id"] = metrics_testing_id + if access_view_id is not UNSET: + field_dict["access_view_id"] = access_view_id if filter_tree is not UNSET: field_dict["filter_tree"] = filter_tree if interval_minutes is not UNSET: @@ -175,6 +185,15 @@ def _parse_metrics_testing_id(data: object) -> None | str | Unset: metrics_testing_id = _parse_metrics_testing_id(d.pop("metrics_testing_id", UNSET)) + def _parse_access_view_id(data: object) -> None | str | Unset: + if data is None: + return data + if isinstance(data, Unset): + return data + return cast(None | str | Unset, data) + + access_view_id = _parse_access_view_id(d.pop("access_view_id", UNSET)) + def _parse_filter_tree( data: object, ) -> ( @@ -259,6 +278,7 @@ def _parse_group_by(data: object) -> None | str | Unset: log_stream_id=log_stream_id, experiment_id=experiment_id, metrics_testing_id=metrics_testing_id, + access_view_id=access_view_id, filter_tree=filter_tree, interval_minutes=interval_minutes, group_by=group_by, diff --git a/src/splunk_ao/resources/models/log_records_export_request.py b/src/splunk_ao/resources/models/log_records_export_request.py index ddc5fed9..925a7552 100644 --- a/src/splunk_ao/resources/models/log_records_export_request.py +++ b/src/splunk_ao/resources/models/log_records_export_request.py @@ -44,6 +44,7 @@ class LogRecordsExportRequest: log_stream_id (None | str | Unset): Log stream id associated with the traces. experiment_id (None | str | Unset): Experiment id associated with the traces. metrics_testing_id (None | str | Unset): Metrics testing id associated with the traces. + access_view_id (None | str | Unset): Assigned log view for restricted access. filters (list[LogRecordsBooleanFilter | LogRecordsCollectionFilter | LogRecordsDateFilter | LogRecordsFullyAnnotatedFilter | LogRecordsIDFilter | LogRecordsNumberFilter | LogRecordsTextFilter] | Unset): Filters to apply on the export @@ -63,6 +64,7 @@ class LogRecordsExportRequest: log_stream_id: None | str | Unset = UNSET experiment_id: None | str | Unset = UNSET metrics_testing_id: None | str | Unset = UNSET + access_view_id: None | str | Unset = UNSET filters: ( list[ LogRecordsBooleanFilter @@ -131,6 +133,12 @@ def to_dict(self) -> dict[str, Any]: else: metrics_testing_id = self.metrics_testing_id + access_view_id: None | str | Unset + if isinstance(self.access_view_id, Unset): + access_view_id = UNSET + else: + access_view_id = self.access_view_id + filters: list[dict[str, Any]] | Unset = UNSET if not isinstance(self.filters, Unset): filters = [] @@ -182,6 +190,8 @@ def to_dict(self) -> dict[str, Any]: field_dict["experiment_id"] = experiment_id if metrics_testing_id is not UNSET: field_dict["metrics_testing_id"] = metrics_testing_id + if access_view_id is not UNSET: + field_dict["access_view_id"] = access_view_id if filters is not UNSET: field_dict["filters"] = filters if sort is not UNSET: @@ -269,6 +279,15 @@ def _parse_metrics_testing_id(data: object) -> None | str | Unset: metrics_testing_id = _parse_metrics_testing_id(d.pop("metrics_testing_id", UNSET)) + def _parse_access_view_id(data: object) -> None | str | Unset: + if data is None: + return data + if isinstance(data, Unset): + return data + return cast(None | str | Unset, data) + + access_view_id = _parse_access_view_id(d.pop("access_view_id", UNSET)) + _filters = d.pop("filters", UNSET) filters: ( list[ @@ -384,6 +403,7 @@ def _parse_sort(data: object) -> LogRecordsSortClause | None | Unset: log_stream_id=log_stream_id, experiment_id=experiment_id, metrics_testing_id=metrics_testing_id, + access_view_id=access_view_id, filters=filters, sort=sort, include_code_metric_metadata=include_code_metric_metadata, diff --git a/src/splunk_ao/resources/models/log_records_metrics_query_request.py b/src/splunk_ao/resources/models/log_records_metrics_query_request.py index 929921b3..03fc2717 100644 --- a/src/splunk_ao/resources/models/log_records_metrics_query_request.py +++ b/src/splunk_ao/resources/models/log_records_metrics_query_request.py @@ -31,6 +31,7 @@ class LogRecordsMetricsQueryRequest: log_stream_id (None | str | Unset): Log stream id associated with the traces. experiment_id (None | str | Unset): Experiment id associated with the traces. metrics_testing_id (None | str | Unset): Metrics testing id associated with the traces. + access_view_id (None | str | Unset): Assigned log view for restricted access. filters (list[LogRecordsBooleanFilter | LogRecordsCollectionFilter | LogRecordsDateFilter | LogRecordsFullyAnnotatedFilter | LogRecordsIDFilter | LogRecordsNumberFilter | LogRecordsTextFilter] | Unset): interval (int | Unset): Default: 5. @@ -42,6 +43,7 @@ class LogRecordsMetricsQueryRequest: log_stream_id: None | str | Unset = UNSET experiment_id: None | str | Unset = UNSET metrics_testing_id: None | str | Unset = UNSET + access_view_id: None | str | Unset = UNSET filters: ( list[ LogRecordsBooleanFilter @@ -88,6 +90,12 @@ def to_dict(self) -> dict[str, Any]: else: metrics_testing_id = self.metrics_testing_id + access_view_id: None | str | Unset + if isinstance(self.access_view_id, Unset): + access_view_id = UNSET + else: + access_view_id = self.access_view_id + filters: list[dict[str, Any]] | Unset = UNSET if not isinstance(self.filters, Unset): filters = [] @@ -127,6 +135,8 @@ def to_dict(self) -> dict[str, Any]: field_dict["experiment_id"] = experiment_id if metrics_testing_id is not UNSET: field_dict["metrics_testing_id"] = metrics_testing_id + if access_view_id is not UNSET: + field_dict["access_view_id"] = access_view_id if filters is not UNSET: field_dict["filters"] = filters if interval is not UNSET: @@ -178,6 +188,15 @@ def _parse_metrics_testing_id(data: object) -> None | str | Unset: metrics_testing_id = _parse_metrics_testing_id(d.pop("metrics_testing_id", UNSET)) + def _parse_access_view_id(data: object) -> None | str | Unset: + if data is None: + return data + if isinstance(data, Unset): + return data + return cast(None | str | Unset, data) + + access_view_id = _parse_access_view_id(d.pop("access_view_id", UNSET)) + _filters = d.pop("filters", UNSET) filters: ( list[ @@ -281,6 +300,7 @@ def _parse_group_by(data: object) -> None | str | Unset: log_stream_id=log_stream_id, experiment_id=experiment_id, metrics_testing_id=metrics_testing_id, + access_view_id=access_view_id, filters=filters, interval=interval, group_by=group_by, diff --git a/src/splunk_ao/resources/models/log_records_partial_query_request.py b/src/splunk_ao/resources/models/log_records_partial_query_request.py index 561aa2c4..6d980509 100644 --- a/src/splunk_ao/resources/models/log_records_partial_query_request.py +++ b/src/splunk_ao/resources/models/log_records_partial_query_request.py @@ -40,6 +40,7 @@ class LogRecordsPartialQueryRequest: log_stream_id (None | str | Unset): Log stream id associated with the traces. experiment_id (None | str | Unset): Experiment id associated with the traces. metrics_testing_id (None | str | Unset): Metrics testing id associated with the traces. + access_view_id (None | str | Unset): Assigned log view for restricted access. filters (list[LogRecordsBooleanFilter | LogRecordsCollectionFilter | LogRecordsDateFilter | LogRecordsFullyAnnotatedFilter | LogRecordsIDFilter | LogRecordsNumberFilter | LogRecordsTextFilter] | Unset): filter_tree (AndNodeLogRecordsFilter | FilterLeafLogRecordsFilter | None | NotNodeLogRecordsFilter | @@ -61,6 +62,7 @@ class LogRecordsPartialQueryRequest: log_stream_id: None | str | Unset = UNSET experiment_id: None | str | Unset = UNSET metrics_testing_id: None | str | Unset = UNSET + access_view_id: None | str | Unset = UNSET filters: ( list[ LogRecordsBooleanFilter @@ -130,6 +132,12 @@ def to_dict(self) -> dict[str, Any]: else: metrics_testing_id = self.metrics_testing_id + access_view_id: None | str | Unset + if isinstance(self.access_view_id, Unset): + access_view_id = UNSET + else: + access_view_id = self.access_view_id + filters: list[dict[str, Any]] | Unset = UNSET if not isinstance(self.filters, Unset): filters = [] @@ -195,6 +203,8 @@ def to_dict(self) -> dict[str, Any]: field_dict["experiment_id"] = experiment_id if metrics_testing_id is not UNSET: field_dict["metrics_testing_id"] = metrics_testing_id + if access_view_id is not UNSET: + field_dict["access_view_id"] = access_view_id if filters is not UNSET: field_dict["filters"] = filters if filter_tree is not UNSET: @@ -269,6 +279,15 @@ def _parse_metrics_testing_id(data: object) -> None | str | Unset: metrics_testing_id = _parse_metrics_testing_id(d.pop("metrics_testing_id", UNSET)) + def _parse_access_view_id(data: object) -> None | str | Unset: + if data is None: + return data + if isinstance(data, Unset): + return data + return cast(None | str | Unset, data) + + access_view_id = _parse_access_view_id(d.pop("access_view_id", UNSET)) + _filters = d.pop("filters", UNSET) filters: ( list[ @@ -452,6 +471,7 @@ def _parse_sort(data: object) -> LogRecordsSortClause | None | Unset: log_stream_id=log_stream_id, experiment_id=experiment_id, metrics_testing_id=metrics_testing_id, + access_view_id=access_view_id, filters=filters, filter_tree=filter_tree, sort=sort, diff --git a/src/splunk_ao/resources/models/log_records_query_count_request.py b/src/splunk_ao/resources/models/log_records_query_count_request.py index 542d2be7..3460caf9 100644 --- a/src/splunk_ao/resources/models/log_records_query_count_request.py +++ b/src/splunk_ao/resources/models/log_records_query_count_request.py @@ -36,6 +36,7 @@ class LogRecordsQueryCountRequest: log_stream_id (None | str | Unset): Log stream id associated with the traces. experiment_id (None | str | Unset): Experiment id associated with the traces. metrics_testing_id (None | str | Unset): Metrics testing id associated with the traces. + access_view_id (None | str | Unset): Assigned log view for restricted access. filters (list[LogRecordsBooleanFilter | LogRecordsCollectionFilter | LogRecordsDateFilter | LogRecordsFullyAnnotatedFilter | LogRecordsIDFilter | LogRecordsNumberFilter | LogRecordsTextFilter] | Unset): filter_tree (AndNodeLogRecordsFilter | FilterLeafLogRecordsFilter | None | NotNodeLogRecordsFilter | @@ -45,6 +46,7 @@ class LogRecordsQueryCountRequest: log_stream_id: None | str | Unset = UNSET experiment_id: None | str | Unset = UNSET metrics_testing_id: None | str | Unset = UNSET + access_view_id: None | str | Unset = UNSET filters: ( list[ LogRecordsBooleanFilter @@ -97,6 +99,12 @@ def to_dict(self) -> dict[str, Any]: else: metrics_testing_id = self.metrics_testing_id + access_view_id: None | str | Unset + if isinstance(self.access_view_id, Unset): + access_view_id = UNSET + else: + access_view_id = self.access_view_id + filters: list[dict[str, Any]] | Unset = UNSET if not isinstance(self.filters, Unset): filters = [] @@ -142,6 +150,8 @@ def to_dict(self) -> dict[str, Any]: field_dict["experiment_id"] = experiment_id if metrics_testing_id is not UNSET: field_dict["metrics_testing_id"] = metrics_testing_id + if access_view_id is not UNSET: + field_dict["access_view_id"] = access_view_id if filters is not UNSET: field_dict["filters"] = filters if filter_tree is not UNSET: @@ -192,6 +202,15 @@ def _parse_metrics_testing_id(data: object) -> None | str | Unset: metrics_testing_id = _parse_metrics_testing_id(d.pop("metrics_testing_id", UNSET)) + def _parse_access_view_id(data: object) -> None | str | Unset: + if data is None: + return data + if isinstance(data, Unset): + return data + return cast(None | str | Unset, data) + + access_view_id = _parse_access_view_id(d.pop("access_view_id", UNSET)) + _filters = d.pop("filters", UNSET) filters: ( list[ @@ -348,6 +367,7 @@ def _parse_filter_tree( log_stream_id=log_stream_id, experiment_id=experiment_id, metrics_testing_id=metrics_testing_id, + access_view_id=access_view_id, filters=filters, filter_tree=filter_tree, ) diff --git a/src/splunk_ao/resources/models/log_records_query_request.py b/src/splunk_ao/resources/models/log_records_query_request.py index b31e3037..aa7ee2e0 100644 --- a/src/splunk_ao/resources/models/log_records_query_request.py +++ b/src/splunk_ao/resources/models/log_records_query_request.py @@ -37,6 +37,7 @@ class LogRecordsQueryRequest: log_stream_id (None | str | Unset): Log stream id associated with the traces. experiment_id (None | str | Unset): Experiment id associated with the traces. metrics_testing_id (None | str | Unset): Metrics testing id associated with the traces. + access_view_id (None | str | Unset): Assigned log view for restricted access. filters (list[LogRecordsBooleanFilter | LogRecordsCollectionFilter | LogRecordsDateFilter | LogRecordsFullyAnnotatedFilter | LogRecordsIDFilter | LogRecordsNumberFilter | LogRecordsTextFilter] | Unset): filter_tree (AndNodeLogRecordsFilter | FilterLeafLogRecordsFilter | None | NotNodeLogRecordsFilter | @@ -57,6 +58,7 @@ class LogRecordsQueryRequest: log_stream_id: None | str | Unset = UNSET experiment_id: None | str | Unset = UNSET metrics_testing_id: None | str | Unset = UNSET + access_view_id: None | str | Unset = UNSET filters: ( list[ LogRecordsBooleanFilter @@ -124,6 +126,12 @@ def to_dict(self) -> dict[str, Any]: else: metrics_testing_id = self.metrics_testing_id + access_view_id: None | str | Unset + if isinstance(self.access_view_id, Unset): + access_view_id = UNSET + else: + access_view_id = self.access_view_id + filters: list[dict[str, Any]] | Unset = UNSET if not isinstance(self.filters, Unset): filters = [] @@ -189,6 +197,8 @@ def to_dict(self) -> dict[str, Any]: field_dict["experiment_id"] = experiment_id if metrics_testing_id is not UNSET: field_dict["metrics_testing_id"] = metrics_testing_id + if access_view_id is not UNSET: + field_dict["access_view_id"] = access_view_id if filters is not UNSET: field_dict["filters"] = filters if filter_tree is not UNSET: @@ -260,6 +270,15 @@ def _parse_metrics_testing_id(data: object) -> None | str | Unset: metrics_testing_id = _parse_metrics_testing_id(d.pop("metrics_testing_id", UNSET)) + def _parse_access_view_id(data: object) -> None | str | Unset: + if data is None: + return data + if isinstance(data, Unset): + return data + return cast(None | str | Unset, data) + + access_view_id = _parse_access_view_id(d.pop("access_view_id", UNSET)) + _filters = d.pop("filters", UNSET) filters: ( list[ @@ -442,6 +461,7 @@ def _parse_sort(data: object) -> LogRecordsSortClause | None | Unset: log_stream_id=log_stream_id, experiment_id=experiment_id, metrics_testing_id=metrics_testing_id, + access_view_id=access_view_id, filters=filters, filter_tree=filter_tree, sort=sort, diff --git a/src/splunk_ao/resources/models/luna_dataset_mappings.py b/src/splunk_ao/resources/models/luna_dataset_mappings.py new file mode 100644 index 00000000..8370c08a --- /dev/null +++ b/src/splunk_ao/resources/models/luna_dataset_mappings.py @@ -0,0 +1,271 @@ +from __future__ import annotations + +from collections.abc import Mapping +from typing import TYPE_CHECKING, Any, TypeVar, cast + +from attrs import define as _attrs_define + +from ..types import UNSET, Unset + +if TYPE_CHECKING: + from ..models.luna_dataset_mappings_mgt import LunaDatasetMappingsMgt + from ..models.luna_mapping_config import LunaMappingConfig + + +T = TypeVar("T", bound="LunaDatasetMappings") + + +@_attrs_define +class LunaDatasetMappings: + """Semantic mappings shared by preview, validation, and dataset finalization. + + Attributes: + input_ (LunaMappingConfig | None | Unset): + output (LunaMappingConfig | None | Unset): + label (LunaMappingConfig | None | Unset): + evaluator_ground_truth (LunaMappingConfig | None | Unset): + metadata (LunaMappingConfig | None | Unset): + tools (LunaMappingConfig | None | Unset): + documents (LunaMappingConfig | None | Unset): + mgt (LunaDatasetMappingsMgt | Unset): + """ + + input_: LunaMappingConfig | None | Unset = UNSET + output: LunaMappingConfig | None | Unset = UNSET + label: LunaMappingConfig | None | Unset = UNSET + evaluator_ground_truth: LunaMappingConfig | None | Unset = UNSET + metadata: LunaMappingConfig | None | Unset = UNSET + tools: LunaMappingConfig | None | Unset = UNSET + documents: LunaMappingConfig | None | Unset = UNSET + mgt: LunaDatasetMappingsMgt | Unset = UNSET + + def to_dict(self) -> dict[str, Any]: + from ..models.luna_mapping_config import LunaMappingConfig + + input_: dict[str, Any] | None | Unset + if isinstance(self.input_, Unset): + input_ = UNSET + elif isinstance(self.input_, LunaMappingConfig): + input_ = self.input_.to_dict() + else: + input_ = self.input_ + + output: dict[str, Any] | None | Unset + if isinstance(self.output, Unset): + output = UNSET + elif isinstance(self.output, LunaMappingConfig): + output = self.output.to_dict() + else: + output = self.output + + label: dict[str, Any] | None | Unset + if isinstance(self.label, Unset): + label = UNSET + elif isinstance(self.label, LunaMappingConfig): + label = self.label.to_dict() + else: + label = self.label + + evaluator_ground_truth: dict[str, Any] | None | Unset + if isinstance(self.evaluator_ground_truth, Unset): + evaluator_ground_truth = UNSET + elif isinstance(self.evaluator_ground_truth, LunaMappingConfig): + evaluator_ground_truth = self.evaluator_ground_truth.to_dict() + else: + evaluator_ground_truth = self.evaluator_ground_truth + + metadata: dict[str, Any] | None | Unset + if isinstance(self.metadata, Unset): + metadata = UNSET + elif isinstance(self.metadata, LunaMappingConfig): + metadata = self.metadata.to_dict() + else: + metadata = self.metadata + + tools: dict[str, Any] | None | Unset + if isinstance(self.tools, Unset): + tools = UNSET + elif isinstance(self.tools, LunaMappingConfig): + tools = self.tools.to_dict() + else: + tools = self.tools + + documents: dict[str, Any] | None | Unset + if isinstance(self.documents, Unset): + documents = UNSET + elif isinstance(self.documents, LunaMappingConfig): + documents = self.documents.to_dict() + else: + documents = self.documents + + mgt: dict[str, Any] | Unset = UNSET + if not isinstance(self.mgt, Unset): + mgt = self.mgt.to_dict() + + field_dict: dict[str, Any] = {} + + field_dict.update({}) + if input_ is not UNSET: + field_dict["input"] = input_ + if output is not UNSET: + field_dict["output"] = output + if label is not UNSET: + field_dict["label"] = label + if evaluator_ground_truth is not UNSET: + field_dict["evaluator_ground_truth"] = evaluator_ground_truth + if metadata is not UNSET: + field_dict["metadata"] = metadata + if tools is not UNSET: + field_dict["tools"] = tools + if documents is not UNSET: + field_dict["documents"] = documents + if mgt is not UNSET: + field_dict["mgt"] = mgt + + return field_dict + + @classmethod + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: + from ..models.luna_dataset_mappings_mgt import LunaDatasetMappingsMgt + from ..models.luna_mapping_config import LunaMappingConfig + + d = dict(src_dict) + + def _parse_input_(data: object) -> LunaMappingConfig | None | Unset: + if data is None: + return data + if isinstance(data, Unset): + return data + try: + if not isinstance(data, dict): + raise TypeError() + input_type_0 = LunaMappingConfig.from_dict(data) + + return input_type_0 + except: # noqa: E722 + pass + return cast(LunaMappingConfig | None | Unset, data) + + input_ = _parse_input_(d.pop("input", UNSET)) + + def _parse_output(data: object) -> LunaMappingConfig | None | Unset: + if data is None: + return data + if isinstance(data, Unset): + return data + try: + if not isinstance(data, dict): + raise TypeError() + output_type_0 = LunaMappingConfig.from_dict(data) + + return output_type_0 + except: # noqa: E722 + pass + return cast(LunaMappingConfig | None | Unset, data) + + output = _parse_output(d.pop("output", UNSET)) + + def _parse_label(data: object) -> LunaMappingConfig | None | Unset: + if data is None: + return data + if isinstance(data, Unset): + return data + try: + if not isinstance(data, dict): + raise TypeError() + label_type_0 = LunaMappingConfig.from_dict(data) + + return label_type_0 + except: # noqa: E722 + pass + return cast(LunaMappingConfig | None | Unset, data) + + label = _parse_label(d.pop("label", UNSET)) + + def _parse_evaluator_ground_truth(data: object) -> LunaMappingConfig | None | Unset: + if data is None: + return data + if isinstance(data, Unset): + return data + try: + if not isinstance(data, dict): + raise TypeError() + evaluator_ground_truth_type_0 = LunaMappingConfig.from_dict(data) + + return evaluator_ground_truth_type_0 + except: # noqa: E722 + pass + return cast(LunaMappingConfig | None | Unset, data) + + evaluator_ground_truth = _parse_evaluator_ground_truth(d.pop("evaluator_ground_truth", UNSET)) + + def _parse_metadata(data: object) -> LunaMappingConfig | None | Unset: + if data is None: + return data + if isinstance(data, Unset): + return data + try: + if not isinstance(data, dict): + raise TypeError() + metadata_type_0 = LunaMappingConfig.from_dict(data) + + return metadata_type_0 + except: # noqa: E722 + pass + return cast(LunaMappingConfig | None | Unset, data) + + metadata = _parse_metadata(d.pop("metadata", UNSET)) + + def _parse_tools(data: object) -> LunaMappingConfig | None | Unset: + if data is None: + return data + if isinstance(data, Unset): + return data + try: + if not isinstance(data, dict): + raise TypeError() + tools_type_0 = LunaMappingConfig.from_dict(data) + + return tools_type_0 + except: # noqa: E722 + pass + return cast(LunaMappingConfig | None | Unset, data) + + tools = _parse_tools(d.pop("tools", UNSET)) + + def _parse_documents(data: object) -> LunaMappingConfig | None | Unset: + if data is None: + return data + if isinstance(data, Unset): + return data + try: + if not isinstance(data, dict): + raise TypeError() + documents_type_0 = LunaMappingConfig.from_dict(data) + + return documents_type_0 + except: # noqa: E722 + pass + return cast(LunaMappingConfig | None | Unset, data) + + documents = _parse_documents(d.pop("documents", UNSET)) + + _mgt = d.pop("mgt", UNSET) + mgt: LunaDatasetMappingsMgt | Unset + if isinstance(_mgt, Unset): + mgt = UNSET + else: + mgt = LunaDatasetMappingsMgt.from_dict(_mgt) + + luna_dataset_mappings = cls( + input_=input_, + output=output, + label=label, + evaluator_ground_truth=evaluator_ground_truth, + metadata=metadata, + tools=tools, + documents=documents, + mgt=mgt, + ) + + return luna_dataset_mappings diff --git a/src/splunk_ao/resources/models/luna_dataset_mappings_mgt.py b/src/splunk_ao/resources/models/luna_dataset_mappings_mgt.py new file mode 100644 index 00000000..ce0bc410 --- /dev/null +++ b/src/splunk_ao/resources/models/luna_dataset_mappings_mgt.py @@ -0,0 +1,60 @@ +from __future__ import annotations + +from collections.abc import Mapping +from typing import TYPE_CHECKING, Any, TypeVar + +from attrs import define as _attrs_define +from attrs import field as _attrs_field + +if TYPE_CHECKING: + from ..models.luna_mapping_config import LunaMappingConfig + + +T = TypeVar("T", bound="LunaDatasetMappingsMgt") + + +@_attrs_define +class LunaDatasetMappingsMgt: + """ """ + + additional_properties: dict[str, LunaMappingConfig] = _attrs_field(init=False, factory=dict) + + def to_dict(self) -> dict[str, Any]: + + field_dict: dict[str, Any] = {} + for prop_name, prop in self.additional_properties.items(): + field_dict[prop_name] = prop.to_dict() + + return field_dict + + @classmethod + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: + from ..models.luna_mapping_config import LunaMappingConfig + + d = dict(src_dict) + luna_dataset_mappings_mgt = cls() + + additional_properties = {} + for prop_name, prop_dict in d.items(): + additional_property = LunaMappingConfig.from_dict(prop_dict) + + additional_properties[prop_name] = additional_property + + luna_dataset_mappings_mgt.additional_properties = additional_properties + return luna_dataset_mappings_mgt + + @property + def additional_keys(self) -> list[str]: + return list(self.additional_properties.keys()) + + def __getitem__(self, key: str) -> LunaMappingConfig: + return self.additional_properties[key] + + def __setitem__(self, key: str, value: LunaMappingConfig) -> None: + self.additional_properties[key] = value + + def __delitem__(self, key: str) -> None: + del self.additional_properties[key] + + def __contains__(self, key: str) -> bool: + return key in self.additional_properties diff --git a/src/splunk_ao/resources/models/luna_dataset_preview.py b/src/splunk_ao/resources/models/luna_dataset_preview.py new file mode 100644 index 00000000..7edff874 --- /dev/null +++ b/src/splunk_ao/resources/models/luna_dataset_preview.py @@ -0,0 +1,165 @@ +from __future__ import annotations + +from collections.abc import Mapping +from typing import TYPE_CHECKING, Any, TypeVar, cast + +from attrs import define as _attrs_define +from attrs import field as _attrs_field + +from ..types import UNSET, Unset + +if TYPE_CHECKING: + from ..models.luna_dataset_preview_column import LunaDatasetPreviewColumn + from ..models.luna_dataset_preview_row import LunaDatasetPreviewRow + from ..models.luna_preview_draft_ref import LunaPreviewDraftRef + from ..models.luna_preview_version_ref import LunaPreviewVersionRef + + +T = TypeVar("T", bound="LunaDatasetPreview") + + +@_attrs_define +class LunaDatasetPreview: + """ + Attributes: + dataset (LunaPreviewDraftRef | LunaPreviewVersionRef): + columns (list[LunaDatasetPreviewColumn]): + rows (list[LunaDatasetPreviewRow]): + total_row_count (int): + column_count (int): + next_cursor (None | str | Unset): + """ + + dataset: LunaPreviewDraftRef | LunaPreviewVersionRef + columns: list[LunaDatasetPreviewColumn] + rows: list[LunaDatasetPreviewRow] + total_row_count: int + column_count: int + next_cursor: None | str | Unset = UNSET + additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) + + def to_dict(self) -> dict[str, Any]: + from ..models.luna_preview_draft_ref import LunaPreviewDraftRef + + dataset: dict[str, Any] + if isinstance(self.dataset, LunaPreviewDraftRef): + dataset = self.dataset.to_dict() + else: + dataset = self.dataset.to_dict() + + columns = [] + for columns_item_data in self.columns: + columns_item = columns_item_data.to_dict() + columns.append(columns_item) + + rows = [] + for rows_item_data in self.rows: + rows_item = rows_item_data.to_dict() + rows.append(rows_item) + + total_row_count = self.total_row_count + + column_count = self.column_count + + next_cursor: None | str | Unset + if isinstance(self.next_cursor, Unset): + next_cursor = UNSET + else: + next_cursor = self.next_cursor + + field_dict: dict[str, Any] = {} + field_dict.update(self.additional_properties) + field_dict.update( + { + "dataset": dataset, + "columns": columns, + "rows": rows, + "total_row_count": total_row_count, + "column_count": column_count, + } + ) + if next_cursor is not UNSET: + field_dict["next_cursor"] = next_cursor + + return field_dict + + @classmethod + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: + from ..models.luna_dataset_preview_column import LunaDatasetPreviewColumn + from ..models.luna_dataset_preview_row import LunaDatasetPreviewRow + from ..models.luna_preview_draft_ref import LunaPreviewDraftRef + from ..models.luna_preview_version_ref import LunaPreviewVersionRef + + d = dict(src_dict) + + def _parse_dataset(data: object) -> LunaPreviewDraftRef | LunaPreviewVersionRef: + try: + if not isinstance(data, dict): + raise TypeError() + dataset_type_0 = LunaPreviewDraftRef.from_dict(data) + + return dataset_type_0 + except: # noqa: E722 + pass + if not isinstance(data, dict): + raise TypeError() + dataset_type_1 = LunaPreviewVersionRef.from_dict(data) + + return dataset_type_1 + + dataset = _parse_dataset(d.pop("dataset")) + + columns = [] + _columns = d.pop("columns") + for columns_item_data in _columns: + columns_item = LunaDatasetPreviewColumn.from_dict(columns_item_data) + + columns.append(columns_item) + + rows = [] + _rows = d.pop("rows") + for rows_item_data in _rows: + rows_item = LunaDatasetPreviewRow.from_dict(rows_item_data) + + rows.append(rows_item) + + total_row_count = d.pop("total_row_count") + + column_count = d.pop("column_count") + + def _parse_next_cursor(data: object) -> None | str | Unset: + if data is None: + return data + if isinstance(data, Unset): + return data + return cast(None | str | Unset, data) + + next_cursor = _parse_next_cursor(d.pop("next_cursor", UNSET)) + + luna_dataset_preview = cls( + dataset=dataset, + columns=columns, + rows=rows, + total_row_count=total_row_count, + column_count=column_count, + next_cursor=next_cursor, + ) + + luna_dataset_preview.additional_properties = d + return luna_dataset_preview + + @property + def additional_keys(self) -> list[str]: + return list(self.additional_properties.keys()) + + def __getitem__(self, key: str) -> Any: + return self.additional_properties[key] + + def __setitem__(self, key: str, value: Any) -> None: + self.additional_properties[key] = value + + def __delitem__(self, key: str) -> None: + del self.additional_properties[key] + + def __contains__(self, key: str) -> bool: + return key in self.additional_properties diff --git a/src/splunk_ao/resources/models/luna_dataset_preview_column.py b/src/splunk_ao/resources/models/luna_dataset_preview_column.py new file mode 100644 index 00000000..6ada6ced --- /dev/null +++ b/src/splunk_ao/resources/models/luna_dataset_preview_column.py @@ -0,0 +1,144 @@ +from __future__ import annotations + +from collections.abc import Mapping +from typing import Any, TypeVar, cast + +from attrs import define as _attrs_define +from attrs import field as _attrs_field + +from ..types import UNSET, Unset + +T = TypeVar("T", bound="LunaDatasetPreviewColumn") + + +@_attrs_define +class LunaDatasetPreviewColumn: + """ + Attributes: + key (str): + label (str): + source_columns (list[str]): + source_column (None | str | Unset): + samples (list[Any] | Unset): + group (None | str | Unset): + scorer_id (None | str | Unset): + """ + + key: str + label: str + source_columns: list[str] + source_column: None | str | Unset = UNSET + samples: list[Any] | Unset = UNSET + group: None | str | Unset = UNSET + scorer_id: None | str | Unset = UNSET + additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) + + def to_dict(self) -> dict[str, Any]: + key = self.key + + label = self.label + + source_columns = self.source_columns + + source_column: None | str | Unset + if isinstance(self.source_column, Unset): + source_column = UNSET + else: + source_column = self.source_column + + samples: list[Any] | Unset = UNSET + if not isinstance(self.samples, Unset): + samples = self.samples + + group: None | str | Unset + if isinstance(self.group, Unset): + group = UNSET + else: + group = self.group + + scorer_id: None | str | Unset + if isinstance(self.scorer_id, Unset): + scorer_id = UNSET + else: + scorer_id = self.scorer_id + + field_dict: dict[str, Any] = {} + field_dict.update(self.additional_properties) + field_dict.update({"key": key, "label": label, "source_columns": source_columns}) + if source_column is not UNSET: + field_dict["source_column"] = source_column + if samples is not UNSET: + field_dict["samples"] = samples + if group is not UNSET: + field_dict["group"] = group + if scorer_id is not UNSET: + field_dict["scorer_id"] = scorer_id + + return field_dict + + @classmethod + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: + d = dict(src_dict) + key = d.pop("key") + + label = d.pop("label") + + source_columns = cast(list[str], d.pop("source_columns")) + + def _parse_source_column(data: object) -> None | str | Unset: + if data is None: + return data + if isinstance(data, Unset): + return data + return cast(None | str | Unset, data) + + source_column = _parse_source_column(d.pop("source_column", UNSET)) + + samples = cast(list[Any], d.pop("samples", UNSET)) + + def _parse_group(data: object) -> None | str | Unset: + if data is None: + return data + if isinstance(data, Unset): + return data + return cast(None | str | Unset, data) + + group = _parse_group(d.pop("group", UNSET)) + + def _parse_scorer_id(data: object) -> None | str | Unset: + if data is None: + return data + if isinstance(data, Unset): + return data + return cast(None | str | Unset, data) + + scorer_id = _parse_scorer_id(d.pop("scorer_id", UNSET)) + + luna_dataset_preview_column = cls( + key=key, + label=label, + source_columns=source_columns, + source_column=source_column, + samples=samples, + group=group, + scorer_id=scorer_id, + ) + + luna_dataset_preview_column.additional_properties = d + return luna_dataset_preview_column + + @property + def additional_keys(self) -> list[str]: + return list(self.additional_properties.keys()) + + def __getitem__(self, key: str) -> Any: + return self.additional_properties[key] + + def __setitem__(self, key: str, value: Any) -> None: + self.additional_properties[key] = value + + def __delitem__(self, key: str) -> None: + del self.additional_properties[key] + + def __contains__(self, key: str) -> bool: + return key in self.additional_properties diff --git a/src/splunk_ao/resources/models/luna_dataset_preview_error_detail.py b/src/splunk_ao/resources/models/luna_dataset_preview_error_detail.py new file mode 100644 index 00000000..17f49516 --- /dev/null +++ b/src/splunk_ao/resources/models/luna_dataset_preview_error_detail.py @@ -0,0 +1,141 @@ +from __future__ import annotations + +from collections.abc import Mapping +from typing import TYPE_CHECKING, Any, TypeVar, cast + +from attrs import define as _attrs_define +from attrs import field as _attrs_field + +from ..types import UNSET, Unset + +if TYPE_CHECKING: + from ..models.luna_dataset_preview_field_error import LunaDatasetPreviewFieldError + + +T = TypeVar("T", bound="LunaDatasetPreviewErrorDetail") + + +@_attrs_define +class LunaDatasetPreviewErrorDetail: + """ + Attributes: + code (str): + message (None | str | Unset): + current_revision (None | str | Unset): + field_errors (list[LunaDatasetPreviewFieldError] | None | Unset): + """ + + code: str + message: None | str | Unset = UNSET + current_revision: None | str | Unset = UNSET + field_errors: list[LunaDatasetPreviewFieldError] | None | Unset = UNSET + additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) + + def to_dict(self) -> dict[str, Any]: + code = self.code + + message: None | str | Unset + if isinstance(self.message, Unset): + message = UNSET + else: + message = self.message + + current_revision: None | str | Unset + if isinstance(self.current_revision, Unset): + current_revision = UNSET + else: + current_revision = self.current_revision + + field_errors: list[dict[str, Any]] | None | Unset + if isinstance(self.field_errors, Unset): + field_errors = UNSET + elif isinstance(self.field_errors, list): + field_errors = [] + for field_errors_type_0_item_data in self.field_errors: + field_errors_type_0_item = field_errors_type_0_item_data.to_dict() + field_errors.append(field_errors_type_0_item) + + else: + field_errors = self.field_errors + + field_dict: dict[str, Any] = {} + field_dict.update(self.additional_properties) + field_dict.update({"code": code}) + if message is not UNSET: + field_dict["message"] = message + if current_revision is not UNSET: + field_dict["current_revision"] = current_revision + if field_errors is not UNSET: + field_dict["field_errors"] = field_errors + + return field_dict + + @classmethod + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: + from ..models.luna_dataset_preview_field_error import LunaDatasetPreviewFieldError + + d = dict(src_dict) + code = d.pop("code") + + def _parse_message(data: object) -> None | str | Unset: + if data is None: + return data + if isinstance(data, Unset): + return data + return cast(None | str | Unset, data) + + message = _parse_message(d.pop("message", UNSET)) + + def _parse_current_revision(data: object) -> None | str | Unset: + if data is None: + return data + if isinstance(data, Unset): + return data + return cast(None | str | Unset, data) + + current_revision = _parse_current_revision(d.pop("current_revision", UNSET)) + + def _parse_field_errors(data: object) -> list[LunaDatasetPreviewFieldError] | None | Unset: + if data is None: + return data + if isinstance(data, Unset): + return data + try: + if not isinstance(data, list): + raise TypeError() + field_errors_type_0 = [] + _field_errors_type_0 = data + for field_errors_type_0_item_data in _field_errors_type_0: + field_errors_type_0_item = LunaDatasetPreviewFieldError.from_dict(field_errors_type_0_item_data) + + field_errors_type_0.append(field_errors_type_0_item) + + return field_errors_type_0 + except: # noqa: E722 + pass + return cast(list[LunaDatasetPreviewFieldError] | None | Unset, data) + + field_errors = _parse_field_errors(d.pop("field_errors", UNSET)) + + luna_dataset_preview_error_detail = cls( + code=code, message=message, current_revision=current_revision, field_errors=field_errors + ) + + luna_dataset_preview_error_detail.additional_properties = d + return luna_dataset_preview_error_detail + + @property + def additional_keys(self) -> list[str]: + return list(self.additional_properties.keys()) + + def __getitem__(self, key: str) -> Any: + return self.additional_properties[key] + + def __setitem__(self, key: str, value: Any) -> None: + self.additional_properties[key] = value + + def __delitem__(self, key: str) -> None: + del self.additional_properties[key] + + def __contains__(self, key: str) -> bool: + return key in self.additional_properties diff --git a/src/splunk_ao/resources/models/luna_dataset_preview_error_response.py b/src/splunk_ao/resources/models/luna_dataset_preview_error_response.py new file mode 100644 index 00000000..08c0d0dd --- /dev/null +++ b/src/splunk_ao/resources/models/luna_dataset_preview_error_response.py @@ -0,0 +1,137 @@ +from __future__ import annotations + +from collections.abc import Mapping +from typing import TYPE_CHECKING, Any, TypeVar, cast + +from attrs import define as _attrs_define +from attrs import field as _attrs_field + +from ..types import UNSET, Unset + +if TYPE_CHECKING: + from ..models.luna_dataset_preview_error_detail import LunaDatasetPreviewErrorDetail + from ..models.luna_dataset_preview_request_validation_error import LunaDatasetPreviewRequestValidationError + from ..models.standard_error import StandardError + + +T = TypeVar("T", bound="LunaDatasetPreviewErrorResponse") + + +@_attrs_define +class LunaDatasetPreviewErrorResponse: + """Catalog failures and ordinary request-validation failures returned by preview routes. + + Attributes: + detail (list[LunaDatasetPreviewRequestValidationError] | LunaDatasetPreviewErrorDetail | str): + standard_error (None | StandardError | Unset): + """ + + detail: list[LunaDatasetPreviewRequestValidationError] | LunaDatasetPreviewErrorDetail | str + standard_error: None | StandardError | Unset = UNSET + additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) + + def to_dict(self) -> dict[str, Any]: + from ..models.luna_dataset_preview_error_detail import LunaDatasetPreviewErrorDetail + from ..models.standard_error import StandardError + + detail: dict[str, Any] | list[dict[str, Any]] | str + if isinstance(self.detail, LunaDatasetPreviewErrorDetail): + detail = self.detail.to_dict() + elif isinstance(self.detail, list): + detail = [] + for detail_type_2_item_data in self.detail: + detail_type_2_item = detail_type_2_item_data.to_dict() + detail.append(detail_type_2_item) + + else: + detail = self.detail + + standard_error: dict[str, Any] | None | Unset + if isinstance(self.standard_error, Unset): + standard_error = UNSET + elif isinstance(self.standard_error, StandardError): + standard_error = self.standard_error.to_dict() + else: + standard_error = self.standard_error + + field_dict: dict[str, Any] = {} + field_dict.update(self.additional_properties) + field_dict.update({"detail": detail}) + if standard_error is not UNSET: + field_dict["standard_error"] = standard_error + + return field_dict + + @classmethod + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: + from ..models.luna_dataset_preview_error_detail import LunaDatasetPreviewErrorDetail + from ..models.luna_dataset_preview_request_validation_error import LunaDatasetPreviewRequestValidationError + from ..models.standard_error import StandardError + + d = dict(src_dict) + + def _parse_detail( + data: object, + ) -> list[LunaDatasetPreviewRequestValidationError] | LunaDatasetPreviewErrorDetail | str: + try: + if not isinstance(data, dict): + raise TypeError() + detail_type_1 = LunaDatasetPreviewErrorDetail.from_dict(data) + + return detail_type_1 + except: # noqa: E722 + pass + try: + if not isinstance(data, list): + raise TypeError() + detail_type_2 = [] + _detail_type_2 = data + for detail_type_2_item_data in _detail_type_2: + detail_type_2_item = LunaDatasetPreviewRequestValidationError.from_dict(detail_type_2_item_data) + + detail_type_2.append(detail_type_2_item) + + return detail_type_2 + except: # noqa: E722 + pass + return cast(list[LunaDatasetPreviewRequestValidationError] | LunaDatasetPreviewErrorDetail | str, data) + + detail = _parse_detail(d.pop("detail")) + + def _parse_standard_error(data: object) -> None | StandardError | Unset: + if data is None: + return data + if isinstance(data, Unset): + return data + try: + if not isinstance(data, dict): + raise TypeError() + standard_error_type_0 = StandardError.from_dict(data) + + return standard_error_type_0 + except: # noqa: E722 + pass + return cast(None | StandardError | Unset, data) + + standard_error = _parse_standard_error(d.pop("standard_error", UNSET)) + + luna_dataset_preview_error_response = cls(detail=detail, standard_error=standard_error) + + luna_dataset_preview_error_response.additional_properties = d + return luna_dataset_preview_error_response + + @property + def additional_keys(self) -> list[str]: + return list(self.additional_properties.keys()) + + def __getitem__(self, key: str) -> Any: + return self.additional_properties[key] + + def __setitem__(self, key: str, value: Any) -> None: + self.additional_properties[key] = value + + def __delitem__(self, key: str) -> None: + del self.additional_properties[key] + + def __contains__(self, key: str) -> bool: + return key in self.additional_properties diff --git a/src/splunk_ao/resources/models/luna_dataset_preview_field_error.py b/src/splunk_ao/resources/models/luna_dataset_preview_field_error.py new file mode 100644 index 00000000..920fb72e --- /dev/null +++ b/src/splunk_ao/resources/models/luna_dataset_preview_field_error.py @@ -0,0 +1,61 @@ +from __future__ import annotations + +from collections.abc import Mapping +from typing import Any, TypeVar + +from attrs import define as _attrs_define +from attrs import field as _attrs_field + +T = TypeVar("T", bound="LunaDatasetPreviewFieldError") + + +@_attrs_define +class LunaDatasetPreviewFieldError: + """ + Attributes: + field (str): + message (str): + """ + + field: str + message: str + additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) + + def to_dict(self) -> dict[str, Any]: + field = self.field + + message = self.message + + field_dict: dict[str, Any] = {} + field_dict.update(self.additional_properties) + field_dict.update({"field": field, "message": message}) + + return field_dict + + @classmethod + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: + d = dict(src_dict) + field = d.pop("field") + + message = d.pop("message") + + luna_dataset_preview_field_error = cls(field=field, message=message) + + luna_dataset_preview_field_error.additional_properties = d + return luna_dataset_preview_field_error + + @property + def additional_keys(self) -> list[str]: + return list(self.additional_properties.keys()) + + def __getitem__(self, key: str) -> Any: + return self.additional_properties[key] + + def __setitem__(self, key: str, value: Any) -> None: + self.additional_properties[key] = value + + def __delitem__(self, key: str) -> None: + del self.additional_properties[key] + + def __contains__(self, key: str) -> bool: + return key in self.additional_properties diff --git a/src/splunk_ao/resources/models/luna_dataset_preview_request.py b/src/splunk_ao/resources/models/luna_dataset_preview_request.py new file mode 100644 index 00000000..d8a82f62 --- /dev/null +++ b/src/splunk_ao/resources/models/luna_dataset_preview_request.py @@ -0,0 +1,74 @@ +from __future__ import annotations + +from collections.abc import Mapping +from typing import TYPE_CHECKING, Any, TypeVar + +from attrs import define as _attrs_define + +if TYPE_CHECKING: + from ..models.luna_dataset_mappings import LunaDatasetMappings + from ..models.luna_semantic_mapping import LunaSemanticMapping + + +T = TypeVar("T", bound="LunaDatasetPreviewRequest") + + +@_attrs_define +class LunaDatasetPreviewRequest: + """ + Attributes: + mappings (list[LunaSemanticMapping] | LunaDatasetMappings): + """ + + mappings: list[LunaSemanticMapping] | LunaDatasetMappings + + def to_dict(self) -> dict[str, Any]: + from ..models.luna_dataset_mappings import LunaDatasetMappings + + mappings: dict[str, Any] | list[dict[str, Any]] + if isinstance(self.mappings, LunaDatasetMappings): + mappings = self.mappings.to_dict() + else: + mappings = [] + for mappings_type_1_item_data in self.mappings: + mappings_type_1_item = mappings_type_1_item_data.to_dict() + mappings.append(mappings_type_1_item) + + field_dict: dict[str, Any] = {} + + field_dict.update({"mappings": mappings}) + + return field_dict + + @classmethod + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: + from ..models.luna_dataset_mappings import LunaDatasetMappings + from ..models.luna_semantic_mapping import LunaSemanticMapping + + d = dict(src_dict) + + def _parse_mappings(data: object) -> list[LunaSemanticMapping] | LunaDatasetMappings: + try: + if not isinstance(data, dict): + raise TypeError() + mappings_type_0 = LunaDatasetMappings.from_dict(data) + + return mappings_type_0 + except: # noqa: E722 + pass + if not isinstance(data, list): + raise TypeError() + mappings_type_1 = [] + _mappings_type_1 = data + for mappings_type_1_item_data in _mappings_type_1: + mappings_type_1_item = LunaSemanticMapping.from_dict(mappings_type_1_item_data) + + mappings_type_1.append(mappings_type_1_item) + + return mappings_type_1 + + mappings = _parse_mappings(d.pop("mappings")) + + luna_dataset_preview_request = cls(mappings=mappings) + + return luna_dataset_preview_request diff --git a/src/splunk_ao/resources/models/luna_dataset_preview_request_validation_error.py b/src/splunk_ao/resources/models/luna_dataset_preview_request_validation_error.py new file mode 100644 index 00000000..2e47bdba --- /dev/null +++ b/src/splunk_ao/resources/models/luna_dataset_preview_request_validation_error.py @@ -0,0 +1,144 @@ +from __future__ import annotations + +from collections.abc import Mapping +from typing import TYPE_CHECKING, Any, TypeVar, cast + +from attrs import define as _attrs_define +from attrs import field as _attrs_field + +from ..types import UNSET, Unset + +if TYPE_CHECKING: + from ..models.luna_dataset_preview_request_validation_error_ctx_type_0 import ( + LunaDatasetPreviewRequestValidationErrorCtxType0, + ) + + +T = TypeVar("T", bound="LunaDatasetPreviewRequestValidationError") + + +@_attrs_define +class LunaDatasetPreviewRequestValidationError: + """ + Attributes: + loc (list[int | str]): + msg (str): + type_ (str): + input_ (Any | None | Unset): + ctx (LunaDatasetPreviewRequestValidationErrorCtxType0 | None | Unset): + """ + + loc: list[int | str] + msg: str + type_: str + input_: Any | None | Unset = UNSET + ctx: LunaDatasetPreviewRequestValidationErrorCtxType0 | None | Unset = UNSET + additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) + + def to_dict(self) -> dict[str, Any]: + from ..models.luna_dataset_preview_request_validation_error_ctx_type_0 import ( + LunaDatasetPreviewRequestValidationErrorCtxType0, + ) + + loc = [] + for loc_item_data in self.loc: + loc_item: int | str + loc_item = loc_item_data + loc.append(loc_item) + + msg = self.msg + + type_ = self.type_ + + input_: Any | None | Unset + if isinstance(self.input_, Unset): + input_ = UNSET + else: + input_ = self.input_ + + ctx: dict[str, Any] | None | Unset + if isinstance(self.ctx, Unset): + ctx = UNSET + elif isinstance(self.ctx, LunaDatasetPreviewRequestValidationErrorCtxType0): + ctx = self.ctx.to_dict() + else: + ctx = self.ctx + + field_dict: dict[str, Any] = {} + field_dict.update(self.additional_properties) + field_dict.update({"loc": loc, "msg": msg, "type": type_}) + if input_ is not UNSET: + field_dict["input"] = input_ + if ctx is not UNSET: + field_dict["ctx"] = ctx + + return field_dict + + @classmethod + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: + from ..models.luna_dataset_preview_request_validation_error_ctx_type_0 import ( + LunaDatasetPreviewRequestValidationErrorCtxType0, + ) + + d = dict(src_dict) + loc = [] + _loc = d.pop("loc") + for loc_item_data in _loc: + + def _parse_loc_item(data: object) -> int | str: + return cast(int | str, data) + + loc_item = _parse_loc_item(loc_item_data) + + loc.append(loc_item) + + msg = d.pop("msg") + + type_ = d.pop("type") + + def _parse_input_(data: object) -> Any | None | Unset: + if data is None: + return data + if isinstance(data, Unset): + return data + return cast(Any | None | Unset, data) + + input_ = _parse_input_(d.pop("input", UNSET)) + + def _parse_ctx(data: object) -> LunaDatasetPreviewRequestValidationErrorCtxType0 | None | Unset: + if data is None: + return data + if isinstance(data, Unset): + return data + try: + if not isinstance(data, dict): + raise TypeError() + ctx_type_0 = LunaDatasetPreviewRequestValidationErrorCtxType0.from_dict(data) + + return ctx_type_0 + except: # noqa: E722 + pass + return cast(LunaDatasetPreviewRequestValidationErrorCtxType0 | None | Unset, data) + + ctx = _parse_ctx(d.pop("ctx", UNSET)) + + luna_dataset_preview_request_validation_error = cls(loc=loc, msg=msg, type_=type_, input_=input_, ctx=ctx) + + luna_dataset_preview_request_validation_error.additional_properties = d + return luna_dataset_preview_request_validation_error + + @property + def additional_keys(self) -> list[str]: + return list(self.additional_properties.keys()) + + def __getitem__(self, key: str) -> Any: + return self.additional_properties[key] + + def __setitem__(self, key: str, value: Any) -> None: + self.additional_properties[key] = value + + def __delitem__(self, key: str) -> None: + del self.additional_properties[key] + + def __contains__(self, key: str) -> bool: + return key in self.additional_properties diff --git a/src/splunk_ao/resources/models/luna_dataset_preview_request_validation_error_ctx_type_0.py b/src/splunk_ao/resources/models/luna_dataset_preview_request_validation_error_ctx_type_0.py new file mode 100644 index 00000000..c9d19218 --- /dev/null +++ b/src/splunk_ao/resources/models/luna_dataset_preview_request_validation_error_ctx_type_0.py @@ -0,0 +1,47 @@ +from __future__ import annotations + +from collections.abc import Mapping +from typing import Any, TypeVar + +from attrs import define as _attrs_define +from attrs import field as _attrs_field + +T = TypeVar("T", bound="LunaDatasetPreviewRequestValidationErrorCtxType0") + + +@_attrs_define +class LunaDatasetPreviewRequestValidationErrorCtxType0: + """ """ + + additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) + + def to_dict(self) -> dict[str, Any]: + + field_dict: dict[str, Any] = {} + field_dict.update(self.additional_properties) + + return field_dict + + @classmethod + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: + d = dict(src_dict) + luna_dataset_preview_request_validation_error_ctx_type_0 = cls() + + luna_dataset_preview_request_validation_error_ctx_type_0.additional_properties = d + return luna_dataset_preview_request_validation_error_ctx_type_0 + + @property + def additional_keys(self) -> list[str]: + return list(self.additional_properties.keys()) + + def __getitem__(self, key: str) -> Any: + return self.additional_properties[key] + + def __setitem__(self, key: str, value: Any) -> None: + self.additional_properties[key] = value + + def __delitem__(self, key: str) -> None: + del self.additional_properties[key] + + def __contains__(self, key: str) -> bool: + return key in self.additional_properties diff --git a/src/splunk_ao/resources/models/luna_dataset_preview_row.py b/src/splunk_ao/resources/models/luna_dataset_preview_row.py new file mode 100644 index 00000000..0861e1d1 --- /dev/null +++ b/src/splunk_ao/resources/models/luna_dataset_preview_row.py @@ -0,0 +1,79 @@ +from __future__ import annotations + +from collections.abc import Mapping +from typing import TYPE_CHECKING, Any, TypeVar, cast + +from attrs import define as _attrs_define +from attrs import field as _attrs_field + +from ..types import UNSET, Unset + +if TYPE_CHECKING: + from ..models.luna_dataset_preview_row_values import LunaDatasetPreviewRowValues + + +T = TypeVar("T", bound="LunaDatasetPreviewRow") + + +@_attrs_define +class LunaDatasetPreviewRow: + """ + Attributes: + row_ref (str): + values (LunaDatasetPreviewRowValues): + truncated_columns (list[str] | Unset): + """ + + row_ref: str + values: LunaDatasetPreviewRowValues + truncated_columns: list[str] | Unset = UNSET + additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) + + def to_dict(self) -> dict[str, Any]: + row_ref = self.row_ref + + values = self.values.to_dict() + + truncated_columns: list[str] | Unset = UNSET + if not isinstance(self.truncated_columns, Unset): + truncated_columns = self.truncated_columns + + field_dict: dict[str, Any] = {} + field_dict.update(self.additional_properties) + field_dict.update({"row_ref": row_ref, "values": values}) + if truncated_columns is not UNSET: + field_dict["truncated_columns"] = truncated_columns + + return field_dict + + @classmethod + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: + from ..models.luna_dataset_preview_row_values import LunaDatasetPreviewRowValues + + d = dict(src_dict) + row_ref = d.pop("row_ref") + + values = LunaDatasetPreviewRowValues.from_dict(d.pop("values")) + + truncated_columns = cast(list[str], d.pop("truncated_columns", UNSET)) + + luna_dataset_preview_row = cls(row_ref=row_ref, values=values, truncated_columns=truncated_columns) + + luna_dataset_preview_row.additional_properties = d + return luna_dataset_preview_row + + @property + def additional_keys(self) -> list[str]: + return list(self.additional_properties.keys()) + + def __getitem__(self, key: str) -> Any: + return self.additional_properties[key] + + def __setitem__(self, key: str, value: Any) -> None: + self.additional_properties[key] = value + + def __delitem__(self, key: str) -> None: + del self.additional_properties[key] + + def __contains__(self, key: str) -> bool: + return key in self.additional_properties diff --git a/src/splunk_ao/resources/models/luna_dataset_preview_row_values.py b/src/splunk_ao/resources/models/luna_dataset_preview_row_values.py new file mode 100644 index 00000000..8a878b39 --- /dev/null +++ b/src/splunk_ao/resources/models/luna_dataset_preview_row_values.py @@ -0,0 +1,47 @@ +from __future__ import annotations + +from collections.abc import Mapping +from typing import Any, TypeVar + +from attrs import define as _attrs_define +from attrs import field as _attrs_field + +T = TypeVar("T", bound="LunaDatasetPreviewRowValues") + + +@_attrs_define +class LunaDatasetPreviewRowValues: + """ """ + + additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) + + def to_dict(self) -> dict[str, Any]: + + field_dict: dict[str, Any] = {} + field_dict.update(self.additional_properties) + + return field_dict + + @classmethod + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: + d = dict(src_dict) + luna_dataset_preview_row_values = cls() + + luna_dataset_preview_row_values.additional_properties = d + return luna_dataset_preview_row_values + + @property + def additional_keys(self) -> list[str]: + return list(self.additional_properties.keys()) + + def __getitem__(self, key: str) -> Any: + return self.additional_properties[key] + + def __setitem__(self, key: str, value: Any) -> None: + self.additional_properties[key] = value + + def __delitem__(self, key: str) -> None: + del self.additional_properties[key] + + def __contains__(self, key: str) -> bool: + return key in self.additional_properties diff --git a/src/splunk_ao/resources/models/luna_mapping_config.py b/src/splunk_ao/resources/models/luna_mapping_config.py new file mode 100644 index 00000000..b40cca12 --- /dev/null +++ b/src/splunk_ao/resources/models/luna_mapping_config.py @@ -0,0 +1,46 @@ +from __future__ import annotations + +from collections.abc import Mapping +from typing import Any, TypeVar, cast + +from attrs import define as _attrs_define + +from ..types import UNSET, Unset + +T = TypeVar("T", bound="LunaMappingConfig") + + +@_attrs_define +class LunaMappingConfig: + """ + Attributes: + columns (list[str]): + flatten (bool | Unset): Default: True. + """ + + columns: list[str] + flatten: bool | Unset = True + + def to_dict(self) -> dict[str, Any]: + columns = self.columns + + flatten = self.flatten + + field_dict: dict[str, Any] = {} + + field_dict.update({"columns": columns}) + if flatten is not UNSET: + field_dict["flatten"] = flatten + + return field_dict + + @classmethod + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: + d = dict(src_dict) + columns = cast(list[str], d.pop("columns")) + + flatten = d.pop("flatten", UNSET) + + luna_mapping_config = cls(columns=columns, flatten=flatten) + + return luna_mapping_config diff --git a/src/splunk_ao/resources/models/luna_preview_draft_ref.py b/src/splunk_ao/resources/models/luna_preview_draft_ref.py new file mode 100644 index 00000000..78ca7348 --- /dev/null +++ b/src/splunk_ao/resources/models/luna_preview_draft_ref.py @@ -0,0 +1,73 @@ +from __future__ import annotations + +from collections.abc import Mapping +from typing import Any, Literal, TypeVar, cast + +from attrs import define as _attrs_define +from attrs import field as _attrs_field + +from ..types import UNSET, Unset + +T = TypeVar("T", bound="LunaPreviewDraftRef") + + +@_attrs_define +class LunaPreviewDraftRef: + """ + Attributes: + dataset_id (str): + draft_revision (str): + kind (Literal['draft'] | Unset): Default: 'draft'. + """ + + dataset_id: str + draft_revision: str + kind: Literal["draft"] | Unset = "draft" + additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) + + def to_dict(self) -> dict[str, Any]: + dataset_id = self.dataset_id + + draft_revision = self.draft_revision + + kind = self.kind + + field_dict: dict[str, Any] = {} + field_dict.update(self.additional_properties) + field_dict.update({"dataset_id": dataset_id, "draft_revision": draft_revision}) + if kind is not UNSET: + field_dict["kind"] = kind + + return field_dict + + @classmethod + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: + d = dict(src_dict) + dataset_id = d.pop("dataset_id") + + draft_revision = d.pop("draft_revision") + + kind = cast(Literal["draft"] | Unset, d.pop("kind", UNSET)) + if kind != "draft" and not isinstance(kind, Unset): + raise ValueError(f"kind must match const 'draft', got '{kind}'") + + luna_preview_draft_ref = cls(dataset_id=dataset_id, draft_revision=draft_revision, kind=kind) + + luna_preview_draft_ref.additional_properties = d + return luna_preview_draft_ref + + @property + def additional_keys(self) -> list[str]: + return list(self.additional_properties.keys()) + + def __getitem__(self, key: str) -> Any: + return self.additional_properties[key] + + def __setitem__(self, key: str, value: Any) -> None: + self.additional_properties[key] = value + + def __delitem__(self, key: str) -> None: + del self.additional_properties[key] + + def __contains__(self, key: str) -> bool: + return key in self.additional_properties diff --git a/src/splunk_ao/resources/models/luna_preview_version_ref.py b/src/splunk_ao/resources/models/luna_preview_version_ref.py new file mode 100644 index 00000000..4c31c33f --- /dev/null +++ b/src/splunk_ao/resources/models/luna_preview_version_ref.py @@ -0,0 +1,73 @@ +from __future__ import annotations + +from collections.abc import Mapping +from typing import Any, Literal, TypeVar, cast + +from attrs import define as _attrs_define +from attrs import field as _attrs_field + +from ..types import UNSET, Unset + +T = TypeVar("T", bound="LunaPreviewVersionRef") + + +@_attrs_define +class LunaPreviewVersionRef: + """ + Attributes: + dataset_id (str): + version_index (int): + kind (Literal['version'] | Unset): Default: 'version'. + """ + + dataset_id: str + version_index: int + kind: Literal["version"] | Unset = "version" + additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) + + def to_dict(self) -> dict[str, Any]: + dataset_id = self.dataset_id + + version_index = self.version_index + + kind = self.kind + + field_dict: dict[str, Any] = {} + field_dict.update(self.additional_properties) + field_dict.update({"dataset_id": dataset_id, "version_index": version_index}) + if kind is not UNSET: + field_dict["kind"] = kind + + return field_dict + + @classmethod + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: + d = dict(src_dict) + dataset_id = d.pop("dataset_id") + + version_index = d.pop("version_index") + + kind = cast(Literal["version"] | Unset, d.pop("kind", UNSET)) + if kind != "version" and not isinstance(kind, Unset): + raise ValueError(f"kind must match const 'version', got '{kind}'") + + luna_preview_version_ref = cls(dataset_id=dataset_id, version_index=version_index, kind=kind) + + luna_preview_version_ref.additional_properties = d + return luna_preview_version_ref + + @property + def additional_keys(self) -> list[str]: + return list(self.additional_properties.keys()) + + def __getitem__(self, key: str) -> Any: + return self.additional_properties[key] + + def __setitem__(self, key: str, value: Any) -> None: + self.additional_properties[key] = value + + def __delitem__(self, key: str) -> None: + del self.additional_properties[key] + + def __contains__(self, key: str) -> bool: + return key in self.additional_properties diff --git a/src/splunk_ao/resources/models/luna_semantic_mapping.py b/src/splunk_ao/resources/models/luna_semantic_mapping.py new file mode 100644 index 00000000..3fa5b31e --- /dev/null +++ b/src/splunk_ao/resources/models/luna_semantic_mapping.py @@ -0,0 +1,44 @@ +from __future__ import annotations + +from collections.abc import Mapping +from typing import Any, TypeVar + +from attrs import define as _attrs_define + +from ..models.luna_semantic_mapping_target_field import LunaSemanticMappingTargetField + +T = TypeVar("T", bound="LunaSemanticMapping") + + +@_attrs_define +class LunaSemanticMapping: + """ + Attributes: + source_column (str): + target_field (LunaSemanticMappingTargetField): + """ + + source_column: str + target_field: LunaSemanticMappingTargetField + + def to_dict(self) -> dict[str, Any]: + source_column = self.source_column + + target_field = self.target_field.value + + field_dict: dict[str, Any] = {} + + field_dict.update({"source_column": source_column, "target_field": target_field}) + + return field_dict + + @classmethod + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: + d = dict(src_dict) + source_column = d.pop("source_column") + + target_field = LunaSemanticMappingTargetField(d.pop("target_field")) + + luna_semantic_mapping = cls(source_column=source_column, target_field=target_field) + + return luna_semantic_mapping diff --git a/src/splunk_ao/resources/models/luna_semantic_mapping_target_field.py b/src/splunk_ao/resources/models/luna_semantic_mapping_target_field.py new file mode 100644 index 00000000..1f18da7e --- /dev/null +++ b/src/splunk_ao/resources/models/luna_semantic_mapping_target_field.py @@ -0,0 +1,16 @@ +from enum import Enum + + +class LunaSemanticMappingTargetField(str, Enum): + DOCUMENTS = "documents" + EVALUATOR_GROUND_TRUTH = "evaluator_ground_truth" + GENERATED_OUTPUT = "generated_output" + GROUND_TRUTH = "ground_truth" + INPUT = "input" + LABEL = "label" + METADATA = "metadata" + OUTPUT = "output" + TOOLS = "tools" + + def __str__(self) -> str: + return str(self.value) diff --git a/src/splunk_ao/resources/models/recompute_log_records_metrics_request.py b/src/splunk_ao/resources/models/recompute_log_records_metrics_request.py index 59b8eb08..739fdbbe 100644 --- a/src/splunk_ao/resources/models/recompute_log_records_metrics_request.py +++ b/src/splunk_ao/resources/models/recompute_log_records_metrics_request.py @@ -40,6 +40,7 @@ class RecomputeLogRecordsMetricsRequest: log_stream_id (None | str | Unset): Log stream id associated with the traces. experiment_id (None | str | Unset): Experiment id associated with the traces. metrics_testing_id (None | str | Unset): Metrics testing id associated with the traces. + access_view_id (None | str | Unset): Assigned log view for restricted access. filters (list[LogRecordsBooleanFilter | LogRecordsCollectionFilter | LogRecordsDateFilter | LogRecordsFullyAnnotatedFilter | LogRecordsIDFilter | LogRecordsNumberFilter | LogRecordsTextFilter] | Unset): filter_tree (AndNodeLogRecordsFilter | FilterLeafLogRecordsFilter | None | NotNodeLogRecordsFilter | @@ -61,6 +62,7 @@ class RecomputeLogRecordsMetricsRequest: log_stream_id: None | str | Unset = UNSET experiment_id: None | str | Unset = UNSET metrics_testing_id: None | str | Unset = UNSET + access_view_id: None | str | Unset = UNSET filters: ( list[ LogRecordsBooleanFilter @@ -130,6 +132,12 @@ def to_dict(self) -> dict[str, Any]: else: metrics_testing_id = self.metrics_testing_id + access_view_id: None | str | Unset + if isinstance(self.access_view_id, Unset): + access_view_id = UNSET + else: + access_view_id = self.access_view_id + filters: list[dict[str, Any]] | Unset = UNSET if not isinstance(self.filters, Unset): filters = [] @@ -195,6 +203,8 @@ def to_dict(self) -> dict[str, Any]: field_dict["experiment_id"] = experiment_id if metrics_testing_id is not UNSET: field_dict["metrics_testing_id"] = metrics_testing_id + if access_view_id is not UNSET: + field_dict["access_view_id"] = access_view_id if filters is not UNSET: field_dict["filters"] = filters if filter_tree is not UNSET: @@ -268,6 +278,15 @@ def _parse_metrics_testing_id(data: object) -> None | str | Unset: metrics_testing_id = _parse_metrics_testing_id(d.pop("metrics_testing_id", UNSET)) + def _parse_access_view_id(data: object) -> None | str | Unset: + if data is None: + return data + if isinstance(data, Unset): + return data + return cast(None | str | Unset, data) + + access_view_id = _parse_access_view_id(d.pop("access_view_id", UNSET)) + _filters = d.pop("filters", UNSET) filters: ( list[ @@ -451,6 +470,7 @@ def _parse_sort(data: object) -> LogRecordsSortClause | None | Unset: log_stream_id=log_stream_id, experiment_id=experiment_id, metrics_testing_id=metrics_testing_id, + access_view_id=access_view_id, filters=filters, filter_tree=filter_tree, sort=sort, diff --git a/src/splunk_ao/resources/models/scorer_environment.py b/src/splunk_ao/resources/models/scorer_environment.py index 9ff93297..302d7539 100644 --- a/src/splunk_ao/resources/models/scorer_environment.py +++ b/src/splunk_ao/resources/models/scorer_environment.py @@ -36,6 +36,7 @@ class ScorerEnvironment: runtime (None | str | Unset): lockfile (None | str | Unset): includes_standard (bool | Unset): Default: True. + hashed_lockfile (None | str | Unset): """ tier: EnvironmentTier @@ -43,6 +44,7 @@ class ScorerEnvironment: runtime: None | str | Unset = UNSET lockfile: None | str | Unset = UNSET includes_standard: bool | Unset = True + hashed_lockfile: None | str | Unset = UNSET additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) def to_dict(self) -> dict[str, Any]: @@ -64,6 +66,12 @@ def to_dict(self) -> dict[str, Any]: includes_standard = self.includes_standard + hashed_lockfile: None | str | Unset + if isinstance(self.hashed_lockfile, Unset): + hashed_lockfile = UNSET + else: + hashed_lockfile = self.hashed_lockfile + field_dict: dict[str, Any] = {} field_dict.update(self.additional_properties) field_dict.update({"tier": tier, "env_hash": env_hash}) @@ -73,6 +81,8 @@ def to_dict(self) -> dict[str, Any]: field_dict["lockfile"] = lockfile if includes_standard is not UNSET: field_dict["includes_standard"] = includes_standard + if hashed_lockfile is not UNSET: + field_dict["hashed_lockfile"] = hashed_lockfile return field_dict @@ -103,8 +113,22 @@ def _parse_lockfile(data: object) -> None | str | Unset: includes_standard = d.pop("includes_standard", UNSET) + def _parse_hashed_lockfile(data: object) -> None | str | Unset: + if data is None: + return data + if isinstance(data, Unset): + return data + return cast(None | str | Unset, data) + + hashed_lockfile = _parse_hashed_lockfile(d.pop("hashed_lockfile", UNSET)) + scorer_environment = cls( - tier=tier, env_hash=env_hash, runtime=runtime, lockfile=lockfile, includes_standard=includes_standard + tier=tier, + env_hash=env_hash, + runtime=runtime, + lockfile=lockfile, + includes_standard=includes_standard, + hashed_lockfile=hashed_lockfile, ) scorer_environment.additional_properties = d diff --git a/src/splunk_ao/resources/models/scorer_version_list_item.py b/src/splunk_ao/resources/models/scorer_version_list_item.py new file mode 100644 index 00000000..29dd4e2d --- /dev/null +++ b/src/splunk_ao/resources/models/scorer_version_list_item.py @@ -0,0 +1,537 @@ +from __future__ import annotations + +import datetime +from collections.abc import Mapping +from typing import TYPE_CHECKING, Any, TypeVar, cast + +from attrs import define as _attrs_define +from attrs import field as _attrs_field + +from ..models.output_type_enum import OutputTypeEnum +from ..types import UNSET, Unset + +if TYPE_CHECKING: + from ..models.chain_poll_template import ChainPollTemplate + from ..models.create_update_registered_scorer_response import CreateUpdateRegisteredScorerResponse + from ..models.decision_scorer_db import DecisionScorerDB + from ..models.fine_tuned_scorer_response import FineTunedScorerResponse + from ..models.generated_scorer_response import GeneratedScorerResponse + from ..models.luna_3_scorer_response import Luna3ScorerResponse + + +T = TypeVar("T", bound="ScorerVersionListItem") + + +@_attrs_define +class ScorerVersionListItem: + """ + Attributes: + id (str): + version (int): + scorer_id (str): + created_at (datetime.datetime): + updated_at (datetime.datetime): + generated_scorer (GeneratedScorerResponse | None | Unset): + registered_scorer (CreateUpdateRegisteredScorerResponse | None | Unset): + finetuned_scorer (FineTunedScorerResponse | None | Unset): + luna3_scorer (Luna3ScorerResponse | None | Unset): + decision_scorer (DecisionScorerDB | None | Unset): + model_name (None | str | Unset): + num_judges (int | None | Unset): + cot_enabled (bool | None | Unset): + runtime (None | str | Unset): The runtime a code metric version runs on, such as python3.14. Null for a version + saved before runtimes were recorded, which runs on the legacy Python 3.12 runtime. + code_sha256 (None | str | Unset): SHA-256 of the code bytes uploaded for a code metric version. Null for a + version saved before digests were recorded. + chain_poll_template (ChainPollTemplate | None | Unset): + scoreable_node_types (list[str] | None | Unset): + output_type (None | OutputTypeEnum | Unset): + allowed_model (bool | None | Unset): + created_by (None | str | Unset): + validation_task_id (None | str | Unset): + request_id (None | str | Unset): + """ + + id: str + version: int + scorer_id: str + created_at: datetime.datetime + updated_at: datetime.datetime + generated_scorer: GeneratedScorerResponse | None | Unset = UNSET + registered_scorer: CreateUpdateRegisteredScorerResponse | None | Unset = UNSET + finetuned_scorer: FineTunedScorerResponse | None | Unset = UNSET + luna3_scorer: Luna3ScorerResponse | None | Unset = UNSET + decision_scorer: DecisionScorerDB | None | Unset = UNSET + model_name: None | str | Unset = UNSET + num_judges: int | None | Unset = UNSET + cot_enabled: bool | None | Unset = UNSET + runtime: None | str | Unset = UNSET + code_sha256: None | str | Unset = UNSET + chain_poll_template: ChainPollTemplate | None | Unset = UNSET + scoreable_node_types: list[str] | None | Unset = UNSET + output_type: None | OutputTypeEnum | Unset = UNSET + allowed_model: bool | None | Unset = UNSET + created_by: None | str | Unset = UNSET + validation_task_id: None | str | Unset = UNSET + request_id: None | str | Unset = UNSET + additional_properties: dict[str, Any] = _attrs_field(init=False, factory=dict) + + def to_dict(self) -> dict[str, Any]: + from ..models.chain_poll_template import ChainPollTemplate + from ..models.create_update_registered_scorer_response import CreateUpdateRegisteredScorerResponse + from ..models.decision_scorer_db import DecisionScorerDB + from ..models.fine_tuned_scorer_response import FineTunedScorerResponse + from ..models.generated_scorer_response import GeneratedScorerResponse + from ..models.luna_3_scorer_response import Luna3ScorerResponse + + id = self.id + + version = self.version + + scorer_id = self.scorer_id + + created_at = self.created_at.isoformat() + + updated_at = self.updated_at.isoformat() + + generated_scorer: dict[str, Any] | None | Unset + if isinstance(self.generated_scorer, Unset): + generated_scorer = UNSET + elif isinstance(self.generated_scorer, GeneratedScorerResponse): + generated_scorer = self.generated_scorer.to_dict() + else: + generated_scorer = self.generated_scorer + + registered_scorer: dict[str, Any] | None | Unset + if isinstance(self.registered_scorer, Unset): + registered_scorer = UNSET + elif isinstance(self.registered_scorer, CreateUpdateRegisteredScorerResponse): + registered_scorer = self.registered_scorer.to_dict() + else: + registered_scorer = self.registered_scorer + + finetuned_scorer: dict[str, Any] | None | Unset + if isinstance(self.finetuned_scorer, Unset): + finetuned_scorer = UNSET + elif isinstance(self.finetuned_scorer, FineTunedScorerResponse): + finetuned_scorer = self.finetuned_scorer.to_dict() + else: + finetuned_scorer = self.finetuned_scorer + + luna3_scorer: dict[str, Any] | None | Unset + if isinstance(self.luna3_scorer, Unset): + luna3_scorer = UNSET + elif isinstance(self.luna3_scorer, Luna3ScorerResponse): + luna3_scorer = self.luna3_scorer.to_dict() + else: + luna3_scorer = self.luna3_scorer + + decision_scorer: dict[str, Any] | None | Unset + if isinstance(self.decision_scorer, Unset): + decision_scorer = UNSET + elif isinstance(self.decision_scorer, DecisionScorerDB): + decision_scorer = self.decision_scorer.to_dict() + else: + decision_scorer = self.decision_scorer + + model_name: None | str | Unset + if isinstance(self.model_name, Unset): + model_name = UNSET + else: + model_name = self.model_name + + num_judges: int | None | Unset + if isinstance(self.num_judges, Unset): + num_judges = UNSET + else: + num_judges = self.num_judges + + cot_enabled: bool | None | Unset + if isinstance(self.cot_enabled, Unset): + cot_enabled = UNSET + else: + cot_enabled = self.cot_enabled + + runtime: None | str | Unset + if isinstance(self.runtime, Unset): + runtime = UNSET + else: + runtime = self.runtime + + code_sha256: None | str | Unset + if isinstance(self.code_sha256, Unset): + code_sha256 = UNSET + else: + code_sha256 = self.code_sha256 + + chain_poll_template: dict[str, Any] | None | Unset + if isinstance(self.chain_poll_template, Unset): + chain_poll_template = UNSET + elif isinstance(self.chain_poll_template, ChainPollTemplate): + chain_poll_template = self.chain_poll_template.to_dict() + else: + chain_poll_template = self.chain_poll_template + + scoreable_node_types: list[str] | None | Unset + if isinstance(self.scoreable_node_types, Unset): + scoreable_node_types = UNSET + elif isinstance(self.scoreable_node_types, list): + scoreable_node_types = self.scoreable_node_types + + else: + scoreable_node_types = self.scoreable_node_types + + output_type: None | str | Unset + if isinstance(self.output_type, Unset): + output_type = UNSET + elif isinstance(self.output_type, OutputTypeEnum): + output_type = self.output_type.value + else: + output_type = self.output_type + + allowed_model: bool | None | Unset + if isinstance(self.allowed_model, Unset): + allowed_model = UNSET + else: + allowed_model = self.allowed_model + + created_by: None | str | Unset + if isinstance(self.created_by, Unset): + created_by = UNSET + else: + created_by = self.created_by + + validation_task_id: None | str | Unset + if isinstance(self.validation_task_id, Unset): + validation_task_id = UNSET + else: + validation_task_id = self.validation_task_id + + request_id: None | str | Unset + if isinstance(self.request_id, Unset): + request_id = UNSET + else: + request_id = self.request_id + + field_dict: dict[str, Any] = {} + field_dict.update(self.additional_properties) + field_dict.update( + {"id": id, "version": version, "scorer_id": scorer_id, "created_at": created_at, "updated_at": updated_at} + ) + if generated_scorer is not UNSET: + field_dict["generated_scorer"] = generated_scorer + if registered_scorer is not UNSET: + field_dict["registered_scorer"] = registered_scorer + if finetuned_scorer is not UNSET: + field_dict["finetuned_scorer"] = finetuned_scorer + if luna3_scorer is not UNSET: + field_dict["luna3_scorer"] = luna3_scorer + if decision_scorer is not UNSET: + field_dict["decision_scorer"] = decision_scorer + if model_name is not UNSET: + field_dict["model_name"] = model_name + if num_judges is not UNSET: + field_dict["num_judges"] = num_judges + if cot_enabled is not UNSET: + field_dict["cot_enabled"] = cot_enabled + if runtime is not UNSET: + field_dict["runtime"] = runtime + if code_sha256 is not UNSET: + field_dict["code_sha256"] = code_sha256 + if chain_poll_template is not UNSET: + field_dict["chain_poll_template"] = chain_poll_template + if scoreable_node_types is not UNSET: + field_dict["scoreable_node_types"] = scoreable_node_types + if output_type is not UNSET: + field_dict["output_type"] = output_type + if allowed_model is not UNSET: + field_dict["allowed_model"] = allowed_model + if created_by is not UNSET: + field_dict["created_by"] = created_by + if validation_task_id is not UNSET: + field_dict["validation_task_id"] = validation_task_id + if request_id is not UNSET: + field_dict["request_id"] = request_id + + return field_dict + + @classmethod + def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: + from ..models.chain_poll_template import ChainPollTemplate + from ..models.create_update_registered_scorer_response import CreateUpdateRegisteredScorerResponse + from ..models.decision_scorer_db import DecisionScorerDB + from ..models.fine_tuned_scorer_response import FineTunedScorerResponse + from ..models.generated_scorer_response import GeneratedScorerResponse + from ..models.luna_3_scorer_response import Luna3ScorerResponse + + d = dict(src_dict) + id = d.pop("id") + + version = d.pop("version") + + scorer_id = d.pop("scorer_id") + + created_at = datetime.datetime.fromisoformat(d.pop("created_at")) + + updated_at = datetime.datetime.fromisoformat(d.pop("updated_at")) + + def _parse_generated_scorer(data: object) -> GeneratedScorerResponse | None | Unset: + if data is None: + return data + if isinstance(data, Unset): + return data + try: + if not isinstance(data, dict): + raise TypeError() + generated_scorer_type_0 = GeneratedScorerResponse.from_dict(data) + + return generated_scorer_type_0 + except: # noqa: E722 + pass + return cast(GeneratedScorerResponse | None | Unset, data) + + generated_scorer = _parse_generated_scorer(d.pop("generated_scorer", UNSET)) + + def _parse_registered_scorer(data: object) -> CreateUpdateRegisteredScorerResponse | None | Unset: + if data is None: + return data + if isinstance(data, Unset): + return data + try: + if not isinstance(data, dict): + raise TypeError() + registered_scorer_type_0 = CreateUpdateRegisteredScorerResponse.from_dict(data) + + return registered_scorer_type_0 + except: # noqa: E722 + pass + return cast(CreateUpdateRegisteredScorerResponse | None | Unset, data) + + registered_scorer = _parse_registered_scorer(d.pop("registered_scorer", UNSET)) + + def _parse_finetuned_scorer(data: object) -> FineTunedScorerResponse | None | Unset: + if data is None: + return data + if isinstance(data, Unset): + return data + try: + if not isinstance(data, dict): + raise TypeError() + finetuned_scorer_type_0 = FineTunedScorerResponse.from_dict(data) + + return finetuned_scorer_type_0 + except: # noqa: E722 + pass + return cast(FineTunedScorerResponse | None | Unset, data) + + finetuned_scorer = _parse_finetuned_scorer(d.pop("finetuned_scorer", UNSET)) + + def _parse_luna3_scorer(data: object) -> Luna3ScorerResponse | None | Unset: + if data is None: + return data + if isinstance(data, Unset): + return data + try: + if not isinstance(data, dict): + raise TypeError() + luna3_scorer_type_0 = Luna3ScorerResponse.from_dict(data) + + return luna3_scorer_type_0 + except: # noqa: E722 + pass + return cast(Luna3ScorerResponse | None | Unset, data) + + luna3_scorer = _parse_luna3_scorer(d.pop("luna3_scorer", UNSET)) + + def _parse_decision_scorer(data: object) -> DecisionScorerDB | None | Unset: + if data is None: + return data + if isinstance(data, Unset): + return data + try: + if not isinstance(data, dict): + raise TypeError() + decision_scorer_type_0 = DecisionScorerDB.from_dict(data) + + return decision_scorer_type_0 + except: # noqa: E722 + pass + return cast(DecisionScorerDB | None | Unset, data) + + decision_scorer = _parse_decision_scorer(d.pop("decision_scorer", UNSET)) + + def _parse_model_name(data: object) -> None | str | Unset: + if data is None: + return data + if isinstance(data, Unset): + return data + return cast(None | str | Unset, data) + + model_name = _parse_model_name(d.pop("model_name", UNSET)) + + def _parse_num_judges(data: object) -> int | None | Unset: + if data is None: + return data + if isinstance(data, Unset): + return data + return cast(int | None | Unset, data) + + num_judges = _parse_num_judges(d.pop("num_judges", UNSET)) + + def _parse_cot_enabled(data: object) -> bool | None | Unset: + if data is None: + return data + if isinstance(data, Unset): + return data + return cast(bool | None | Unset, data) + + cot_enabled = _parse_cot_enabled(d.pop("cot_enabled", UNSET)) + + def _parse_runtime(data: object) -> None | str | Unset: + if data is None: + return data + if isinstance(data, Unset): + return data + return cast(None | str | Unset, data) + + runtime = _parse_runtime(d.pop("runtime", UNSET)) + + def _parse_code_sha256(data: object) -> None | str | Unset: + if data is None: + return data + if isinstance(data, Unset): + return data + return cast(None | str | Unset, data) + + code_sha256 = _parse_code_sha256(d.pop("code_sha256", UNSET)) + + def _parse_chain_poll_template(data: object) -> ChainPollTemplate | None | Unset: + if data is None: + return data + if isinstance(data, Unset): + return data + try: + if not isinstance(data, dict): + raise TypeError() + chain_poll_template_type_0 = ChainPollTemplate.from_dict(data) + + return chain_poll_template_type_0 + except: # noqa: E722 + pass + return cast(ChainPollTemplate | None | Unset, data) + + chain_poll_template = _parse_chain_poll_template(d.pop("chain_poll_template", UNSET)) + + def _parse_scoreable_node_types(data: object) -> list[str] | None | Unset: + if data is None: + return data + if isinstance(data, Unset): + return data + try: + if not isinstance(data, list): + raise TypeError() + scoreable_node_types_type_0 = cast(list[str], data) + + return scoreable_node_types_type_0 + except: # noqa: E722 + pass + return cast(list[str] | None | Unset, data) + + scoreable_node_types = _parse_scoreable_node_types(d.pop("scoreable_node_types", UNSET)) + + def _parse_output_type(data: object) -> None | OutputTypeEnum | Unset: + if data is None: + return data + if isinstance(data, Unset): + return data + try: + if not isinstance(data, str): + raise TypeError() + output_type_type_0 = OutputTypeEnum(data) + + return output_type_type_0 + except: # noqa: E722 + pass + return cast(None | OutputTypeEnum | Unset, data) + + output_type = _parse_output_type(d.pop("output_type", UNSET)) + + def _parse_allowed_model(data: object) -> bool | None | Unset: + if data is None: + return data + if isinstance(data, Unset): + return data + return cast(bool | None | Unset, data) + + allowed_model = _parse_allowed_model(d.pop("allowed_model", UNSET)) + + def _parse_created_by(data: object) -> None | str | Unset: + if data is None: + return data + if isinstance(data, Unset): + return data + return cast(None | str | Unset, data) + + created_by = _parse_created_by(d.pop("created_by", UNSET)) + + def _parse_validation_task_id(data: object) -> None | str | Unset: + if data is None: + return data + if isinstance(data, Unset): + return data + return cast(None | str | Unset, data) + + validation_task_id = _parse_validation_task_id(d.pop("validation_task_id", UNSET)) + + def _parse_request_id(data: object) -> None | str | Unset: + if data is None: + return data + if isinstance(data, Unset): + return data + return cast(None | str | Unset, data) + + request_id = _parse_request_id(d.pop("request_id", UNSET)) + + scorer_version_list_item = cls( + id=id, + version=version, + scorer_id=scorer_id, + created_at=created_at, + updated_at=updated_at, + generated_scorer=generated_scorer, + registered_scorer=registered_scorer, + finetuned_scorer=finetuned_scorer, + luna3_scorer=luna3_scorer, + decision_scorer=decision_scorer, + model_name=model_name, + num_judges=num_judges, + cot_enabled=cot_enabled, + runtime=runtime, + code_sha256=code_sha256, + chain_poll_template=chain_poll_template, + scoreable_node_types=scoreable_node_types, + output_type=output_type, + allowed_model=allowed_model, + created_by=created_by, + validation_task_id=validation_task_id, + request_id=request_id, + ) + + scorer_version_list_item.additional_properties = d + return scorer_version_list_item + + @property + def additional_keys(self) -> list[str]: + return list(self.additional_properties.keys()) + + def __getitem__(self, key: str) -> Any: + return self.additional_properties[key] + + def __setitem__(self, key: str, value: Any) -> None: + self.additional_properties[key] = value + + def __delitem__(self, key: str) -> None: + del self.additional_properties[key] + + def __contains__(self, key: str) -> bool: + return key in self.additional_properties diff --git a/src/splunk_ao/resources/models/user_action.py b/src/splunk_ao/resources/models/user_action.py index 8c2628b6..0eea0f05 100644 --- a/src/splunk_ao/resources/models/user_action.py +++ b/src/splunk_ao/resources/models/user_action.py @@ -5,6 +5,7 @@ class UserAction(str, Enum): CHANGE_ROLE_TO_ADMIN = "change_role_to_admin" CHANGE_ROLE_TO_CAPABILITY_BASED = "change_role_to_capability_based" CHANGE_ROLE_TO_MANAGER = "change_role_to_manager" + CHANGE_ROLE_TO_ORG_ANNOTATOR = "change_role_to_org_annotator" CHANGE_ROLE_TO_READ_ONLY = "change_role_to_read_only" CHANGE_ROLE_TO_USER = "change_role_to_user" DELETE = "delete" diff --git a/src/splunk_ao/resources/models/user_role.py b/src/splunk_ao/resources/models/user_role.py index 6ae598c7..1ebc79db 100644 --- a/src/splunk_ao/resources/models/user_role.py +++ b/src/splunk_ao/resources/models/user_role.py @@ -5,6 +5,7 @@ class UserRole(str, Enum): ADMIN = "admin" CAPABILITY_BASED = "capability_based" MANAGER = "manager" + ORG_ANNOTATOR = "org_annotator" READ_ONLY = "read_only" USER = "user" diff --git a/src/splunk_ao/resources/models/valid_result.py b/src/splunk_ao/resources/models/valid_result.py index 9ec42086..77de38c1 100644 --- a/src/splunk_ao/resources/models/valid_result.py +++ b/src/splunk_ao/resources/models/valid_result.py @@ -8,6 +8,7 @@ from ..models.chain_aggregation_strategy import ChainAggregationStrategy from ..models.node_type import NodeType +from ..models.valid_result_score_type import ValidResultScoreType from ..types import UNSET, Unset if TYPE_CHECKING: @@ -22,7 +23,7 @@ class ValidResult: """ Attributes: - score_type (str): + score_type (ValidResultScoreType): scoreable_node_types (list[NodeType]): test_scores (list[TestScore]): result_type (Literal['valid'] | Unset): Default: 'valid'. @@ -31,7 +32,7 @@ class ValidResult: environment (None | ScorerEnvironment | Unset): """ - score_type: str + score_type: ValidResultScoreType scoreable_node_types: list[NodeType] test_scores: list[TestScore] result_type: Literal["valid"] | Unset = "valid" @@ -43,7 +44,7 @@ class ValidResult: def to_dict(self) -> dict[str, Any]: from ..models.scorer_environment import ScorerEnvironment - score_type = self.score_type + score_type = self.score_type.value scoreable_node_types = [] for scoreable_node_types_item_data in self.scoreable_node_types: @@ -97,7 +98,7 @@ def from_dict(cls: type[T], src_dict: Mapping[str, Any]) -> T: from ..models.test_score import TestScore d = dict(src_dict) - score_type = d.pop("score_type") + score_type = ValidResultScoreType(d.pop("score_type")) scoreable_node_types = [] _scoreable_node_types = d.pop("scoreable_node_types") diff --git a/src/splunk_ao/resources/models/valid_result_score_type.py b/src/splunk_ao/resources/models/valid_result_score_type.py new file mode 100644 index 00000000..3881c446 --- /dev/null +++ b/src/splunk_ao/resources/models/valid_result_score_type.py @@ -0,0 +1,11 @@ +from enum import Enum + + +class ValidResultScoreType(str, Enum): + BOOL = "bool" + FLOAT = "float" + INT = "int" + STR = "str" + + def __str__(self) -> str: + return str(self.value) diff --git a/src/splunk_ao/resources/models/validate_decision_scorer_log_record_request.py b/src/splunk_ao/resources/models/validate_decision_scorer_log_record_request.py index 673f5c4a..957f4c5c 100644 --- a/src/splunk_ao/resources/models/validate_decision_scorer_log_record_request.py +++ b/src/splunk_ao/resources/models/validate_decision_scorer_log_record_request.py @@ -49,6 +49,7 @@ class ValidateDecisionScorerLogRecordRequest: log_stream_id (None | str | Unset): Log stream id associated with the traces. experiment_id (None | str | Unset): Experiment id associated with the traces. metrics_testing_id (None | str | Unset): Metrics testing id associated with the traces. + access_view_id (None | str | Unset): Assigned log view for restricted access. filters (list[LogRecordsBooleanFilter | LogRecordsCollectionFilter | LogRecordsDateFilter | LogRecordsFullyAnnotatedFilter | LogRecordsIDFilter | LogRecordsNumberFilter | LogRecordsTextFilter] | Unset): filter_tree (AndNodeLogRecordsFilter | FilterLeafLogRecordsFilter | None | NotNodeLogRecordsFilter | @@ -74,6 +75,7 @@ class ValidateDecisionScorerLogRecordRequest: log_stream_id: None | str | Unset = UNSET experiment_id: None | str | Unset = UNSET metrics_testing_id: None | str | Unset = UNSET + access_view_id: None | str | Unset = UNSET filters: ( list[ LogRecordsBooleanFilter @@ -151,6 +153,12 @@ def to_dict(self) -> dict[str, Any]: else: metrics_testing_id = self.metrics_testing_id + access_view_id: None | str | Unset + if isinstance(self.access_view_id, Unset): + access_view_id = UNSET + else: + access_view_id = self.access_view_id + filters: list[dict[str, Any]] | Unset = UNSET if not isinstance(self.filters, Unset): filters = [] @@ -241,6 +249,8 @@ def to_dict(self) -> dict[str, Any]: field_dict["experiment_id"] = experiment_id if metrics_testing_id is not UNSET: field_dict["metrics_testing_id"] = metrics_testing_id + if access_view_id is not UNSET: + field_dict["access_view_id"] = access_view_id if filters is not UNSET: field_dict["filters"] = filters if filter_tree is not UNSET: @@ -324,6 +334,15 @@ def _parse_metrics_testing_id(data: object) -> None | str | Unset: metrics_testing_id = _parse_metrics_testing_id(d.pop("metrics_testing_id", UNSET)) + def _parse_access_view_id(data: object) -> None | str | Unset: + if data is None: + return data + if isinstance(data, Unset): + return data + return cast(None | str | Unset, data) + + access_view_id = _parse_access_view_id(d.pop("access_view_id", UNSET)) + _filters = d.pop("filters", UNSET) filters: ( list[ @@ -564,6 +583,7 @@ def _parse_answer_options( log_stream_id=log_stream_id, experiment_id=experiment_id, metrics_testing_id=metrics_testing_id, + access_view_id=access_view_id, filters=filters, filter_tree=filter_tree, sort=sort, diff --git a/src/splunk_ao/resources/models/validate_llm_scorer_log_record_request.py b/src/splunk_ao/resources/models/validate_llm_scorer_log_record_request.py index cf272f18..bf099d9b 100644 --- a/src/splunk_ao/resources/models/validate_llm_scorer_log_record_request.py +++ b/src/splunk_ao/resources/models/validate_llm_scorer_log_record_request.py @@ -49,6 +49,7 @@ class ValidateLLMScorerLogRecordRequest: log_stream_id (None | str | Unset): Log stream id associated with the traces. experiment_id (None | str | Unset): Experiment id associated with the traces. metrics_testing_id (None | str | Unset): Metrics testing id associated with the traces. + access_view_id (None | str | Unset): Assigned log view for restricted access. filters (list[LogRecordsBooleanFilter | LogRecordsCollectionFilter | LogRecordsDateFilter | LogRecordsFullyAnnotatedFilter | LogRecordsIDFilter | LogRecordsNumberFilter | LogRecordsTextFilter] | Unset): filter_tree (AndNodeLogRecordsFilter | FilterLeafLogRecordsFilter | None | NotNodeLogRecordsFilter | @@ -77,6 +78,7 @@ class ValidateLLMScorerLogRecordRequest: log_stream_id: None | str | Unset = UNSET experiment_id: None | str | Unset = UNSET metrics_testing_id: None | str | Unset = UNSET + access_view_id: None | str | Unset = UNSET filters: ( list[ LogRecordsBooleanFilter @@ -156,6 +158,12 @@ def to_dict(self) -> dict[str, Any]: else: metrics_testing_id = self.metrics_testing_id + access_view_id: None | str | Unset + if isinstance(self.access_view_id, Unset): + access_view_id = UNSET + else: + access_view_id = self.access_view_id + filters: list[dict[str, Any]] | Unset = UNSET if not isinstance(self.filters, Unset): filters = [] @@ -246,6 +254,8 @@ def to_dict(self) -> dict[str, Any]: field_dict["experiment_id"] = experiment_id if metrics_testing_id is not UNSET: field_dict["metrics_testing_id"] = metrics_testing_id + if access_view_id is not UNSET: + field_dict["access_view_id"] = access_view_id if filters is not UNSET: field_dict["filters"] = filters if filter_tree is not UNSET: @@ -333,6 +343,15 @@ def _parse_metrics_testing_id(data: object) -> None | str | Unset: metrics_testing_id = _parse_metrics_testing_id(d.pop("metrics_testing_id", UNSET)) + def _parse_access_view_id(data: object) -> None | str | Unset: + if data is None: + return data + if isinstance(data, Unset): + return data + return cast(None | str | Unset, data) + + access_view_id = _parse_access_view_id(d.pop("access_view_id", UNSET)) + _filters = d.pop("filters", UNSET) filters: ( list[ @@ -560,6 +579,7 @@ def _parse_normalized_input_type_0_item(data: object) -> FileContentPart | TextC log_stream_id=log_stream_id, experiment_id=experiment_id, metrics_testing_id=metrics_testing_id, + access_view_id=access_view_id, filters=filters, filter_tree=filter_tree, sort=sort,