diff --git a/.generator/schemas/v2/openapi.yaml b/.generator/schemas/v2/openapi.yaml index c554255f1343..1e90d12d657d 100644 --- a/.generator/schemas/v2/openapi.yaml +++ b/.generator/schemas/v2/openapi.yaml @@ -932,6 +932,24 @@ components: required: false schema: type: string + ModelLabProjectIDPathParameter: + description: The ID of the Model Lab project. + in: path + name: project_id + required: true + schema: + example: 1 + format: int64 + type: integer + ModelLabRunIDPathParameter: + description: The ID of the Model Lab run. + in: path + name: run_id + required: true + schema: + example: 42 + format: int64 + type: integer NDMPageNumber: description: Specific page number to return. Defaults to 0. in: query @@ -46893,6 +46911,758 @@ components: maxLength: 255 type: string type: object + ModelLabArtifactInfo: + description: Information about a project-level artifact file. + properties: + artifact_path: + description: The full artifact path relative to the project's artifact root. + example: projects/1/artifacts/model.pkl + type: string + created_at: + description: The date and time the artifact was created. + example: "2024-01-20T10:00:00Z" + format: date-time + type: string + file_size: + description: The size of the file in bytes. + format: int64 + nullable: true + type: integer + filename: + description: The filename of the artifact. + example: model.pkl + type: string + required: + - filename + - artifact_path + - created_at + type: object + ModelLabArtifactObjectInfo: + description: Information about an artifact file or directory within a run. + properties: + file_size: + description: The size of the file in bytes. + format: int64 + nullable: true + type: integer + is_dir: + description: Whether this artifact entry is a directory. + example: false + type: boolean + path: + description: The path of the artifact relative to the run's artifact root. + example: model/weights.pt + type: string + required: + - path + - is_dir + type: object + ModelLabFacetKeysAttributes: + description: Available facet key names for filtering resources. + properties: + metrics: + description: The list of available metric facet keys. + example: + - accuracy + items: + type: string + nullable: true + type: array + parameters: + description: The list of available parameter facet keys. + example: + - learning_rate + items: + type: string + type: array + tags: + description: The list of available tag facet keys. + example: + - model + items: + type: string + type: array + required: + - parameters + - tags + - metrics + type: object + ModelLabFacetKeysData: + description: A facet keys JSON:API resource object. + properties: + attributes: + $ref: "#/components/schemas/ModelLabFacetKeysAttributes" + id: + description: The unique identifier of the facet keys resource. + example: "1" + type: string + type: + $ref: "#/components/schemas/ModelLabFacetKeysType" + required: + - id + - type + - attributes + type: object + ModelLabFacetKeysResponse: + description: Response containing available facet keys. + properties: + data: + $ref: "#/components/schemas/ModelLabFacetKeysData" + required: + - data + type: object + ModelLabFacetKeysType: + description: The JSON:API type for a facet keys resource. + enum: + - facet_keys + example: facet_keys + type: string + x-enum-varnames: + - FACET_KEYS + ModelLabFacetType: + description: The type of facet for filtering Model Lab runs. + enum: + - parameter + - attribute + - tag + - metric + example: tag + type: string + x-enum-varnames: + - PARAMETER + - ATTRIBUTE + - TAG + - METRIC + ModelLabFacetValuesAttributes: + description: Available values for a specific facet key. + properties: + facet_name: + description: The name of the facet. + example: model + type: string + facet_type: + description: The type of the facet. + example: tag + type: string + metric_stat_ranges: + description: The ranges for each metric statistic. + items: + $ref: "#/components/schemas/ModelLabMetricStatRange" + type: array + numeric_range: + $ref: "#/components/schemas/ModelLabNumericRange" + values: + description: The list of available string values for this facet. + example: + - gpt4 + items: + type: string + type: array + required: + - facet_type + - facet_name + - values + type: object + ModelLabFacetValuesData: + description: A facet values JSON:API resource object. + properties: + attributes: + $ref: "#/components/schemas/ModelLabFacetValuesAttributes" + id: + description: The unique identifier of the facet values resource. + example: "1" + type: string + type: + $ref: "#/components/schemas/ModelLabFacetValuesType" + required: + - id + - type + - attributes + type: object + ModelLabFacetValuesResponse: + description: Response containing available values for a facet key. + properties: + data: + $ref: "#/components/schemas/ModelLabFacetValuesData" + required: + - data + type: object + ModelLabFacetValuesType: + description: The JSON:API type for a facet values resource. + enum: + - facet_values + example: facet_values + type: string + x-enum-varnames: + - FACET_VALUES + ModelLabMetricStatRange: + description: The range of values for a specific metric statistic. + properties: + max: + description: The maximum value of the statistic. + example: 1.0 + format: double + type: number + min: + description: The minimum value of the statistic. + example: 0.0 + format: double + type: number + stat: + description: The metric statistic name. + example: mean + type: string + required: + - stat + - min + - max + type: object + ModelLabMetricSummary: + description: Summary statistics for a metric recorded during a Model Lab run. + properties: + count: + description: The total number of recorded values. + example: 100 + format: int64 + type: integer + first_step: + description: The first step at which the metric was recorded. + format: int64 + nullable: true + type: integer + key: + description: The metric name. + example: accuracy + type: string + last_step: + description: The last step at which the metric was recorded. + format: int64 + nullable: true + type: integer + latest: + description: The most recently recorded value. + format: double + nullable: true + type: number + max: + description: The maximum recorded value. + format: double + nullable: true + type: number + mean: + description: The mean of recorded values. + format: double + nullable: true + type: number + min: + description: The minimum recorded value. + format: double + nullable: true + type: number + stddev: + description: The standard deviation of recorded values. + format: double + nullable: true + type: number + required: + - key + - count + type: object + ModelLabNumericRange: + description: The numeric range of values for a facet. + properties: + max: + description: The maximum value. + example: 1.0 + format: double + type: number + min: + description: The minimum value. + example: 0.0 + format: double + type: number + required: + - min + - max + type: object + ModelLabPageMeta: + description: Pagination metadata for a list response. + properties: + page: + $ref: "#/components/schemas/ModelLabPageMetaPage" + required: + - page + type: object + ModelLabPageMetaPage: + description: Pagination details for a list response. + properties: + first_number: + description: The first page number. + format: int64 + type: integer + last_number: + description: The last page number. + format: int64 + type: integer + next_number: + description: The next page number. + format: int64 + nullable: true + type: integer + number: + description: The current page number. + example: 1 + format: int64 + type: integer + prev_number: + description: The previous page number. + format: int64 + nullable: true + type: integer + size: + description: The number of items per page. + example: 25 + format: int64 + type: integer + total: + description: The total number of items. + example: 100 + format: int64 + type: integer + type: + description: The pagination type. + type: string + required: + - number + - size + - total + type: object + ModelLabPaginationLinks: + description: Pagination links for navigating list responses. + properties: + first: + description: Link to the first page. + type: string + last: + description: Link to the last page. + type: string + next: + description: Link to the next page. + nullable: true + type: string + prev: + description: Link to the previous page. + nullable: true + type: string + self: + description: Link to the current page. + type: string + type: object + ModelLabProjectArtifactsAttributes: + description: Artifact listing for a Model Lab project. + properties: + files: + description: The list of artifact files associated with the project. + items: + $ref: "#/components/schemas/ModelLabArtifactInfo" + type: array + required: + - files + type: object + ModelLabProjectArtifactsData: + description: A project artifacts JSON:API resource object. + properties: + attributes: + $ref: "#/components/schemas/ModelLabProjectArtifactsAttributes" + id: + description: The unique identifier of the project artifacts resource. + example: "1" + type: string + type: + $ref: "#/components/schemas/ModelLabProjectArtifactsType" + required: + - id + - type + - attributes + type: object + ModelLabProjectArtifactsResponse: + description: Response containing the artifact listing for a Model Lab project. + properties: + data: + $ref: "#/components/schemas/ModelLabProjectArtifactsData" + required: + - data + type: object + ModelLabProjectArtifactsType: + description: The JSON:API type for a project artifacts resource. + enum: + - project_files + example: project_files + type: string + x-enum-varnames: + - PROJECT_FILES + ModelLabProjectAttributes: + description: Attributes of a Model Lab project. + properties: + artifact_storage_location: + description: The storage location for project artifacts. + example: s3://bucket/active-project + type: string + created_at: + description: The date and time the project was created. + example: "2024-01-20T10:00:00Z" + format: date-time + type: string + deleted_at: + description: The date and time the project was soft-deleted. + format: date-time + nullable: true + type: string + description: + description: A description of the project. + example: A machine learning training project. + type: string + external_url: + description: An optional external URL associated with the project. + nullable: true + type: string + is_starred: + description: Whether the project is starred by the current user. + example: false + type: boolean + name: + description: The name of the project. + example: active-project + type: string + owner_id: + description: The UUID of the project owner. + nullable: true + type: string + tags: + description: The list of tags associated with the project. + items: + $ref: "#/components/schemas/ModelLabTag" + type: array + updated_at: + description: The date and time the project was last updated. + example: "2024-01-20T11:00:00Z" + format: date-time + type: string + required: + - name + - description + - artifact_storage_location + - created_at + - updated_at + - tags + - is_starred + type: object + ModelLabProjectData: + description: A Model Lab project JSON:API resource object. + properties: + attributes: + $ref: "#/components/schemas/ModelLabProjectAttributes" + id: + description: The unique identifier of the project. + example: "2" + type: string + type: + $ref: "#/components/schemas/ModelLabProjectType" + required: + - id + - type + - attributes + type: object + ModelLabProjectFacetType: + description: The type of facet for filtering Model Lab projects. + enum: + - tag + example: tag + type: string + x-enum-varnames: + - TAG + ModelLabProjectResponse: + description: Response containing a single Model Lab project. + properties: + data: + $ref: "#/components/schemas/ModelLabProjectData" + required: + - data + type: object + ModelLabProjectType: + description: The JSON:API type for a Model Lab project resource. + enum: + - projects + example: projects + type: string + x-enum-varnames: + - PROJECTS + ModelLabProjectsResponse: + description: Response containing a list of Model Lab projects with pagination metadata. + properties: + data: + description: The list of projects. + items: + $ref: "#/components/schemas/ModelLabProjectData" + type: array + links: + $ref: "#/components/schemas/ModelLabPaginationLinks" + meta: + $ref: "#/components/schemas/ModelLabPageMeta" + required: + - data + - meta + type: object + ModelLabRunArtifactsAttributes: + description: Artifact listing for a Model Lab run. + properties: + files: + description: The list of artifact files and directories. + items: + $ref: "#/components/schemas/ModelLabArtifactObjectInfo" + type: array + path_in_project: + description: The path of the run's artifacts relative to the project's artifact root. + example: runs/42 + type: string + required: + - path_in_project + - files + type: object + ModelLabRunArtifactsData: + description: A run artifacts JSON:API resource object. + properties: + attributes: + $ref: "#/components/schemas/ModelLabRunArtifactsAttributes" + id: + description: The unique identifier of the artifacts resource. + example: "42" + type: string + type: + $ref: "#/components/schemas/ModelLabRunArtifactsType" + required: + - id + - type + - attributes + type: object + ModelLabRunArtifactsResponse: + description: Response containing the artifact listing for a Model Lab run. + properties: + data: + $ref: "#/components/schemas/ModelLabRunArtifactsData" + required: + - data + type: object + ModelLabRunArtifactsType: + description: The JSON:API type for a run artifacts resource. + enum: + - artifacts + example: artifacts + type: string + x-enum-varnames: + - ARTIFACTS + ModelLabRunAttributes: + description: Attributes of a Model Lab run. + properties: + completed_at: + description: The date and time the run completed. + format: date-time + nullable: true + type: string + created_at: + description: The date and time the run was created. + example: "2024-01-20T10:00:00Z" + format: date-time + type: string + deleted_at: + description: The date and time the run was soft-deleted. + format: date-time + nullable: true + type: string + descendant_match: + description: Whether a descendant run matched the applied filters. + example: false + type: boolean + description: + description: A description of the run. + example: Fine-tuning run with custom hyperparameters. + type: string + duration: + description: The duration of the run in seconds. + format: double + nullable: true + type: number + external_url: + description: An optional external URL associated with the run. + nullable: true + type: string + has_children: + description: Whether the run has child runs. + example: false + type: boolean + is_pinned: + description: Whether the run is pinned by the current user. + example: false + type: boolean + metric_summaries: + description: Summary statistics for metrics recorded during the run. + items: + $ref: "#/components/schemas/ModelLabMetricSummary" + type: array + mlflow_artifact_location: + description: The MLflow artifact storage location for this run. + example: s3://bucket/active-run + type: string + name: + description: The name of the run. + example: training-run-1 + type: string + owner_id: + description: The UUID of the run owner. + nullable: true + type: string + params: + description: The list of parameters used for the run. + items: + $ref: "#/components/schemas/ModelLabRunParam" + nullable: true + type: array + project_id: + description: The ID of the project this run belongs to. + example: 101 + format: int64 + type: integer + started_at: + description: The date and time the run started. + example: "2024-01-20T10:00:00Z" + format: date-time + type: string + status: + $ref: "#/components/schemas/ModelLabRunStatus" + tags: + description: The list of tags associated with the run. + items: + $ref: "#/components/schemas/ModelLabTag" + type: array + updated_at: + description: The date and time the run was last updated. + example: "2024-01-20T11:00:00Z" + format: date-time + type: string + required: + - project_id + - name + - description + - status + - mlflow_artifact_location + - started_at + - created_at + - updated_at + - tags + - params + - metric_summaries + - is_pinned + - has_children + - descendant_match + type: object + ModelLabRunData: + description: A Model Lab run JSON:API resource object. + properties: + attributes: + $ref: "#/components/schemas/ModelLabRunAttributes" + id: + description: The unique identifier of the run. + example: "42" + type: string + type: + $ref: "#/components/schemas/ModelLabRunType" + required: + - id + - type + - attributes + type: object + ModelLabRunParam: + description: A key-value parameter for a Model Lab run. + properties: + key: + description: The parameter key. + example: algorithm + type: string + value: + description: The parameter value. + example: gpt4 + type: string + required: + - key + - value + type: object + ModelLabRunResponse: + description: Response containing a single Model Lab run. + properties: + data: + $ref: "#/components/schemas/ModelLabRunData" + required: + - data + type: object + ModelLabRunStatus: + description: The status of a Model Lab run. + enum: + - pending + - running + - completed + - failed + - killed + - unresponsive + - paused + example: running + type: string + x-enum-varnames: + - PENDING + - RUNNING + - COMPLETED + - FAILED + - KILLED + - UNRESPONSIVE + - PAUSED + ModelLabRunType: + description: The JSON:API type for a Model Lab run resource. + enum: + - runs + example: runs + type: string + x-enum-varnames: + - RUNS + ModelLabRunsResponse: + description: Response containing a list of Model Lab runs with pagination metadata. + properties: + data: + description: The list of runs. + items: + $ref: "#/components/schemas/ModelLabRunData" + type: array + links: + $ref: "#/components/schemas/ModelLabPaginationLinks" + meta: + $ref: "#/components/schemas/ModelLabPageMeta" + required: + - data + - meta + type: object + ModelLabTag: + description: A key-value tag attached to a resource. + properties: + key: + description: The tag key. + example: model + type: string + value: + description: The tag value. + example: opus + type: string + required: + - key + - value + type: object MonitorAlertTriggerAttributes: description: Attributes for a monitor alert trigger. properties: @@ -119518,6 +120288,947 @@ paths: "x-permission": operator: OPEN permissions: [] + /api/v2/model-lab-api/artifacts/content: + get: + description: Download the raw content of a Model Lab artifact file. + operationId: GetModelLabArtifactContent + parameters: + - description: ID of the project. + in: query + name: project_id + required: true + schema: + example: "1" + type: string + - description: Path to the artifact relative to the project directory. + in: query + name: artifact_path + required: true + schema: + example: runs/42/model/weights.pt + type: string + responses: + "200": + content: + application/octet-stream: + examples: + default: + value: "" + schema: + format: binary + type: string + description: OK + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Bad Request + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + "500": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Internal Server Error + summary: Get Model Lab artifact content + tags: + - Model Lab API + x-unstable: |- + **Note**: This endpoint is in preview and is subject to change. + If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/). + /api/v2/model-lab-api/facet-keys: + get: + description: List all available facet keys for filtering Model Lab runs. + operationId: ListModelLabRunFacetKeys + parameters: + - description: Filter by project ID. + in: query + name: filter[project_id] + required: true + schema: + example: 101 + format: int64 + type: integer + responses: + "200": + content: + application/json: + examples: + default: + value: + data: + attributes: + metrics: + - accuracy + - loss + parameters: + - learning_rate + - algorithm + tags: + - model + - stage + id: "1" + type: facet_keys + schema: + $ref: "#/components/schemas/ModelLabFacetKeysResponse" + description: OK + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Bad Request + "404": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Not Found + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + "500": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Internal Server Error + summary: List Model Lab run facet keys + tags: + - Model Lab API + x-unstable: |- + **Note**: This endpoint is in preview and is subject to change. + If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/). + /api/v2/model-lab-api/facet-values: + get: + description: List available facet values for a specific run facet key. + operationId: ListModelLabRunFacetValues + parameters: + - description: Filter by project ID. + in: query + name: filter[project_id] + required: true + schema: + example: 101 + format: int64 + type: integer + - description: "Facet type. Valid values: parameter, attribute, tag, metric." + in: query + name: facet_type + required: true + schema: + $ref: "#/components/schemas/ModelLabFacetType" + - description: Facet name. + in: query + name: facet_name + required: true + schema: + example: algorithm + type: string + responses: + "200": + content: + application/json: + examples: + default: + value: + data: + attributes: + facet_name: algorithm + facet_type: parameter + values: + - gpt4 + - dbscan + id: "1" + type: facet_values + schema: + $ref: "#/components/schemas/ModelLabFacetValuesResponse" + description: OK + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Bad Request + "404": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Not Found + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + "500": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Internal Server Error + summary: List Model Lab run facet values + tags: + - Model Lab API + x-unstable: |- + **Note**: This endpoint is in preview and is subject to change. + If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/). + /api/v2/model-lab-api/project-facet-keys: + get: + description: List all available facet keys for filtering Model Lab projects. + operationId: ListModelLabProjectFacetKeys + responses: + "200": + content: + application/json: + examples: + default: + value: + data: + attributes: + metrics: [] + parameters: [] + tags: + - model + - stage + id: "1" + type: facet_keys + schema: + $ref: "#/components/schemas/ModelLabFacetKeysResponse" + description: OK + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + "500": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Internal Server Error + summary: List Model Lab project facet keys + tags: + - Model Lab API + x-unstable: |- + **Note**: This endpoint is in preview and is subject to change. + If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/). + /api/v2/model-lab-api/project-facet-values: + get: + description: List available facet values for a specific project facet key. + operationId: ListModelLabProjectFacetValues + parameters: + - description: "Facet type. Valid values: tag." + in: query + name: facet_type + required: true + schema: + $ref: "#/components/schemas/ModelLabProjectFacetType" + - description: Facet name. + in: query + name: facet_name + required: true + schema: + example: model + type: string + responses: + "200": + content: + application/json: + examples: + default: + value: + data: + attributes: + facet_name: model + facet_type: tag + values: + - opus + - gpt4 + id: "1" + type: facet_values + schema: + $ref: "#/components/schemas/ModelLabFacetValuesResponse" + description: OK + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Bad Request + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + "500": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Internal Server Error + summary: List Model Lab project facet values + tags: + - Model Lab API + x-unstable: |- + **Note**: This endpoint is in preview and is subject to change. + If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/). + /api/v2/model-lab-api/projects: + get: + description: List all Model Lab projects for the current organization. + operationId: ListModelLabProjects + parameters: + - description: Text search filter for project name or description. + in: query + name: filter + required: false + schema: + type: string + - description: Filter by owner UUID. + in: query + name: filter[owner_id] + required: false + schema: + format: uuid + type: string + - description: "Filter by tags. Format: key:value,key2:value2." + in: query + name: filter[tags] + required: false + schema: + type: string + - description: "Sort field. Valid values: name, created_at, updated_at. Prefix with '-' for descending order (e.g., -updated_at)." + in: query + name: sort + required: false + schema: + default: "-updated_at" + type: string + - description: Number of items per page. Maximum is 100. + in: query + name: page[size] + required: false + schema: + default: 25 + maximum: 100 + type: integer + - description: Page number (1-indexed). + in: query + name: page[number] + required: false + schema: + default: 1 + type: integer + responses: + "200": + content: + application/json: + examples: + default: + value: + data: + - attributes: + artifact_storage_location: s3://bucket/active-project + created_at: "2024-01-20T10:00:00Z" + description: A machine learning training project. + is_starred: false + name: active-project + tags: + - key: model + value: opus + updated_at: "2024-01-20T11:00:00Z" + id: "2" + type: projects + meta: + page: + number: 1 + size: 25 + total: 1 + schema: + $ref: "#/components/schemas/ModelLabProjectsResponse" + description: OK + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Bad Request + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + "500": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Internal Server Error + summary: List Model Lab projects + tags: + - Model Lab API + x-unstable: |- + **Note**: This endpoint is in preview and is subject to change. + If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/). + /api/v2/model-lab-api/projects/{project_id}: + get: + description: Get a single Model Lab project by its ID. + operationId: GetModelLabProject + parameters: + - $ref: "#/components/parameters/ModelLabProjectIDPathParameter" + responses: + "200": + content: + application/json: + examples: + default: + value: + data: + attributes: + artifact_storage_location: s3://bucket/active-project + created_at: "2024-01-20T10:00:00Z" + description: A machine learning training project. + is_starred: false + name: active-project + tags: + - key: model + value: opus + updated_at: "2024-01-20T11:00:00Z" + id: "2" + type: projects + schema: + $ref: "#/components/schemas/ModelLabProjectResponse" + description: OK + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Bad Request + "404": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Not Found + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + "500": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Internal Server Error + summary: Get a Model Lab project + tags: + - Model Lab API + x-unstable: |- + **Note**: This endpoint is in preview and is subject to change. + If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/). + /api/v2/model-lab-api/projects/{project_id}/artifacts: + get: + description: List all artifact files for a specific Model Lab project. + operationId: ListModelLabProjectArtifacts + parameters: + - $ref: "#/components/parameters/ModelLabProjectIDPathParameter" + responses: + "200": + content: + application/json: + examples: + default: + value: + data: + attributes: + files: + - artifact_path: projects/1/artifacts/model.pkl + created_at: "2024-01-20T10:00:00Z" + file_size: 204800 + filename: model.pkl + id: "1" + type: project_files + schema: + $ref: "#/components/schemas/ModelLabProjectArtifactsResponse" + description: OK + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Bad Request + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + "500": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Internal Server Error + summary: List Model Lab project artifacts + tags: + - Model Lab API + x-unstable: |- + **Note**: This endpoint is in preview and is subject to change. + If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/). + /api/v2/model-lab-api/projects/{project_id}/star: + delete: + description: Remove the star from a Model Lab project for the current user. + operationId: UnstarModelLabProject + parameters: + - $ref: "#/components/parameters/ModelLabProjectIDPathParameter" + responses: + "204": + description: No Content + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Bad Request + "403": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Forbidden + "404": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Not Found + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + "500": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Internal Server Error + summary: Remove star from a Model Lab project + tags: + - Model Lab API + x-unstable: |- + **Note**: This endpoint is in preview and is subject to change. + If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/). + post: + description: Star a Model Lab project for the current user. + operationId: StarModelLabProject + parameters: + - $ref: "#/components/parameters/ModelLabProjectIDPathParameter" + responses: + "204": + description: No Content + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Bad Request + "403": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Forbidden + "404": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Not Found + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + "500": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Internal Server Error + summary: Star a Model Lab project + tags: + - Model Lab API + x-unstable: |- + **Note**: This endpoint is in preview and is subject to change. + If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/). + /api/v2/model-lab-api/runs: + get: + description: List all Model Lab runs for the current organization. + operationId: ListModelLabRuns + parameters: + - description: Filter by run ID(s). Comma-separated list for multiple IDs. + in: query + name: filter[id] + required: false + schema: + type: string + - description: Text search filter for run name or description. + in: query + name: filter + required: false + schema: + type: string + - description: Filter by owner UUID. + in: query + name: filter[owner_id] + required: false + schema: + type: string + - description: "Filter by run status. Valid values: pending, running, completed, failed, killed, unresponsive, paused." + in: query + name: filter[status] + required: false + schema: + $ref: "#/components/schemas/ModelLabRunStatus" + - description: Filter by project ID. + in: query + name: filter[project_id] + required: false + schema: + format: int64 + type: integer + - description: "Filter by tags. Format: key:value,key2:value2." + in: query + name: filter[tags] + required: false + schema: + type: string + - description: "Filter by params. Format: key:value,key2:>0.5,key3:true." + in: query + name: filter[params] + required: false + schema: + type: string + - description: Filter by parent run ID. Use 'null' to return only root runs (runs with no parent). + in: query + name: filter[parent_run_id] + required: false + schema: + type: string + - description: Sort pinned runs before non-pinned runs. Pinned runs are ordered by pin time descending. + in: query + name: pinned_first + required: false + schema: + type: boolean + - description: Include all runs pinned by the current user, regardless of other filters. + in: query + name: include_pinned + required: false + schema: + type: boolean + - description: When true, also return runs whose descendants match the active filters. The descendant_match field in each result indicates whether the run was included via a descendant match. + in: query + name: include_descendant_matches + required: false + schema: + type: boolean + - description: "Sort field. Valid values: name, created_at, updated_at, duration. Prefix with '-' for descending order (e.g., -updated_at)." + in: query + name: sort + required: false + schema: + default: "-updated_at" + type: string + - description: Number of items per page. Maximum is 100. + in: query + name: page[size] + required: false + schema: + default: 25 + maximum: 100 + type: integer + - description: Page number (1-indexed). + in: query + name: page[number] + required: false + schema: + default: 1 + type: integer + responses: + "200": + content: + application/json: + examples: + default: + value: + data: + - attributes: + created_at: "2024-01-20T10:00:00Z" + descendant_match: false + description: Fine-tuning run with custom hyperparameters. + has_children: false + is_pinned: false + metric_summaries: [] + mlflow_artifact_location: s3://bucket/active-run + name: active-run + params: + - key: algorithm + value: gpt4 + project_id: 101 + started_at: "2024-01-20T10:00:00Z" + status: running + tags: + - key: model + value: opus + updated_at: "2024-01-20T11:00:00Z" + id: "2" + type: runs + meta: + page: + number: 1 + size: 25 + total: 1 + schema: + $ref: "#/components/schemas/ModelLabRunsResponse" + description: OK + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Bad Request + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + "500": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Internal Server Error + summary: List Model Lab runs + tags: + - Model Lab API + x-unstable: |- + **Note**: This endpoint is in preview and is subject to change. + If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/). + /api/v2/model-lab-api/runs/{run_id}: + delete: + description: Delete a Model Lab run by its ID. + operationId: DeleteModelLabRun + parameters: + - $ref: "#/components/parameters/ModelLabRunIDPathParameter" + responses: + "204": + description: No Content + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Bad Request + "404": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Not Found + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + "500": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Internal Server Error + summary: Delete a Model Lab run + tags: + - Model Lab API + x-unstable: |- + **Note**: This endpoint is in preview and is subject to change. + If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/). + get: + description: Get a single Model Lab run by its ID. + operationId: GetModelLabRun + parameters: + - $ref: "#/components/parameters/ModelLabRunIDPathParameter" + responses: + "200": + content: + application/json: + examples: + default: + value: + data: + attributes: + created_at: "2024-01-20T10:00:00Z" + descendant_match: false + description: Fine-tuning run with custom hyperparameters. + has_children: false + is_pinned: false + metric_summaries: [] + mlflow_artifact_location: s3://bucket/active-run + name: active-run + params: + - key: algorithm + value: gpt4 + project_id: 101 + started_at: "2024-01-20T10:00:00Z" + status: running + tags: + - key: model + value: opus + updated_at: "2024-01-20T11:00:00Z" + id: "2" + type: runs + schema: + $ref: "#/components/schemas/ModelLabRunResponse" + description: OK + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Bad Request + "404": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Not Found + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + "500": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Internal Server Error + summary: Get a Model Lab run + tags: + - Model Lab API + x-unstable: |- + **Note**: This endpoint is in preview and is subject to change. + If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/). + /api/v2/model-lab-api/runs/{run_id}/artifacts: + get: + description: List artifact files for a specific Model Lab run. + operationId: ListModelLabRunArtifacts + parameters: + - $ref: "#/components/parameters/ModelLabRunIDPathParameter" + - description: Optional subdirectory path within the run's artifacts. + in: query + name: path + required: false + schema: + type: string + responses: + "200": + content: + application/json: + examples: + default: + value: + data: + attributes: + files: + - file_size: 204800 + is_dir: false + path: model/weights.pt + - is_dir: true + path: model + path_in_project: runs/42 + id: "42" + type: artifacts + schema: + $ref: "#/components/schemas/ModelLabRunArtifactsResponse" + description: OK + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Bad Request + "404": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Not Found + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + "500": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Internal Server Error + summary: List Model Lab run artifacts + tags: + - Model Lab API + x-unstable: |- + **Note**: This endpoint is in preview and is subject to change. + If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/). + /api/v2/model-lab-api/runs/{run_id}/pin: + delete: + description: Remove the pin from a Model Lab run for the current user. + operationId: UnpinModelLabRun + parameters: + - $ref: "#/components/parameters/ModelLabRunIDPathParameter" + responses: + "204": + description: No Content + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Bad Request + "403": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Forbidden + "404": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Not Found + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + "500": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Internal Server Error + summary: Unpin a Model Lab run + tags: + - Model Lab API + x-unstable: |- + **Note**: This endpoint is in preview and is subject to change. + If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/). + post: + description: Pin a Model Lab run for the current user. + operationId: PinModelLabRun + parameters: + - $ref: "#/components/parameters/ModelLabRunIDPathParameter" + responses: + "204": + description: No Content + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Bad Request + "403": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Forbidden + "404": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Not Found + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + "500": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Internal Server Error + summary: Pin a Model Lab run + tags: + - Model Lab API + x-unstable: |- + **Note**: This endpoint is in preview and is subject to change. + If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/). /api/v2/monitor/notification_rule: get: description: Returns a list of all monitor notification rules. @@ -151159,6 +152870,8 @@ tags: description: For more information about the Datadog Microsoft Teams integration, see the integration page. url: https://docs.datadoghq.com/integrations/microsoft_teams/ name: Microsoft Teams Integration + - description: Manage Model Lab projects, runs, artifacts, and facets for ML experiment tracking. + name: Model Lab API - description: |- [Monitors](https://docs.datadoghq.com/monitors) allow you to watch a metric or check that you care about and notifies your team when a defined threshold has exceeded. diff --git a/cassettes/features/v2/model_lab_api/Delete-a-Model-Lab-run-returns-No-Content-response.frozen b/cassettes/features/v2/model_lab_api/Delete-a-Model-Lab-run-returns-No-Content-response.frozen new file mode 100644 index 000000000000..144cd0a44282 --- /dev/null +++ b/cassettes/features/v2/model_lab_api/Delete-a-Model-Lab-run-returns-No-Content-response.frozen @@ -0,0 +1 @@ +2026-05-18T16:45:00.000Z \ No newline at end of file diff --git a/cassettes/features/v2/model_lab_api/Delete-a-Model-Lab-run-returns-No-Content-response.yml b/cassettes/features/v2/model_lab_api/Delete-a-Model-Lab-run-returns-No-Content-response.yml new file mode 100644 index 000000000000..35247cf7c35d --- /dev/null +++ b/cassettes/features/v2/model_lab_api/Delete-a-Model-Lab-run-returns-No-Content-response.yml @@ -0,0 +1,18 @@ +http_interactions: +- recorded_at: Mon, 18 May 2026 16:45:00 GMT + request: + body: null + headers: + Accept: + - '*/*' + method: DELETE + uri: https://api.datadoghq.com/api/v2/model-lab-api/runs/70158 + response: + body: + encoding: UTF-8 + string: '' + headers: {} + status: + code: 204 + message: No Content +recorded_with: VCR 6.0.0 diff --git a/cassettes/features/v2/model_lab_api/Delete-a-Model-Lab-run-returns-Not-Found-response.frozen b/cassettes/features/v2/model_lab_api/Delete-a-Model-Lab-run-returns-Not-Found-response.frozen new file mode 100644 index 000000000000..144cd0a44282 --- /dev/null +++ b/cassettes/features/v2/model_lab_api/Delete-a-Model-Lab-run-returns-Not-Found-response.frozen @@ -0,0 +1 @@ +2026-05-18T16:45:00.000Z \ No newline at end of file diff --git a/cassettes/features/v2/model_lab_api/Delete-a-Model-Lab-run-returns-Not-Found-response.yml b/cassettes/features/v2/model_lab_api/Delete-a-Model-Lab-run-returns-Not-Found-response.yml new file mode 100644 index 000000000000..9abf93979a20 --- /dev/null +++ b/cassettes/features/v2/model_lab_api/Delete-a-Model-Lab-run-returns-Not-Found-response.yml @@ -0,0 +1,20 @@ +http_interactions: +- recorded_at: Mon, 18 May 2026 16:45:00 GMT + request: + body: null + headers: + Accept: + - '*/*' + method: DELETE + uri: https://api.datadoghq.com/api/v2/model-lab-api/runs/999999 + response: + body: + encoding: UTF-8 + string: '{"errors":[{"title":"Generic Error","detail":"run not found"}]}' + headers: + Content-Type: + - application/json + status: + code: 404 + message: Not Found +recorded_with: VCR 6.0.0 diff --git a/cassettes/features/v2/model_lab_api/Download-artifact-content-returns-OK-response.frozen b/cassettes/features/v2/model_lab_api/Download-artifact-content-returns-OK-response.frozen new file mode 100644 index 000000000000..144cd0a44282 --- /dev/null +++ b/cassettes/features/v2/model_lab_api/Download-artifact-content-returns-OK-response.frozen @@ -0,0 +1 @@ +2026-05-18T16:45:00.000Z \ No newline at end of file diff --git a/cassettes/features/v2/model_lab_api/Download-artifact-content-returns-OK-response.yml b/cassettes/features/v2/model_lab_api/Download-artifact-content-returns-OK-response.yml new file mode 100644 index 000000000000..97987e7fc27c --- /dev/null +++ b/cassettes/features/v2/model_lab_api/Download-artifact-content-returns-OK-response.yml @@ -0,0 +1,20 @@ +http_interactions: +- recorded_at: Mon, 18 May 2026 16:45:00 GMT + request: + body: null + headers: + Accept: + - application/octet-stream, application/json + method: GET + uri: https://api.datadoghq.com/api/v2/model-lab-api/artifacts/content?project_id=2387&artifact_path=f635c73b70594ab6bb6e212cdf87d0d5%2Fartifacts%2Flora_model%2Fadapter_config.json + response: + body: + encoding: UTF-8 + string: data + headers: + Content-Type: + - application/octet-stream + status: + code: 200 + message: OK +recorded_with: VCR 6.0.0 diff --git a/cassettes/features/v2/model_lab_api/Get-a-Model-Lab-project-returns-Not-Found-response.frozen b/cassettes/features/v2/model_lab_api/Get-a-Model-Lab-project-returns-Not-Found-response.frozen new file mode 100644 index 000000000000..144cd0a44282 --- /dev/null +++ b/cassettes/features/v2/model_lab_api/Get-a-Model-Lab-project-returns-Not-Found-response.frozen @@ -0,0 +1 @@ +2026-05-18T16:45:00.000Z \ No newline at end of file diff --git a/cassettes/features/v2/model_lab_api/Get-a-Model-Lab-project-returns-Not-Found-response.yml b/cassettes/features/v2/model_lab_api/Get-a-Model-Lab-project-returns-Not-Found-response.yml new file mode 100644 index 000000000000..5ace8b4aac1b --- /dev/null +++ b/cassettes/features/v2/model_lab_api/Get-a-Model-Lab-project-returns-Not-Found-response.yml @@ -0,0 +1,20 @@ +http_interactions: +- recorded_at: Mon, 18 May 2026 16:45:00 GMT + request: + body: null + headers: + Accept: + - application/json + method: GET + uri: https://api.datadoghq.com/api/v2/model-lab-api/projects/999999 + response: + body: + encoding: UTF-8 + string: '{"errors":[{"title":"Generic Error","detail":"project not found"}]}' + headers: + Content-Type: + - application/json + status: + code: 404 + message: Not Found +recorded_with: VCR 6.0.0 diff --git a/cassettes/features/v2/model_lab_api/Get-a-Model-Lab-project-returns-OK-response.frozen b/cassettes/features/v2/model_lab_api/Get-a-Model-Lab-project-returns-OK-response.frozen new file mode 100644 index 000000000000..144cd0a44282 --- /dev/null +++ b/cassettes/features/v2/model_lab_api/Get-a-Model-Lab-project-returns-OK-response.frozen @@ -0,0 +1 @@ +2026-05-18T16:45:00.000Z \ No newline at end of file diff --git a/cassettes/features/v2/model_lab_api/Get-a-Model-Lab-project-returns-OK-response.yml b/cassettes/features/v2/model_lab_api/Get-a-Model-Lab-project-returns-OK-response.yml new file mode 100644 index 000000000000..e30a31664f86 --- /dev/null +++ b/cassettes/features/v2/model_lab_api/Get-a-Model-Lab-project-returns-OK-response.yml @@ -0,0 +1,20 @@ +http_interactions: +- recorded_at: Mon, 18 May 2026 16:45:00 GMT + request: + body: null + headers: + Accept: + - application/json + method: GET + uri: https://api.datadoghq.com/api/v2/model-lab-api/projects/2387 + response: + body: + encoding: UTF-8 + string: '{"data":{"id":"2387","type":"projects","attributes":{"artifact_storage_location":"model-lab:///76421","created_at":"2026-05-15T02:54:52.457827Z","description":"","external_url":"https://mlflow.us1.staging.dog/#/experiments/76421","is_starred":false,"name":"ft-gpt2-smoke-1778812860","owner_id":"1d45ac49-1e4e-11f1-8c3a-42221ed6388d","tags":[],"updated_at":"2026-05-15T02:54:52.468614Z"}}}' + headers: + Content-Type: + - application/json + status: + code: 200 + message: OK +recorded_with: VCR 6.0.0 diff --git a/cassettes/features/v2/model_lab_api/Get-a-Model-Lab-run-returns-Not-Found-response.frozen b/cassettes/features/v2/model_lab_api/Get-a-Model-Lab-run-returns-Not-Found-response.frozen new file mode 100644 index 000000000000..144cd0a44282 --- /dev/null +++ b/cassettes/features/v2/model_lab_api/Get-a-Model-Lab-run-returns-Not-Found-response.frozen @@ -0,0 +1 @@ +2026-05-18T16:45:00.000Z \ No newline at end of file diff --git a/cassettes/features/v2/model_lab_api/Get-a-Model-Lab-run-returns-Not-Found-response.yml b/cassettes/features/v2/model_lab_api/Get-a-Model-Lab-run-returns-Not-Found-response.yml new file mode 100644 index 000000000000..4c1c8594a687 --- /dev/null +++ b/cassettes/features/v2/model_lab_api/Get-a-Model-Lab-run-returns-Not-Found-response.yml @@ -0,0 +1,20 @@ +http_interactions: +- recorded_at: Mon, 18 May 2026 16:45:00 GMT + request: + body: null + headers: + Accept: + - application/json + method: GET + uri: https://api.datadoghq.com/api/v2/model-lab-api/runs/999999 + response: + body: + encoding: UTF-8 + string: '{"errors":[{"title":"Generic Error","detail":"run not found"}]}' + headers: + Content-Type: + - application/json + status: + code: 404 + message: Not Found +recorded_with: VCR 6.0.0 diff --git a/cassettes/features/v2/model_lab_api/Get-a-Model-Lab-run-returns-OK-response.frozen b/cassettes/features/v2/model_lab_api/Get-a-Model-Lab-run-returns-OK-response.frozen new file mode 100644 index 000000000000..144cd0a44282 --- /dev/null +++ b/cassettes/features/v2/model_lab_api/Get-a-Model-Lab-run-returns-OK-response.frozen @@ -0,0 +1 @@ +2026-05-18T16:45:00.000Z \ No newline at end of file diff --git a/cassettes/features/v2/model_lab_api/Get-a-Model-Lab-run-returns-OK-response.yml b/cassettes/features/v2/model_lab_api/Get-a-Model-Lab-run-returns-OK-response.yml new file mode 100644 index 000000000000..867fbbdcab07 --- /dev/null +++ b/cassettes/features/v2/model_lab_api/Get-a-Model-Lab-run-returns-OK-response.yml @@ -0,0 +1,23 @@ +http_interactions: +- recorded_at: Mon, 18 May 2026 16:45:00 GMT + request: + body: null + headers: + Accept: + - application/json + method: GET + uri: https://api.datadoghq.com/api/v2/model-lab-api/runs/70158 + response: + body: + encoding: UTF-8 + string: '{"data":{"id":"70158","type":"runs","attributes":{"completed_at":"2026-05-15T02:57:03.079Z","created_at":"2026-05-15T02:54:52.684452Z","descendant_match":false,"description":"","duration":130.498,"external_url":"https://mlflow.us1.staging.dog/#/runs/f635c73b70594ab6bb6e212cdf87d0d5","has_children":false,"is_pinned":false,"metric_summaries":[{"key":"eval_loss","min":3.214665412902832,"max":3.9457361698150635,"mean":3.5802007913589478,"latest":3.214665412902832,"count":4,"first_step":0,"last_step":204},{"key":"learning_rate","min":0,"max":0.0001,"mean":4.9999999999999996e-05,"latest":5.154639175257732e-07,"count":408,"first_step":1,"last_step":204},{"key":"train_steps_per_second","min":1.951,"max":1.951,"mean":1.951,"latest":1.951,"count":1,"first_step":204,"last_step":204},{"key":"entropy","min":3.1330020427703857,"max":4.252453327178955,"mean":3.6496509979752934,"latest":3.1330020427703857,"count":204,"first_step":1,"last_step":204},{"key":"eval_runtime","min":6.3487,"max":6.7308,"mean":6.53975,"latest":6.3487,"count":2,"first_step":0,"last_step":204},{"key":"grad_norm","min":0.4185899794101715,"max":1.697460651397705,"mean":0.9965703097336432,"latest":1.3113601207733154,"count":204,"first_step":1,"last_step":204},{"key":"total_flos","min":31781629558784,"max":31781629558784,"mean":31781629558784,"latest":31781629558784,"count":1,"first_step":204,"last_step":204},{"key":"training_runtime_seconds","min":106.08,"max":106.08,"mean":106.08,"latest":106.08,"count":1,"first_step":0,"last_step":0},{"key":"train_loss","min":3.10653018951416,"max":4.4325761795043945,"mean":3.6260507060032263,"latest":3.6260507060032263,"count":205,"first_step":1,"last_step":204},{"key":"train_runtime","min":104.5855,"max":104.5855,"mean":104.5855,"latest":104.5855,"count":1,"first_step":204,"last_step":204},{"key":"train_samples_per_second","min":7.802,"max":7.802,"mean":7.802,"latest":7.802,"count":1,"first_step":204,"last_step":204},{"key":"eval_mean_token_accuracy","min":0.3437899912104887,"max":0.40528977969113517,"mean":0.37453988545081196,"latest":0.40528977969113517,"count":2,"first_step":0,"last_step":204},{"key":"eval_num_tokens","min":0,"max":115650,"mean":57825,"latest":115650,"count":2,"first_step":0,"last_step":204},{"key":"eval_samples_per_second","min":30.308,"max":32.133,"mean":31.2205,"latest":32.133,"count":2,"first_step":0,"last_step":204},{"key":"eval_steps_per_second","min":7.577,"max":8.033,"mean":7.805,"latest":8.033,"count":2,"first_step":0,"last_step":204},{"key":"final_train_loss","min":3.6260507060032263,"max":3.6260507060032263,"mean":3.6260507060032263,"latest":3.6260507060032263,"count":1,"first_step":0,"last_step":0},{"key":"mean_token_accuracy","min":0.2756052017211914,"max":0.4394785761833191,"mean":0.36340271316322625,"latest":0.4110320210456848,"count":204,"first_step":1,"last_step":204},{"key":"epoch","min":0,"max":1,"mean":0.5048309178743962,"latest":1,"count":207,"first_step":0,"last_step":204},{"key":"eval_entropy","min":3.4261409394881306,"max":3.795459279827043,"mean":3.610800109657587,"latest":3.4261409394881306,"count":2,"first_step":0,"last_step":204},{"key":"loss","min":3.10653018951416,"max":4.4325761795043945,"mean":3.6260507060032263,"latest":3.171748638153076,"count":204,"first_step":1,"last_step":204},{"key":"num_tokens","min":602,"max":115650,"mean":58002.029411764706,"latest":115650,"count":204,"first_step":1,"last_step":204},{"key":"total_steps","min":204,"max":204,"mean":204,"latest":204,"count":1,"first_step":0,"last_step":0}],"mlflow_artifact_location":"mlflow-artifacts:///2387/70158/artifacts","name":"ft-gpt2-smoke-1778812860-1778813692","owner_id":"1d45ac49-1e4e-11f1-8c3a-42221ed6388d","params":[{"key":"_name_or_path","value":"gpt2"},{"key":"activation_function","value":"gelu_new"},{"key":"adam_beta1","value":"0.9"},{"key":"adam_beta2","value":"0.999"},{"key":"adam_epsilon","value":"1e-08"},{"key":"add_cross_attention","value":"False"},{"key":"architectures","value":"[''GPT2LMHeadModel'']"},{"key":"attn_pdrop","value":"0.1"},{"key":"auto_find_batch_size","value":"False"},{"key":"average_tokens_across_devices","value":"True"},{"key":"bf16","value":"True"},{"key":"bf16_full_eval","value":"False"},{"key":"bos_token_id","value":"50256"},{"key":"chunk_size_feed_forward","value":"0"},{"key":"dataset","value":"s3://aip-long-running-jobs/savita.manghnani/train_amplified.zip"},{"key":"disable_tqdm","value":"False"},{"key":"dtype","value":"bfloat16"},{"key":"embd_pdrop","value":"0.1"},{"key":"eos_token_id","value":"50256"},{"key":"eval_accumulation_steps","value":"None"},{"key":"eval_delay","value":"0"},{"key":"eval_do_concat_batches","value":"True"},{"key":"eval_on_start","value":"True"},{"key":"eval_steps","value":"None"},{"key":"eval_strategy","value":"epoch"},{"key":"eval_use_gather_object","value":"False"},{"key":"fp16","value":"False"},{"key":"fp16_full_eval","value":"False"},{"key":"gradient_accumulation_steps","value":"1"},{"key":"gradient_checkpointing","value":"False"},{"key":"gradient_checkpointing_kwargs","value":"None"},{"key":"id2label","value":"{0: + ''LABEL_0'', 1: ''LABEL_1''}"},{"key":"include_for_metrics","value":"[]"},{"key":"include_num_input_tokens_seen","value":"no"},{"key":"initializer_range","value":"0.02"},{"key":"is_encoder_decoder","value":"False"},{"key":"label2id","value":"{''LABEL_0'': + 0, ''LABEL_1'': 1}"},{"key":"label_smoothing_factor","value":"0.0"},{"key":"layer_norm_epsilon","value":"1e-05"},{"key":"learning_rate","value":"0.0001"},{"key":"liger_kernel_config","value":"None"},{"key":"log_level","value":"passive"},{"key":"log_level_replica","value":"warning"},{"key":"log_on_each_node","value":"True"},{"key":"logging_first_step","value":"False"},{"key":"logging_nan_inf_filter","value":"True"},{"key":"logging_steps","value":"1"},{"key":"logging_strategy","value":"steps"},{"key":"lora_alpha","value":"16"},{"key":"lora_dropout","value":"0.1"},{"key":"lora_rank","value":"8"},{"key":"lr_scheduler_kwargs","value":"None"},{"key":"lr_scheduler_type","value":"linear"},{"key":"max_grad_norm","value":"1.0"},{"key":"max_length","value":"2048"},{"key":"max_steps","value":"-1"},{"key":"method","value":"lora"},{"key":"model_name","value":"gpt2"},{"key":"model_type","value":"gpt2"},{"key":"n_ctx","value":"1024"},{"key":"n_embd","value":"768"},{"key":"n_head","value":"12"},{"key":"n_inner","value":"None"},{"key":"n_layer","value":"12"},{"key":"n_positions","value":"1024"},{"key":"neftune_noise_alpha","value":"None"},{"key":"num_epochs","value":"1"},{"key":"num_train_epochs","value":"1"},{"key":"optim","value":"adamw_torch_fused"},{"key":"optim_args","value":"None"},{"key":"optim_target_modules","value":"None"},{"key":"optimizer","value":"adamw_8bit"},{"key":"output_attentions","value":"False"},{"key":"output_dir","value":"./lora_output"},{"key":"output_hidden_states","value":"False"},{"key":"packing","value":"False"},{"key":"pad_token_id","value":"50256"},{"key":"per_device_batch_size","value":"2"},{"key":"per_device_eval_batch_size","value":"2"},{"key":"per_device_train_batch_size","value":"2"},{"key":"precision","value":"bf16"},{"key":"prediction_loss_only","value":"False"},{"key":"problem_type","value":"None"},{"key":"project","value":"huggingface"},{"key":"reorder_and_upcast_attn","value":"False"},{"key":"report_to","value":"[''mlflow'']"},{"key":"resid_pdrop","value":"0.1"},{"key":"return_dict","value":"True"},{"key":"run_name","value":"None"},{"key":"scale_attn_by_inverse_layer_idx","value":"False"},{"key":"scale_attn_weights","value":"True"},{"key":"summary_activation","value":"None"},{"key":"summary_first_dropout","value":"0.1"},{"key":"summary_proj_to_labels","value":"True"},{"key":"summary_type","value":"cls_index"},{"key":"summary_use_proj","value":"True"},{"key":"task_specific_params","value":"{''text-generation'': + {''do_sample'': True, ''max_length'': 50}}"},{"key":"tf32","value":"None"},{"key":"tie_word_embeddings","value":"True"},{"key":"torch_compile","value":"False"},{"key":"torch_compile_backend","value":"None"},{"key":"torch_compile_mode","value":"None"},{"key":"torch_empty_cache_steps","value":"None"},{"key":"trackio_bucket_id","value":"None"},{"key":"trackio_space_id","value":"None"},{"key":"trackio_static_space_id","value":"None"},{"key":"trainer","value":"trl-sft-raytrain"},{"key":"transformers_version","value":"5.8.1"},{"key":"use_cache","value":"False"},{"key":"use_liger_kernel","value":"False"},{"key":"vocab_size","value":"50257"},{"key":"warmup_steps","value":"10"},{"key":"weight_decay","value":"0.0"}],"project_id":2387,"started_at":"2026-05-15T02:54:52.581Z","status":"completed","tags":[{"key":"mlflow.runName","value":"ft-gpt2-smoke-1778812860-1778813692"},{"key":"mlflow.source.name","value":"/home/ray/.venv/lib/python3.12/site-packages/ray/_private/workers/default_worker.py"},{"key":"mlflow.source.type","value":"LOCAL"},{"key":"mlflow.user","value":"dog"},{"key":"resumed","value":"false"}],"updated_at":"2026-05-15T02:57:03.257618Z"}}}' + headers: + Content-Type: + - application/json + status: + code: 200 + message: OK +recorded_with: VCR 6.0.0 diff --git a/cassettes/features/v2/model_lab_api/List-Model-Lab-project-artifacts-returns-OK-response.frozen b/cassettes/features/v2/model_lab_api/List-Model-Lab-project-artifacts-returns-OK-response.frozen new file mode 100644 index 000000000000..144cd0a44282 --- /dev/null +++ b/cassettes/features/v2/model_lab_api/List-Model-Lab-project-artifacts-returns-OK-response.frozen @@ -0,0 +1 @@ +2026-05-18T16:45:00.000Z \ No newline at end of file diff --git a/cassettes/features/v2/model_lab_api/List-Model-Lab-project-artifacts-returns-OK-response.yml b/cassettes/features/v2/model_lab_api/List-Model-Lab-project-artifacts-returns-OK-response.yml new file mode 100644 index 000000000000..6450acde5de0 --- /dev/null +++ b/cassettes/features/v2/model_lab_api/List-Model-Lab-project-artifacts-returns-OK-response.yml @@ -0,0 +1,20 @@ +http_interactions: +- recorded_at: Mon, 18 May 2026 16:45:00 GMT + request: + body: null + headers: + Accept: + - application/json + method: GET + uri: https://api.datadoghq.com/api/v2/model-lab-api/projects/2387/artifacts + response: + body: + encoding: UTF-8 + string: '{"data":{"id":"2387","type":"project_files","attributes":{"files":[{"filename":"README.md","artifact_path":"f635c73b70594ab6bb6e212cdf87d0d5/artifacts/lora_model/README.md","created_at":"2026-05-15T02:57:00Z","file_size":1389},{"filename":"adapter_config.json","artifact_path":"f635c73b70594ab6bb6e212cdf87d0d5/artifacts/lora_model/adapter_config.json","created_at":"2026-05-15T02:57:01Z","file_size":1015},{"filename":"adapter_model.safetensors","artifact_path":"f635c73b70594ab6bb6e212cdf87d0d5/artifacts/lora_model/adapter_model.safetensors","created_at":"2026-05-15T02:57:01Z","file_size":4730632},{"filename":"README.md","artifact_path":"f635c73b70594ab6bb6e212cdf87d0d5/artifacts/lora_model/checkpoint-204/README.md","created_at":"2026-05-15T02:57:02Z","file_size":5174},{"filename":"adapter_config.json","artifact_path":"f635c73b70594ab6bb6e212cdf87d0d5/artifacts/lora_model/checkpoint-204/adapter_config.json","created_at":"2026-05-15T02:57:02Z","file_size":1015},{"filename":"adapter_model.safetensors","artifact_path":"f635c73b70594ab6bb6e212cdf87d0d5/artifacts/lora_model/checkpoint-204/adapter_model.safetensors","created_at":"2026-05-15T02:57:03Z","file_size":4730632},{"filename":"optimizer.bin","artifact_path":"f635c73b70594ab6bb6e212cdf87d0d5/artifacts/lora_model/checkpoint-204/optimizer.bin","created_at":"2026-05-15T02:57:02Z","file_size":9534155},{"filename":"pytorch_model_fsdp.bin","artifact_path":"f635c73b70594ab6bb6e212cdf87d0d5/artifacts/lora_model/checkpoint-204/pytorch_model_fsdp.bin","created_at":"2026-05-15T02:57:03Z","file_size":4754405},{"filename":"rng_state_0.pth","artifact_path":"f635c73b70594ab6bb6e212cdf87d0d5/artifacts/lora_model/checkpoint-204/rng_state_0.pth","created_at":"2026-05-15T02:57:03Z","file_size":14725},{"filename":"scheduler.pt","artifact_path":"f635c73b70594ab6bb6e212cdf87d0d5/artifacts/lora_model/checkpoint-204/scheduler.pt","created_at":"2026-05-15T02:57:02Z","file_size":1465},{"filename":"tokenizer.json","artifact_path":"f635c73b70594ab6bb6e212cdf87d0d5/artifacts/lora_model/checkpoint-204/tokenizer.json","created_at":"2026-05-15T02:57:03Z","file_size":3557680},{"filename":"tokenizer_config.json","artifact_path":"f635c73b70594ab6bb6e212cdf87d0d5/artifacts/lora_model/checkpoint-204/tokenizer_config.json","created_at":"2026-05-15T02:57:02Z","file_size":326},{"filename":"trainer_state.json","artifact_path":"f635c73b70594ab6bb6e212cdf87d0d5/artifacts/lora_model/checkpoint-204/trainer_state.json","created_at":"2026-05-15T02:57:02Z","file_size":62194},{"filename":"training_args.bin","artifact_path":"f635c73b70594ab6bb6e212cdf87d0d5/artifacts/lora_model/checkpoint-204/training_args.bin","created_at":"2026-05-15T02:57:03Z","file_size":6097},{"filename":"run_config.json","artifact_path":"f635c73b70594ab6bb6e212cdf87d0d5/artifacts/lora_model/run_config.json","created_at":"2026-05-15T02:57:00Z","file_size":991},{"filename":"tokenizer.json","artifact_path":"f635c73b70594ab6bb6e212cdf87d0d5/artifacts/lora_model/tokenizer.json","created_at":"2026-05-15T02:57:01Z","file_size":3557680},{"filename":"tokenizer_config.json","artifact_path":"f635c73b70594ab6bb6e212cdf87d0d5/artifacts/lora_model/tokenizer_config.json","created_at":"2026-05-15T02:57:01Z","file_size":326},{"filename":"training_args.bin","artifact_path":"f635c73b70594ab6bb6e212cdf87d0d5/artifacts/lora_model/training_args.bin","created_at":"2026-05-15T02:57:02Z","file_size":6097},{"filename":"training_metrics.json","artifact_path":"f635c73b70594ab6bb6e212cdf87d0d5/artifacts/lora_model/training_metrics.json","created_at":"2026-05-15T02:57:01Z","file_size":55890}]}}}' + headers: + Content-Type: + - application/json + status: + code: 200 + message: OK +recorded_with: VCR 6.0.0 diff --git a/cassettes/features/v2/model_lab_api/List-Model-Lab-project-facet-keys-returns-OK-response.frozen b/cassettes/features/v2/model_lab_api/List-Model-Lab-project-facet-keys-returns-OK-response.frozen new file mode 100644 index 000000000000..144cd0a44282 --- /dev/null +++ b/cassettes/features/v2/model_lab_api/List-Model-Lab-project-facet-keys-returns-OK-response.frozen @@ -0,0 +1 @@ +2026-05-18T16:45:00.000Z \ No newline at end of file diff --git a/cassettes/features/v2/model_lab_api/List-Model-Lab-project-facet-keys-returns-OK-response.yml b/cassettes/features/v2/model_lab_api/List-Model-Lab-project-facet-keys-returns-OK-response.yml new file mode 100644 index 000000000000..09ebb207208e --- /dev/null +++ b/cassettes/features/v2/model_lab_api/List-Model-Lab-project-facet-keys-returns-OK-response.yml @@ -0,0 +1,20 @@ +http_interactions: +- recorded_at: Mon, 18 May 2026 16:45:00 GMT + request: + body: null + headers: + Accept: + - application/json + method: GET + uri: https://api.datadoghq.com/api/v2/model-lab-api/project-facet-keys + response: + body: + encoding: UTF-8 + string: '{"data":{"id":"2","type":"facet_keys","attributes":{"metrics":null,"parameters":[],"tags":["age","beatings","mlflow.experimentKind","mlflow.experiment.ownerID","morale","team","usecase","weather"]}}}' + headers: + Content-Type: + - application/json + status: + code: 200 + message: OK +recorded_with: VCR 6.0.0 diff --git a/cassettes/features/v2/model_lab_api/List-Model-Lab-project-facet-values-returns-OK-response.frozen b/cassettes/features/v2/model_lab_api/List-Model-Lab-project-facet-values-returns-OK-response.frozen new file mode 100644 index 000000000000..144cd0a44282 --- /dev/null +++ b/cassettes/features/v2/model_lab_api/List-Model-Lab-project-facet-values-returns-OK-response.frozen @@ -0,0 +1 @@ +2026-05-18T16:45:00.000Z \ No newline at end of file diff --git a/cassettes/features/v2/model_lab_api/List-Model-Lab-project-facet-values-returns-OK-response.yml b/cassettes/features/v2/model_lab_api/List-Model-Lab-project-facet-values-returns-OK-response.yml new file mode 100644 index 000000000000..ed8489514e4e --- /dev/null +++ b/cassettes/features/v2/model_lab_api/List-Model-Lab-project-facet-values-returns-OK-response.yml @@ -0,0 +1,20 @@ +http_interactions: +- recorded_at: Mon, 18 May 2026 16:45:00 GMT + request: + body: null + headers: + Accept: + - application/json + method: GET + uri: https://api.datadoghq.com/api/v2/model-lab-api/project-facet-values?facet_type=tag&facet_name=model + response: + body: + encoding: UTF-8 + string: '{"data":{"id":"tag:model","type":"facet_values","attributes":{"facet_name":"model","facet_type":"tag","values":[]}}}' + headers: + Content-Type: + - application/json + status: + code: 200 + message: OK +recorded_with: VCR 6.0.0 diff --git a/cassettes/features/v2/model_lab_api/List-Model-Lab-projects-returns-OK-response.frozen b/cassettes/features/v2/model_lab_api/List-Model-Lab-projects-returns-OK-response.frozen new file mode 100644 index 000000000000..144cd0a44282 --- /dev/null +++ b/cassettes/features/v2/model_lab_api/List-Model-Lab-projects-returns-OK-response.frozen @@ -0,0 +1 @@ +2026-05-18T16:45:00.000Z \ No newline at end of file diff --git a/cassettes/features/v2/model_lab_api/List-Model-Lab-projects-returns-OK-response.yml b/cassettes/features/v2/model_lab_api/List-Model-Lab-projects-returns-OK-response.yml new file mode 100644 index 000000000000..d4ab2c1d039b --- /dev/null +++ b/cassettes/features/v2/model_lab_api/List-Model-Lab-projects-returns-OK-response.yml @@ -0,0 +1,20 @@ +http_interactions: +- recorded_at: Mon, 18 May 2026 16:45:00 GMT + request: + body: null + headers: + Accept: + - application/json + method: GET + uri: https://api.datadoghq.com/api/v2/model-lab-api/projects + response: + body: + encoding: UTF-8 + string: '{"data":[{"id":"2439","type":"projects","attributes":{"artifact_storage_location":"model-lab:///2439","created_at":"2026-05-18T16:44:48.672513Z","description":"","is_starred":false,"name":"test-bdd-recording-1779122688","tags":[],"updated_at":"2026-05-18T16:44:48.684473Z"}},{"id":"2438","type":"projects","attributes":{"artifact_storage_location":"model-lab:///76991","created_at":"2026-05-18T15:55:50.180276Z","description":"","external_url":"https://mlflow.us1.staging.dog/#/experiments/76991","is_starred":false,"name":"qwen36-27b-qlora-fsdp-1779119158","owner_id":"1d45ac49-1e4e-11f1-8c3a-42221ed6388d","tags":[],"updated_at":"2026-05-18T15:55:50.188677Z"}},{"id":"2437","type":"projects","attributes":{"artifact_storage_location":"model-lab:///76989","created_at":"2026-05-18T15:46:35.705961Z","description":"","external_url":"https://mlflow.us1.staging.dog/#/experiments/76989","is_starred":false,"name":"qwen36-27b-lora-bf16-fsdp-1779118712","owner_id":"1d45ac49-1e4e-11f1-8c3a-42221ed6388d","tags":[],"updated_at":"2026-05-18T15:46:35.715063Z"}},{"id":"2436","type":"projects","attributes":{"artifact_storage_location":"model-lab:///76981","created_at":"2026-05-18T14:36:11.355331Z","description":"","external_url":"https://mlflow.us1.staging.dog/#/experiments/76981","is_starred":false,"name":"llm-benchmark/gpt-oss-20b","owner_id":"1d45ac49-1e4e-11f1-8c3a-42221ed6388d","tags":[],"updated_at":"2026-05-18T14:36:11.363352Z"}},{"id":"2435","type":"projects","attributes":{"artifact_storage_location":"model-lab:///76980","created_at":"2026-05-18T14:36:06.310431Z","description":"","external_url":"https://mlflow.us1.staging.dog/#/experiments/76980","is_starred":false,"name":"llm-benchmark/Qwen3.5-4B","owner_id":"1d45ac49-1e4e-11f1-8c3a-42221ed6388d","tags":[],"updated_at":"2026-05-18T14:36:06.318305Z"}},{"id":"2434","type":"projects","attributes":{"artifact_storage_location":"model-lab:///76979","created_at":"2026-05-18T14:36:00.539314Z","description":"","external_url":"https://mlflow.us1.staging.dog/#/experiments/76979","is_starred":false,"name":"llm-benchmark/Qwen3-4B","owner_id":"1d45ac49-1e4e-11f1-8c3a-42221ed6388d","tags":[],"updated_at":"2026-05-18T14:36:00.546338Z"}},{"id":"2433","type":"projects","attributes":{"artifact_storage_location":"model-lab:///76978","created_at":"2026-05-18T14:35:55.610359Z","description":"","external_url":"https://mlflow.us1.staging.dog/#/experiments/76978","is_starred":false,"name":"llm-benchmark/Qwen2.5-Coder-7B","owner_id":"1d45ac49-1e4e-11f1-8c3a-42221ed6388d","tags":[],"updated_at":"2026-05-18T14:35:55.618194Z"}},{"id":"2432","type":"projects","attributes":{"artifact_storage_location":"model-lab:///76977","created_at":"2026-05-18T14:35:50.418713Z","description":"","external_url":"https://mlflow.us1.staging.dog/#/experiments/76977","is_starred":false,"name":"llm-benchmark/Qwen3-8B","owner_id":"1d45ac49-1e4e-11f1-8c3a-42221ed6388d","tags":[],"updated_at":"2026-05-18T14:35:50.428634Z"}},{"id":"2399","type":"projects","attributes":{"artifact_storage_location":"model-lab:///76545","created_at":"2026-05-15T21:26:54.883458Z","description":"","external_url":"https://mlflow.us1.staging.dog/#/experiments/76545","is_starred":false,"name":"ft-qwen36-27b-lora-bf16-fsdp-1778879891","owner_id":"1d45ac49-1e4e-11f1-8c3a-42221ed6388d","tags":[],"updated_at":"2026-05-15T21:26:54.894726Z"}},{"id":"2398","type":"projects","attributes":{"artifact_storage_location":"model-lab:///76541","created_at":"2026-05-15T21:00:45.799634Z","description":"","external_url":"https://mlflow.us1.staging.dog/#/experiments/76541","is_starred":false,"name":"ft-qwen36-27b-qlora-fsdp-a100-1778878296","owner_id":"1d45ac49-1e4e-11f1-8c3a-42221ed6388d","tags":[],"updated_at":"2026-05-15T21:00:45.812402Z"}},{"id":"2397","type":"projects","attributes":{"artifact_storage_location":"model-lab:///76540","created_at":"2026-05-15T20:59:43.336624Z","description":"","external_url":"https://mlflow.us1.staging.dog/#/experiments/76540","is_starred":false,"name":"ft-qwen36-27b-qlora-a100-1778878293","owner_id":"1d45ac49-1e4e-11f1-8c3a-42221ed6388d","tags":[],"updated_at":"2026-05-15T20:59:43.346736Z"}},{"id":"2396","type":"projects","attributes":{"artifact_storage_location":"model-lab:///76534","created_at":"2026-05-15T20:16:47.48412Z","description":"","external_url":"https://mlflow.us1.staging.dog/#/experiments/76534","is_starred":false,"name":"ft-qwen36-27b-qlora-1gpu-1778873109","owner_id":"1d45ac49-1e4e-11f1-8c3a-42221ed6388d","tags":[],"updated_at":"2026-05-15T20:16:47.494291Z"}},{"id":"2395","type":"projects","attributes":{"artifact_storage_location":"model-lab:///76533","created_at":"2026-05-15T20:12:05.975402Z","description":"","external_url":"https://mlflow.us1.staging.dog/#/experiments/76533","is_starred":false,"name":"ft-qwen36-27b-qlora-fsdp-1778873254","owner_id":"1d45ac49-1e4e-11f1-8c3a-42221ed6388d","tags":[],"updated_at":"2026-05-15T20:12:05.984538Z"}},{"id":"2394","type":"projects","attributes":{"artifact_storage_location":"model-lab:///76531","created_at":"2026-05-15T19:59:46.814886Z","description":"","external_url":"https://mlflow.us1.staging.dog/#/experiments/76531","is_starred":false,"name":"ft-qwen36-27b-qlora-1gpu-1778872828","owner_id":"1d45ac49-1e4e-11f1-8c3a-42221ed6388d","tags":[],"updated_at":"2026-05-15T19:59:46.824596Z"}},{"id":"2393","type":"projects","attributes":{"artifact_storage_location":"model-lab:///76528","created_at":"2026-05-15T19:43:03.893417Z","description":"","external_url":"https://mlflow.us1.staging.dog/#/experiments/76528","is_starred":false,"name":"ft-qwen36-27b-qlora-fsdp-1778873442","owner_id":"1d45ac49-1e4e-11f1-8c3a-42221ed6388d","tags":[],"updated_at":"2026-05-15T19:43:03.901909Z"}},{"id":"2392","type":"projects","attributes":{"artifact_storage_location":"model-lab:///76527","created_at":"2026-05-15T19:41:00.782593Z","description":"","external_url":"https://mlflow.us1.staging.dog/#/experiments/76527","is_starred":false,"name":"ft-qwen36-27b-qlora-1778872484","owner_id":"1d45ac49-1e4e-11f1-8c3a-42221ed6388d","tags":[],"updated_at":"2026-05-15T19:41:00.792616Z"}},{"id":"2391","type":"projects","attributes":{"artifact_storage_location":"model-lab:///76522","created_at":"2026-05-15T18:58:22.785747Z","description":"","external_url":"https://mlflow.us1.staging.dog/#/experiments/76522","is_starred":false,"name":"ft-qwen35-9b-qlora-1778870929","owner_id":"1d45ac49-1e4e-11f1-8c3a-42221ed6388d","tags":[],"updated_at":"2026-05-15T18:58:22.79593Z"}},{"id":"2390","type":"projects","attributes":{"artifact_storage_location":"model-lab:///76514","created_at":"2026-05-15T17:49:04.684478Z","description":"","external_url":"https://mlflow.us1.staging.dog/#/experiments/76514","is_starred":false,"name":"ft-qwen35-9b-qlora-1778866175","owner_id":"1d45ac49-1e4e-11f1-8c3a-42221ed6388d","tags":[],"updated_at":"2026-05-15T17:49:04.694823Z"}},{"id":"2389","type":"projects","attributes":{"artifact_storage_location":"model-lab:///76483","created_at":"2026-05-15T12:52:28.046954Z","description":"","external_url":"https://mlflow.us1.staging.dog/#/experiments/76483","is_starred":false,"name":"ft-qwen35-9b-qlora-1778848889","owner_id":"1d45ac49-1e4e-11f1-8c3a-42221ed6388d","tags":[],"updated_at":"2026-05-15T12:52:28.057141Z"}},{"id":"2388","type":"projects","attributes":{"artifact_storage_location":"model-lab:///76425","created_at":"2026-05-15T03:18:25.363827Z","description":"","external_url":"https://mlflow.us1.staging.dog/#/experiments/76425","is_starred":false,"name":"ft-qwen35-9b-qlora-1778814244","owner_id":"1d45ac49-1e4e-11f1-8c3a-42221ed6388d","tags":[],"updated_at":"2026-05-15T03:18:25.375252Z"}},{"id":"2387","type":"projects","attributes":{"artifact_storage_location":"model-lab:///76421","created_at":"2026-05-15T02:54:52.457827Z","description":"","external_url":"https://mlflow.us1.staging.dog/#/experiments/76421","is_starred":false,"name":"ft-gpt2-smoke-1778812860","owner_id":"1d45ac49-1e4e-11f1-8c3a-42221ed6388d","tags":[],"updated_at":"2026-05-15T02:54:52.468614Z"}},{"id":"2386","type":"projects","attributes":{"artifact_storage_location":"model-lab:///76396","created_at":"2026-05-14T23:30:56.250532Z","description":"","external_url":"https://mlflow.us1.staging.dog/#/experiments/76396","is_starred":false,"name":"gpt2-smoke-1778800651","owner_id":"1d45ac49-1e4e-11f1-8c3a-42221ed6388d","tags":[],"updated_at":"2026-05-14T23:30:56.261218Z"}},{"id":"2385","type":"projects","attributes":{"artifact_storage_location":"model-lab:///76393","created_at":"2026-05-14T23:10:18.350308Z","description":"","external_url":"https://mlflow.us1.staging.dog/#/experiments/76393","is_starred":false,"name":"gpt2-smoke-1778799710","owner_id":"1d45ac49-1e4e-11f1-8c3a-42221ed6388d","tags":[],"updated_at":"2026-05-14T23:10:18.361036Z"}},{"id":"2352","type":"projects","attributes":{"artifact_storage_location":"model-lab:///76357","created_at":"2026-05-14T17:21:01.714616Z","description":"","external_url":"https://mlflow.us1.staging.dog/#/experiments/76357","is_starred":false,"name":"qwen3-4b-thinking-false-1778778667","owner_id":"1d45ac49-1e4e-11f1-8c3a-42221ed6388d","tags":[],"updated_at":"2026-05-14T17:21:01.724501Z"}},{"id":"2351","type":"projects","attributes":{"artifact_storage_location":"model-lab:///2351","created_at":"2026-05-14T13:24:26.439419Z","description":"","is_starred":false,"name":"40-model-lab-online-rlaif","owner_id":"11e6980a-089e-49ea-be5c-c821408af46d","tags":[],"updated_at":"2026-05-14T13:24:26.452049Z"}}],"meta":{"page":{"type":"number_size","number":0,"size":25,"total":403,"first_number":0,"prev_number":null,"next_number":1,"last_number":16}},"links":{"self":"https://api.datad0g.com/api/v2/model-lab-api/projects","first":"https://api.datad0g.com/api/v2/model-lab-api/projects?page[number]=0&page[size]=25","last":"https://api.datad0g.com/api/v2/model-lab-api/projects?page[number]=16&page[size]=25","next":"https://api.datad0g.com/api/v2/model-lab-api/projects?page[number]=1&page[size]=25"}}' + headers: + Content-Type: + - application/json + status: + code: 200 + message: OK +recorded_with: VCR 6.0.0 diff --git a/cassettes/features/v2/model_lab_api/List-Model-Lab-run-artifacts-returns-OK-response.frozen b/cassettes/features/v2/model_lab_api/List-Model-Lab-run-artifacts-returns-OK-response.frozen new file mode 100644 index 000000000000..144cd0a44282 --- /dev/null +++ b/cassettes/features/v2/model_lab_api/List-Model-Lab-run-artifacts-returns-OK-response.frozen @@ -0,0 +1 @@ +2026-05-18T16:45:00.000Z \ No newline at end of file diff --git a/cassettes/features/v2/model_lab_api/List-Model-Lab-run-artifacts-returns-OK-response.yml b/cassettes/features/v2/model_lab_api/List-Model-Lab-run-artifacts-returns-OK-response.yml new file mode 100644 index 000000000000..50c1fba59ca5 --- /dev/null +++ b/cassettes/features/v2/model_lab_api/List-Model-Lab-run-artifacts-returns-OK-response.yml @@ -0,0 +1,20 @@ +http_interactions: +- recorded_at: Mon, 18 May 2026 16:45:00 GMT + request: + body: null + headers: + Accept: + - application/json + method: GET + uri: https://api.datadoghq.com/api/v2/model-lab-api/runs/70158/artifacts + response: + body: + encoding: UTF-8 + string: '{"data":{"id":"70158","type":"artifacts","attributes":{"files":[{"path":"lora_model/","is_dir":true}],"path_in_project":"f635c73b70594ab6bb6e212cdf87d0d5/artifacts"}}}' + headers: + Content-Type: + - application/json + status: + code: 200 + message: OK +recorded_with: VCR 6.0.0 diff --git a/cassettes/features/v2/model_lab_api/List-Model-Lab-run-facet-keys-returns-OK-response.frozen b/cassettes/features/v2/model_lab_api/List-Model-Lab-run-facet-keys-returns-OK-response.frozen new file mode 100644 index 000000000000..144cd0a44282 --- /dev/null +++ b/cassettes/features/v2/model_lab_api/List-Model-Lab-run-facet-keys-returns-OK-response.frozen @@ -0,0 +1 @@ +2026-05-18T16:45:00.000Z \ No newline at end of file diff --git a/cassettes/features/v2/model_lab_api/List-Model-Lab-run-facet-keys-returns-OK-response.yml b/cassettes/features/v2/model_lab_api/List-Model-Lab-run-facet-keys-returns-OK-response.yml new file mode 100644 index 000000000000..323da6bcff25 --- /dev/null +++ b/cassettes/features/v2/model_lab_api/List-Model-Lab-run-facet-keys-returns-OK-response.yml @@ -0,0 +1,20 @@ +http_interactions: +- recorded_at: Mon, 18 May 2026 16:45:00 GMT + request: + body: null + headers: + Accept: + - application/json + method: GET + uri: https://api.datadoghq.com/api/v2/model-lab-api/facet-keys?filter%5Bproject_id%5D=2387 + response: + body: + encoding: UTF-8 + string: '{"data":{"id":"2387","type":"facet_keys","attributes":{"metrics":["entropy","epoch","eval_entropy","eval_loss","eval_mean_token_accuracy","eval_num_tokens","eval_runtime","eval_samples_per_second","eval_steps_per_second","final_train_loss","grad_norm","learning_rate","loss","mean_token_accuracy","num_tokens","total_flos","total_steps","training_runtime_seconds","train_loss","train_runtime","train_samples_per_second","train_steps_per_second"],"parameters":["activation_function","adam_beta1","adam_beta2","adam_epsilon","add_cross_attention","architectures","attn_pdrop","auto_find_batch_size","average_tokens_across_devices","bf16","bf16_full_eval","bos_token_id","chunk_size_feed_forward","dataset","disable_tqdm","dtype","embd_pdrop","eos_token_id","eval_accumulation_steps","eval_delay","eval_do_concat_batches","eval_on_start","eval_steps","eval_strategy","eval_use_gather_object","fp16","fp16_full_eval","gradient_accumulation_steps","gradient_checkpointing","gradient_checkpointing_kwargs","id2label","include_for_metrics","include_num_input_tokens_seen","initializer_range","is_encoder_decoder","label2id","label_smoothing_factor","layer_norm_epsilon","learning_rate","liger_kernel_config","logging_first_step","logging_nan_inf_filter","logging_steps","logging_strategy","log_level","log_level_replica","log_on_each_node","lora_alpha","lora_dropout","lora_rank","lr_scheduler_kwargs","lr_scheduler_type","max_grad_norm","max_length","max_steps","method","model_name","model_type","_name_or_path","n_ctx","neftune_noise_alpha","n_embd","n_head","n_inner","n_layer","n_positions","num_epochs","num_train_epochs","optim","optim_args","optimizer","optim_target_modules","output_attentions","output_dir","output_hidden_states","packing","pad_token_id","per_device_batch_size","per_device_eval_batch_size","per_device_train_batch_size","precision","prediction_loss_only","problem_type","project","reorder_and_upcast_attn","report_to","resid_pdrop","return_dict","run_name","scale_attn_by_inverse_layer_idx","scale_attn_weights","summary_activation","summary_first_dropout","summary_proj_to_labels","summary_type","summary_use_proj","task_specific_params","tf32","tie_word_embeddings","torch_compile","torch_compile_backend","torch_compile_mode","torch_empty_cache_steps","trackio_bucket_id","trackio_space_id","trackio_static_space_id","trainer","transformers_version","use_cache","use_liger_kernel","vocab_size","warmup_steps","weight_decay"],"tags":["mlflow.runName","mlflow.source.name","mlflow.source.type","mlflow.user","resumed"]}}}' + headers: + Content-Type: + - application/json + status: + code: 200 + message: OK +recorded_with: VCR 6.0.0 diff --git a/cassettes/features/v2/model_lab_api/List-Model-Lab-run-facet-values-returns-OK-response.frozen b/cassettes/features/v2/model_lab_api/List-Model-Lab-run-facet-values-returns-OK-response.frozen new file mode 100644 index 000000000000..144cd0a44282 --- /dev/null +++ b/cassettes/features/v2/model_lab_api/List-Model-Lab-run-facet-values-returns-OK-response.frozen @@ -0,0 +1 @@ +2026-05-18T16:45:00.000Z \ No newline at end of file diff --git a/cassettes/features/v2/model_lab_api/List-Model-Lab-run-facet-values-returns-OK-response.yml b/cassettes/features/v2/model_lab_api/List-Model-Lab-run-facet-values-returns-OK-response.yml new file mode 100644 index 000000000000..47fb5cc789da --- /dev/null +++ b/cassettes/features/v2/model_lab_api/List-Model-Lab-run-facet-values-returns-OK-response.yml @@ -0,0 +1,20 @@ +http_interactions: +- recorded_at: Mon, 18 May 2026 16:45:00 GMT + request: + body: null + headers: + Accept: + - application/json + method: GET + uri: https://api.datadoghq.com/api/v2/model-lab-api/facet-values?filter%5Bproject_id%5D=2387&facet_type=tag&facet_name=model + response: + body: + encoding: UTF-8 + string: '{"data":{"id":"tag:model:2387","type":"facet_values","attributes":{"facet_name":"model","facet_type":"tag","values":[]}}}' + headers: + Content-Type: + - application/json + status: + code: 200 + message: OK +recorded_with: VCR 6.0.0 diff --git a/cassettes/features/v2/model_lab_api/List-Model-Lab-runs-returns-OK-response.frozen b/cassettes/features/v2/model_lab_api/List-Model-Lab-runs-returns-OK-response.frozen new file mode 100644 index 000000000000..144cd0a44282 --- /dev/null +++ b/cassettes/features/v2/model_lab_api/List-Model-Lab-runs-returns-OK-response.frozen @@ -0,0 +1 @@ +2026-05-18T16:45:00.000Z \ No newline at end of file diff --git a/cassettes/features/v2/model_lab_api/List-Model-Lab-runs-returns-OK-response.yml b/cassettes/features/v2/model_lab_api/List-Model-Lab-runs-returns-OK-response.yml new file mode 100644 index 000000000000..f585788cffec --- /dev/null +++ b/cassettes/features/v2/model_lab_api/List-Model-Lab-runs-returns-OK-response.yml @@ -0,0 +1,28 @@ +http_interactions: +- recorded_at: Mon, 18 May 2026 16:45:00 GMT + request: + body: null + headers: + Accept: + - application/json + method: GET + uri: https://api.datadoghq.com/api/v2/model-lab-api/runs + response: + body: + encoding: UTF-8 + string: '{"data":[{"id":"71355","type":"runs","attributes":{"created_at":"2026-05-18T15:55:50.38705Z","descendant_match":false,"description":"","external_url":"https://mlflow.us1.staging.dog/#/runs/967b528b3e994b34a67348b790f5faba","has_children":false,"is_pinned":false,"metric_summaries":[],"mlflow_artifact_location":"mlflow-artifacts:///2438/71355/artifacts","name":"qwen36-27b-qlora-fsdp-1779119158-1779119750","owner_id":"1d45ac49-1e4e-11f1-8c3a-42221ed6388d","params":[{"key":"config_max_length","value":"512"},{"key":"dataset","value":"s3://aip-long-running-jobs/savita.manghnani/qwen3_without_thinking.zip"},{"key":"gradient_accumulation_steps","value":"1"},{"key":"learning_rate","value":"0.0001"},{"key":"lora_alpha","value":"16"},{"key":"lora_dropout","value":"0.1"},{"key":"lora_rank","value":"8"},{"key":"method","value":"qlora-4bit"},{"key":"model_name","value":"Qwen/Qwen3.6-27B"},{"key":"num_epochs","value":"1"},{"key":"optimizer","value":"adamw_8bit"},{"key":"packing","value":"False"},{"key":"per_device_batch_size","value":"2"},{"key":"precision","value":"bf16"},{"key":"trainer","value":"trl-sft-raytrain"}],"project_id":2438,"started_at":"2026-05-18T15:55:50.275Z","status":"running","tags":[{"key":"mlflow.runName","value":"qwen36-27b-qlora-fsdp-1779119158-1779119750"},{"key":"mlflow.source.name","value":"/home/ray/.venv/lib/python3.12/site-packages/ray/_private/workers/default_worker.py"},{"key":"mlflow.source.type","value":"LOCAL"},{"key":"mlflow.user","value":"dog"},{"key":"resumed","value":"false"}],"updated_at":"2026-05-18T15:55:50.399903Z"}},{"id":"71354","type":"runs","attributes":{"created_at":"2026-05-18T15:46:35.963967Z","descendant_match":false,"description":"","external_url":"https://mlflow.us1.staging.dog/#/runs/018cbd19633e47f7b57d140b63f2f99e","has_children":false,"is_pinned":false,"metric_summaries":[],"mlflow_artifact_location":"mlflow-artifacts:///2437/71354/artifacts","name":"qwen36-27b-lora-bf16-fsdp-1779118712-1779119195","owner_id":"1d45ac49-1e4e-11f1-8c3a-42221ed6388d","params":[{"key":"config_max_length","value":"512"},{"key":"dataset","value":"s3://aip-long-running-jobs/savita.manghnani/qwen3_without_thinking.zip"},{"key":"gradient_accumulation_steps","value":"1"},{"key":"learning_rate","value":"0.0001"},{"key":"lora_alpha","value":"16"},{"key":"lora_dropout","value":"0.1"},{"key":"lora_rank","value":"8"},{"key":"method","value":"lora"},{"key":"model_name","value":"Qwen/Qwen3.6-27B"},{"key":"num_epochs","value":"1"},{"key":"optimizer","value":"adamw_8bit"},{"key":"packing","value":"False"},{"key":"per_device_batch_size","value":"2"},{"key":"precision","value":"bf16"},{"key":"trainer","value":"trl-sft-raytrain"}],"project_id":2437,"started_at":"2026-05-18T15:46:35.799Z","status":"running","tags":[{"key":"mlflow.runName","value":"qwen36-27b-lora-bf16-fsdp-1779118712-1779119195"},{"key":"mlflow.source.name","value":"/home/ray/.venv/lib/python3.12/site-packages/ray/_private/workers/default_worker.py"},{"key":"mlflow.source.type","value":"LOCAL"},{"key":"mlflow.user","value":"dog"},{"key":"resumed","value":"false"}],"updated_at":"2026-05-18T15:46:35.980176Z"}},{"id":"71353","type":"runs","attributes":{"created_at":"2026-05-18T14:36:11.550137Z","descendant_match":false,"description":"","external_url":"https://mlflow.us1.staging.dog/#/runs/7ea36d29bbaf4e74abd124f08abe514e","has_children":false,"is_pinned":false,"metric_summaries":[{"key":"system/total_input_tokens","min":10240,"max":10240,"mean":10240,"latest":10240,"count":1,"first_step":0,"last_step":0},{"key":"system/total_token_throughput","min":1627.7501525189548,"max":1627.7501525189548,"mean":1627.7501525189548,"latest":1627.7501525189548,"count":1,"first_step":0,"last_step":0},{"key":"system/median_itl_ms","min":35.59626202331856,"max":35.59626202331856,"mean":35.59626202331856,"latest":35.59626202331856,"count":1,"first_step":0,"last_step":0},{"key":"cost/gpu_cost_usd_decode","min":0.048628,"max":0.048628,"mean":0.048628,"latest":0.048628,"count":1,"first_step":0,"last_step":0},{"key":"system/mean_e2el_ms","min":6844.651613000315,"max":6844.651613000315,"mean":6844.651613000315,"latest":6844.651613000315,"count":1,"first_step":0,"last_step":0},{"key":"system/mean_itl_ms","min":42.46556939943183,"max":42.46556939943183,"mean":42.46556939943183,"latest":42.46556939943183,"count":1,"first_step":0,"last_step":0},{"key":"system/p99_itl_ms","min":224.5777664042544,"max":224.5777664042544,"mean":224.5777664042544,"latest":224.5777664042544,"count":1,"first_step":0,"last_step":0},{"key":"system/completion_rate","min":1,"max":1,"mean":1,"latest":0,"count":1,"first_step":0,"last_step":0},{"key":"system/mean_ttft_ms","min":1720.476923091337,"max":1720.476923091337,"mean":1720.476923091337,"latest":1720.476923091337,"count":1,"first_step":0,"last_step":0},{"key":"system/median_tpot_ms","min":41.04991006301936,"max":41.04991006301936,"mean":41.04991006301936,"latest":41.04991006301936,"count":1,"first_step":0,"last_step":0},{"key":"system/num_prompts","min":10,"max":10,"mean":10,"latest":10,"count":1,"first_step":0,"last_step":0},{"key":"system/p99_e2el_ms","min":7012.529445069376,"max":7012.529445069376,"mean":7012.529445069376,"latest":7012.529445069376,"count":1,"first_step":0,"last_step":0},{"key":"system/request_throughput","min":1.4227341600550256,"max":1.4227341600550256,"mean":1.4227341600550256,"latest":1.4227341600550256,"count":1,"first_step":0,"last_step":0},{"key":"cost/gpu_cost_per_hour","min":0.5,"max":0.5,"mean":0.5,"latest":0.5,"count":1,"first_step":0,"last_step":0},{"key":"cost/input_cost_per_mtok","min":0.037,"max":0.037,"mean":0.037,"latest":0.037,"count":1,"first_step":0,"last_step":0},{"key":"cost/output_cost_per_mtok","min":0.6449,"max":0.6449,"mean":0.6449,"latest":0.6449,"count":1,"first_step":0,"last_step":0},{"key":"system/duration","min":7.028719968046062,"max":7.028719968046062,"mean":7.028719968046062,"latest":7.028719968046062,"count":1,"first_step":0,"last_step":0},{"key":"system/mean_tpot_ms","min":46.36904549927383,"max":46.36904549927383,"mean":46.36904549927383,"latest":46.36904549927383,"count":1,"first_step":0,"last_step":0},{"key":"system/p99_tpot_ms","min":92.36138276634182,"max":92.36138276634182,"mean":92.36138276634182,"latest":92.36138276634182,"count":1,"first_step":0,"last_step":0},{"key":"system/total_output_tokens","min":1201,"max":1201,"mean":1201,"latest":1201,"count":1,"first_step":0,"last_step":0},{"key":"cost/gpu_cost_usd_prefill","min":0.117495,"max":0.117495,"mean":0.117495,"latest":0.117495,"count":1,"first_step":0,"last_step":0},{"key":"system/completed","min":10,"max":10,"mean":10,"latest":10,"count":1,"first_step":0,"last_step":0},{"key":"system/median_e2el_ms","min":6965.079715999309,"max":6965.079715999309,"mean":6965.079715999309,"latest":6965.079715999309,"count":1,"first_step":0,"last_step":0},{"key":"system/median_ttft_ms","min":1751.7411379958503,"max":1751.7411379958503,"mean":1751.7411379958503,"latest":1751.7411379958503,"count":1,"first_step":0,"last_step":0},{"key":"system/output_throughput","min":170.87037262260858,"max":170.87037262260858,"mean":170.87037262260858,"latest":170.87037262260858,"count":1,"first_step":0,"last_step":0},{"key":"system/p99_ttft_ms","min":2365.1834659359884,"max":2365.1834659359884,"mean":2365.1834659359884,"latest":2365.1834659359884,"count":1,"first_step":0,"last_step":0}],"mlflow_artifact_location":"mlflow-artifacts:///2436/71353/artifacts","name":"L4-gpt-oss-20b","owner_id":"1d45ac49-1e4e-11f1-8c3a-42221ed6388d","params":[{"key":"enable_chunked_prefill","value":"True"},{"key":"enable_prefix_caching","value":"False"},{"key":"gpu_memory_utilization","value":"0.95"},{"key":"gpu_type","value":"L4"},{"key":"model","value":"openai/gpt-oss-20b"},{"key":"model.basename","value":"gpt-oss-20b"},{"key":"service_name","value":"gpt-oss-20b-bench-bgtu"},{"key":"tensor_parallel_size","value":"1"},{"key":"vllm.image","value":"727006795293.dkr.ecr.us-east-1.amazonaws.com/dd-source/domains/data_science/llm/apps/ray-llm-service:vllm-bleeding-edge-nydus"}],"project_id":2436,"started_at":"2026-05-18T14:36:11.37Z","status":"completed","tags":[{"key":"leaderboard","value":"true"}],"updated_at":"2026-05-18T14:36:16.155066Z"}},{"id":"71352","type":"runs","attributes":{"created_at":"2026-05-18T14:36:06.518157Z","descendant_match":false,"description":"","external_url":"https://mlflow.us1.staging.dog/#/runs/b7cc8492b38748a68e591dc0a39b7a22","has_children":false,"is_pinned":false,"metric_summaries":[{"key":"system/mean_tpot_ms","min":43.4315888917873,"max":43.4315888917873,"mean":43.4315888917873,"latest":43.4315888917873,"count":1,"first_step":0,"last_step":0},{"key":"system/median_tpot_ms","min":43.51078476765978,"max":43.51078476765978,"mean":43.51078476765978,"latest":43.51078476765978,"count":1,"first_step":0,"last_step":0},{"key":"system/output_throughput","min":149.83232267595528,"max":149.83232267595528,"mean":149.83232267595528,"latest":149.83232267595528,"count":1,"first_step":0,"last_step":0},{"key":"system/request_throughput","min":1.1705650209059006,"max":1.1705650209059006,"mean":1.1705650209059006,"latest":1.1705650209059006,"count":1,"first_step":0,"last_step":0},{"key":"system/median_itl_ms","min":40.42643454158679,"max":40.42643454158679,"mean":40.42643454158679,"latest":40.42643454158679,"count":1,"first_step":0,"last_step":0},{"key":"cost/output_cost_per_mtok","min":0.4206,"max":0.4206,"mean":0.4206,"latest":0.4206,"count":1,"first_step":0,"last_step":0},{"key":"system/duration","min":6.834306388045661,"max":6.834306388045661,"mean":6.834306388045661,"latest":6.834306388045661,"count":1,"first_step":0,"last_step":0},{"key":"system/mean_itl_ms","min":43.060154871227496,"max":43.060154871227496,"mean":43.060154871227496,"latest":43.060154871227496,"count":1,"first_step":0,"last_step":0},{"key":"system/mean_ttft_ms","min":1236.150400378392,"max":1236.150400378392,"mean":1236.150400378392,"latest":1236.150400378392,"count":1,"first_step":0,"last_step":0},{"key":"system/median_ttft_ms","min":1221.9488615519367,"max":1221.9488615519367,"mean":1221.9488615519367,"latest":1221.9488615519367,"count":1,"first_step":0,"last_step":0},{"key":"system/num_prompts","min":10,"max":10,"mean":10,"latest":10,"count":1,"first_step":0,"last_step":0},{"key":"system/p99_tpot_ms","min":48.08998211418044,"max":48.08998211418044,"mean":48.08998211418044,"latest":48.08998211418044,"count":1,"first_step":0,"last_step":0},{"key":"cost/gpu_cost_usd_decode","min":0.064611,"max":0.064611,"mean":0.064611,"latest":0.064611,"count":1,"first_step":0,"last_step":0},{"key":"cost/gpu_cost_usd_prefill","min":0.083986,"max":0.083986,"mean":0.083986,"latest":0.083986,"count":1,"first_step":0,"last_step":0},{"key":"system/completed","min":8,"max":8,"mean":8,"latest":8,"count":1,"first_step":0,"last_step":0},{"key":"system/median_e2el_ms","min":6749.058461980894,"max":6749.058461980894,"mean":6749.058461980894,"latest":6749.058461980894,"count":1,"first_step":0,"last_step":0},{"key":"system/p99_itl_ms","min":123.0954357003793,"max":123.0954357003793,"mean":123.0954357003793,"latest":123.0954357003793,"count":1,"first_step":0,"last_step":0},{"key":"system/p99_ttft_ms","min":1679.515644611092,"max":1679.515644611092,"mean":1679.515644611092,"latest":1679.515644611092,"count":1,"first_step":0,"last_step":0},{"key":"system/total_input_tokens","min":8192,"max":8192,"mean":8192,"latest":8192,"count":1,"first_step":0,"last_step":0},{"key":"system/total_output_tokens","min":1024,"max":1024,"mean":1024,"latest":1024,"count":1,"first_step":0,"last_step":0},{"key":"cost/gpu_cost_per_hour","min":0.5,"max":0.5,"mean":0.5,"latest":0.5,"count":1,"first_step":0,"last_step":0},{"key":"cost/input_cost_per_mtok","min":0.0263,"max":0.0263,"mean":0.0263,"latest":0.0263,"count":1,"first_step":0,"last_step":0},{"key":"system/completion_rate","min":0.8,"max":0.8,"mean":0.8,"latest":0.8,"count":1,"first_step":0,"last_step":0},{"key":"system/mean_e2el_ms","min":6751.962189635378,"max":6751.962189635378,"mean":6751.962189635378,"latest":6751.962189635378,"count":1,"first_step":0,"last_step":0},{"key":"system/p99_e2el_ms","min":6818.673504971666,"max":6818.673504971666,"mean":6818.673504971666,"latest":6818.673504971666,"count":1,"first_step":0,"last_step":0},{"key":"system/total_token_throughput","min":1348.4909040835976,"max":1348.4909040835976,"mean":1348.4909040835976,"latest":1348.4909040835976,"count":1,"first_step":0,"last_step":0}],"mlflow_artifact_location":"mlflow-artifacts:///2435/71352/artifacts","name":"L4-Qwen3.5-4B","owner_id":"1d45ac49-1e4e-11f1-8c3a-42221ed6388d","params":[{"key":"enable_chunked_prefill","value":"True"},{"key":"enable_prefix_caching","value":"False"},{"key":"gpu_memory_utilization","value":"0.95"},{"key":"gpu_type","value":"L4"},{"key":"model","value":"Qwen/Qwen3.5-4B"},{"key":"model.basename","value":"Qwen3.5-4B"},{"key":"service_name","value":"qwen3-5-4b-bench-3t8u"},{"key":"tensor_parallel_size","value":"1"},{"key":"vllm.image","value":"727006795293.dkr.ecr.us-east-1.amazonaws.com/dd-source/domains/data_science/llm/apps/ray-llm-service:vllm-bleeding-edge-nydus"}],"project_id":2435,"started_at":"2026-05-18T14:36:06.322Z","status":"completed","tags":[{"key":"leaderboard","value":"true"}],"updated_at":"2026-05-18T14:36:11.155341Z"}},{"id":"71351","type":"runs","attributes":{"created_at":"2026-05-18T14:36:01.262504Z","descendant_match":false,"description":"","external_url":"https://mlflow.us1.staging.dog/#/runs/1a7acda0ecc04ca280b77c2f5bef8dc2","has_children":false,"is_pinned":false,"metric_summaries":[{"key":"system/mean_itl_ms","min":10.056404993260262,"max":10.056404993260262,"mean":10.056404993260262,"latest":10.056404993260262,"count":1,"first_step":0,"last_step":0},{"key":"system/median_tpot_ms","min":10.248206653008898,"max":10.248206653008898,"mean":10.248206653008898,"latest":10.248206653008898,"count":1,"first_step":0,"last_step":0},{"key":"system/p99_itl_ms","min":59.449308563488955,"max":59.449308563488955,"mean":59.449308563488955,"latest":59.449308563488955,"count":1,"first_step":0,"last_step":0},{"key":"system/p99_tpot_ms","min":10.799848160644128,"max":10.799848160644128,"mean":10.799848160644128,"latest":10.799848160644128,"count":1,"first_step":0,"last_step":0},{"key":"system/total_output_tokens","min":896,"max":896,"mean":896,"latest":896,"count":1,"first_step":0,"last_step":0},{"key":"system/total_token_throughput","min":4736.073511532153,"max":4736.073511532153,"mean":4736.073511532153,"latest":4736.073511532153,"count":1,"first_step":0,"last_step":0},{"key":"cost/input_cost_per_mtok","min":0.0238,"max":0.0238,"mean":0.0238,"latest":0.0238,"count":1,"first_step":0,"last_step":0},{"key":"system/mean_e2el_ms","min":1663.88821718283,"max":1663.88821718283,"mean":1663.88821718283,"latest":1663.88821718283,"count":1,"first_step":0,"last_step":0},{"key":"system/mean_tpot_ms","min":10.16328207094587,"max":10.16328207094587,"mean":10.16328207094587,"latest":10.16328207094587,"count":1,"first_step":0,"last_step":0},{"key":"system/output_throughput","min":526.2303901702393,"max":526.2303901702393,"mean":526.2303901702393,"latest":526.2303901702393,"count":1,"first_step":0,"last_step":0},{"key":"system/p99_e2el_ms","min":1673.3655747771263,"max":1673.3655747771263,"mean":1673.3655747771263,"latest":1673.3655747771263,"count":1,"first_step":0,"last_step":0},{"key":"cost/gpu_cost_per_hour","min":1.35,"max":1.35,"mean":1.35,"latest":1.35,"count":1,"first_step":0,"last_step":0},{"key":"cost/gpu_cost_usd_decode","min":0.035789,"max":0.035789,"mean":0.035789,"latest":0.035789,"count":1,"first_step":0,"last_step":0},{"key":"cost/output_cost_per_mtok","min":0.2962,"max":0.2962,"mean":0.2962,"latest":0.2962,"count":1,"first_step":0,"last_step":0},{"key":"system/completion_rate","min":0.7,"max":0.7,"mean":0.7,"latest":0.7,"count":1,"first_step":0,"last_step":0},{"key":"system/median_itl_ms","min":9.22439800342545,"max":9.22439800342545,"mean":9.22439800342545,"latest":9.22439800342545,"count":1,"first_step":0,"last_step":0},{"key":"system/median_ttft_ms","min":370.5793390981853,"max":370.5793390981853,"mean":370.5793390981853,"latest":370.5793390981853,"count":1,"first_step":0,"last_step":0},{"key":"system/num_prompts","min":10,"max":10,"mean":10,"latest":10,"count":1,"first_step":0,"last_step":0},{"key":"system/total_input_tokens","min":7168,"max":7168,"mean":7168,"latest":7168,"count":1,"first_step":0,"last_step":0},{"key":"cost/gpu_cost_usd_prefill","min":0.076802,"max":0.076802,"mean":0.076802,"latest":0.076802,"count":1,"first_step":0,"last_step":0},{"key":"system/mean_ttft_ms","min":373.15139417270467,"max":373.15139417270467,"mean":373.15139417270467,"latest":373.15139417270467,"count":1,"first_step":0,"last_step":0},{"key":"system/median_e2el_ms","min":1666.9419680256397,"max":1666.9419680256397,"mean":1666.9419680256397,"latest":1666.9419680256397,"count":1,"first_step":0,"last_step":0},{"key":"system/p99_ttft_ms","min":442.06858904799446,"max":442.06858904799446,"mean":442.06858904799446,"latest":442.06858904799446,"count":1,"first_step":0,"last_step":0},{"key":"system/request_throughput","min":4.111174923204994,"max":4.111174923204994,"mean":4.111174923204994,"latest":4.111174923204994,"count":1,"first_step":0,"last_step":0},{"key":"system/completed","min":7,"max":7,"mean":7,"latest":7,"count":1,"first_step":0,"last_step":0},{"key":"system/duration","min":1.7026762739988044,"max":1.7026762739988044,"mean":1.7026762739988044,"latest":1.7026762739988044,"count":1,"first_step":0,"last_step":0}],"mlflow_artifact_location":"mlflow-artifacts:///2434/71351/artifacts","name":"A100-Qwen3-4B","owner_id":"1d45ac49-1e4e-11f1-8c3a-42221ed6388d","params":[{"key":"enable_chunked_prefill","value":"True"},{"key":"enable_prefix_caching","value":"False"},{"key":"gpu_memory_utilization","value":"0.95"},{"key":"gpu_type","value":"A100"},{"key":"model","value":"Qwen/Qwen3-4B"},{"key":"model.basename","value":"Qwen3-4B"},{"key":"service_name","value":"qwen3-4b-bench-95qm"},{"key":"tensor_parallel_size","value":"1"},{"key":"vllm.image","value":"727006795293.dkr.ecr.us-east-1.amazonaws.com/dd-source/domains/data_science/llm/apps/ray-llm-service:vllm-bleeding-edge-nydus"}],"project_id":2434,"started_at":"2026-05-18T14:36:00.552Z","status":"completed","tags":[{"key":"leaderboard","value":"true"}],"updated_at":"2026-05-18T14:36:06.038833Z"}},{"id":"71350","type":"runs","attributes":{"created_at":"2026-05-18T14:35:55.810039Z","descendant_match":false,"description":"","external_url":"https://mlflow.us1.staging.dog/#/runs/bcf3d94123df44e1b94c4d3b441f8660","has_children":false,"is_pinned":false,"metric_summaries":[{"key":"cost/gpu_cost_usd_decode","min":0.051152,"max":0.051152,"mean":0.051152,"latest":0.051152,"count":1,"first_step":0,"last_step":0},{"key":"system/mean_e2el_ms","min":1780.398302944377,"max":1780.398302944377,"mean":1780.398302944377,"latest":1780.398302944377,"count":1,"first_step":0,"last_step":0},{"key":"system/mean_tpot_ms","min":12.372558590439038,"max":12.372558590439038,"mean":12.372558590439038,"latest":12.372558590439038,"count":1,"first_step":0,"last_step":0},{"key":"system/median_ttft_ms","min":209.0833619586192,"max":209.0833619586192,"mean":209.0833619586192,"latest":209.0833619586192,"count":1,"first_step":0,"last_step":0},{"key":"system/num_prompts","min":10,"max":10,"mean":10,"latest":10,"count":1,"first_step":0,"last_step":0},{"key":"cost/gpu_cost_per_hour","min":1.35,"max":1.35,"mean":1.35,"latest":1.35,"count":1,"first_step":0,"last_step":0},{"key":"cost/input_cost_per_mtok","min":0.0294,"max":0.0294,"mean":0.0294,"latest":0.0294,"count":1,"first_step":0,"last_step":0},{"key":"system/completion_rate","min":0.2,"max":0.2,"mean":0.2,"latest":0.2,"count":1,"first_step":0,"last_step":0},{"key":"system/duration","min":1.8296654969453812,"max":1.8296654969453812,"mean":1.8296654969453812,"latest":1.8296654969453812,"count":1,"first_step":0,"last_step":0},{"key":"system/median_e2el_ms","min":1780.398302944377,"max":1780.398302944377,"mean":1780.398302944377,"latest":1780.398302944377,"count":1,"first_step":0,"last_step":0},{"key":"system/median_itl_ms","min":11.988877027761191,"max":11.988877027761191,"mean":11.988877027761191,"latest":11.988877027761191,"count":1,"first_step":0,"last_step":0},{"key":"system/output_throughput","min":139.91628547807832,"max":139.91628547807832,"mean":139.91628547807832,"latest":139.91628547807832,"count":1,"first_step":0,"last_step":0},{"key":"system/p99_e2el_ms","min":1805.3105722554028,"max":1805.3105722554028,"mean":1805.3105722554028,"latest":1805.3105722554028,"count":1,"first_step":0,"last_step":0},{"key":"system/completed","min":2,"max":2,"mean":2,"latest":2,"count":1,"first_step":0,"last_step":0},{"key":"system/mean_ttft_ms","min":209.0833619586192,"max":209.0833619586192,"mean":209.0833619586192,"latest":209.0833619586192,"count":1,"first_step":0,"last_step":0},{"key":"system/p99_itl_ms","min":25.041629734914697,"max":25.041629734914697,"mean":25.041629734914697,"latest":25.041629734914697,"count":1,"first_step":0,"last_step":0},{"key":"system/p99_ttft_ms","min":257.9028429754544,"max":257.9028429754544,"mean":257.9028429754544,"latest":257.9028429754544,"count":1,"first_step":0,"last_step":0},{"key":"system/request_throughput","min":1.093095980297487,"max":1.093095980297487,"mean":1.093095980297487,"latest":1.093095980297487,"count":1,"first_step":0,"last_step":0},{"key":"system/total_output_tokens","min":256,"max":256,"mean":256,"latest":256,"count":1,"first_step":0,"last_step":0},{"key":"system/total_token_throughput","min":1259.246569302705,"max":1259.246569302705,"mean":1259.246569302705,"latest":1259.246569302705,"count":1,"first_step":0,"last_step":0},{"key":"cost/gpu_cost_usd_prefill","min":0.095492,"max":0.095492,"mean":0.095492,"latest":0.095492,"count":1,"first_step":0,"last_step":0},{"key":"cost/output_cost_per_mtok","min":0.333,"max":0.333,"mean":0.333,"latest":0.333,"count":1,"first_step":0,"last_step":0},{"key":"system/mean_itl_ms","min":12.273241152342962,"max":12.273241152342962,"mean":12.273241152342962,"latest":12.273241152342962,"count":1,"first_step":0,"last_step":0},{"key":"system/median_tpot_ms","min":12.372558590439038,"max":12.372558590439038,"mean":12.372558590439038,"latest":12.372558590439038,"count":1,"first_step":0,"last_step":0},{"key":"system/p99_tpot_ms","min":12.560804351902105,"max":12.560804351902105,"mean":12.560804351902105,"latest":12.560804351902105,"count":1,"first_step":0,"last_step":0},{"key":"system/total_input_tokens","min":2048,"max":2048,"mean":2048,"latest":2048,"count":1,"first_step":0,"last_step":0}],"mlflow_artifact_location":"mlflow-artifacts:///2433/71350/artifacts","name":"A100-Qwen2.5-Coder-7B","owner_id":"1d45ac49-1e4e-11f1-8c3a-42221ed6388d","params":[{"key":"enable_chunked_prefill","value":"True"},{"key":"enable_prefix_caching","value":"False"},{"key":"gpu_memory_utilization","value":"0.95"},{"key":"gpu_type","value":"A100"},{"key":"model","value":"Qwen/Qwen2.5-Coder-7B"},{"key":"model.basename","value":"Qwen2.5-Coder-7B"},{"key":"service_name","value":"qwen2-5-coder-7b-bench-py78"},{"key":"tensor_parallel_size","value":"1"},{"key":"vllm.image","value":"727006795293.dkr.ecr.us-east-1.amazonaws.com/dd-source/domains/data_science/llm/apps/ray-llm-service:vllm-bleeding-edge-nydus"}],"project_id":2433,"started_at":"2026-05-18T14:35:55.625Z","status":"completed","tags":[{"key":"leaderboard","value":"true"}],"updated_at":"2026-05-18T14:36:00.339161Z"}},{"id":"71349","type":"runs","attributes":{"created_at":"2026-05-18T14:35:50.654902Z","descendant_match":false,"description":"","external_url":"https://mlflow.us1.staging.dog/#/runs/56ad4005ff9e40d1a0e106d5b60130c6","has_children":false,"is_pinned":false,"metric_summaries":[{"key":"system/duration","min":2.3674380170414224,"max":2.3674380170414224,"mean":2.3674380170414224,"latest":2.3674380170414224,"count":1,"first_step":0,"last_step":0},{"key":"system/mean_itl_ms","min":14.932849314997535,"max":14.932849314997535,"mean":14.932849314997535,"latest":14.932849314997535,"count":1,"first_step":0,"last_step":0},{"key":"system/mean_tpot_ms","min":15.084737073538427,"max":15.084737073538427,"mean":15.084737073538427,"latest":15.084737073538427,"count":1,"first_step":0,"last_step":0},{"key":"system/median_e2el_ms","min":2337.1160394744948,"max":2337.1160394744948,"mean":2337.1160394744948,"latest":2337.1160394744948,"count":1,"first_step":0,"last_step":0},{"key":"system/median_tpot_ms","min":14.985868310845479,"max":14.985868310845479,"mean":14.985868310845479,"latest":14.985868310845479,"count":1,"first_step":0,"last_step":0},{"key":"system/output_throughput","min":324.40131250395586,"max":324.40131250395586,"mean":324.40131250395586,"latest":324.40131250395586,"count":1,"first_step":0,"last_step":0},{"key":"system/p99_itl_ms","min":44.13257779670086,"max":44.13257779670086,"mean":44.13257779670086,"latest":44.13257779670086,"count":1,"first_step":0,"last_step":0},{"key":"cost/gpu_cost_usd_decode","min":0.08031,"max":0.08031,"mean":0.08031,"latest":0.08031,"count":1,"first_step":0,"last_step":0},{"key":"system/completion_rate","min":0.6,"max":0.6,"mean":0.6,"latest":0.6,"count":1,"first_step":0,"last_step":0},{"key":"system/mean_ttft_ms","min":418.6328283588712,"max":418.6328283588712,"mean":418.6328283588712,"latest":418.6328283588712,"count":1,"first_step":0,"last_step":0},{"key":"system/request_throughput","min":2.534385253937155,"max":2.534385253937155,"mean":2.534385253937155,"latest":2.534385253937155,"count":1,"first_step":0,"last_step":0},{"key":"system/total_output_tokens","min":768,"max":768,"mean":768,"latest":768,"count":1,"first_step":0,"last_step":0},{"key":"system/total_token_throughput","min":2919.6118125356024,"max":2919.6118125356024,"mean":2919.6118125356024,"latest":2919.6118125356024,"count":1,"first_step":0,"last_step":0},{"key":"cost/output_cost_per_mtok","min":0.3921,"max":0.3921,"mean":0.3921,"latest":0.3921,"count":1,"first_step":0,"last_step":0},{"key":"system/completed","min":6,"max":6,"mean":6,"latest":6,"count":1,"first_step":0,"last_step":0},{"key":"system/p99_e2el_ms","min":2351.7342927632853,"max":2351.7342927632853,"mean":2351.7342927632853,"latest":2351.7342927632853,"count":1,"first_step":0,"last_step":0},{"key":"system/p99_tpot_ms","min":15.822381030412492,"max":15.822381030412492,"mean":15.822381030412492,"latest":15.822381030412492,"count":1,"first_step":0,"last_step":0},{"key":"cost/gpu_cost_usd_prefill","min":0.112268,"max":0.112268,"mean":0.112268,"latest":0.112268,"count":1,"first_step":0,"last_step":0},{"key":"cost/input_cost_per_mtok","min":0.0343,"max":0.0343,"mean":0.0343,"latest":0.0343,"count":1,"first_step":0,"last_step":0},{"key":"system/mean_e2el_ms","min":2334.394436698252,"max":2334.394436698252,"mean":2334.394436698252,"latest":2334.394436698252,"count":1,"first_step":0,"last_step":0},{"key":"system/median_itl_ms","min":14.451904979068786,"max":14.451904979068786,"mean":14.451904979068786,"latest":14.451904979068786,"count":1,"first_step":0,"last_step":0},{"key":"system/median_ttft_ms","min":433.9107639971189,"max":433.9107639971189,"mean":433.9107639971189,"latest":433.9107639971189,"count":1,"first_step":0,"last_step":0},{"key":"system/num_prompts","min":10,"max":10,"mean":10,"latest":10,"count":1,"first_step":0,"last_step":0},{"key":"system/p99_ttft_ms","min":513.0678390269168,"max":513.0678390269168,"mean":513.0678390269168,"latest":513.0678390269168,"count":1,"first_step":0,"last_step":0},{"key":"system/total_input_tokens","min":6144,"max":6144,"mean":6144,"latest":6144,"count":1,"first_step":0,"last_step":0},{"key":"cost/gpu_cost_per_hour","min":1.35,"max":1.35,"mean":1.35,"latest":1.35,"count":1,"first_step":0,"last_step":0}],"mlflow_artifact_location":"mlflow-artifacts:///2432/71349/artifacts","name":"A100-Qwen3-8B","owner_id":"1d45ac49-1e4e-11f1-8c3a-42221ed6388d","params":[{"key":"enable_chunked_prefill","value":"True"},{"key":"enable_prefix_caching","value":"False"},{"key":"gpu_memory_utilization","value":"0.95"},{"key":"gpu_type","value":"A100"},{"key":"model","value":"Qwen/Qwen3-8B"},{"key":"model.basename","value":"Qwen3-8B"},{"key":"service_name","value":"qwen3-8b-bench-n3rw"},{"key":"tensor_parallel_size","value":"1"},{"key":"vllm.image","value":"727006795293.dkr.ecr.us-east-1.amazonaws.com/dd-source/domains/data_science/llm/apps/ray-llm-service:vllm-bleeding-edge-nydus"}],"project_id":2432,"started_at":"2026-05-18T14:35:50.433Z","status":"completed","tags":[{"key":"leaderboard","value":"true"}],"updated_at":"2026-05-18T14:35:55.408334Z"}},{"id":"71348","type":"runs","attributes":{"completed_at":"2026-05-18T11:11:41.612Z","created_at":"2026-05-18T11:11:40.928813Z","descendant_match":false,"description":"","duration":0.794,"external_url":"https://mlflow.us1.staging.dog/#/runs/202b5372db464aa28c3ddcca74cb7432","has_children":false,"is_pinned":false,"metric_summaries":[],"mlflow_artifact_location":"mlflow-artifacts:///1017/71348/artifacts","name":"user_service_ranker_2026-05-17","owner_id":"1d45ac49-1e4e-11f1-8c3a-42221ed6388d","params":[{"key":"early_stopping_rounds","value":"20"},{"key":"features","value":"[''similarity_score'', + ''nb_page_views'', ''nb_days_with_page_view'', ''nb_views_since_last_page_view'', + ''nb_explorer_searches'', ''nb_days_with_explorer_search'', ''nb_searches_since_last_explorer_search'', + ''nb_cmdk_searches'', ''nb_days_with_cmdk_search'', ''nb_searches_since_last_cmdk_search'', + ''is_faves'', ''similarity_score_rank'', ''nb_page_views_rank'', ''nb_days_with_page_view_rank'', + ''nb_views_since_last_page_view_rank'', ''nb_explorer_searches_rank'', ''nb_days_with_explorer_search_rank'', + ''nb_searches_since_last_explorer_search_rank'', ''nb_cmdk_searches_rank'', + ''nb_days_with_cmdk_search_rank'', ''nb_searches_since_last_cmdk_search_rank'']"},{"key":"learning_rate","value":"0.2"},{"key":"max_depth","value":"3"},{"key":"metric","value":"ndcg"},{"key":"min_child_samples","value":"20"},{"key":"n_estimators","value":"500"},{"key":"n_groups_train","value":"242"},{"key":"n_groups_val","value":"27"},{"key":"num_leaves","value":"8"},{"key":"num_samples","value":"23883"},{"key":"objective","value":"lambdarank"},{"key":"random_state","value":"42"},{"key":"reg_alpha","value":"0.0"},{"key":"reg_lambda","value":"0.0"}],"project_id":1017,"started_at":"2026-05-18T11:11:40.818Z","status":"completed","tags":[{"key":"mlflow.runName","value":"user_service_ranker_2026-05-17"},{"key":"mlflow.source.name","value":"bootstrap_job.py"},{"key":"mlflow.source.type","value":"LOCAL"},{"key":"mlflow.user","value":"dog"}],"updated_at":"2026-05-18T11:11:41.758491Z"}},{"id":"71347","type":"runs","attributes":{"created_at":"2026-05-18T09:53:57.946125Z","descendant_match":false,"description":"","external_url":"https://mlflow.us1.staging.dog/#/runs/a35df0b9b9b84b35a2e88ac087379036","has_children":false,"is_pinned":false,"metric_summaries":[],"mlflow_artifact_location":"mlflow-artifacts:///1742/71347/artifacts","name":"QWEN3.5-9B","owner_id":"1d45ac49-1e4e-11f1-8c3a-42221ed6388d","params":[{"key":"benchmark_type","value":"system"},{"key":"gpu_type","value":"A100"},{"key":"model","value":"QWEN/QWEN3.5-9B"}],"project_id":1742,"started_at":"2026-05-18T09:53:57.706Z","status":"running","tags":[{"key":"experiment_name","value":"qwen3-5-9b-exp"}],"updated_at":"2026-05-18T09:53:57.959737Z"}},{"id":"71346","type":"runs","attributes":{"created_at":"2026-05-18T09:53:42.9892Z","descendant_match":false,"description":"","external_url":"https://mlflow.us1.staging.dog/#/runs/80746aeb3147419f90ded5fc615a80aa","has_children":false,"is_pinned":false,"metric_summaries":[],"mlflow_artifact_location":"mlflow-artifacts:///1742/71346/artifacts","name":"nonexistent-model-xyz","owner_id":"1d45ac49-1e4e-11f1-8c3a-42221ed6388d","params":[{"key":"benchmark_type","value":"system"},{"key":"gpu_type","value":"L4"},{"key":"model","value":"FakeOrg/nonexistent-model-xyz"}],"project_id":1742,"started_at":"2026-05-18T09:53:42.738Z","status":"running","tags":[],"updated_at":"2026-05-18T09:53:43.000724Z"}},{"id":"71345","type":"runs","attributes":{"completed_at":"2026-05-18T08:45:15.968Z","created_at":"2026-05-18T08:45:07.586505Z","descendant_match":false,"description":"","duration":8.752,"external_url":"https://mlflow.us1.staging.dog/#/runs/203405f363da49529372474f59453dcd","has_children":false,"is_pinned":false,"metric_summaries":[{"key":"gold_accuracy","min":0.8941176470588236,"max":0.8941176470588236,"mean":0.8941176470588236,"latest":0.8941176470588236,"count":1,"first_step":0,"last_step":0},{"key":"gold_recall","min":0.5,"max":0.5,"mean":0.5,"latest":0.5,"count":1,"first_step":0,"last_step":0},{"key":"gold_tn","min":74,"max":74,"mean":74,"latest":74,"count":1,"first_step":0,"last_step":0},{"key":"snorkel_fn","min":238,"max":238,"mean":238,"latest":238,"count":1,"first_step":0,"last_step":0},{"key":"snorkel_fp","min":5,"max":5,"mean":5,"latest":5,"count":1,"first_step":0,"last_step":0},{"key":"sweep_gold_fp","min":0,"max":81,"mean":16.235294117647058,"latest":18,"count":17,"first_step":0,"last_step":86},{"key":"sweep_snorkel_tp","min":115,"max":828,"mean":549.4,"latest":828,"count":15,"first_step":0,"last_step":99},{"key":"gold_f1_score","min":0.3076923076923077,"max":0.3076923076923077,"mean":0.3076923076923077,"latest":0.3076923076923077,"count":1,"first_step":0,"last_step":0},{"key":"gold_roc_auc","min":0.95679012345679,"max":0.95679012345679,"mean":0.95679012345679,"latest":0.95679012345679,"count":1,"first_step":0,"last_step":0},{"key":"snorkel_accuracy","min":0.942376096751245,"max":0.942376096751245,"mean":0.942376096751245,"latest":0.942376096751245,"count":1,"first_step":0,"last_step":0},{"key":"snorkel_tp","min":590,"max":590,"mean":590,"latest":590,"count":1,"first_step":0,"last_step":0},{"key":"sweep_snorkel_fn","min":0,"max":713,"mean":278.6,"latest":30,"count":15,"first_step":0,"last_step":99},{"key":"gold_precision","min":0.2222222222222222,"max":0.2222222222222222,"mean":0.2222222222222222,"latest":0.2222222222222222,"count":1,"first_step":0,"last_step":0},{"key":"gold_tp","min":2,"max":2,"mean":2,"latest":2,"count":1,"first_step":0,"last_step":0},{"key":"sweep_gold_f1_score","min":0.0898876404494382,"max":0.6666666666666666,"mean":0.35542231104842736,"latest":0.30769230769230765,"count":17,"first_step":0,"last_step":86},{"key":"sweep_snorkel_precision","min":0.1963481147735357,"max":1,"mean":0.8833905951822458,"latest":0.9978401727861771,"count":15,"first_step":0,"last_step":99},{"key":"sweep_snorkel_fp","min":0,"max":3389,"mean":290.8,"latest":6,"count":15,"first_step":0,"last_step":99},{"key":"snorkel_precision","min":0.9915966386554622,"max":0.9915966386554622,"mean":0.9915966386554622,"latest":0.9915966386554622,"count":1,"first_step":0,"last_step":0},{"key":"snorkel_roc_auc","min":0.9928354095304073,"max":0.9928354095304073,"mean":0.9928354095304073,"latest":0.9928354095304073,"count":1,"first_step":0,"last_step":0},{"key":"sweep_snorkel_recall","min":0.1388888888888889,"max":1,"mean":0.6635265700483092,"latest":0.2572463768115942,"count":15,"first_step":0,"last_step":99},{"key":"gold_fp","min":7,"max":7,"mean":7,"latest":7,"count":1,"first_step":0,"last_step":0},{"key":"sweep_gold_recall","min":0.25,"max":1,"mean":0.8088235294117647,"latest":0.5,"count":17,"first_step":0,"last_step":86},{"key":"sweep_gold_tn","min":0,"max":81,"mean":64.76470588235294,"latest":63,"count":17,"first_step":0,"last_step":86},{"key":"sweep_snorkel_f1_score","min":0.24390243902439027,"max":0.9226044226044227,"mean":0.6706883729826749,"latest":0.9226044226044227,"count":15,"first_step":0,"last_step":99},{"key":"snorkel_tn","min":3384,"max":3384,"mean":3384,"latest":3384,"count":1,"first_step":0,"last_step":0},{"key":"sweep_gold_fn","min":0,"max":3,"mean":0.7647058823529411,"latest":0,"count":17,"first_step":0,"last_step":86},{"key":"sweep_gold_precision","min":0.047058823529411764,"max":1,"mean":0.3126587632153479,"latest":0.21052631578947367,"count":17,"first_step":0,"last_step":86},{"key":"sweep_gold_tp","min":1,"max":4,"mean":3.235294117647059,"latest":2,"count":17,"first_step":0,"last_step":86},{"key":"sweep_snorkel_tn","min":0,"max":3389,"mean":3098.2,"latest":3389,"count":15,"first_step":0,"last_step":99},{"key":"gold_fn","min":2,"max":2,"mean":2,"latest":2,"count":1,"first_step":0,"last_step":0},{"key":"snorkel_f1_score","min":0.8292340126493324,"max":0.8292340126493324,"mean":0.8292340126493324,"latest":0.8292340126493324,"count":1,"first_step":0,"last_step":0},{"key":"snorkel_recall","min":0.7125603864734299,"max":0.7125603864734299,"mean":0.7125603864734299,"latest":0.7125603864734299,"count":1,"first_step":0,"last_step":0}],"mlflow_artifact_location":"mlflow-artifacts:///488/71345/artifacts","name":"","owner_id":"1d45ac49-1e4e-11f1-8c3a-42221ed6388d","params":[{"key":"is_unbalance","value":"True"},{"key":"learning_rate","value":"0.02"},{"key":"min_data_in_leaf","value":"100"},{"key":"n_estimators","value":"600"},{"key":"n_gold_samples","value":"85"},{"key":"n_jobs","value":"1"},{"key":"n_orgs","value":"1"},{"key":"n_snorkel_samples","value":"4217"},{"key":"n_training_samples","value":"229660"},{"key":"num_leaves","value":"31"},{"key":"org_ids","value":"[2]"},{"key":"random_state","value":"42"},{"key":"run_date","value":"2026-05-17"},{"key":"testing_window_days","value":"7"},{"key":"tfidf_lowercase","value":"False"},{"key":"tfidf_max_df","value":"0.95"},{"key":"tfidf_max_features","value":"30000"},{"key":"tfidf_min_df","value":"5"},{"key":"tfidf_ngram_range","value":"(1, + 2)"},{"key":"train_optimal_f1_threshold","value":"0.4115"},{"key":"training_window_days","value":"91"},{"key":"verbosity","value":"-1"},{"key":"version","value":"1"}],"project_id":488,"started_at":"2026-05-18T08:45:07.216Z","status":"completed","tags":[{"key":"mlflow.source.name","value":"bootstrap_job.py"},{"key":"mlflow.source.type","value":"LOCAL"},{"key":"mlflow.user","value":"dog"},{"key":"n_orgs","value":"1"},{"key":"version","value":"1"}],"updated_at":"2026-05-18T08:45:16.3591Z"}},{"id":"71344","type":"runs","attributes":{"completed_at":"2026-05-18T05:03:26.966Z","created_at":"2026-05-18T05:01:59.834451Z","descendant_match":false,"description":"","duration":87.237,"external_url":"https://mlflow.us1.staging.dog/#/runs/2b10271e3e1546359da360a651c17bfa","has_children":false,"is_pinned":false,"metric_summaries":[{"key":"accuracy","min":1,"max":1,"mean":1,"latest":0,"count":2,"first_step":0,"last_step":0},{"key":"precision","min":1,"max":1,"mean":1,"latest":0,"count":2,"first_step":0,"last_step":0},{"key":"recall","min":1,"max":1,"mean":1,"latest":0,"count":2,"first_step":0,"last_step":0}],"mlflow_artifact_location":"mlflow-artifacts:///487/71344/artifacts","name":"mortar_train_test_alias_loading_partitioned_model","owner_id":"1d45ac49-1e4e-11f1-8c3a-42221ed6388d","params":[{"key":"max_depth","value":"30"},{"key":"min_samples_leaf","value":"5"},{"key":"min_samples_split","value":"10"},{"key":"n_estimators","value":"100"}],"project_id":487,"started_at":"2026-05-18T05:01:59.729Z","status":"completed","tags":[{"key":"datacenter","value":"us1.staging.dog"},{"key":"mlflow.runName","value":"mortar_train_test_alias_loading_partitioned_model"},{"key":"mlflow.source.name","value":"bootstrap_job.py"},{"key":"mlflow.source.type","value":"LOCAL"},{"key":"mlflow.user","value":"dog"},{"key":"train_end","value":"2026-05-18"},{"key":"train_start","value":"2026-05-17"}],"updated_at":"2026-05-18T05:03:27.148977Z"}},{"id":"71343","type":"runs","attributes":{"created_at":"2026-05-18T04:04:13.985851Z","descendant_match":false,"description":"","external_url":"https://mlflow.us1.staging.dog/#/runs/d1a9b44a39c54a34a35b956ce3469328","has_children":false,"is_pinned":false,"metric_summaries":[{"key":"accuracy","min":0.9,"max":0.9,"mean":0.9,"latest":0.9,"count":2,"first_step":0,"last_step":0},{"key":"precision","min":0.9074074074074074,"max":0.9074074074074074,"mean":0.9074074074074074,"latest":0.9074074074074074,"count":2,"first_step":0,"last_step":0},{"key":"recall","min":0.903030303030303,"max":0.903030303030303,"mean":0.903030303030303,"latest":0.903030303030303,"count":2,"first_step":0,"last_step":0}],"mlflow_artifact_location":"mlflow-artifacts:///486/71343/artifacts","name":"mortar_train_test_alias_loading_global_model","owner_id":"1d45ac49-1e4e-11f1-8c3a-42221ed6388d","params":[{"key":"max_depth","value":"30"},{"key":"min_samples_leaf","value":"5"},{"key":"min_samples_split","value":"10"},{"key":"n_estimators","value":"100"}],"project_id":486,"started_at":"2026-05-18T04:04:13.883Z","status":"running","tags":[{"key":"datacenter","value":"us1.staging.dog"},{"key":"mlflow.runName","value":"mortar_train_test_alias_loading_global_model"},{"key":"mlflow.source.name","value":"bootstrap_job.py"},{"key":"mlflow.source.type","value":"LOCAL"},{"key":"mlflow.user","value":"dog"},{"key":"train_end","value":"2026-05-18"},{"key":"train_start","value":"2026-05-17"}],"updated_at":"2026-05-18T04:04:14.000273Z"}},{"id":"71342","type":"runs","attributes":{"completed_at":"2026-05-18T03:01:58.035Z","created_at":"2026-05-18T03:01:30.842651Z","descendant_match":false,"description":"","duration":27.296,"external_url":"https://mlflow.us1.staging.dog/#/runs/6b22a5d0a54842ba9387d88316893fc9","has_children":false,"is_pinned":false,"metric_summaries":[{"key":"accuracy","min":0.9,"max":0.9666666666666667,"mean":0.9438095238095238,"latest":0.9666666666666667,"count":35,"first_step":0,"last_step":0},{"key":"precision","min":0.8783068783068783,"max":0.9777777777777779,"mean":0.9454438947296091,"latest":0.9666666666666667,"count":35,"first_step":0,"last_step":0},{"key":"recall","min":0.875,"max":0.9743589743589745,"mean":0.941554873697731,"latest":0.9722222222222222,"count":35,"first_step":0,"last_step":0}],"mlflow_artifact_location":"mlflow-artifacts:///484/71342/artifacts","name":"mortar_train_smoke_testing_partitioned_model","owner_id":"1d45ac49-1e4e-11f1-8c3a-42221ed6388d","params":[{"key":"max_depth","value":"30"},{"key":"min_samples_leaf","value":"5"},{"key":"min_samples_split","value":"10"}],"project_id":484,"started_at":"2026-05-18T03:01:30.739Z","status":"completed","tags":[{"key":"datacenter","value":"us1.staging.dog"},{"key":"mlflow.runName","value":"mortar_train_smoke_testing_partitioned_model"},{"key":"mlflow.source.name","value":"bootstrap_job.py"},{"key":"mlflow.source.type","value":"LOCAL"},{"key":"mlflow.user","value":"dog"},{"key":"train_end","value":"2026-05-18"},{"key":"train_start","value":"2026-05-17"}],"updated_at":"2026-05-18T03:01:58.176408Z"}},{"id":"71341","type":"runs","attributes":{"completed_at":"2026-05-18T02:12:00.018Z","created_at":"2026-05-18T02:11:33.56821Z","descendant_match":false,"description":"","duration":26.55,"external_url":"https://mlflow.us1.staging.dog/#/runs/f6921c2bc1014234b624d3f0c6e2f83e","has_children":false,"is_pinned":false,"metric_summaries":[],"mlflow_artifact_location":"mlflow-artifacts:///482/71341/artifacts","name":"vanilla","owner_id":"1d45ac49-1e4e-11f1-8c3a-42221ed6388d","params":null,"project_id":482,"started_at":"2026-05-18T02:11:33.468Z","status":"completed","tags":[{"key":"code_source","value":"dd-analytics"},{"key":"datacenter","value":"us1.staging.dog"},{"key":"mlflow.runName","value":"vanilla"},{"key":"mlflow.source.name","value":"bootstrap_job.py"},{"key":"mlflow.source.type","value":"LOCAL"},{"key":"mlflow.user","value":"dog"},{"key":"model_type","value":"bayesian_model_with_baseline"},{"key":"third_party_provider_service_region","value":"amazonaws-es-us-east-1"}],"updated_at":"2026-05-18T02:12:00.166487Z"}},{"id":"71340","type":"runs","attributes":{"completed_at":"2026-05-18T02:11:52.421Z","created_at":"2026-05-18T02:11:29.581542Z","descendant_match":false,"description":"","duration":22.934,"external_url":"https://mlflow.us1.staging.dog/#/runs/74f4aad59e4f4e66a726afc5db0436e1","has_children":false,"is_pinned":false,"metric_summaries":[],"mlflow_artifact_location":"mlflow-artifacts:///482/71340/artifacts","name":"vanilla","owner_id":"1d45ac49-1e4e-11f1-8c3a-42221ed6388d","params":null,"project_id":482,"started_at":"2026-05-18T02:11:29.487Z","status":"completed","tags":[{"key":"code_source","value":"dd-analytics"},{"key":"datacenter","value":"us1.staging.dog"},{"key":"mlflow.runName","value":"vanilla"},{"key":"mlflow.source.name","value":"bootstrap_job.py"},{"key":"mlflow.source.type","value":"LOCAL"},{"key":"mlflow.user","value":"dog"},{"key":"model_type","value":"bayesian_model_with_baseline"},{"key":"third_party_provider_service_region","value":"amazonaws-dynamodb-mx-central-1"}],"updated_at":"2026-05-18T02:11:52.554536Z"}},{"id":"71339","type":"runs","attributes":{"completed_at":"2026-05-18T02:11:38.852Z","created_at":"2026-05-18T02:11:17.924126Z","descendant_match":false,"description":"","duration":21.044,"external_url":"https://mlflow.us1.staging.dog/#/runs/fa21144e452d4c6eb1c2ff6bff2dbb57","has_children":false,"is_pinned":false,"metric_summaries":[],"mlflow_artifact_location":"mlflow-artifacts:///482/71339/artifacts","name":"vanilla","owner_id":"1d45ac49-1e4e-11f1-8c3a-42221ed6388d","params":null,"project_id":482,"started_at":"2026-05-18T02:11:17.808Z","status":"completed","tags":[{"key":"code_source","value":"dd-analytics"},{"key":"datacenter","value":"us1.staging.dog"},{"key":"mlflow.runName","value":"vanilla"},{"key":"mlflow.source.name","value":"bootstrap_job.py"},{"key":"mlflow.source.type","value":"LOCAL"},{"key":"mlflow.user","value":"dog"},{"key":"model_type","value":"bayesian_model_with_baseline"},{"key":"third_party_provider_service_region","value":"pagerduty"}],"updated_at":"2026-05-18T02:11:39.012518Z"}},{"id":"71338","type":"runs","attributes":{"completed_at":"2026-05-18T02:01:48.717Z","created_at":"2026-05-18T02:01:44.062453Z","descendant_match":false,"description":"","duration":4.748,"external_url":"https://mlflow.us1.staging.dog/#/runs/fcf4e0cad9f948dfb6d53eb34e3660be","has_children":false,"is_pinned":false,"metric_summaries":[{"key":"accuracy","min":1,"max":1,"mean":1,"latest":0,"count":2,"first_step":0,"last_step":0},{"key":"precision","min":1,"max":1,"mean":1,"latest":0,"count":2,"first_step":0,"last_step":0},{"key":"recall","min":1,"max":1,"mean":1,"latest":0,"count":2,"first_step":0,"last_step":0}],"mlflow_artifact_location":"mlflow-artifacts:///484/71338/artifacts","name":"mortar_train_smoke_testing_global_model","owner_id":"1d45ac49-1e4e-11f1-8c3a-42221ed6388d","params":[{"key":"max_depth","value":"30"},{"key":"min_samples_leaf","value":"5"},{"key":"min_samples_split","value":"10"},{"key":"n_estimators","value":"100"}],"project_id":484,"started_at":"2026-05-18T02:01:43.969Z","status":"completed","tags":[{"key":"datacenter","value":"us1.staging.dog"},{"key":"mlflow.runName","value":"mortar_train_smoke_testing_global_model"},{"key":"mlflow.source.name","value":"bootstrap_job.py"},{"key":"mlflow.source.type","value":"LOCAL"},{"key":"mlflow.user","value":"dog"},{"key":"train_end","value":"2026-05-18"},{"key":"train_start","value":"2026-05-17"}],"updated_at":"2026-05-18T02:01:48.856663Z"}},{"id":"71331","type":"runs","attributes":{"completed_at":"2026-05-18T01:56:03.441Z","created_at":"2026-05-18T01:52:30.49774Z","descendant_match":false,"description":"","duration":213.718,"external_url":"https://mlflow.us1.staging.dog/#/runs/48c65b0e43c049bea60fe45dfa2dca30","has_children":false,"is_pinned":false,"metric_summaries":[],"mlflow_artifact_location":"mlflow-artifacts:///482/71331/artifacts","name":"vanilla","owner_id":"1d45ac49-1e4e-11f1-8c3a-42221ed6388d","params":null,"project_id":482,"started_at":"2026-05-18T01:52:29.723Z","status":"completed","tags":[{"key":"code_source","value":"dd-analytics"},{"key":"datacenter","value":"us1.staging.dog"},{"key":"mlflow.runName","value":"vanilla"},{"key":"mlflow.source.name","value":"bootstrap_job.py"},{"key":"mlflow.source.type","value":"LOCAL"},{"key":"mlflow.user","value":"dog"},{"key":"model_type","value":"bayesian_model_with_baseline"},{"key":"third_party_provider_service_region","value":"amazonaws-monitoring-ca-west-1"}],"updated_at":"2026-05-18T01:56:03.578642Z"}},{"id":"71317","type":"runs","attributes":{"completed_at":"2026-05-18T01:55:56.61Z","created_at":"2026-05-18T01:50:27.663599Z","descendant_match":false,"description":"","duration":329.076,"external_url":"https://mlflow.us1.staging.dog/#/runs/3cf809f7034f49f8a45b678ae5b3c55f","has_children":false,"is_pinned":false,"metric_summaries":[],"mlflow_artifact_location":"mlflow-artifacts:///482/71317/artifacts","name":"vanilla","owner_id":"1d45ac49-1e4e-11f1-8c3a-42221ed6388d","params":null,"project_id":482,"started_at":"2026-05-18T01:50:27.534Z","status":"completed","tags":[{"key":"code_source","value":"dd-analytics"},{"key":"datacenter","value":"us1.staging.dog"},{"key":"mlflow.runName","value":"vanilla"},{"key":"mlflow.source.name","value":"bootstrap_job.py"},{"key":"mlflow.source.type","value":"LOCAL"},{"key":"mlflow.user","value":"dog"},{"key":"model_type","value":"bayesian_model_with_baseline"},{"key":"third_party_provider_service_region","value":"amazonaws-monitoring-mx-central-1"}],"updated_at":"2026-05-18T01:55:56.756604Z"}},{"id":"71336","type":"runs","attributes":{"completed_at":"2026-05-18T01:54:59.996Z","created_at":"2026-05-18T01:52:55.451932Z","descendant_match":false,"description":"","duration":124.633,"external_url":"https://mlflow.us1.staging.dog/#/runs/bc30dc20a00d4147832435bb46dbb533","has_children":false,"is_pinned":false,"metric_summaries":[],"mlflow_artifact_location":"mlflow-artifacts:///482/71336/artifacts","name":"vanilla","owner_id":"1d45ac49-1e4e-11f1-8c3a-42221ed6388d","params":null,"project_id":482,"started_at":"2026-05-18T01:52:55.363Z","status":"completed","tags":[{"key":"code_source","value":"dd-analytics"},{"key":"datacenter","value":"us1.staging.dog"},{"key":"mlflow.runName","value":"vanilla"},{"key":"mlflow.source.name","value":"bootstrap_job.py"},{"key":"mlflow.source.type","value":"LOCAL"},{"key":"mlflow.user","value":"dog"},{"key":"model_type","value":"bayesian_model_with_baseline"},{"key":"third_party_provider_service_region","value":"amazonaws-firehose-me-central-1"}],"updated_at":"2026-05-18T01:55:00.139099Z"}},{"id":"71337","type":"runs","attributes":{"completed_at":"2026-05-18T01:54:52.337Z","created_at":"2026-05-18T01:53:28.702892Z","descendant_match":false,"description":"","duration":83.73,"external_url":"https://mlflow.us1.staging.dog/#/runs/f38436eab3554414a3125a8299273caf","has_children":false,"is_pinned":false,"metric_summaries":[],"mlflow_artifact_location":"mlflow-artifacts:///482/71337/artifacts","name":"vanilla","owner_id":"1d45ac49-1e4e-11f1-8c3a-42221ed6388d","params":null,"project_id":482,"started_at":"2026-05-18T01:53:28.607Z","status":"completed","tags":[{"key":"code_source","value":"dd-analytics"},{"key":"datacenter","value":"us1.staging.dog"},{"key":"mlflow.runName","value":"vanilla"},{"key":"mlflow.source.name","value":"bootstrap_job.py"},{"key":"mlflow.source.type","value":"LOCAL"},{"key":"mlflow.user","value":"dog"},{"key":"model_type","value":"bayesian_model_with_baseline"},{"key":"third_party_provider_service_region","value":"amazonaws-firehose-eu-west-3"}],"updated_at":"2026-05-18T01:54:52.600823Z"}},{"id":"71326","type":"runs","attributes":{"completed_at":"2026-05-18T01:54:45.204Z","created_at":"2026-05-18T01:51:44.604428Z","descendant_match":false,"description":"","duration":180.692,"external_url":"https://mlflow.us1.staging.dog/#/runs/eb0fe4f0cbe047308dbe33b61f4b9847","has_children":false,"is_pinned":false,"metric_summaries":[],"mlflow_artifact_location":"mlflow-artifacts:///482/71326/artifacts","name":"vanilla","owner_id":"1d45ac49-1e4e-11f1-8c3a-42221ed6388d","params":null,"project_id":482,"started_at":"2026-05-18T01:51:44.512Z","status":"completed","tags":[{"key":"code_source","value":"dd-analytics"},{"key":"datacenter","value":"us1.staging.dog"},{"key":"mlflow.runName","value":"vanilla"},{"key":"mlflow.source.name","value":"bootstrap_job.py"},{"key":"mlflow.source.type","value":"LOCAL"},{"key":"mlflow.user","value":"dog"},{"key":"model_type","value":"bayesian_model_with_baseline"},{"key":"third_party_provider_service_region","value":"amazonaws-monitoring-ap-south-1"}],"updated_at":"2026-05-18T01:54:45.379615Z"}},{"id":"71332","type":"runs","attributes":{"completed_at":"2026-05-18T01:54:38.347Z","created_at":"2026-05-18T01:52:32.3427Z","descendant_match":false,"description":"","duration":126.115,"external_url":"https://mlflow.us1.staging.dog/#/runs/cafb02ded7914103aa4fd260626f3fff","has_children":false,"is_pinned":false,"metric_summaries":[],"mlflow_artifact_location":"mlflow-artifacts:///482/71332/artifacts","name":"vanilla","owner_id":"1d45ac49-1e4e-11f1-8c3a-42221ed6388d","params":null,"project_id":482,"started_at":"2026-05-18T01:52:32.232Z","status":"completed","tags":[{"key":"code_source","value":"dd-analytics"},{"key":"datacenter","value":"us1.staging.dog"},{"key":"mlflow.runName","value":"vanilla"},{"key":"mlflow.source.name","value":"bootstrap_job.py"},{"key":"mlflow.source.type","value":"LOCAL"},{"key":"mlflow.user","value":"dog"},{"key":"model_type","value":"bayesian_model_with_baseline"},{"key":"third_party_provider_service_region","value":"amazonaws-kinesis-ap-southeast-3"}],"updated_at":"2026-05-18T01:54:38.494039Z"}},{"id":"71335","type":"runs","attributes":{"completed_at":"2026-05-18T01:54:31.613Z","created_at":"2026-05-18T01:52:49.441594Z","descendant_match":false,"description":"","duration":102.264,"external_url":"https://mlflow.us1.staging.dog/#/runs/eaefc5caf34c45f7bc93448eb0ee2d33","has_children":false,"is_pinned":false,"metric_summaries":[],"mlflow_artifact_location":"mlflow-artifacts:///482/71335/artifacts","name":"vanilla","owner_id":"1d45ac49-1e4e-11f1-8c3a-42221ed6388d","params":null,"project_id":482,"started_at":"2026-05-18T01:52:49.349Z","status":"completed","tags":[{"key":"code_source","value":"dd-analytics"},{"key":"datacenter","value":"us1.staging.dog"},{"key":"mlflow.runName","value":"vanilla"},{"key":"mlflow.source.name","value":"bootstrap_job.py"},{"key":"mlflow.source.type","value":"LOCAL"},{"key":"mlflow.user","value":"dog"},{"key":"model_type","value":"bayesian_model_with_baseline"},{"key":"third_party_provider_service_region","value":"amazonaws-monitoring-us-gov-east-1"}],"updated_at":"2026-05-18T01:54:31.752756Z"}}],"meta":{"page":{"type":"number_size","number":0,"size":25,"total":65614,"first_number":0,"prev_number":null,"next_number":1,"last_number":2624}},"links":{"self":"https://api.datad0g.com/api/v2/model-lab-api/runs","first":"https://api.datad0g.com/api/v2/model-lab-api/runs?page[number]=0&page[size]=25","last":"https://api.datad0g.com/api/v2/model-lab-api/runs?page[number]=2624&page[size]=25","next":"https://api.datad0g.com/api/v2/model-lab-api/runs?page[number]=1&page[size]=25"}}' + headers: + Content-Type: + - application/json + status: + code: 200 + message: OK +recorded_with: VCR 6.0.0 diff --git a/cassettes/features/v2/model_lab_api/Pin-a-Model-Lab-run-returns-No-Content-response.frozen b/cassettes/features/v2/model_lab_api/Pin-a-Model-Lab-run-returns-No-Content-response.frozen new file mode 100644 index 000000000000..144cd0a44282 --- /dev/null +++ b/cassettes/features/v2/model_lab_api/Pin-a-Model-Lab-run-returns-No-Content-response.frozen @@ -0,0 +1 @@ +2026-05-18T16:45:00.000Z \ No newline at end of file diff --git a/cassettes/features/v2/model_lab_api/Pin-a-Model-Lab-run-returns-No-Content-response.yml b/cassettes/features/v2/model_lab_api/Pin-a-Model-Lab-run-returns-No-Content-response.yml new file mode 100644 index 000000000000..943e7f8a18c7 --- /dev/null +++ b/cassettes/features/v2/model_lab_api/Pin-a-Model-Lab-run-returns-No-Content-response.yml @@ -0,0 +1,34 @@ +http_interactions: +- recorded_at: Mon, 18 May 2026 16:45:00 GMT + request: + body: null + headers: + Accept: + - '*/*' + method: POST + uri: https://api.datadoghq.com/api/v2/model-lab-api/runs/70158/pin + response: + body: + encoding: UTF-8 + string: '' + headers: {} + status: + code: 204 + message: No Content +- recorded_at: Mon, 18 May 2026 16:45:00 GMT + request: + body: null + headers: + Accept: + - '*/*' + method: DELETE + uri: https://api.datadoghq.com/api/v2/model-lab-api/runs/70158/pin + response: + body: + encoding: UTF-8 + string: '' + headers: {} + status: + code: 204 + message: No Content +recorded_with: VCR 6.0.0 diff --git a/cassettes/features/v2/model_lab_api/Pin-a-Model-Lab-run-returns-Not-Found-response.frozen b/cassettes/features/v2/model_lab_api/Pin-a-Model-Lab-run-returns-Not-Found-response.frozen new file mode 100644 index 000000000000..144cd0a44282 --- /dev/null +++ b/cassettes/features/v2/model_lab_api/Pin-a-Model-Lab-run-returns-Not-Found-response.frozen @@ -0,0 +1 @@ +2026-05-18T16:45:00.000Z \ No newline at end of file diff --git a/cassettes/features/v2/model_lab_api/Pin-a-Model-Lab-run-returns-Not-Found-response.yml b/cassettes/features/v2/model_lab_api/Pin-a-Model-Lab-run-returns-Not-Found-response.yml new file mode 100644 index 000000000000..fae45bab1aca --- /dev/null +++ b/cassettes/features/v2/model_lab_api/Pin-a-Model-Lab-run-returns-Not-Found-response.yml @@ -0,0 +1,20 @@ +http_interactions: +- recorded_at: Mon, 18 May 2026 16:45:00 GMT + request: + body: null + headers: + Accept: + - '*/*' + method: POST + uri: https://api.datadoghq.com/api/v2/model-lab-api/runs/999999/pin + response: + body: + encoding: UTF-8 + string: '{"errors":[{"title":"Generic Error","detail":"run not found"}]}' + headers: + Content-Type: + - application/json + status: + code: 404 + message: Not Found +recorded_with: VCR 6.0.0 diff --git a/cassettes/features/v2/model_lab_api/Star-a-Model-Lab-project-returns-No-Content-response.frozen b/cassettes/features/v2/model_lab_api/Star-a-Model-Lab-project-returns-No-Content-response.frozen new file mode 100644 index 000000000000..144cd0a44282 --- /dev/null +++ b/cassettes/features/v2/model_lab_api/Star-a-Model-Lab-project-returns-No-Content-response.frozen @@ -0,0 +1 @@ +2026-05-18T16:45:00.000Z \ No newline at end of file diff --git a/cassettes/features/v2/model_lab_api/Star-a-Model-Lab-project-returns-No-Content-response.yml b/cassettes/features/v2/model_lab_api/Star-a-Model-Lab-project-returns-No-Content-response.yml new file mode 100644 index 000000000000..2d17a8385674 --- /dev/null +++ b/cassettes/features/v2/model_lab_api/Star-a-Model-Lab-project-returns-No-Content-response.yml @@ -0,0 +1,34 @@ +http_interactions: +- recorded_at: Mon, 18 May 2026 16:45:00 GMT + request: + body: null + headers: + Accept: + - '*/*' + method: POST + uri: https://api.datadoghq.com/api/v2/model-lab-api/projects/2387/star + response: + body: + encoding: UTF-8 + string: '' + headers: {} + status: + code: 204 + message: No Content +- recorded_at: Mon, 18 May 2026 16:45:00 GMT + request: + body: null + headers: + Accept: + - '*/*' + method: DELETE + uri: https://api.datadoghq.com/api/v2/model-lab-api/projects/2387/star + response: + body: + encoding: UTF-8 + string: '' + headers: {} + status: + code: 204 + message: No Content +recorded_with: VCR 6.0.0 diff --git a/cassettes/features/v2/model_lab_api/Star-a-Model-Lab-project-returns-Not-Found-response.frozen b/cassettes/features/v2/model_lab_api/Star-a-Model-Lab-project-returns-Not-Found-response.frozen new file mode 100644 index 000000000000..144cd0a44282 --- /dev/null +++ b/cassettes/features/v2/model_lab_api/Star-a-Model-Lab-project-returns-Not-Found-response.frozen @@ -0,0 +1 @@ +2026-05-18T16:45:00.000Z \ No newline at end of file diff --git a/cassettes/features/v2/model_lab_api/Star-a-Model-Lab-project-returns-Not-Found-response.yml b/cassettes/features/v2/model_lab_api/Star-a-Model-Lab-project-returns-Not-Found-response.yml new file mode 100644 index 000000000000..80b7c7bae2ab --- /dev/null +++ b/cassettes/features/v2/model_lab_api/Star-a-Model-Lab-project-returns-Not-Found-response.yml @@ -0,0 +1,20 @@ +http_interactions: +- recorded_at: Mon, 18 May 2026 16:45:00 GMT + request: + body: null + headers: + Accept: + - '*/*' + method: POST + uri: https://api.datadoghq.com/api/v2/model-lab-api/projects/999999/star + response: + body: + encoding: UTF-8 + string: '{"errors":[{"title":"Generic Error","detail":"project not found"}]}' + headers: + Content-Type: + - application/json + status: + code: 404 + message: Not Found +recorded_with: VCR 6.0.0 diff --git a/cassettes/features/v2/model_lab_api/Unpin-a-Model-Lab-run-returns-No-Content-response.frozen b/cassettes/features/v2/model_lab_api/Unpin-a-Model-Lab-run-returns-No-Content-response.frozen new file mode 100644 index 000000000000..144cd0a44282 --- /dev/null +++ b/cassettes/features/v2/model_lab_api/Unpin-a-Model-Lab-run-returns-No-Content-response.frozen @@ -0,0 +1 @@ +2026-05-18T16:45:00.000Z \ No newline at end of file diff --git a/cassettes/features/v2/model_lab_api/Unpin-a-Model-Lab-run-returns-No-Content-response.yml b/cassettes/features/v2/model_lab_api/Unpin-a-Model-Lab-run-returns-No-Content-response.yml new file mode 100644 index 000000000000..eaf93cd35e7b --- /dev/null +++ b/cassettes/features/v2/model_lab_api/Unpin-a-Model-Lab-run-returns-No-Content-response.yml @@ -0,0 +1,18 @@ +http_interactions: +- recorded_at: Mon, 18 May 2026 16:45:00 GMT + request: + body: null + headers: + Accept: + - '*/*' + method: DELETE + uri: https://api.datadoghq.com/api/v2/model-lab-api/runs/70158/pin + response: + body: + encoding: UTF-8 + string: '' + headers: {} + status: + code: 204 + message: No Content +recorded_with: VCR 6.0.0 diff --git a/cassettes/features/v2/model_lab_api/Unstar-a-Model-Lab-project-returns-No-Content-response.frozen b/cassettes/features/v2/model_lab_api/Unstar-a-Model-Lab-project-returns-No-Content-response.frozen new file mode 100644 index 000000000000..144cd0a44282 --- /dev/null +++ b/cassettes/features/v2/model_lab_api/Unstar-a-Model-Lab-project-returns-No-Content-response.frozen @@ -0,0 +1 @@ +2026-05-18T16:45:00.000Z \ No newline at end of file diff --git a/cassettes/features/v2/model_lab_api/Unstar-a-Model-Lab-project-returns-No-Content-response.yml b/cassettes/features/v2/model_lab_api/Unstar-a-Model-Lab-project-returns-No-Content-response.yml new file mode 100644 index 000000000000..a7080e1ce8f3 --- /dev/null +++ b/cassettes/features/v2/model_lab_api/Unstar-a-Model-Lab-project-returns-No-Content-response.yml @@ -0,0 +1,18 @@ +http_interactions: +- recorded_at: Mon, 18 May 2026 16:45:00 GMT + request: + body: null + headers: + Accept: + - '*/*' + method: DELETE + uri: https://api.datadoghq.com/api/v2/model-lab-api/projects/2387/star + response: + body: + encoding: UTF-8 + string: '' + headers: {} + status: + code: 204 + message: No Content +recorded_with: VCR 6.0.0 diff --git a/examples/v2/model-lab-api/DeleteModelLabRun.rb b/examples/v2/model-lab-api/DeleteModelLabRun.rb new file mode 100644 index 000000000000..b46dce34aae8 --- /dev/null +++ b/examples/v2/model-lab-api/DeleteModelLabRun.rb @@ -0,0 +1,8 @@ +# Delete a Model Lab run returns "No Content" response + +require "datadog_api_client" +DatadogAPIClient.configure do |config| + config.unstable_operations["v2.delete_model_lab_run".to_sym] = true +end +api_instance = DatadogAPIClient::V2::ModelLabAPIAPI.new +api_instance.delete_model_lab_run(70158) diff --git a/examples/v2/model-lab-api/GetModelLabArtifactContent.rb b/examples/v2/model-lab-api/GetModelLabArtifactContent.rb new file mode 100644 index 000000000000..a6109d38004f --- /dev/null +++ b/examples/v2/model-lab-api/GetModelLabArtifactContent.rb @@ -0,0 +1,8 @@ +# Get Model Lab artifact content returns "OK" response + +require "datadog_api_client" +DatadogAPIClient.configure do |config| + config.unstable_operations["v2.get_model_lab_artifact_content".to_sym] = true +end +api_instance = DatadogAPIClient::V2::ModelLabAPIAPI.new +p api_instance.get_model_lab_artifact_content("1", "runs/42/model/weights.pt") diff --git a/examples/v2/model-lab-api/GetModelLabArtifactContent_2858422658.rb b/examples/v2/model-lab-api/GetModelLabArtifactContent_2858422658.rb new file mode 100644 index 000000000000..bc38a95f362c --- /dev/null +++ b/examples/v2/model-lab-api/GetModelLabArtifactContent_2858422658.rb @@ -0,0 +1,8 @@ +# Download artifact content returns "OK" response + +require "datadog_api_client" +DatadogAPIClient.configure do |config| + config.unstable_operations["v2.get_model_lab_artifact_content".to_sym] = true +end +api_instance = DatadogAPIClient::V2::ModelLabAPIAPI.new +p api_instance.get_model_lab_artifact_content("2387", "f635c73b70594ab6bb6e212cdf87d0d5/artifacts/lora_model/adapter_config.json") diff --git a/examples/v2/model-lab-api/GetModelLabProject.rb b/examples/v2/model-lab-api/GetModelLabProject.rb new file mode 100644 index 000000000000..2d9f90ac7ddb --- /dev/null +++ b/examples/v2/model-lab-api/GetModelLabProject.rb @@ -0,0 +1,8 @@ +# Get a Model Lab project returns "OK" response + +require "datadog_api_client" +DatadogAPIClient.configure do |config| + config.unstable_operations["v2.get_model_lab_project".to_sym] = true +end +api_instance = DatadogAPIClient::V2::ModelLabAPIAPI.new +p api_instance.get_model_lab_project(2387) diff --git a/examples/v2/model-lab-api/GetModelLabRun.rb b/examples/v2/model-lab-api/GetModelLabRun.rb new file mode 100644 index 000000000000..0ece59cba39d --- /dev/null +++ b/examples/v2/model-lab-api/GetModelLabRun.rb @@ -0,0 +1,8 @@ +# Get a Model Lab run returns "OK" response + +require "datadog_api_client" +DatadogAPIClient.configure do |config| + config.unstable_operations["v2.get_model_lab_run".to_sym] = true +end +api_instance = DatadogAPIClient::V2::ModelLabAPIAPI.new +p api_instance.get_model_lab_run(70158) diff --git a/examples/v2/model-lab-api/ListModelLabProjectArtifacts.rb b/examples/v2/model-lab-api/ListModelLabProjectArtifacts.rb new file mode 100644 index 000000000000..0d916011c4a2 --- /dev/null +++ b/examples/v2/model-lab-api/ListModelLabProjectArtifacts.rb @@ -0,0 +1,8 @@ +# List Model Lab project artifacts returns "OK" response + +require "datadog_api_client" +DatadogAPIClient.configure do |config| + config.unstable_operations["v2.list_model_lab_project_artifacts".to_sym] = true +end +api_instance = DatadogAPIClient::V2::ModelLabAPIAPI.new +p api_instance.list_model_lab_project_artifacts(2387) diff --git a/examples/v2/model-lab-api/ListModelLabProjectFacetKeys.rb b/examples/v2/model-lab-api/ListModelLabProjectFacetKeys.rb new file mode 100644 index 000000000000..a38058d30a16 --- /dev/null +++ b/examples/v2/model-lab-api/ListModelLabProjectFacetKeys.rb @@ -0,0 +1,8 @@ +# List Model Lab project facet keys returns "OK" response + +require "datadog_api_client" +DatadogAPIClient.configure do |config| + config.unstable_operations["v2.list_model_lab_project_facet_keys".to_sym] = true +end +api_instance = DatadogAPIClient::V2::ModelLabAPIAPI.new +p api_instance.list_model_lab_project_facet_keys() diff --git a/examples/v2/model-lab-api/ListModelLabProjectFacetValues.rb b/examples/v2/model-lab-api/ListModelLabProjectFacetValues.rb new file mode 100644 index 000000000000..6de19fcf011e --- /dev/null +++ b/examples/v2/model-lab-api/ListModelLabProjectFacetValues.rb @@ -0,0 +1,8 @@ +# List Model Lab project facet values returns "OK" response + +require "datadog_api_client" +DatadogAPIClient.configure do |config| + config.unstable_operations["v2.list_model_lab_project_facet_values".to_sym] = true +end +api_instance = DatadogAPIClient::V2::ModelLabAPIAPI.new +p api_instance.list_model_lab_project_facet_values(ModelLabProjectFacetType::TAG, "model") diff --git a/examples/v2/model-lab-api/ListModelLabProjects.rb b/examples/v2/model-lab-api/ListModelLabProjects.rb new file mode 100644 index 000000000000..f3e4b6d1f7a3 --- /dev/null +++ b/examples/v2/model-lab-api/ListModelLabProjects.rb @@ -0,0 +1,8 @@ +# List Model Lab projects returns "OK" response + +require "datadog_api_client" +DatadogAPIClient.configure do |config| + config.unstable_operations["v2.list_model_lab_projects".to_sym] = true +end +api_instance = DatadogAPIClient::V2::ModelLabAPIAPI.new +p api_instance.list_model_lab_projects() diff --git a/examples/v2/model-lab-api/ListModelLabRunArtifacts.rb b/examples/v2/model-lab-api/ListModelLabRunArtifacts.rb new file mode 100644 index 000000000000..904867b30c08 --- /dev/null +++ b/examples/v2/model-lab-api/ListModelLabRunArtifacts.rb @@ -0,0 +1,8 @@ +# List Model Lab run artifacts returns "OK" response + +require "datadog_api_client" +DatadogAPIClient.configure do |config| + config.unstable_operations["v2.list_model_lab_run_artifacts".to_sym] = true +end +api_instance = DatadogAPIClient::V2::ModelLabAPIAPI.new +p api_instance.list_model_lab_run_artifacts(70158) diff --git a/examples/v2/model-lab-api/ListModelLabRunFacetKeys.rb b/examples/v2/model-lab-api/ListModelLabRunFacetKeys.rb new file mode 100644 index 000000000000..61e3bfba5c92 --- /dev/null +++ b/examples/v2/model-lab-api/ListModelLabRunFacetKeys.rb @@ -0,0 +1,8 @@ +# List Model Lab run facet keys returns "OK" response + +require "datadog_api_client" +DatadogAPIClient.configure do |config| + config.unstable_operations["v2.list_model_lab_run_facet_keys".to_sym] = true +end +api_instance = DatadogAPIClient::V2::ModelLabAPIAPI.new +p api_instance.list_model_lab_run_facet_keys(2387) diff --git a/examples/v2/model-lab-api/ListModelLabRunFacetValues.rb b/examples/v2/model-lab-api/ListModelLabRunFacetValues.rb new file mode 100644 index 000000000000..cdac6953c120 --- /dev/null +++ b/examples/v2/model-lab-api/ListModelLabRunFacetValues.rb @@ -0,0 +1,8 @@ +# List Model Lab run facet values returns "OK" response + +require "datadog_api_client" +DatadogAPIClient.configure do |config| + config.unstable_operations["v2.list_model_lab_run_facet_values".to_sym] = true +end +api_instance = DatadogAPIClient::V2::ModelLabAPIAPI.new +p api_instance.list_model_lab_run_facet_values(2387, ModelLabFacetType::TAG, "model") diff --git a/examples/v2/model-lab-api/ListModelLabRuns.rb b/examples/v2/model-lab-api/ListModelLabRuns.rb new file mode 100644 index 000000000000..e56640e16b5a --- /dev/null +++ b/examples/v2/model-lab-api/ListModelLabRuns.rb @@ -0,0 +1,8 @@ +# List Model Lab runs returns "OK" response + +require "datadog_api_client" +DatadogAPIClient.configure do |config| + config.unstable_operations["v2.list_model_lab_runs".to_sym] = true +end +api_instance = DatadogAPIClient::V2::ModelLabAPIAPI.new +p api_instance.list_model_lab_runs() diff --git a/examples/v2/model-lab-api/PinModelLabRun.rb b/examples/v2/model-lab-api/PinModelLabRun.rb new file mode 100644 index 000000000000..14e179faea90 --- /dev/null +++ b/examples/v2/model-lab-api/PinModelLabRun.rb @@ -0,0 +1,8 @@ +# Pin a Model Lab run returns "No Content" response + +require "datadog_api_client" +DatadogAPIClient.configure do |config| + config.unstable_operations["v2.pin_model_lab_run".to_sym] = true +end +api_instance = DatadogAPIClient::V2::ModelLabAPIAPI.new +api_instance.pin_model_lab_run(70158) diff --git a/examples/v2/model-lab-api/StarModelLabProject.rb b/examples/v2/model-lab-api/StarModelLabProject.rb new file mode 100644 index 000000000000..d244910b97b2 --- /dev/null +++ b/examples/v2/model-lab-api/StarModelLabProject.rb @@ -0,0 +1,8 @@ +# Star a Model Lab project returns "No Content" response + +require "datadog_api_client" +DatadogAPIClient.configure do |config| + config.unstable_operations["v2.star_model_lab_project".to_sym] = true +end +api_instance = DatadogAPIClient::V2::ModelLabAPIAPI.new +api_instance.star_model_lab_project(2387) diff --git a/examples/v2/model-lab-api/UnpinModelLabRun.rb b/examples/v2/model-lab-api/UnpinModelLabRun.rb new file mode 100644 index 000000000000..a7c840746525 --- /dev/null +++ b/examples/v2/model-lab-api/UnpinModelLabRun.rb @@ -0,0 +1,8 @@ +# Unpin a Model Lab run returns "No Content" response + +require "datadog_api_client" +DatadogAPIClient.configure do |config| + config.unstable_operations["v2.unpin_model_lab_run".to_sym] = true +end +api_instance = DatadogAPIClient::V2::ModelLabAPIAPI.new +api_instance.unpin_model_lab_run(70158) diff --git a/examples/v2/model-lab-api/UnstarModelLabProject.rb b/examples/v2/model-lab-api/UnstarModelLabProject.rb new file mode 100644 index 000000000000..f1d71e017162 --- /dev/null +++ b/examples/v2/model-lab-api/UnstarModelLabProject.rb @@ -0,0 +1,8 @@ +# Remove star from a Model Lab project returns "No Content" response + +require "datadog_api_client" +DatadogAPIClient.configure do |config| + config.unstable_operations["v2.unstar_model_lab_project".to_sym] = true +end +api_instance = DatadogAPIClient::V2::ModelLabAPIAPI.new +api_instance.unstar_model_lab_project(1) diff --git a/examples/v2/model-lab-api/UnstarModelLabProject_931927092.rb b/examples/v2/model-lab-api/UnstarModelLabProject_931927092.rb new file mode 100644 index 000000000000..e6067e264b59 --- /dev/null +++ b/examples/v2/model-lab-api/UnstarModelLabProject_931927092.rb @@ -0,0 +1,8 @@ +# Unstar a Model Lab project returns "No Content" response + +require "datadog_api_client" +DatadogAPIClient.configure do |config| + config.unstable_operations["v2.unstar_model_lab_project".to_sym] = true +end +api_instance = DatadogAPIClient::V2::ModelLabAPIAPI.new +api_instance.unstar_model_lab_project(2387) diff --git a/features/scenarios_model_mapping.rb b/features/scenarios_model_mapping.rb index 6e10b197f4fe..ab7d3f9833a2 100644 --- a/features/scenarios_model_mapping.rb +++ b/features/scenarios_model_mapping.rb @@ -3381,6 +3381,74 @@ "content_encoding" => "MetricContentEncoding", "body" => "MetricPayload", }, + "v2.GetModelLabArtifactContent" => { + "project_id" => "String", + "artifact_path" => "String", + }, + "v2.ListModelLabRunFacetKeys" => { + "filter_project_id" => "Integer", + }, + "v2.ListModelLabRunFacetValues" => { + "filter_project_id" => "Integer", + "facet_type" => "ModelLabFacetType", + "facet_name" => "String", + }, + "v2.ListModelLabProjectFacetValues" => { + "facet_type" => "ModelLabProjectFacetType", + "facet_name" => "String", + }, + "v2.ListModelLabProjects" => { + "filter" => "String", + "filter_owner_id" => "UUID", + "filter_tags" => "String", + "sort" => "String", + "page_size" => "Integer", + "page_number" => "Integer", + }, + "v2.GetModelLabProject" => { + "project_id" => "Integer", + }, + "v2.ListModelLabProjectArtifacts" => { + "project_id" => "Integer", + }, + "v2.UnstarModelLabProject" => { + "project_id" => "Integer", + }, + "v2.StarModelLabProject" => { + "project_id" => "Integer", + }, + "v2.ListModelLabRuns" => { + "filter_id" => "String", + "filter" => "String", + "filter_owner_id" => "String", + "filter_status" => "ModelLabRunStatus", + "filter_project_id" => "Integer", + "filter_tags" => "String", + "filter_params" => "String", + "filter_parent_run_id" => "String", + "pinned_first" => "Boolean", + "include_pinned" => "Boolean", + "include_descendant_matches" => "Boolean", + "sort" => "String", + "page_size" => "Integer", + "page_number" => "Integer", + }, + "v2.DeleteModelLabRun" => { + "run_id" => "Integer", + }, + "v2.GetModelLabRun" => { + "run_id" => "Integer", + }, + "v2.ListModelLabRunArtifacts" => { + "run_id" => "Integer", + "path" => "String", + }, + "v2.UnpinModelLabRun" => { + "run_id" => "Integer", + }, + "v2.PinModelLabRun" => { + "run_id" => "Integer", + }, "v2.GetMonitorNotificationRules" => { "page" => "Integer", "per_page" => "Integer", diff --git a/features/v2/model_lab_api.feature b/features/v2/model_lab_api.feature new file mode 100644 index 000000000000..997a9c389f63 --- /dev/null +++ b/features/v2/model_lab_api.feature @@ -0,0 +1,359 @@ +@endpoint(model-lab-api) @endpoint(model-lab-api-v2) +Feature: Model Lab API + Manage Model Lab projects, runs, artifacts, and facets for ML experiment + tracking. + + Background: + Given a valid "apiKeyAuth" key in the system + And a valid "appKeyAuth" key in the system + And an instance of "ModelLabAPI" API + + @generated @skip @team:DataDog/ml-observability + Scenario: Delete a Model Lab run returns "Bad Request" response + Given operation "DeleteModelLabRun" enabled + And new "DeleteModelLabRun" request + And request contains "run_id" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 400 Bad Request + + @replay-only @team:DataDog/ml-observability + Scenario: Delete a Model Lab run returns "No Content" response + Given operation "DeleteModelLabRun" enabled + And new "DeleteModelLabRun" request + And request contains "run_id" parameter with value 70158 + When the request is sent + Then the response status is 204 No Content + + @replay-only @team:DataDog/ml-observability + Scenario: Delete a Model Lab run returns "Not Found" response + Given operation "DeleteModelLabRun" enabled + And new "DeleteModelLabRun" request + And request contains "run_id" parameter with value 999999 + When the request is sent + Then the response status is 404 Not Found + + @replay-only @team:DataDog/ml-observability + Scenario: Download artifact content returns "OK" response + Given operation "GetModelLabArtifactContent" enabled + And new "GetModelLabArtifactContent" request + And request contains "project_id" parameter with value "2387" + And request contains "artifact_path" parameter with value "f635c73b70594ab6bb6e212cdf87d0d5/artifacts/lora_model/adapter_config.json" + When the request is sent + Then the response status is 200 OK + + @generated @skip @team:DataDog/ml-observability + Scenario: Get Model Lab artifact content returns "Bad Request" response + Given operation "GetModelLabArtifactContent" enabled + And new "GetModelLabArtifactContent" request + And request contains "project_id" parameter from "REPLACE.ME" + And request contains "artifact_path" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 400 Bad Request + + @generated @skip @team:DataDog/ml-observability + Scenario: Get Model Lab artifact content returns "OK" response + Given operation "GetModelLabArtifactContent" enabled + And new "GetModelLabArtifactContent" request + And request contains "project_id" parameter from "REPLACE.ME" + And request contains "artifact_path" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 200 OK + + @generated @skip @team:DataDog/ml-observability + Scenario: Get a Model Lab project returns "Bad Request" response + Given operation "GetModelLabProject" enabled + And new "GetModelLabProject" request + And request contains "project_id" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 400 Bad Request + + @replay-only @team:DataDog/ml-observability + Scenario: Get a Model Lab project returns "Not Found" response + Given operation "GetModelLabProject" enabled + And new "GetModelLabProject" request + And request contains "project_id" parameter with value 999999 + When the request is sent + Then the response status is 404 Not Found + + @replay-only @team:DataDog/ml-observability + Scenario: Get a Model Lab project returns "OK" response + Given operation "GetModelLabProject" enabled + And new "GetModelLabProject" request + And request contains "project_id" parameter with value 2387 + When the request is sent + Then the response status is 200 OK + + @generated @skip @team:DataDog/ml-observability + Scenario: Get a Model Lab run returns "Bad Request" response + Given operation "GetModelLabRun" enabled + And new "GetModelLabRun" request + And request contains "run_id" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 400 Bad Request + + @replay-only @team:DataDog/ml-observability + Scenario: Get a Model Lab run returns "Not Found" response + Given operation "GetModelLabRun" enabled + And new "GetModelLabRun" request + And request contains "run_id" parameter with value 999999 + When the request is sent + Then the response status is 404 Not Found + + @replay-only @team:DataDog/ml-observability + Scenario: Get a Model Lab run returns "OK" response + Given operation "GetModelLabRun" enabled + And new "GetModelLabRun" request + And request contains "run_id" parameter with value 70158 + When the request is sent + Then the response status is 200 OK + + @generated @skip @team:DataDog/ml-observability + Scenario: List Model Lab project artifacts returns "Bad Request" response + Given operation "ListModelLabProjectArtifacts" enabled + And new "ListModelLabProjectArtifacts" request + And request contains "project_id" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 400 Bad Request + + @replay-only @team:DataDog/ml-observability + Scenario: List Model Lab project artifacts returns "OK" response + Given operation "ListModelLabProjectArtifacts" enabled + And new "ListModelLabProjectArtifacts" request + And request contains "project_id" parameter with value 2387 + When the request is sent + Then the response status is 200 OK + + @replay-only @team:DataDog/ml-observability + Scenario: List Model Lab project facet keys returns "OK" response + Given operation "ListModelLabProjectFacetKeys" enabled + And new "ListModelLabProjectFacetKeys" request + When the request is sent + Then the response status is 200 OK + + @generated @skip @team:DataDog/ml-observability + Scenario: List Model Lab project facet values returns "Bad Request" response + Given operation "ListModelLabProjectFacetValues" enabled + And new "ListModelLabProjectFacetValues" request + And request contains "facet_type" parameter from "REPLACE.ME" + And request contains "facet_name" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 400 Bad Request + + @replay-only @team:DataDog/ml-observability + Scenario: List Model Lab project facet values returns "OK" response + Given operation "ListModelLabProjectFacetValues" enabled + And new "ListModelLabProjectFacetValues" request + And request contains "facet_type" parameter with value "tag" + And request contains "facet_name" parameter with value "model" + When the request is sent + Then the response status is 200 OK + + @generated @skip @team:DataDog/ml-observability + Scenario: List Model Lab projects returns "Bad Request" response + Given operation "ListModelLabProjects" enabled + And new "ListModelLabProjects" request + When the request is sent + Then the response status is 400 Bad Request + + @replay-only @team:DataDog/ml-observability + Scenario: List Model Lab projects returns "OK" response + Given operation "ListModelLabProjects" enabled + And new "ListModelLabProjects" request + When the request is sent + Then the response status is 200 OK + + @generated @skip @team:DataDog/ml-observability + Scenario: List Model Lab run artifacts returns "Bad Request" response + Given operation "ListModelLabRunArtifacts" enabled + And new "ListModelLabRunArtifacts" request + And request contains "run_id" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 400 Bad Request + + @generated @skip @team:DataDog/ml-observability + Scenario: List Model Lab run artifacts returns "Not Found" response + Given operation "ListModelLabRunArtifacts" enabled + And new "ListModelLabRunArtifacts" request + And request contains "run_id" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 404 Not Found + + @replay-only @team:DataDog/ml-observability + Scenario: List Model Lab run artifacts returns "OK" response + Given operation "ListModelLabRunArtifacts" enabled + And new "ListModelLabRunArtifacts" request + And request contains "run_id" parameter with value 70158 + When the request is sent + Then the response status is 200 OK + + @generated @skip @team:DataDog/ml-observability + Scenario: List Model Lab run facet keys returns "Bad Request" response + Given operation "ListModelLabRunFacetKeys" enabled + And new "ListModelLabRunFacetKeys" request + And request contains "filter[project_id]" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 400 Bad Request + + @generated @skip @team:DataDog/ml-observability + Scenario: List Model Lab run facet keys returns "Not Found" response + Given operation "ListModelLabRunFacetKeys" enabled + And new "ListModelLabRunFacetKeys" request + And request contains "filter[project_id]" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 404 Not Found + + @replay-only @team:DataDog/ml-observability + Scenario: List Model Lab run facet keys returns "OK" response + Given operation "ListModelLabRunFacetKeys" enabled + And new "ListModelLabRunFacetKeys" request + And request contains "filter[project_id]" parameter with value 2387 + When the request is sent + Then the response status is 200 OK + + @generated @skip @team:DataDog/ml-observability + Scenario: List Model Lab run facet values returns "Bad Request" response + Given operation "ListModelLabRunFacetValues" enabled + And new "ListModelLabRunFacetValues" request + And request contains "filter[project_id]" parameter from "REPLACE.ME" + And request contains "facet_type" parameter from "REPLACE.ME" + And request contains "facet_name" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 400 Bad Request + + @generated @skip @team:DataDog/ml-observability + Scenario: List Model Lab run facet values returns "Not Found" response + Given operation "ListModelLabRunFacetValues" enabled + And new "ListModelLabRunFacetValues" request + And request contains "filter[project_id]" parameter from "REPLACE.ME" + And request contains "facet_type" parameter from "REPLACE.ME" + And request contains "facet_name" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 404 Not Found + + @replay-only @team:DataDog/ml-observability + Scenario: List Model Lab run facet values returns "OK" response + Given operation "ListModelLabRunFacetValues" enabled + And new "ListModelLabRunFacetValues" request + And request contains "filter[project_id]" parameter with value 2387 + And request contains "facet_type" parameter with value "tag" + And request contains "facet_name" parameter with value "model" + When the request is sent + Then the response status is 200 OK + + @generated @skip @team:DataDog/ml-observability + Scenario: List Model Lab runs returns "Bad Request" response + Given operation "ListModelLabRuns" enabled + And new "ListModelLabRuns" request + When the request is sent + Then the response status is 400 Bad Request + + @replay-only @team:DataDog/ml-observability + Scenario: List Model Lab runs returns "OK" response + Given operation "ListModelLabRuns" enabled + And new "ListModelLabRuns" request + When the request is sent + Then the response status is 200 OK + + @generated @skip @team:DataDog/ml-observability + Scenario: Pin a Model Lab run returns "Bad Request" response + Given operation "PinModelLabRun" enabled + And new "PinModelLabRun" request + And request contains "run_id" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 400 Bad Request + + @replay-only @team:DataDog/ml-observability + Scenario: Pin a Model Lab run returns "No Content" response + Given operation "PinModelLabRun" enabled + And new "PinModelLabRun" request + And request contains "run_id" parameter with value 70158 + When the request is sent + Then the response status is 204 No Content + + @replay-only @team:DataDog/ml-observability + Scenario: Pin a Model Lab run returns "Not Found" response + Given operation "PinModelLabRun" enabled + And new "PinModelLabRun" request + And request contains "run_id" parameter with value 999999 + When the request is sent + Then the response status is 404 Not Found + + @generated @skip @team:DataDog/ml-observability + Scenario: Remove star from a Model Lab project returns "Bad Request" response + Given operation "UnstarModelLabProject" enabled + And new "UnstarModelLabProject" request + And request contains "project_id" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 400 Bad Request + + @generated @skip @team:DataDog/ml-observability + Scenario: Remove star from a Model Lab project returns "No Content" response + Given operation "UnstarModelLabProject" enabled + And new "UnstarModelLabProject" request + And request contains "project_id" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 204 No Content + + @generated @skip @team:DataDog/ml-observability + Scenario: Remove star from a Model Lab project returns "Not Found" response + Given operation "UnstarModelLabProject" enabled + And new "UnstarModelLabProject" request + And request contains "project_id" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 404 Not Found + + @generated @skip @team:DataDog/ml-observability + Scenario: Star a Model Lab project returns "Bad Request" response + Given operation "StarModelLabProject" enabled + And new "StarModelLabProject" request + And request contains "project_id" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 400 Bad Request + + @replay-only @team:DataDog/ml-observability + Scenario: Star a Model Lab project returns "No Content" response + Given operation "StarModelLabProject" enabled + And new "StarModelLabProject" request + And request contains "project_id" parameter with value 2387 + When the request is sent + Then the response status is 204 No Content + + @replay-only @team:DataDog/ml-observability + Scenario: Star a Model Lab project returns "Not Found" response + Given operation "StarModelLabProject" enabled + And new "StarModelLabProject" request + And request contains "project_id" parameter with value 999999 + When the request is sent + Then the response status is 404 Not Found + + @generated @skip @team:DataDog/ml-observability + Scenario: Unpin a Model Lab run returns "Bad Request" response + Given operation "UnpinModelLabRun" enabled + And new "UnpinModelLabRun" request + And request contains "run_id" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 400 Bad Request + + @replay-only @team:DataDog/ml-observability + Scenario: Unpin a Model Lab run returns "No Content" response + Given operation "UnpinModelLabRun" enabled + And new "UnpinModelLabRun" request + And request contains "run_id" parameter with value 70158 + When the request is sent + Then the response status is 204 No Content + + @generated @skip @team:DataDog/ml-observability + Scenario: Unpin a Model Lab run returns "Not Found" response + Given operation "UnpinModelLabRun" enabled + And new "UnpinModelLabRun" request + And request contains "run_id" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 404 Not Found + + @replay-only @team:DataDog/ml-observability + Scenario: Unstar a Model Lab project returns "No Content" response + Given operation "UnstarModelLabProject" enabled + And new "UnstarModelLabProject" request + And request contains "project_id" parameter with value 2387 + When the request is sent + Then the response status is 204 No Content diff --git a/features/v2/undo.json b/features/v2/undo.json index faa660d7de0b..2f8886fc38eb 100644 --- a/features/v2/undo.json +++ b/features/v2/undo.json @@ -3944,6 +3944,118 @@ "type": "safe" } }, + "GetModelLabArtifactContent": { + "tag": "Model Lab API", + "undo": { + "type": "safe" + } + }, + "ListModelLabRunFacetKeys": { + "tag": "Model Lab API", + "undo": { + "type": "safe" + } + }, + "ListModelLabRunFacetValues": { + "tag": "Model Lab API", + "undo": { + "type": "safe" + } + }, + "ListModelLabProjectFacetKeys": { + "tag": "Model Lab API", + "undo": { + "type": "safe" + } + }, + "ListModelLabProjectFacetValues": { + "tag": "Model Lab API", + "undo": { + "type": "safe" + } + }, + "ListModelLabProjects": { + "tag": "Model Lab API", + "undo": { + "type": "safe" + } + }, + "GetModelLabProject": { + "tag": "Model Lab API", + "undo": { + "type": "safe" + } + }, + "ListModelLabProjectArtifacts": { + "tag": "Model Lab API", + "undo": { + "type": "safe" + } + }, + "UnstarModelLabProject": { + "tag": "Model Lab API", + "undo": { + "type": "idempotent" + } + }, + "StarModelLabProject": { + "tag": "Model Lab API", + "undo": { + "operationId": "UnstarModelLabProject", + "parameters": [ + { + "name": "project_id", + "origin": "path", + "source": "project_id" + } + ], + "type": "unsafe" + } + }, + "ListModelLabRuns": { + "tag": "Model Lab API", + "undo": { + "type": "safe" + } + }, + "DeleteModelLabRun": { + "tag": "Model Lab API", + "undo": { + "type": "idempotent" + } + }, + "GetModelLabRun": { + "tag": "Model Lab API", + "undo": { + "type": "safe" + } + }, + "ListModelLabRunArtifacts": { + "tag": "Model Lab API", + "undo": { + "type": "safe" + } + }, + "UnpinModelLabRun": { + "tag": "Model Lab API", + "undo": { + "type": "idempotent" + } + }, + "PinModelLabRun": { + "tag": "Model Lab API", + "undo": { + "operationId": "UnpinModelLabRun", + "parameters": [ + { + "name": "run_id", + "origin": "path", + "source": "run_id" + } + ], + "type": "unsafe" + } + }, "GetMonitorNotificationRules": { "tag": "Monitors", "undo": { diff --git a/lib/datadog_api_client/configuration.rb b/lib/datadog_api_client/configuration.rb index 7859a1a65a96..424225dc29c4 100644 --- a/lib/datadog_api_client/configuration.rb +++ b/lib/datadog_api_client/configuration.rb @@ -412,6 +412,22 @@ def initialize "v2.remove_role_from_restriction_query": false, "v2.replace_restriction_query": false, "v2.update_restriction_query": false, + "v2.delete_model_lab_run": false, + "v2.get_model_lab_artifact_content": false, + "v2.get_model_lab_project": false, + "v2.get_model_lab_run": false, + "v2.list_model_lab_project_artifacts": false, + "v2.list_model_lab_project_facet_keys": false, + "v2.list_model_lab_project_facet_values": false, + "v2.list_model_lab_projects": false, + "v2.list_model_lab_run_artifacts": false, + "v2.list_model_lab_run_facet_keys": false, + "v2.list_model_lab_run_facet_values": false, + "v2.list_model_lab_runs": false, + "v2.pin_model_lab_run": false, + "v2.star_model_lab_project": false, + "v2.unpin_model_lab_run": false, + "v2.unstar_model_lab_project": false, "v2.create_monitor_user_template": false, "v2.delete_monitor_user_template": false, "v2.get_monitor_user_template": false, diff --git a/lib/datadog_api_client/inflector.rb b/lib/datadog_api_client/inflector.rb index 45d174b12c04..2b7e5298af42 100644 --- a/lib/datadog_api_client/inflector.rb +++ b/lib/datadog_api_client/inflector.rb @@ -3960,6 +3960,45 @@ def overrides "v2.microsoft_teams_workflows_webhook_handles_response" => "MicrosoftTeamsWorkflowsWebhookHandlesResponse", "v2.microsoft_teams_workflows_webhook_handle_type" => "MicrosoftTeamsWorkflowsWebhookHandleType", "v2.microsoft_teams_workflows_webhook_response_attributes" => "MicrosoftTeamsWorkflowsWebhookResponseAttributes", + "v2.model_lab_artifact_info" => "ModelLabArtifactInfo", + "v2.model_lab_artifact_object_info" => "ModelLabArtifactObjectInfo", + "v2.model_lab_facet_keys_attributes" => "ModelLabFacetKeysAttributes", + "v2.model_lab_facet_keys_data" => "ModelLabFacetKeysData", + "v2.model_lab_facet_keys_response" => "ModelLabFacetKeysResponse", + "v2.model_lab_facet_keys_type" => "ModelLabFacetKeysType", + "v2.model_lab_facet_type" => "ModelLabFacetType", + "v2.model_lab_facet_values_attributes" => "ModelLabFacetValuesAttributes", + "v2.model_lab_facet_values_data" => "ModelLabFacetValuesData", + "v2.model_lab_facet_values_response" => "ModelLabFacetValuesResponse", + "v2.model_lab_facet_values_type" => "ModelLabFacetValuesType", + "v2.model_lab_metric_stat_range" => "ModelLabMetricStatRange", + "v2.model_lab_metric_summary" => "ModelLabMetricSummary", + "v2.model_lab_numeric_range" => "ModelLabNumericRange", + "v2.model_lab_page_meta" => "ModelLabPageMeta", + "v2.model_lab_page_meta_page" => "ModelLabPageMetaPage", + "v2.model_lab_pagination_links" => "ModelLabPaginationLinks", + "v2.model_lab_project_artifacts_attributes" => "ModelLabProjectArtifactsAttributes", + "v2.model_lab_project_artifacts_data" => "ModelLabProjectArtifactsData", + "v2.model_lab_project_artifacts_response" => "ModelLabProjectArtifactsResponse", + "v2.model_lab_project_artifacts_type" => "ModelLabProjectArtifactsType", + "v2.model_lab_project_attributes" => "ModelLabProjectAttributes", + "v2.model_lab_project_data" => "ModelLabProjectData", + "v2.model_lab_project_facet_type" => "ModelLabProjectFacetType", + "v2.model_lab_project_response" => "ModelLabProjectResponse", + "v2.model_lab_projects_response" => "ModelLabProjectsResponse", + "v2.model_lab_project_type" => "ModelLabProjectType", + "v2.model_lab_run_artifacts_attributes" => "ModelLabRunArtifactsAttributes", + "v2.model_lab_run_artifacts_data" => "ModelLabRunArtifactsData", + "v2.model_lab_run_artifacts_response" => "ModelLabRunArtifactsResponse", + "v2.model_lab_run_artifacts_type" => "ModelLabRunArtifactsType", + "v2.model_lab_run_attributes" => "ModelLabRunAttributes", + "v2.model_lab_run_data" => "ModelLabRunData", + "v2.model_lab_run_param" => "ModelLabRunParam", + "v2.model_lab_run_response" => "ModelLabRunResponse", + "v2.model_lab_runs_response" => "ModelLabRunsResponse", + "v2.model_lab_run_status" => "ModelLabRunStatus", + "v2.model_lab_run_type" => "ModelLabRunType", + "v2.model_lab_tag" => "ModelLabTag", "v2.monitor_alert_trigger_attributes" => "MonitorAlertTriggerAttributes", "v2.monitor_config_policy_attribute_create_request" => "MonitorConfigPolicyAttributeCreateRequest", "v2.monitor_config_policy_attribute_edit_request" => "MonitorConfigPolicyAttributeEditRequest", @@ -6594,6 +6633,7 @@ def overrides "v2.logs_restriction_queries_api" => "LogsRestrictionQueriesAPI", "v2.metrics_api" => "MetricsAPI", "v2.microsoft_teams_integration_api" => "MicrosoftTeamsIntegrationAPI", + "v2.model_lab_api_api" => "ModelLabAPIAPI", "v2.monitors_api" => "MonitorsAPI", "v2.network_device_monitoring_api" => "NetworkDeviceMonitoringAPI", "v2.observability_pipelines_api" => "ObservabilityPipelinesAPI", diff --git a/lib/datadog_api_client/v2/api/model_lab_api_api.rb b/lib/datadog_api_client/v2/api/model_lab_api_api.rb new file mode 100644 index 000000000000..e20533a305ed --- /dev/null +++ b/lib/datadog_api_client/v2/api/model_lab_api_api.rb @@ -0,0 +1,1237 @@ +=begin +#Datadog API V2 Collection + +#Collection of all Datadog Public endpoints. + +The version of the OpenAPI document: 1.0 +Contact: support@datadoghq.com +Generated by: https://github.com/DataDog/datadog-api-client-ruby/tree/master/.generator + + Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + This product includes software developed at Datadog (https://www.datadoghq.com/). + Copyright 2020-Present Datadog, Inc. + +=end + +require 'cgi' + +module DatadogAPIClient::V2 + class ModelLabAPIAPI + attr_accessor :api_client + + def initialize(api_client = DatadogAPIClient::APIClient.default) + @api_client = api_client + end + + # Delete a Model Lab run. + # + # @see #delete_model_lab_run_with_http_info + def delete_model_lab_run(run_id, opts = {}) + delete_model_lab_run_with_http_info(run_id, opts) + nil + end + + # Delete a Model Lab run. + # + # Delete a Model Lab run by its ID. + # + # @param run_id [Integer] The ID of the Model Lab run. + # @param opts [Hash] the optional parameters + # @return [Array<(nil, Integer, Hash)>] nil, response status code and response headers + def delete_model_lab_run_with_http_info(run_id, opts = {}) + unstable_enabled = @api_client.config.unstable_operations["v2.delete_model_lab_run".to_sym] + if unstable_enabled + @api_client.config.logger.warn format("Using unstable operation '%s'", "v2.delete_model_lab_run") + else + raise DatadogAPIClient::APIError.new(message: format("Unstable operation '%s' is disabled", "v2.delete_model_lab_run")) + end + + if @api_client.config.debugging + @api_client.config.logger.debug 'Calling API: ModelLabAPIAPI.delete_model_lab_run ...' + end + # verify the required parameter 'run_id' is set + if @api_client.config.client_side_validation && run_id.nil? + fail ArgumentError, "Missing the required parameter 'run_id' when calling ModelLabAPIAPI.delete_model_lab_run" + end + # resource path + local_var_path = '/api/v2/model-lab-api/runs/{run_id}'.sub('{run_id}', CGI.escape(run_id.to_s).gsub('%2F', '/')) + + # query parameters + query_params = opts[:query_params] || {} + + # header parameters + header_params = opts[:header_params] || {} + # HTTP header 'Accept' (if needed) + header_params['Accept'] = @api_client.select_header_accept(['*/*']) + + # form parameters + form_params = opts[:form_params] || {} + + # http body (model) + post_body = opts[:debug_body] + + # return_type + return_type = opts[:debug_return_type] + + # auth_names + auth_names = opts[:debug_auth_names] || [:apiKeyAuth, :appKeyAuth] + + new_options = opts.merge( + :operation => :delete_model_lab_run, + :header_params => header_params, + :query_params => query_params, + :form_params => form_params, + :body => post_body, + :auth_names => auth_names, + :return_type => return_type, + :api_version => "V2" + ) + + data, status_code, headers = @api_client.call_api(Net::HTTP::Delete, local_var_path, new_options) + if @api_client.config.debugging + @api_client.config.logger.debug "API called: ModelLabAPIAPI#delete_model_lab_run\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}" + end + return data, status_code, headers + end + + # Get Model Lab artifact content. + # + # @see #get_model_lab_artifact_content_with_http_info + def get_model_lab_artifact_content(project_id, artifact_path, opts = {}) + data, _status_code, _headers = get_model_lab_artifact_content_with_http_info(project_id, artifact_path, opts) + data + end + + # Get Model Lab artifact content. + # + # Download the raw content of a Model Lab artifact file. + # + # @param project_id [String] ID of the project. + # @param artifact_path [String] Path to the artifact relative to the project directory. + # @param opts [Hash] the optional parameters + # @return [Array<(File, Integer, Hash)>] File data, response status code and response headers + def get_model_lab_artifact_content_with_http_info(project_id, artifact_path, opts = {}) + unstable_enabled = @api_client.config.unstable_operations["v2.get_model_lab_artifact_content".to_sym] + if unstable_enabled + @api_client.config.logger.warn format("Using unstable operation '%s'", "v2.get_model_lab_artifact_content") + else + raise DatadogAPIClient::APIError.new(message: format("Unstable operation '%s' is disabled", "v2.get_model_lab_artifact_content")) + end + + if @api_client.config.debugging + @api_client.config.logger.debug 'Calling API: ModelLabAPIAPI.get_model_lab_artifact_content ...' + end + # verify the required parameter 'project_id' is set + if @api_client.config.client_side_validation && project_id.nil? + fail ArgumentError, "Missing the required parameter 'project_id' when calling ModelLabAPIAPI.get_model_lab_artifact_content" + end + # verify the required parameter 'artifact_path' is set + if @api_client.config.client_side_validation && artifact_path.nil? + fail ArgumentError, "Missing the required parameter 'artifact_path' when calling ModelLabAPIAPI.get_model_lab_artifact_content" + end + # resource path + local_var_path = '/api/v2/model-lab-api/artifacts/content' + + # query parameters + query_params = opts[:query_params] || {} + query_params[:'project_id'] = project_id + query_params[:'artifact_path'] = artifact_path + + # header parameters + header_params = opts[:header_params] || {} + # HTTP header 'Accept' (if needed) + header_params['Accept'] = @api_client.select_header_accept(['application/octet-stream', 'application/json']) + + # form parameters + form_params = opts[:form_params] || {} + + # http body (model) + post_body = opts[:debug_body] + + # return_type + return_type = opts[:debug_return_type] || 'File' + + # auth_names + auth_names = opts[:debug_auth_names] || [:apiKeyAuth, :appKeyAuth] + + new_options = opts.merge( + :operation => :get_model_lab_artifact_content, + :header_params => header_params, + :query_params => query_params, + :form_params => form_params, + :body => post_body, + :auth_names => auth_names, + :return_type => return_type, + :api_version => "V2" + ) + + data, status_code, headers = @api_client.call_api(Net::HTTP::Get, local_var_path, new_options) + if @api_client.config.debugging + @api_client.config.logger.debug "API called: ModelLabAPIAPI#get_model_lab_artifact_content\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}" + end + return data, status_code, headers + end + + # Get a Model Lab project. + # + # @see #get_model_lab_project_with_http_info + def get_model_lab_project(project_id, opts = {}) + data, _status_code, _headers = get_model_lab_project_with_http_info(project_id, opts) + data + end + + # Get a Model Lab project. + # + # Get a single Model Lab project by its ID. + # + # @param project_id [Integer] The ID of the Model Lab project. + # @param opts [Hash] the optional parameters + # @return [Array<(ModelLabProjectResponse, Integer, Hash)>] ModelLabProjectResponse data, response status code and response headers + def get_model_lab_project_with_http_info(project_id, opts = {}) + unstable_enabled = @api_client.config.unstable_operations["v2.get_model_lab_project".to_sym] + if unstable_enabled + @api_client.config.logger.warn format("Using unstable operation '%s'", "v2.get_model_lab_project") + else + raise DatadogAPIClient::APIError.new(message: format("Unstable operation '%s' is disabled", "v2.get_model_lab_project")) + end + + if @api_client.config.debugging + @api_client.config.logger.debug 'Calling API: ModelLabAPIAPI.get_model_lab_project ...' + end + # verify the required parameter 'project_id' is set + if @api_client.config.client_side_validation && project_id.nil? + fail ArgumentError, "Missing the required parameter 'project_id' when calling ModelLabAPIAPI.get_model_lab_project" + end + # resource path + local_var_path = '/api/v2/model-lab-api/projects/{project_id}'.sub('{project_id}', CGI.escape(project_id.to_s).gsub('%2F', '/')) + + # query parameters + query_params = opts[:query_params] || {} + + # header parameters + header_params = opts[:header_params] || {} + # HTTP header 'Accept' (if needed) + header_params['Accept'] = @api_client.select_header_accept(['application/json']) + + # form parameters + form_params = opts[:form_params] || {} + + # http body (model) + post_body = opts[:debug_body] + + # return_type + return_type = opts[:debug_return_type] || 'ModelLabProjectResponse' + + # auth_names + auth_names = opts[:debug_auth_names] || [:apiKeyAuth, :appKeyAuth] + + new_options = opts.merge( + :operation => :get_model_lab_project, + :header_params => header_params, + :query_params => query_params, + :form_params => form_params, + :body => post_body, + :auth_names => auth_names, + :return_type => return_type, + :api_version => "V2" + ) + + data, status_code, headers = @api_client.call_api(Net::HTTP::Get, local_var_path, new_options) + if @api_client.config.debugging + @api_client.config.logger.debug "API called: ModelLabAPIAPI#get_model_lab_project\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}" + end + return data, status_code, headers + end + + # Get a Model Lab run. + # + # @see #get_model_lab_run_with_http_info + def get_model_lab_run(run_id, opts = {}) + data, _status_code, _headers = get_model_lab_run_with_http_info(run_id, opts) + data + end + + # Get a Model Lab run. + # + # Get a single Model Lab run by its ID. + # + # @param run_id [Integer] The ID of the Model Lab run. + # @param opts [Hash] the optional parameters + # @return [Array<(ModelLabRunResponse, Integer, Hash)>] ModelLabRunResponse data, response status code and response headers + def get_model_lab_run_with_http_info(run_id, opts = {}) + unstable_enabled = @api_client.config.unstable_operations["v2.get_model_lab_run".to_sym] + if unstable_enabled + @api_client.config.logger.warn format("Using unstable operation '%s'", "v2.get_model_lab_run") + else + raise DatadogAPIClient::APIError.new(message: format("Unstable operation '%s' is disabled", "v2.get_model_lab_run")) + end + + if @api_client.config.debugging + @api_client.config.logger.debug 'Calling API: ModelLabAPIAPI.get_model_lab_run ...' + end + # verify the required parameter 'run_id' is set + if @api_client.config.client_side_validation && run_id.nil? + fail ArgumentError, "Missing the required parameter 'run_id' when calling ModelLabAPIAPI.get_model_lab_run" + end + # resource path + local_var_path = '/api/v2/model-lab-api/runs/{run_id}'.sub('{run_id}', CGI.escape(run_id.to_s).gsub('%2F', '/')) + + # query parameters + query_params = opts[:query_params] || {} + + # header parameters + header_params = opts[:header_params] || {} + # HTTP header 'Accept' (if needed) + header_params['Accept'] = @api_client.select_header_accept(['application/json']) + + # form parameters + form_params = opts[:form_params] || {} + + # http body (model) + post_body = opts[:debug_body] + + # return_type + return_type = opts[:debug_return_type] || 'ModelLabRunResponse' + + # auth_names + auth_names = opts[:debug_auth_names] || [:apiKeyAuth, :appKeyAuth] + + new_options = opts.merge( + :operation => :get_model_lab_run, + :header_params => header_params, + :query_params => query_params, + :form_params => form_params, + :body => post_body, + :auth_names => auth_names, + :return_type => return_type, + :api_version => "V2" + ) + + data, status_code, headers = @api_client.call_api(Net::HTTP::Get, local_var_path, new_options) + if @api_client.config.debugging + @api_client.config.logger.debug "API called: ModelLabAPIAPI#get_model_lab_run\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}" + end + return data, status_code, headers + end + + # List Model Lab project artifacts. + # + # @see #list_model_lab_project_artifacts_with_http_info + def list_model_lab_project_artifacts(project_id, opts = {}) + data, _status_code, _headers = list_model_lab_project_artifacts_with_http_info(project_id, opts) + data + end + + # List Model Lab project artifacts. + # + # List all artifact files for a specific Model Lab project. + # + # @param project_id [Integer] The ID of the Model Lab project. + # @param opts [Hash] the optional parameters + # @return [Array<(ModelLabProjectArtifactsResponse, Integer, Hash)>] ModelLabProjectArtifactsResponse data, response status code and response headers + def list_model_lab_project_artifacts_with_http_info(project_id, opts = {}) + unstable_enabled = @api_client.config.unstable_operations["v2.list_model_lab_project_artifacts".to_sym] + if unstable_enabled + @api_client.config.logger.warn format("Using unstable operation '%s'", "v2.list_model_lab_project_artifacts") + else + raise DatadogAPIClient::APIError.new(message: format("Unstable operation '%s' is disabled", "v2.list_model_lab_project_artifacts")) + end + + if @api_client.config.debugging + @api_client.config.logger.debug 'Calling API: ModelLabAPIAPI.list_model_lab_project_artifacts ...' + end + # verify the required parameter 'project_id' is set + if @api_client.config.client_side_validation && project_id.nil? + fail ArgumentError, "Missing the required parameter 'project_id' when calling ModelLabAPIAPI.list_model_lab_project_artifacts" + end + # resource path + local_var_path = '/api/v2/model-lab-api/projects/{project_id}/artifacts'.sub('{project_id}', CGI.escape(project_id.to_s).gsub('%2F', '/')) + + # query parameters + query_params = opts[:query_params] || {} + + # header parameters + header_params = opts[:header_params] || {} + # HTTP header 'Accept' (if needed) + header_params['Accept'] = @api_client.select_header_accept(['application/json']) + + # form parameters + form_params = opts[:form_params] || {} + + # http body (model) + post_body = opts[:debug_body] + + # return_type + return_type = opts[:debug_return_type] || 'ModelLabProjectArtifactsResponse' + + # auth_names + auth_names = opts[:debug_auth_names] || [:apiKeyAuth, :appKeyAuth] + + new_options = opts.merge( + :operation => :list_model_lab_project_artifacts, + :header_params => header_params, + :query_params => query_params, + :form_params => form_params, + :body => post_body, + :auth_names => auth_names, + :return_type => return_type, + :api_version => "V2" + ) + + data, status_code, headers = @api_client.call_api(Net::HTTP::Get, local_var_path, new_options) + if @api_client.config.debugging + @api_client.config.logger.debug "API called: ModelLabAPIAPI#list_model_lab_project_artifacts\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}" + end + return data, status_code, headers + end + + # List Model Lab project facet keys. + # + # @see #list_model_lab_project_facet_keys_with_http_info + def list_model_lab_project_facet_keys(opts = {}) + data, _status_code, _headers = list_model_lab_project_facet_keys_with_http_info(opts) + data + end + + # List Model Lab project facet keys. + # + # List all available facet keys for filtering Model Lab projects. + # + # @param opts [Hash] the optional parameters + # @return [Array<(ModelLabFacetKeysResponse, Integer, Hash)>] ModelLabFacetKeysResponse data, response status code and response headers + def list_model_lab_project_facet_keys_with_http_info(opts = {}) + unstable_enabled = @api_client.config.unstable_operations["v2.list_model_lab_project_facet_keys".to_sym] + if unstable_enabled + @api_client.config.logger.warn format("Using unstable operation '%s'", "v2.list_model_lab_project_facet_keys") + else + raise DatadogAPIClient::APIError.new(message: format("Unstable operation '%s' is disabled", "v2.list_model_lab_project_facet_keys")) + end + + if @api_client.config.debugging + @api_client.config.logger.debug 'Calling API: ModelLabAPIAPI.list_model_lab_project_facet_keys ...' + end + # resource path + local_var_path = '/api/v2/model-lab-api/project-facet-keys' + + # query parameters + query_params = opts[:query_params] || {} + + # header parameters + header_params = opts[:header_params] || {} + # HTTP header 'Accept' (if needed) + header_params['Accept'] = @api_client.select_header_accept(['application/json']) + + # form parameters + form_params = opts[:form_params] || {} + + # http body (model) + post_body = opts[:debug_body] + + # return_type + return_type = opts[:debug_return_type] || 'ModelLabFacetKeysResponse' + + # auth_names + auth_names = opts[:debug_auth_names] || [:apiKeyAuth, :appKeyAuth] + + new_options = opts.merge( + :operation => :list_model_lab_project_facet_keys, + :header_params => header_params, + :query_params => query_params, + :form_params => form_params, + :body => post_body, + :auth_names => auth_names, + :return_type => return_type, + :api_version => "V2" + ) + + data, status_code, headers = @api_client.call_api(Net::HTTP::Get, local_var_path, new_options) + if @api_client.config.debugging + @api_client.config.logger.debug "API called: ModelLabAPIAPI#list_model_lab_project_facet_keys\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}" + end + return data, status_code, headers + end + + # List Model Lab project facet values. + # + # @see #list_model_lab_project_facet_values_with_http_info + def list_model_lab_project_facet_values(facet_type, facet_name, opts = {}) + data, _status_code, _headers = list_model_lab_project_facet_values_with_http_info(facet_type, facet_name, opts) + data + end + + # List Model Lab project facet values. + # + # List available facet values for a specific project facet key. + # + # @param facet_type [ModelLabProjectFacetType] Facet type. Valid values: tag. + # @param facet_name [String] Facet name. + # @param opts [Hash] the optional parameters + # @return [Array<(ModelLabFacetValuesResponse, Integer, Hash)>] ModelLabFacetValuesResponse data, response status code and response headers + def list_model_lab_project_facet_values_with_http_info(facet_type, facet_name, opts = {}) + unstable_enabled = @api_client.config.unstable_operations["v2.list_model_lab_project_facet_values".to_sym] + if unstable_enabled + @api_client.config.logger.warn format("Using unstable operation '%s'", "v2.list_model_lab_project_facet_values") + else + raise DatadogAPIClient::APIError.new(message: format("Unstable operation '%s' is disabled", "v2.list_model_lab_project_facet_values")) + end + + if @api_client.config.debugging + @api_client.config.logger.debug 'Calling API: ModelLabAPIAPI.list_model_lab_project_facet_values ...' + end + # verify the required parameter 'facet_type' is set + if @api_client.config.client_side_validation && facet_type.nil? + fail ArgumentError, "Missing the required parameter 'facet_type' when calling ModelLabAPIAPI.list_model_lab_project_facet_values" + end + # verify enum value + allowable_values = ['tag'] + if @api_client.config.client_side_validation && !allowable_values.include?(facet_type) + fail ArgumentError, "invalid value for \"facet_type\", must be one of #{allowable_values}" + end + # verify the required parameter 'facet_name' is set + if @api_client.config.client_side_validation && facet_name.nil? + fail ArgumentError, "Missing the required parameter 'facet_name' when calling ModelLabAPIAPI.list_model_lab_project_facet_values" + end + # resource path + local_var_path = '/api/v2/model-lab-api/project-facet-values' + + # query parameters + query_params = opts[:query_params] || {} + query_params[:'facet_type'] = facet_type + query_params[:'facet_name'] = facet_name + + # header parameters + header_params = opts[:header_params] || {} + # HTTP header 'Accept' (if needed) + header_params['Accept'] = @api_client.select_header_accept(['application/json']) + + # form parameters + form_params = opts[:form_params] || {} + + # http body (model) + post_body = opts[:debug_body] + + # return_type + return_type = opts[:debug_return_type] || 'ModelLabFacetValuesResponse' + + # auth_names + auth_names = opts[:debug_auth_names] || [:apiKeyAuth, :appKeyAuth] + + new_options = opts.merge( + :operation => :list_model_lab_project_facet_values, + :header_params => header_params, + :query_params => query_params, + :form_params => form_params, + :body => post_body, + :auth_names => auth_names, + :return_type => return_type, + :api_version => "V2" + ) + + data, status_code, headers = @api_client.call_api(Net::HTTP::Get, local_var_path, new_options) + if @api_client.config.debugging + @api_client.config.logger.debug "API called: ModelLabAPIAPI#list_model_lab_project_facet_values\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}" + end + return data, status_code, headers + end + + # List Model Lab projects. + # + # @see #list_model_lab_projects_with_http_info + def list_model_lab_projects(opts = {}) + data, _status_code, _headers = list_model_lab_projects_with_http_info(opts) + data + end + + # List Model Lab projects. + # + # List all Model Lab projects for the current organization. + # + # @param opts [Hash] the optional parameters + # @option opts [String] :filter Text search filter for project name or description. + # @option opts [UUID] :filter_owner_id Filter by owner UUID. + # @option opts [String] :filter_tags Filter by tags. Format: key:value,key2:value2. + # @option opts [String] :sort Sort field. Valid values: name, created_at, updated_at. Prefix with '-' for descending order (e.g., -updated_at). + # @option opts [Integer] :page_size Number of items per page. Maximum is 100. + # @option opts [Integer] :page_number Page number (1-indexed). + # @return [Array<(ModelLabProjectsResponse, Integer, Hash)>] ModelLabProjectsResponse data, response status code and response headers + def list_model_lab_projects_with_http_info(opts = {}) + unstable_enabled = @api_client.config.unstable_operations["v2.list_model_lab_projects".to_sym] + if unstable_enabled + @api_client.config.logger.warn format("Using unstable operation '%s'", "v2.list_model_lab_projects") + else + raise DatadogAPIClient::APIError.new(message: format("Unstable operation '%s' is disabled", "v2.list_model_lab_projects")) + end + + if @api_client.config.debugging + @api_client.config.logger.debug 'Calling API: ModelLabAPIAPI.list_model_lab_projects ...' + end + if @api_client.config.client_side_validation && !opts[:'page_size'].nil? && opts[:'page_size'] > 100 + fail ArgumentError, 'invalid value for "opts[:"page_size"]" when calling ModelLabAPIAPI.list_model_lab_projects, must be smaller than or equal to 100.' + end + # resource path + local_var_path = '/api/v2/model-lab-api/projects' + + # query parameters + query_params = opts[:query_params] || {} + query_params[:'filter'] = opts[:'filter'] if !opts[:'filter'].nil? + query_params[:'filter[owner_id]'] = opts[:'filter_owner_id'] if !opts[:'filter_owner_id'].nil? + query_params[:'filter[tags]'] = opts[:'filter_tags'] if !opts[:'filter_tags'].nil? + query_params[:'sort'] = opts[:'sort'] if !opts[:'sort'].nil? + query_params[:'page[size]'] = opts[:'page_size'] if !opts[:'page_size'].nil? + query_params[:'page[number]'] = opts[:'page_number'] if !opts[:'page_number'].nil? + + # header parameters + header_params = opts[:header_params] || {} + # HTTP header 'Accept' (if needed) + header_params['Accept'] = @api_client.select_header_accept(['application/json']) + + # form parameters + form_params = opts[:form_params] || {} + + # http body (model) + post_body = opts[:debug_body] + + # return_type + return_type = opts[:debug_return_type] || 'ModelLabProjectsResponse' + + # auth_names + auth_names = opts[:debug_auth_names] || [:apiKeyAuth, :appKeyAuth] + + new_options = opts.merge( + :operation => :list_model_lab_projects, + :header_params => header_params, + :query_params => query_params, + :form_params => form_params, + :body => post_body, + :auth_names => auth_names, + :return_type => return_type, + :api_version => "V2" + ) + + data, status_code, headers = @api_client.call_api(Net::HTTP::Get, local_var_path, new_options) + if @api_client.config.debugging + @api_client.config.logger.debug "API called: ModelLabAPIAPI#list_model_lab_projects\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}" + end + return data, status_code, headers + end + + # List Model Lab run artifacts. + # + # @see #list_model_lab_run_artifacts_with_http_info + def list_model_lab_run_artifacts(run_id, opts = {}) + data, _status_code, _headers = list_model_lab_run_artifacts_with_http_info(run_id, opts) + data + end + + # List Model Lab run artifacts. + # + # List artifact files for a specific Model Lab run. + # + # @param run_id [Integer] The ID of the Model Lab run. + # @param opts [Hash] the optional parameters + # @option opts [String] :path Optional subdirectory path within the run's artifacts. + # @return [Array<(ModelLabRunArtifactsResponse, Integer, Hash)>] ModelLabRunArtifactsResponse data, response status code and response headers + def list_model_lab_run_artifacts_with_http_info(run_id, opts = {}) + unstable_enabled = @api_client.config.unstable_operations["v2.list_model_lab_run_artifacts".to_sym] + if unstable_enabled + @api_client.config.logger.warn format("Using unstable operation '%s'", "v2.list_model_lab_run_artifacts") + else + raise DatadogAPIClient::APIError.new(message: format("Unstable operation '%s' is disabled", "v2.list_model_lab_run_artifacts")) + end + + if @api_client.config.debugging + @api_client.config.logger.debug 'Calling API: ModelLabAPIAPI.list_model_lab_run_artifacts ...' + end + # verify the required parameter 'run_id' is set + if @api_client.config.client_side_validation && run_id.nil? + fail ArgumentError, "Missing the required parameter 'run_id' when calling ModelLabAPIAPI.list_model_lab_run_artifacts" + end + # resource path + local_var_path = '/api/v2/model-lab-api/runs/{run_id}/artifacts'.sub('{run_id}', CGI.escape(run_id.to_s).gsub('%2F', '/')) + + # query parameters + query_params = opts[:query_params] || {} + query_params[:'path'] = opts[:'path'] if !opts[:'path'].nil? + + # header parameters + header_params = opts[:header_params] || {} + # HTTP header 'Accept' (if needed) + header_params['Accept'] = @api_client.select_header_accept(['application/json']) + + # form parameters + form_params = opts[:form_params] || {} + + # http body (model) + post_body = opts[:debug_body] + + # return_type + return_type = opts[:debug_return_type] || 'ModelLabRunArtifactsResponse' + + # auth_names + auth_names = opts[:debug_auth_names] || [:apiKeyAuth, :appKeyAuth] + + new_options = opts.merge( + :operation => :list_model_lab_run_artifacts, + :header_params => header_params, + :query_params => query_params, + :form_params => form_params, + :body => post_body, + :auth_names => auth_names, + :return_type => return_type, + :api_version => "V2" + ) + + data, status_code, headers = @api_client.call_api(Net::HTTP::Get, local_var_path, new_options) + if @api_client.config.debugging + @api_client.config.logger.debug "API called: ModelLabAPIAPI#list_model_lab_run_artifacts\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}" + end + return data, status_code, headers + end + + # List Model Lab run facet keys. + # + # @see #list_model_lab_run_facet_keys_with_http_info + def list_model_lab_run_facet_keys(filter_project_id, opts = {}) + data, _status_code, _headers = list_model_lab_run_facet_keys_with_http_info(filter_project_id, opts) + data + end + + # List Model Lab run facet keys. + # + # List all available facet keys for filtering Model Lab runs. + # + # @param filter_project_id [Integer] Filter by project ID. + # @param opts [Hash] the optional parameters + # @return [Array<(ModelLabFacetKeysResponse, Integer, Hash)>] ModelLabFacetKeysResponse data, response status code and response headers + def list_model_lab_run_facet_keys_with_http_info(filter_project_id, opts = {}) + unstable_enabled = @api_client.config.unstable_operations["v2.list_model_lab_run_facet_keys".to_sym] + if unstable_enabled + @api_client.config.logger.warn format("Using unstable operation '%s'", "v2.list_model_lab_run_facet_keys") + else + raise DatadogAPIClient::APIError.new(message: format("Unstable operation '%s' is disabled", "v2.list_model_lab_run_facet_keys")) + end + + if @api_client.config.debugging + @api_client.config.logger.debug 'Calling API: ModelLabAPIAPI.list_model_lab_run_facet_keys ...' + end + # verify the required parameter 'filter_project_id' is set + if @api_client.config.client_side_validation && filter_project_id.nil? + fail ArgumentError, "Missing the required parameter 'filter_project_id' when calling ModelLabAPIAPI.list_model_lab_run_facet_keys" + end + # resource path + local_var_path = '/api/v2/model-lab-api/facet-keys' + + # query parameters + query_params = opts[:query_params] || {} + query_params[:'filter[project_id]'] = filter_project_id + + # header parameters + header_params = opts[:header_params] || {} + # HTTP header 'Accept' (if needed) + header_params['Accept'] = @api_client.select_header_accept(['application/json']) + + # form parameters + form_params = opts[:form_params] || {} + + # http body (model) + post_body = opts[:debug_body] + + # return_type + return_type = opts[:debug_return_type] || 'ModelLabFacetKeysResponse' + + # auth_names + auth_names = opts[:debug_auth_names] || [:apiKeyAuth, :appKeyAuth] + + new_options = opts.merge( + :operation => :list_model_lab_run_facet_keys, + :header_params => header_params, + :query_params => query_params, + :form_params => form_params, + :body => post_body, + :auth_names => auth_names, + :return_type => return_type, + :api_version => "V2" + ) + + data, status_code, headers = @api_client.call_api(Net::HTTP::Get, local_var_path, new_options) + if @api_client.config.debugging + @api_client.config.logger.debug "API called: ModelLabAPIAPI#list_model_lab_run_facet_keys\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}" + end + return data, status_code, headers + end + + # List Model Lab run facet values. + # + # @see #list_model_lab_run_facet_values_with_http_info + def list_model_lab_run_facet_values(filter_project_id, facet_type, facet_name, opts = {}) + data, _status_code, _headers = list_model_lab_run_facet_values_with_http_info(filter_project_id, facet_type, facet_name, opts) + data + end + + # List Model Lab run facet values. + # + # List available facet values for a specific run facet key. + # + # @param filter_project_id [Integer] Filter by project ID. + # @param facet_type [ModelLabFacetType] Facet type. Valid values: parameter, attribute, tag, metric. + # @param facet_name [String] Facet name. + # @param opts [Hash] the optional parameters + # @return [Array<(ModelLabFacetValuesResponse, Integer, Hash)>] ModelLabFacetValuesResponse data, response status code and response headers + def list_model_lab_run_facet_values_with_http_info(filter_project_id, facet_type, facet_name, opts = {}) + unstable_enabled = @api_client.config.unstable_operations["v2.list_model_lab_run_facet_values".to_sym] + if unstable_enabled + @api_client.config.logger.warn format("Using unstable operation '%s'", "v2.list_model_lab_run_facet_values") + else + raise DatadogAPIClient::APIError.new(message: format("Unstable operation '%s' is disabled", "v2.list_model_lab_run_facet_values")) + end + + if @api_client.config.debugging + @api_client.config.logger.debug 'Calling API: ModelLabAPIAPI.list_model_lab_run_facet_values ...' + end + # verify the required parameter 'filter_project_id' is set + if @api_client.config.client_side_validation && filter_project_id.nil? + fail ArgumentError, "Missing the required parameter 'filter_project_id' when calling ModelLabAPIAPI.list_model_lab_run_facet_values" + end + # verify the required parameter 'facet_type' is set + if @api_client.config.client_side_validation && facet_type.nil? + fail ArgumentError, "Missing the required parameter 'facet_type' when calling ModelLabAPIAPI.list_model_lab_run_facet_values" + end + # verify enum value + allowable_values = ['parameter', 'attribute', 'tag', 'metric'] + if @api_client.config.client_side_validation && !allowable_values.include?(facet_type) + fail ArgumentError, "invalid value for \"facet_type\", must be one of #{allowable_values}" + end + # verify the required parameter 'facet_name' is set + if @api_client.config.client_side_validation && facet_name.nil? + fail ArgumentError, "Missing the required parameter 'facet_name' when calling ModelLabAPIAPI.list_model_lab_run_facet_values" + end + # resource path + local_var_path = '/api/v2/model-lab-api/facet-values' + + # query parameters + query_params = opts[:query_params] || {} + query_params[:'filter[project_id]'] = filter_project_id + query_params[:'facet_type'] = facet_type + query_params[:'facet_name'] = facet_name + + # header parameters + header_params = opts[:header_params] || {} + # HTTP header 'Accept' (if needed) + header_params['Accept'] = @api_client.select_header_accept(['application/json']) + + # form parameters + form_params = opts[:form_params] || {} + + # http body (model) + post_body = opts[:debug_body] + + # return_type + return_type = opts[:debug_return_type] || 'ModelLabFacetValuesResponse' + + # auth_names + auth_names = opts[:debug_auth_names] || [:apiKeyAuth, :appKeyAuth] + + new_options = opts.merge( + :operation => :list_model_lab_run_facet_values, + :header_params => header_params, + :query_params => query_params, + :form_params => form_params, + :body => post_body, + :auth_names => auth_names, + :return_type => return_type, + :api_version => "V2" + ) + + data, status_code, headers = @api_client.call_api(Net::HTTP::Get, local_var_path, new_options) + if @api_client.config.debugging + @api_client.config.logger.debug "API called: ModelLabAPIAPI#list_model_lab_run_facet_values\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}" + end + return data, status_code, headers + end + + # List Model Lab runs. + # + # @see #list_model_lab_runs_with_http_info + def list_model_lab_runs(opts = {}) + data, _status_code, _headers = list_model_lab_runs_with_http_info(opts) + data + end + + # List Model Lab runs. + # + # List all Model Lab runs for the current organization. + # + # @param opts [Hash] the optional parameters + # @option opts [String] :filter_id Filter by run ID(s). Comma-separated list for multiple IDs. + # @option opts [String] :filter Text search filter for run name or description. + # @option opts [String] :filter_owner_id Filter by owner UUID. + # @option opts [ModelLabRunStatus] :filter_status Filter by run status. Valid values: pending, running, completed, failed, killed, unresponsive, paused. + # @option opts [Integer] :filter_project_id Filter by project ID. + # @option opts [String] :filter_tags Filter by tags. Format: key:value,key2:value2. + # @option opts [String] :filter_params Filter by params. Format: key:value,key2:>0.5,key3:true. + # @option opts [String] :filter_parent_run_id Filter by parent run ID. Use 'null' to return only root runs (runs with no parent). + # @option opts [Boolean] :pinned_first Sort pinned runs before non-pinned runs. Pinned runs are ordered by pin time descending. + # @option opts [Boolean] :include_pinned Include all runs pinned by the current user, regardless of other filters. + # @option opts [Boolean] :include_descendant_matches When true, also return runs whose descendants match the active filters. The descendant_match field in each result indicates whether the run was included via a descendant match. + # @option opts [String] :sort Sort field. Valid values: name, created_at, updated_at, duration. Prefix with '-' for descending order (e.g., -updated_at). + # @option opts [Integer] :page_size Number of items per page. Maximum is 100. + # @option opts [Integer] :page_number Page number (1-indexed). + # @return [Array<(ModelLabRunsResponse, Integer, Hash)>] ModelLabRunsResponse data, response status code and response headers + def list_model_lab_runs_with_http_info(opts = {}) + unstable_enabled = @api_client.config.unstable_operations["v2.list_model_lab_runs".to_sym] + if unstable_enabled + @api_client.config.logger.warn format("Using unstable operation '%s'", "v2.list_model_lab_runs") + else + raise DatadogAPIClient::APIError.new(message: format("Unstable operation '%s' is disabled", "v2.list_model_lab_runs")) + end + + if @api_client.config.debugging + @api_client.config.logger.debug 'Calling API: ModelLabAPIAPI.list_model_lab_runs ...' + end + allowable_values = ['pending', 'running', 'completed', 'failed', 'killed', 'unresponsive', 'paused'] + if @api_client.config.client_side_validation && opts[:'filter_status'] && !allowable_values.include?(opts[:'filter_status']) + fail ArgumentError, "invalid value for \"filter_status\", must be one of #{allowable_values}" + end + if @api_client.config.client_side_validation && !opts[:'page_size'].nil? && opts[:'page_size'] > 100 + fail ArgumentError, 'invalid value for "opts[:"page_size"]" when calling ModelLabAPIAPI.list_model_lab_runs, must be smaller than or equal to 100.' + end + # resource path + local_var_path = '/api/v2/model-lab-api/runs' + + # query parameters + query_params = opts[:query_params] || {} + query_params[:'filter[id]'] = opts[:'filter_id'] if !opts[:'filter_id'].nil? + query_params[:'filter'] = opts[:'filter'] if !opts[:'filter'].nil? + query_params[:'filter[owner_id]'] = opts[:'filter_owner_id'] if !opts[:'filter_owner_id'].nil? + query_params[:'filter[status]'] = opts[:'filter_status'] if !opts[:'filter_status'].nil? + query_params[:'filter[project_id]'] = opts[:'filter_project_id'] if !opts[:'filter_project_id'].nil? + query_params[:'filter[tags]'] = opts[:'filter_tags'] if !opts[:'filter_tags'].nil? + query_params[:'filter[params]'] = opts[:'filter_params'] if !opts[:'filter_params'].nil? + query_params[:'filter[parent_run_id]'] = opts[:'filter_parent_run_id'] if !opts[:'filter_parent_run_id'].nil? + query_params[:'pinned_first'] = opts[:'pinned_first'] if !opts[:'pinned_first'].nil? + query_params[:'include_pinned'] = opts[:'include_pinned'] if !opts[:'include_pinned'].nil? + query_params[:'include_descendant_matches'] = opts[:'include_descendant_matches'] if !opts[:'include_descendant_matches'].nil? + query_params[:'sort'] = opts[:'sort'] if !opts[:'sort'].nil? + query_params[:'page[size]'] = opts[:'page_size'] if !opts[:'page_size'].nil? + query_params[:'page[number]'] = opts[:'page_number'] if !opts[:'page_number'].nil? + + # header parameters + header_params = opts[:header_params] || {} + # HTTP header 'Accept' (if needed) + header_params['Accept'] = @api_client.select_header_accept(['application/json']) + + # form parameters + form_params = opts[:form_params] || {} + + # http body (model) + post_body = opts[:debug_body] + + # return_type + return_type = opts[:debug_return_type] || 'ModelLabRunsResponse' + + # auth_names + auth_names = opts[:debug_auth_names] || [:apiKeyAuth, :appKeyAuth] + + new_options = opts.merge( + :operation => :list_model_lab_runs, + :header_params => header_params, + :query_params => query_params, + :form_params => form_params, + :body => post_body, + :auth_names => auth_names, + :return_type => return_type, + :api_version => "V2" + ) + + data, status_code, headers = @api_client.call_api(Net::HTTP::Get, local_var_path, new_options) + if @api_client.config.debugging + @api_client.config.logger.debug "API called: ModelLabAPIAPI#list_model_lab_runs\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}" + end + return data, status_code, headers + end + + # Pin a Model Lab run. + # + # @see #pin_model_lab_run_with_http_info + def pin_model_lab_run(run_id, opts = {}) + pin_model_lab_run_with_http_info(run_id, opts) + nil + end + + # Pin a Model Lab run. + # + # Pin a Model Lab run for the current user. + # + # @param run_id [Integer] The ID of the Model Lab run. + # @param opts [Hash] the optional parameters + # @return [Array<(nil, Integer, Hash)>] nil, response status code and response headers + def pin_model_lab_run_with_http_info(run_id, opts = {}) + unstable_enabled = @api_client.config.unstable_operations["v2.pin_model_lab_run".to_sym] + if unstable_enabled + @api_client.config.logger.warn format("Using unstable operation '%s'", "v2.pin_model_lab_run") + else + raise DatadogAPIClient::APIError.new(message: format("Unstable operation '%s' is disabled", "v2.pin_model_lab_run")) + end + + if @api_client.config.debugging + @api_client.config.logger.debug 'Calling API: ModelLabAPIAPI.pin_model_lab_run ...' + end + # verify the required parameter 'run_id' is set + if @api_client.config.client_side_validation && run_id.nil? + fail ArgumentError, "Missing the required parameter 'run_id' when calling ModelLabAPIAPI.pin_model_lab_run" + end + # resource path + local_var_path = '/api/v2/model-lab-api/runs/{run_id}/pin'.sub('{run_id}', CGI.escape(run_id.to_s).gsub('%2F', '/')) + + # query parameters + query_params = opts[:query_params] || {} + + # header parameters + header_params = opts[:header_params] || {} + # HTTP header 'Accept' (if needed) + header_params['Accept'] = @api_client.select_header_accept(['*/*']) + + # form parameters + form_params = opts[:form_params] || {} + + # http body (model) + post_body = opts[:debug_body] + + # return_type + return_type = opts[:debug_return_type] + + # auth_names + auth_names = opts[:debug_auth_names] || [:apiKeyAuth, :appKeyAuth] + + new_options = opts.merge( + :operation => :pin_model_lab_run, + :header_params => header_params, + :query_params => query_params, + :form_params => form_params, + :body => post_body, + :auth_names => auth_names, + :return_type => return_type, + :api_version => "V2" + ) + + data, status_code, headers = @api_client.call_api(Net::HTTP::Post, local_var_path, new_options) + if @api_client.config.debugging + @api_client.config.logger.debug "API called: ModelLabAPIAPI#pin_model_lab_run\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}" + end + return data, status_code, headers + end + + # Star a Model Lab project. + # + # @see #star_model_lab_project_with_http_info + def star_model_lab_project(project_id, opts = {}) + star_model_lab_project_with_http_info(project_id, opts) + nil + end + + # Star a Model Lab project. + # + # Star a Model Lab project for the current user. + # + # @param project_id [Integer] The ID of the Model Lab project. + # @param opts [Hash] the optional parameters + # @return [Array<(nil, Integer, Hash)>] nil, response status code and response headers + def star_model_lab_project_with_http_info(project_id, opts = {}) + unstable_enabled = @api_client.config.unstable_operations["v2.star_model_lab_project".to_sym] + if unstable_enabled + @api_client.config.logger.warn format("Using unstable operation '%s'", "v2.star_model_lab_project") + else + raise DatadogAPIClient::APIError.new(message: format("Unstable operation '%s' is disabled", "v2.star_model_lab_project")) + end + + if @api_client.config.debugging + @api_client.config.logger.debug 'Calling API: ModelLabAPIAPI.star_model_lab_project ...' + end + # verify the required parameter 'project_id' is set + if @api_client.config.client_side_validation && project_id.nil? + fail ArgumentError, "Missing the required parameter 'project_id' when calling ModelLabAPIAPI.star_model_lab_project" + end + # resource path + local_var_path = '/api/v2/model-lab-api/projects/{project_id}/star'.sub('{project_id}', CGI.escape(project_id.to_s).gsub('%2F', '/')) + + # query parameters + query_params = opts[:query_params] || {} + + # header parameters + header_params = opts[:header_params] || {} + # HTTP header 'Accept' (if needed) + header_params['Accept'] = @api_client.select_header_accept(['*/*']) + + # form parameters + form_params = opts[:form_params] || {} + + # http body (model) + post_body = opts[:debug_body] + + # return_type + return_type = opts[:debug_return_type] + + # auth_names + auth_names = opts[:debug_auth_names] || [:apiKeyAuth, :appKeyAuth] + + new_options = opts.merge( + :operation => :star_model_lab_project, + :header_params => header_params, + :query_params => query_params, + :form_params => form_params, + :body => post_body, + :auth_names => auth_names, + :return_type => return_type, + :api_version => "V2" + ) + + data, status_code, headers = @api_client.call_api(Net::HTTP::Post, local_var_path, new_options) + if @api_client.config.debugging + @api_client.config.logger.debug "API called: ModelLabAPIAPI#star_model_lab_project\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}" + end + return data, status_code, headers + end + + # Unpin a Model Lab run. + # + # @see #unpin_model_lab_run_with_http_info + def unpin_model_lab_run(run_id, opts = {}) + unpin_model_lab_run_with_http_info(run_id, opts) + nil + end + + # Unpin a Model Lab run. + # + # Remove the pin from a Model Lab run for the current user. + # + # @param run_id [Integer] The ID of the Model Lab run. + # @param opts [Hash] the optional parameters + # @return [Array<(nil, Integer, Hash)>] nil, response status code and response headers + def unpin_model_lab_run_with_http_info(run_id, opts = {}) + unstable_enabled = @api_client.config.unstable_operations["v2.unpin_model_lab_run".to_sym] + if unstable_enabled + @api_client.config.logger.warn format("Using unstable operation '%s'", "v2.unpin_model_lab_run") + else + raise DatadogAPIClient::APIError.new(message: format("Unstable operation '%s' is disabled", "v2.unpin_model_lab_run")) + end + + if @api_client.config.debugging + @api_client.config.logger.debug 'Calling API: ModelLabAPIAPI.unpin_model_lab_run ...' + end + # verify the required parameter 'run_id' is set + if @api_client.config.client_side_validation && run_id.nil? + fail ArgumentError, "Missing the required parameter 'run_id' when calling ModelLabAPIAPI.unpin_model_lab_run" + end + # resource path + local_var_path = '/api/v2/model-lab-api/runs/{run_id}/pin'.sub('{run_id}', CGI.escape(run_id.to_s).gsub('%2F', '/')) + + # query parameters + query_params = opts[:query_params] || {} + + # header parameters + header_params = opts[:header_params] || {} + # HTTP header 'Accept' (if needed) + header_params['Accept'] = @api_client.select_header_accept(['*/*']) + + # form parameters + form_params = opts[:form_params] || {} + + # http body (model) + post_body = opts[:debug_body] + + # return_type + return_type = opts[:debug_return_type] + + # auth_names + auth_names = opts[:debug_auth_names] || [:apiKeyAuth, :appKeyAuth] + + new_options = opts.merge( + :operation => :unpin_model_lab_run, + :header_params => header_params, + :query_params => query_params, + :form_params => form_params, + :body => post_body, + :auth_names => auth_names, + :return_type => return_type, + :api_version => "V2" + ) + + data, status_code, headers = @api_client.call_api(Net::HTTP::Delete, local_var_path, new_options) + if @api_client.config.debugging + @api_client.config.logger.debug "API called: ModelLabAPIAPI#unpin_model_lab_run\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}" + end + return data, status_code, headers + end + + # Remove star from a Model Lab project. + # + # @see #unstar_model_lab_project_with_http_info + def unstar_model_lab_project(project_id, opts = {}) + unstar_model_lab_project_with_http_info(project_id, opts) + nil + end + + # Remove star from a Model Lab project. + # + # Remove the star from a Model Lab project for the current user. + # + # @param project_id [Integer] The ID of the Model Lab project. + # @param opts [Hash] the optional parameters + # @return [Array<(nil, Integer, Hash)>] nil, response status code and response headers + def unstar_model_lab_project_with_http_info(project_id, opts = {}) + unstable_enabled = @api_client.config.unstable_operations["v2.unstar_model_lab_project".to_sym] + if unstable_enabled + @api_client.config.logger.warn format("Using unstable operation '%s'", "v2.unstar_model_lab_project") + else + raise DatadogAPIClient::APIError.new(message: format("Unstable operation '%s' is disabled", "v2.unstar_model_lab_project")) + end + + if @api_client.config.debugging + @api_client.config.logger.debug 'Calling API: ModelLabAPIAPI.unstar_model_lab_project ...' + end + # verify the required parameter 'project_id' is set + if @api_client.config.client_side_validation && project_id.nil? + fail ArgumentError, "Missing the required parameter 'project_id' when calling ModelLabAPIAPI.unstar_model_lab_project" + end + # resource path + local_var_path = '/api/v2/model-lab-api/projects/{project_id}/star'.sub('{project_id}', CGI.escape(project_id.to_s).gsub('%2F', '/')) + + # query parameters + query_params = opts[:query_params] || {} + + # header parameters + header_params = opts[:header_params] || {} + # HTTP header 'Accept' (if needed) + header_params['Accept'] = @api_client.select_header_accept(['*/*']) + + # form parameters + form_params = opts[:form_params] || {} + + # http body (model) + post_body = opts[:debug_body] + + # return_type + return_type = opts[:debug_return_type] + + # auth_names + auth_names = opts[:debug_auth_names] || [:apiKeyAuth, :appKeyAuth] + + new_options = opts.merge( + :operation => :unstar_model_lab_project, + :header_params => header_params, + :query_params => query_params, + :form_params => form_params, + :body => post_body, + :auth_names => auth_names, + :return_type => return_type, + :api_version => "V2" + ) + + data, status_code, headers = @api_client.call_api(Net::HTTP::Delete, local_var_path, new_options) + if @api_client.config.debugging + @api_client.config.logger.debug "API called: ModelLabAPIAPI#unstar_model_lab_project\nData: #{data.inspect}\nStatus code: #{status_code}\nHeaders: #{headers}" + end + return data, status_code, headers + end + end +end diff --git a/lib/datadog_api_client/v2/models/model_lab_artifact_info.rb b/lib/datadog_api_client/v2/models/model_lab_artifact_info.rb new file mode 100644 index 000000000000..1b83ce8e09c6 --- /dev/null +++ b/lib/datadog_api_client/v2/models/model_lab_artifact_info.rb @@ -0,0 +1,183 @@ +=begin +#Datadog API V2 Collection + +#Collection of all Datadog Public endpoints. + +The version of the OpenAPI document: 1.0 +Contact: support@datadoghq.com +Generated by: https://github.com/DataDog/datadog-api-client-ruby/tree/master/.generator + + Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + This product includes software developed at Datadog (https://www.datadoghq.com/). + Copyright 2020-Present Datadog, Inc. + +=end + +require 'date' +require 'time' + +module DatadogAPIClient::V2 + # Information about a project-level artifact file. + class ModelLabArtifactInfo + include BaseGenericModel + + # The full artifact path relative to the project's artifact root. + attr_reader :artifact_path + + # The date and time the artifact was created. + attr_reader :created_at + + # The size of the file in bytes. + attr_accessor :file_size + + # The filename of the artifact. + attr_reader :filename + + attr_accessor :additional_properties + + # Attribute mapping from ruby-style variable name to JSON key. + # @!visibility private + def self.attribute_map + { + :'artifact_path' => :'artifact_path', + :'created_at' => :'created_at', + :'file_size' => :'file_size', + :'filename' => :'filename' + } + end + + # Attribute type mapping. + # @!visibility private + def self.openapi_types + { + :'artifact_path' => :'String', + :'created_at' => :'Time', + :'file_size' => :'Integer', + :'filename' => :'String' + } + end + + # List of attributes with nullable: true + # @!visibility private + def self.openapi_nullable + Set.new([ + :'file_size', + ]) + end + + # Initializes the object + # @param attributes [Hash] Model attributes in the form of hash + # @!visibility private + def initialize(attributes = {}) + if (!attributes.is_a?(Hash)) + fail ArgumentError, "The input argument (attributes) must be a hash in `DatadogAPIClient::V2::ModelLabArtifactInfo` initialize method" + end + + self.additional_properties = {} + # check to see if the attribute exists and convert string to symbol for hash key + attributes = attributes.each_with_object({}) { |(k, v), h| + if (!self.class.attribute_map.key?(k.to_sym)) + self.additional_properties[k.to_sym] = v + else + h[k.to_sym] = v + end + } + + if attributes.key?(:'artifact_path') + self.artifact_path = attributes[:'artifact_path'] + end + + if attributes.key?(:'created_at') + self.created_at = attributes[:'created_at'] + end + + if attributes.key?(:'file_size') + self.file_size = attributes[:'file_size'] + end + + if attributes.key?(:'filename') + self.filename = attributes[:'filename'] + end + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + # @!visibility private + def valid? + return false if @artifact_path.nil? + return false if @created_at.nil? + return false if @filename.nil? + true + end + + # Custom attribute writer method with validation + # @param artifact_path [Object] Object to be assigned + # @!visibility private + def artifact_path=(artifact_path) + if artifact_path.nil? + fail ArgumentError, 'invalid value for "artifact_path", artifact_path cannot be nil.' + end + @artifact_path = artifact_path + end + + # Custom attribute writer method with validation + # @param created_at [Object] Object to be assigned + # @!visibility private + def created_at=(created_at) + if created_at.nil? + fail ArgumentError, 'invalid value for "created_at", created_at cannot be nil.' + end + @created_at = created_at + end + + # Custom attribute writer method with validation + # @param filename [Object] Object to be assigned + # @!visibility private + def filename=(filename) + if filename.nil? + fail ArgumentError, 'invalid value for "filename", filename cannot be nil.' + end + @filename = filename + end + + # Returns the object in the form of hash, with additionalProperties support. + # @return [Hash] Returns the object in the form of hash + # @!visibility private + def to_hash + hash = {} + self.class.attribute_map.each_pair do |attr, param| + value = self.send(attr) + if value.nil? + is_nullable = self.class.openapi_nullable.include?(attr) + next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}")) + end + + hash[param] = _to_hash(value) + end + self.additional_properties.each_pair do |attr, value| + hash[attr] = value + end + hash + end + + # Checks equality by comparing each attribute. + # @param o [Object] Object to be compared + # @!visibility private + def ==(o) + return true if self.equal?(o) + self.class == o.class && + artifact_path == o.artifact_path && + created_at == o.created_at && + file_size == o.file_size && + filename == o.filename && + additional_properties == o.additional_properties + end + + # Calculates hash code according to all attributes. + # @return [Integer] Hash code + # @!visibility private + def hash + [artifact_path, created_at, file_size, filename, additional_properties].hash + end + end +end diff --git a/lib/datadog_api_client/v2/models/model_lab_artifact_object_info.rb b/lib/datadog_api_client/v2/models/model_lab_artifact_object_info.rb new file mode 100644 index 000000000000..605e7ee9235e --- /dev/null +++ b/lib/datadog_api_client/v2/models/model_lab_artifact_object_info.rb @@ -0,0 +1,162 @@ +=begin +#Datadog API V2 Collection + +#Collection of all Datadog Public endpoints. + +The version of the OpenAPI document: 1.0 +Contact: support@datadoghq.com +Generated by: https://github.com/DataDog/datadog-api-client-ruby/tree/master/.generator + + Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + This product includes software developed at Datadog (https://www.datadoghq.com/). + Copyright 2020-Present Datadog, Inc. + +=end + +require 'date' +require 'time' + +module DatadogAPIClient::V2 + # Information about an artifact file or directory within a run. + class ModelLabArtifactObjectInfo + include BaseGenericModel + + # The size of the file in bytes. + attr_accessor :file_size + + # Whether this artifact entry is a directory. + attr_reader :is_dir + + # The path of the artifact relative to the run's artifact root. + attr_reader :path + + attr_accessor :additional_properties + + # Attribute mapping from ruby-style variable name to JSON key. + # @!visibility private + def self.attribute_map + { + :'file_size' => :'file_size', + :'is_dir' => :'is_dir', + :'path' => :'path' + } + end + + # Attribute type mapping. + # @!visibility private + def self.openapi_types + { + :'file_size' => :'Integer', + :'is_dir' => :'Boolean', + :'path' => :'String' + } + end + + # List of attributes with nullable: true + # @!visibility private + def self.openapi_nullable + Set.new([ + :'file_size', + ]) + end + + # Initializes the object + # @param attributes [Hash] Model attributes in the form of hash + # @!visibility private + def initialize(attributes = {}) + if (!attributes.is_a?(Hash)) + fail ArgumentError, "The input argument (attributes) must be a hash in `DatadogAPIClient::V2::ModelLabArtifactObjectInfo` initialize method" + end + + self.additional_properties = {} + # check to see if the attribute exists and convert string to symbol for hash key + attributes = attributes.each_with_object({}) { |(k, v), h| + if (!self.class.attribute_map.key?(k.to_sym)) + self.additional_properties[k.to_sym] = v + else + h[k.to_sym] = v + end + } + + if attributes.key?(:'file_size') + self.file_size = attributes[:'file_size'] + end + + if attributes.key?(:'is_dir') + self.is_dir = attributes[:'is_dir'] + end + + if attributes.key?(:'path') + self.path = attributes[:'path'] + end + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + # @!visibility private + def valid? + return false if @is_dir.nil? + return false if @path.nil? + true + end + + # Custom attribute writer method with validation + # @param is_dir [Object] Object to be assigned + # @!visibility private + def is_dir=(is_dir) + if is_dir.nil? + fail ArgumentError, 'invalid value for "is_dir", is_dir cannot be nil.' + end + @is_dir = is_dir + end + + # Custom attribute writer method with validation + # @param path [Object] Object to be assigned + # @!visibility private + def path=(path) + if path.nil? + fail ArgumentError, 'invalid value for "path", path cannot be nil.' + end + @path = path + end + + # Returns the object in the form of hash, with additionalProperties support. + # @return [Hash] Returns the object in the form of hash + # @!visibility private + def to_hash + hash = {} + self.class.attribute_map.each_pair do |attr, param| + value = self.send(attr) + if value.nil? + is_nullable = self.class.openapi_nullable.include?(attr) + next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}")) + end + + hash[param] = _to_hash(value) + end + self.additional_properties.each_pair do |attr, value| + hash[attr] = value + end + hash + end + + # Checks equality by comparing each attribute. + # @param o [Object] Object to be compared + # @!visibility private + def ==(o) + return true if self.equal?(o) + self.class == o.class && + file_size == o.file_size && + is_dir == o.is_dir && + path == o.path && + additional_properties == o.additional_properties + end + + # Calculates hash code according to all attributes. + # @return [Integer] Hash code + # @!visibility private + def hash + [file_size, is_dir, path, additional_properties].hash + end + end +end diff --git a/lib/datadog_api_client/v2/models/model_lab_facet_keys_attributes.rb b/lib/datadog_api_client/v2/models/model_lab_facet_keys_attributes.rb new file mode 100644 index 000000000000..9c56d34b9f41 --- /dev/null +++ b/lib/datadog_api_client/v2/models/model_lab_facet_keys_attributes.rb @@ -0,0 +1,168 @@ +=begin +#Datadog API V2 Collection + +#Collection of all Datadog Public endpoints. + +The version of the OpenAPI document: 1.0 +Contact: support@datadoghq.com +Generated by: https://github.com/DataDog/datadog-api-client-ruby/tree/master/.generator + + Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + This product includes software developed at Datadog (https://www.datadoghq.com/). + Copyright 2020-Present Datadog, Inc. + +=end + +require 'date' +require 'time' + +module DatadogAPIClient::V2 + # Available facet key names for filtering resources. + class ModelLabFacetKeysAttributes + include BaseGenericModel + + # The list of available metric facet keys. + attr_accessor :metrics + + # The list of available parameter facet keys. + attr_reader :parameters + + # The list of available tag facet keys. + attr_reader :tags + + attr_accessor :additional_properties + + # Attribute mapping from ruby-style variable name to JSON key. + # @!visibility private + def self.attribute_map + { + :'metrics' => :'metrics', + :'parameters' => :'parameters', + :'tags' => :'tags' + } + end + + # Attribute type mapping. + # @!visibility private + def self.openapi_types + { + :'metrics' => :'Array', + :'parameters' => :'Array', + :'tags' => :'Array' + } + end + + # List of attributes with nullable: true + # @!visibility private + def self.openapi_nullable + Set.new([ + :'metrics', + ]) + end + + # Initializes the object + # @param attributes [Hash] Model attributes in the form of hash + # @!visibility private + def initialize(attributes = {}) + if (!attributes.is_a?(Hash)) + fail ArgumentError, "The input argument (attributes) must be a hash in `DatadogAPIClient::V2::ModelLabFacetKeysAttributes` initialize method" + end + + self.additional_properties = {} + # check to see if the attribute exists and convert string to symbol for hash key + attributes = attributes.each_with_object({}) { |(k, v), h| + if (!self.class.attribute_map.key?(k.to_sym)) + self.additional_properties[k.to_sym] = v + else + h[k.to_sym] = v + end + } + + if attributes.key?(:'metrics') + if (value = attributes[:'metrics']).is_a?(Array) + self.metrics = value + end + end + + if attributes.key?(:'parameters') + if (value = attributes[:'parameters']).is_a?(Array) + self.parameters = value + end + end + + if attributes.key?(:'tags') + if (value = attributes[:'tags']).is_a?(Array) + self.tags = value + end + end + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + # @!visibility private + def valid? + return false if @parameters.nil? + return false if @tags.nil? + true + end + + # Custom attribute writer method with validation + # @param parameters [Object] Object to be assigned + # @!visibility private + def parameters=(parameters) + if parameters.nil? + fail ArgumentError, 'invalid value for "parameters", parameters cannot be nil.' + end + @parameters = parameters + end + + # Custom attribute writer method with validation + # @param tags [Object] Object to be assigned + # @!visibility private + def tags=(tags) + if tags.nil? + fail ArgumentError, 'invalid value for "tags", tags cannot be nil.' + end + @tags = tags + end + + # Returns the object in the form of hash, with additionalProperties support. + # @return [Hash] Returns the object in the form of hash + # @!visibility private + def to_hash + hash = {} + self.class.attribute_map.each_pair do |attr, param| + value = self.send(attr) + if value.nil? + is_nullable = self.class.openapi_nullable.include?(attr) + next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}")) + end + + hash[param] = _to_hash(value) + end + self.additional_properties.each_pair do |attr, value| + hash[attr] = value + end + hash + end + + # Checks equality by comparing each attribute. + # @param o [Object] Object to be compared + # @!visibility private + def ==(o) + return true if self.equal?(o) + self.class == o.class && + metrics == o.metrics && + parameters == o.parameters && + tags == o.tags && + additional_properties == o.additional_properties + end + + # Calculates hash code according to all attributes. + # @return [Integer] Hash code + # @!visibility private + def hash + [metrics, parameters, tags, additional_properties].hash + end + end +end diff --git a/lib/datadog_api_client/v2/models/model_lab_facet_keys_data.rb b/lib/datadog_api_client/v2/models/model_lab_facet_keys_data.rb new file mode 100644 index 000000000000..1629a5a0d0db --- /dev/null +++ b/lib/datadog_api_client/v2/models/model_lab_facet_keys_data.rb @@ -0,0 +1,165 @@ +=begin +#Datadog API V2 Collection + +#Collection of all Datadog Public endpoints. + +The version of the OpenAPI document: 1.0 +Contact: support@datadoghq.com +Generated by: https://github.com/DataDog/datadog-api-client-ruby/tree/master/.generator + + Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + This product includes software developed at Datadog (https://www.datadoghq.com/). + Copyright 2020-Present Datadog, Inc. + +=end + +require 'date' +require 'time' + +module DatadogAPIClient::V2 + # A facet keys JSON:API resource object. + class ModelLabFacetKeysData + include BaseGenericModel + + # Available facet key names for filtering resources. + attr_reader :attributes + + # The unique identifier of the facet keys resource. + attr_reader :id + + # The JSON:API type for a facet keys resource. + attr_reader :type + + attr_accessor :additional_properties + + # Attribute mapping from ruby-style variable name to JSON key. + # @!visibility private + def self.attribute_map + { + :'attributes' => :'attributes', + :'id' => :'id', + :'type' => :'type' + } + end + + # Attribute type mapping. + # @!visibility private + def self.openapi_types + { + :'attributes' => :'ModelLabFacetKeysAttributes', + :'id' => :'String', + :'type' => :'ModelLabFacetKeysType' + } + end + + # Initializes the object + # @param attributes [Hash] Model attributes in the form of hash + # @!visibility private + def initialize(attributes = {}) + if (!attributes.is_a?(Hash)) + fail ArgumentError, "The input argument (attributes) must be a hash in `DatadogAPIClient::V2::ModelLabFacetKeysData` initialize method" + end + + self.additional_properties = {} + # check to see if the attribute exists and convert string to symbol for hash key + attributes = attributes.each_with_object({}) { |(k, v), h| + if (!self.class.attribute_map.key?(k.to_sym)) + self.additional_properties[k.to_sym] = v + else + h[k.to_sym] = v + end + } + + if attributes.key?(:'attributes') + self.attributes = attributes[:'attributes'] + end + + if attributes.key?(:'id') + self.id = attributes[:'id'] + end + + if attributes.key?(:'type') + self.type = attributes[:'type'] + end + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + # @!visibility private + def valid? + return false if @attributes.nil? + return false if @id.nil? + return false if @type.nil? + true + end + + # Custom attribute writer method with validation + # @param attributes [Object] Object to be assigned + # @!visibility private + def attributes=(attributes) + if attributes.nil? + fail ArgumentError, 'invalid value for "attributes", attributes cannot be nil.' + end + @attributes = attributes + end + + # Custom attribute writer method with validation + # @param id [Object] Object to be assigned + # @!visibility private + def id=(id) + if id.nil? + fail ArgumentError, 'invalid value for "id", id cannot be nil.' + end + @id = id + end + + # Custom attribute writer method with validation + # @param type [Object] Object to be assigned + # @!visibility private + def type=(type) + if type.nil? + fail ArgumentError, 'invalid value for "type", type cannot be nil.' + end + @type = type + end + + # Returns the object in the form of hash, with additionalProperties support. + # @return [Hash] Returns the object in the form of hash + # @!visibility private + def to_hash + hash = {} + self.class.attribute_map.each_pair do |attr, param| + value = self.send(attr) + if value.nil? + is_nullable = self.class.openapi_nullable.include?(attr) + next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}")) + end + + hash[param] = _to_hash(value) + end + self.additional_properties.each_pair do |attr, value| + hash[attr] = value + end + hash + end + + # Checks equality by comparing each attribute. + # @param o [Object] Object to be compared + # @!visibility private + def ==(o) + return true if self.equal?(o) + self.class == o.class && + attributes == o.attributes && + id == o.id && + type == o.type && + additional_properties == o.additional_properties + end + + # Calculates hash code according to all attributes. + # @return [Integer] Hash code + # @!visibility private + def hash + [attributes, id, type, additional_properties].hash + end + end +end diff --git a/lib/datadog_api_client/v2/models/model_lab_facet_keys_response.rb b/lib/datadog_api_client/v2/models/model_lab_facet_keys_response.rb new file mode 100644 index 000000000000..d8261d240f1d --- /dev/null +++ b/lib/datadog_api_client/v2/models/model_lab_facet_keys_response.rb @@ -0,0 +1,123 @@ +=begin +#Datadog API V2 Collection + +#Collection of all Datadog Public endpoints. + +The version of the OpenAPI document: 1.0 +Contact: support@datadoghq.com +Generated by: https://github.com/DataDog/datadog-api-client-ruby/tree/master/.generator + + Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + This product includes software developed at Datadog (https://www.datadoghq.com/). + Copyright 2020-Present Datadog, Inc. + +=end + +require 'date' +require 'time' + +module DatadogAPIClient::V2 + # Response containing available facet keys. + class ModelLabFacetKeysResponse + include BaseGenericModel + + # A facet keys JSON:API resource object. + attr_reader :data + + attr_accessor :additional_properties + + # Attribute mapping from ruby-style variable name to JSON key. + # @!visibility private + def self.attribute_map + { + :'data' => :'data' + } + end + + # Attribute type mapping. + # @!visibility private + def self.openapi_types + { + :'data' => :'ModelLabFacetKeysData' + } + end + + # Initializes the object + # @param attributes [Hash] Model attributes in the form of hash + # @!visibility private + def initialize(attributes = {}) + if (!attributes.is_a?(Hash)) + fail ArgumentError, "The input argument (attributes) must be a hash in `DatadogAPIClient::V2::ModelLabFacetKeysResponse` initialize method" + end + + self.additional_properties = {} + # check to see if the attribute exists and convert string to symbol for hash key + attributes = attributes.each_with_object({}) { |(k, v), h| + if (!self.class.attribute_map.key?(k.to_sym)) + self.additional_properties[k.to_sym] = v + else + h[k.to_sym] = v + end + } + + if attributes.key?(:'data') + self.data = attributes[:'data'] + end + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + # @!visibility private + def valid? + return false if @data.nil? + true + end + + # Custom attribute writer method with validation + # @param data [Object] Object to be assigned + # @!visibility private + def data=(data) + if data.nil? + fail ArgumentError, 'invalid value for "data", data cannot be nil.' + end + @data = data + end + + # Returns the object in the form of hash, with additionalProperties support. + # @return [Hash] Returns the object in the form of hash + # @!visibility private + def to_hash + hash = {} + self.class.attribute_map.each_pair do |attr, param| + value = self.send(attr) + if value.nil? + is_nullable = self.class.openapi_nullable.include?(attr) + next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}")) + end + + hash[param] = _to_hash(value) + end + self.additional_properties.each_pair do |attr, value| + hash[attr] = value + end + hash + end + + # Checks equality by comparing each attribute. + # @param o [Object] Object to be compared + # @!visibility private + def ==(o) + return true if self.equal?(o) + self.class == o.class && + data == o.data && + additional_properties == o.additional_properties + end + + # Calculates hash code according to all attributes. + # @return [Integer] Hash code + # @!visibility private + def hash + [data, additional_properties].hash + end + end +end diff --git a/lib/datadog_api_client/v2/models/model_lab_facet_keys_type.rb b/lib/datadog_api_client/v2/models/model_lab_facet_keys_type.rb new file mode 100644 index 000000000000..073a3219e661 --- /dev/null +++ b/lib/datadog_api_client/v2/models/model_lab_facet_keys_type.rb @@ -0,0 +1,26 @@ +=begin +#Datadog API V2 Collection + +#Collection of all Datadog Public endpoints. + +The version of the OpenAPI document: 1.0 +Contact: support@datadoghq.com +Generated by: https://github.com/DataDog/datadog-api-client-ruby/tree/master/.generator + + Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + This product includes software developed at Datadog (https://www.datadoghq.com/). + Copyright 2020-Present Datadog, Inc. + +=end + +require 'date' +require 'time' + +module DatadogAPIClient::V2 + # The JSON:API type for a facet keys resource. + class ModelLabFacetKeysType + include BaseEnumModel + + FACET_KEYS = "facet_keys".freeze + end +end diff --git a/lib/datadog_api_client/v2/models/model_lab_facet_type.rb b/lib/datadog_api_client/v2/models/model_lab_facet_type.rb new file mode 100644 index 000000000000..f822b61ccf6b --- /dev/null +++ b/lib/datadog_api_client/v2/models/model_lab_facet_type.rb @@ -0,0 +1,29 @@ +=begin +#Datadog API V2 Collection + +#Collection of all Datadog Public endpoints. + +The version of the OpenAPI document: 1.0 +Contact: support@datadoghq.com +Generated by: https://github.com/DataDog/datadog-api-client-ruby/tree/master/.generator + + Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + This product includes software developed at Datadog (https://www.datadoghq.com/). + Copyright 2020-Present Datadog, Inc. + +=end + +require 'date' +require 'time' + +module DatadogAPIClient::V2 + # The type of facet for filtering Model Lab runs. + class ModelLabFacetType + include BaseEnumModel + + PARAMETER = "parameter".freeze + ATTRIBUTE = "attribute".freeze + TAG = "tag".freeze + METRIC = "metric".freeze + end +end diff --git a/lib/datadog_api_client/v2/models/model_lab_facet_values_attributes.rb b/lib/datadog_api_client/v2/models/model_lab_facet_values_attributes.rb new file mode 100644 index 000000000000..83d9c7cefa40 --- /dev/null +++ b/lib/datadog_api_client/v2/models/model_lab_facet_values_attributes.rb @@ -0,0 +1,189 @@ +=begin +#Datadog API V2 Collection + +#Collection of all Datadog Public endpoints. + +The version of the OpenAPI document: 1.0 +Contact: support@datadoghq.com +Generated by: https://github.com/DataDog/datadog-api-client-ruby/tree/master/.generator + + Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + This product includes software developed at Datadog (https://www.datadoghq.com/). + Copyright 2020-Present Datadog, Inc. + +=end + +require 'date' +require 'time' + +module DatadogAPIClient::V2 + # Available values for a specific facet key. + class ModelLabFacetValuesAttributes + include BaseGenericModel + + # The name of the facet. + attr_reader :facet_name + + # The type of the facet. + attr_reader :facet_type + + # The ranges for each metric statistic. + attr_accessor :metric_stat_ranges + + # The numeric range of values for a facet. + attr_accessor :numeric_range + + # The list of available string values for this facet. + attr_reader :values + + attr_accessor :additional_properties + + # Attribute mapping from ruby-style variable name to JSON key. + # @!visibility private + def self.attribute_map + { + :'facet_name' => :'facet_name', + :'facet_type' => :'facet_type', + :'metric_stat_ranges' => :'metric_stat_ranges', + :'numeric_range' => :'numeric_range', + :'values' => :'values' + } + end + + # Attribute type mapping. + # @!visibility private + def self.openapi_types + { + :'facet_name' => :'String', + :'facet_type' => :'String', + :'metric_stat_ranges' => :'Array', + :'numeric_range' => :'ModelLabNumericRange', + :'values' => :'Array' + } + end + + # Initializes the object + # @param attributes [Hash] Model attributes in the form of hash + # @!visibility private + def initialize(attributes = {}) + if (!attributes.is_a?(Hash)) + fail ArgumentError, "The input argument (attributes) must be a hash in `DatadogAPIClient::V2::ModelLabFacetValuesAttributes` initialize method" + end + + self.additional_properties = {} + # check to see if the attribute exists and convert string to symbol for hash key + attributes = attributes.each_with_object({}) { |(k, v), h| + if (!self.class.attribute_map.key?(k.to_sym)) + self.additional_properties[k.to_sym] = v + else + h[k.to_sym] = v + end + } + + if attributes.key?(:'facet_name') + self.facet_name = attributes[:'facet_name'] + end + + if attributes.key?(:'facet_type') + self.facet_type = attributes[:'facet_type'] + end + + if attributes.key?(:'metric_stat_ranges') + if (value = attributes[:'metric_stat_ranges']).is_a?(Array) + self.metric_stat_ranges = value + end + end + + if attributes.key?(:'numeric_range') + self.numeric_range = attributes[:'numeric_range'] + end + + if attributes.key?(:'values') + if (value = attributes[:'values']).is_a?(Array) + self.values = value + end + end + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + # @!visibility private + def valid? + return false if @facet_name.nil? + return false if @facet_type.nil? + return false if @values.nil? + true + end + + # Custom attribute writer method with validation + # @param facet_name [Object] Object to be assigned + # @!visibility private + def facet_name=(facet_name) + if facet_name.nil? + fail ArgumentError, 'invalid value for "facet_name", facet_name cannot be nil.' + end + @facet_name = facet_name + end + + # Custom attribute writer method with validation + # @param facet_type [Object] Object to be assigned + # @!visibility private + def facet_type=(facet_type) + if facet_type.nil? + fail ArgumentError, 'invalid value for "facet_type", facet_type cannot be nil.' + end + @facet_type = facet_type + end + + # Custom attribute writer method with validation + # @param values [Object] Object to be assigned + # @!visibility private + def values=(values) + if values.nil? + fail ArgumentError, 'invalid value for "values", values cannot be nil.' + end + @values = values + end + + # Returns the object in the form of hash, with additionalProperties support. + # @return [Hash] Returns the object in the form of hash + # @!visibility private + def to_hash + hash = {} + self.class.attribute_map.each_pair do |attr, param| + value = self.send(attr) + if value.nil? + is_nullable = self.class.openapi_nullable.include?(attr) + next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}")) + end + + hash[param] = _to_hash(value) + end + self.additional_properties.each_pair do |attr, value| + hash[attr] = value + end + hash + end + + # Checks equality by comparing each attribute. + # @param o [Object] Object to be compared + # @!visibility private + def ==(o) + return true if self.equal?(o) + self.class == o.class && + facet_name == o.facet_name && + facet_type == o.facet_type && + metric_stat_ranges == o.metric_stat_ranges && + numeric_range == o.numeric_range && + values == o.values && + additional_properties == o.additional_properties + end + + # Calculates hash code according to all attributes. + # @return [Integer] Hash code + # @!visibility private + def hash + [facet_name, facet_type, metric_stat_ranges, numeric_range, values, additional_properties].hash + end + end +end diff --git a/lib/datadog_api_client/v2/models/model_lab_facet_values_data.rb b/lib/datadog_api_client/v2/models/model_lab_facet_values_data.rb new file mode 100644 index 000000000000..7a9922633d00 --- /dev/null +++ b/lib/datadog_api_client/v2/models/model_lab_facet_values_data.rb @@ -0,0 +1,165 @@ +=begin +#Datadog API V2 Collection + +#Collection of all Datadog Public endpoints. + +The version of the OpenAPI document: 1.0 +Contact: support@datadoghq.com +Generated by: https://github.com/DataDog/datadog-api-client-ruby/tree/master/.generator + + Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + This product includes software developed at Datadog (https://www.datadoghq.com/). + Copyright 2020-Present Datadog, Inc. + +=end + +require 'date' +require 'time' + +module DatadogAPIClient::V2 + # A facet values JSON:API resource object. + class ModelLabFacetValuesData + include BaseGenericModel + + # Available values for a specific facet key. + attr_reader :attributes + + # The unique identifier of the facet values resource. + attr_reader :id + + # The JSON:API type for a facet values resource. + attr_reader :type + + attr_accessor :additional_properties + + # Attribute mapping from ruby-style variable name to JSON key. + # @!visibility private + def self.attribute_map + { + :'attributes' => :'attributes', + :'id' => :'id', + :'type' => :'type' + } + end + + # Attribute type mapping. + # @!visibility private + def self.openapi_types + { + :'attributes' => :'ModelLabFacetValuesAttributes', + :'id' => :'String', + :'type' => :'ModelLabFacetValuesType' + } + end + + # Initializes the object + # @param attributes [Hash] Model attributes in the form of hash + # @!visibility private + def initialize(attributes = {}) + if (!attributes.is_a?(Hash)) + fail ArgumentError, "The input argument (attributes) must be a hash in `DatadogAPIClient::V2::ModelLabFacetValuesData` initialize method" + end + + self.additional_properties = {} + # check to see if the attribute exists and convert string to symbol for hash key + attributes = attributes.each_with_object({}) { |(k, v), h| + if (!self.class.attribute_map.key?(k.to_sym)) + self.additional_properties[k.to_sym] = v + else + h[k.to_sym] = v + end + } + + if attributes.key?(:'attributes') + self.attributes = attributes[:'attributes'] + end + + if attributes.key?(:'id') + self.id = attributes[:'id'] + end + + if attributes.key?(:'type') + self.type = attributes[:'type'] + end + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + # @!visibility private + def valid? + return false if @attributes.nil? + return false if @id.nil? + return false if @type.nil? + true + end + + # Custom attribute writer method with validation + # @param attributes [Object] Object to be assigned + # @!visibility private + def attributes=(attributes) + if attributes.nil? + fail ArgumentError, 'invalid value for "attributes", attributes cannot be nil.' + end + @attributes = attributes + end + + # Custom attribute writer method with validation + # @param id [Object] Object to be assigned + # @!visibility private + def id=(id) + if id.nil? + fail ArgumentError, 'invalid value for "id", id cannot be nil.' + end + @id = id + end + + # Custom attribute writer method with validation + # @param type [Object] Object to be assigned + # @!visibility private + def type=(type) + if type.nil? + fail ArgumentError, 'invalid value for "type", type cannot be nil.' + end + @type = type + end + + # Returns the object in the form of hash, with additionalProperties support. + # @return [Hash] Returns the object in the form of hash + # @!visibility private + def to_hash + hash = {} + self.class.attribute_map.each_pair do |attr, param| + value = self.send(attr) + if value.nil? + is_nullable = self.class.openapi_nullable.include?(attr) + next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}")) + end + + hash[param] = _to_hash(value) + end + self.additional_properties.each_pair do |attr, value| + hash[attr] = value + end + hash + end + + # Checks equality by comparing each attribute. + # @param o [Object] Object to be compared + # @!visibility private + def ==(o) + return true if self.equal?(o) + self.class == o.class && + attributes == o.attributes && + id == o.id && + type == o.type && + additional_properties == o.additional_properties + end + + # Calculates hash code according to all attributes. + # @return [Integer] Hash code + # @!visibility private + def hash + [attributes, id, type, additional_properties].hash + end + end +end diff --git a/lib/datadog_api_client/v2/models/model_lab_facet_values_response.rb b/lib/datadog_api_client/v2/models/model_lab_facet_values_response.rb new file mode 100644 index 000000000000..6d6bb4142ead --- /dev/null +++ b/lib/datadog_api_client/v2/models/model_lab_facet_values_response.rb @@ -0,0 +1,123 @@ +=begin +#Datadog API V2 Collection + +#Collection of all Datadog Public endpoints. + +The version of the OpenAPI document: 1.0 +Contact: support@datadoghq.com +Generated by: https://github.com/DataDog/datadog-api-client-ruby/tree/master/.generator + + Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + This product includes software developed at Datadog (https://www.datadoghq.com/). + Copyright 2020-Present Datadog, Inc. + +=end + +require 'date' +require 'time' + +module DatadogAPIClient::V2 + # Response containing available values for a facet key. + class ModelLabFacetValuesResponse + include BaseGenericModel + + # A facet values JSON:API resource object. + attr_reader :data + + attr_accessor :additional_properties + + # Attribute mapping from ruby-style variable name to JSON key. + # @!visibility private + def self.attribute_map + { + :'data' => :'data' + } + end + + # Attribute type mapping. + # @!visibility private + def self.openapi_types + { + :'data' => :'ModelLabFacetValuesData' + } + end + + # Initializes the object + # @param attributes [Hash] Model attributes in the form of hash + # @!visibility private + def initialize(attributes = {}) + if (!attributes.is_a?(Hash)) + fail ArgumentError, "The input argument (attributes) must be a hash in `DatadogAPIClient::V2::ModelLabFacetValuesResponse` initialize method" + end + + self.additional_properties = {} + # check to see if the attribute exists and convert string to symbol for hash key + attributes = attributes.each_with_object({}) { |(k, v), h| + if (!self.class.attribute_map.key?(k.to_sym)) + self.additional_properties[k.to_sym] = v + else + h[k.to_sym] = v + end + } + + if attributes.key?(:'data') + self.data = attributes[:'data'] + end + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + # @!visibility private + def valid? + return false if @data.nil? + true + end + + # Custom attribute writer method with validation + # @param data [Object] Object to be assigned + # @!visibility private + def data=(data) + if data.nil? + fail ArgumentError, 'invalid value for "data", data cannot be nil.' + end + @data = data + end + + # Returns the object in the form of hash, with additionalProperties support. + # @return [Hash] Returns the object in the form of hash + # @!visibility private + def to_hash + hash = {} + self.class.attribute_map.each_pair do |attr, param| + value = self.send(attr) + if value.nil? + is_nullable = self.class.openapi_nullable.include?(attr) + next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}")) + end + + hash[param] = _to_hash(value) + end + self.additional_properties.each_pair do |attr, value| + hash[attr] = value + end + hash + end + + # Checks equality by comparing each attribute. + # @param o [Object] Object to be compared + # @!visibility private + def ==(o) + return true if self.equal?(o) + self.class == o.class && + data == o.data && + additional_properties == o.additional_properties + end + + # Calculates hash code according to all attributes. + # @return [Integer] Hash code + # @!visibility private + def hash + [data, additional_properties].hash + end + end +end diff --git a/lib/datadog_api_client/v2/models/model_lab_facet_values_type.rb b/lib/datadog_api_client/v2/models/model_lab_facet_values_type.rb new file mode 100644 index 000000000000..98b53c79a559 --- /dev/null +++ b/lib/datadog_api_client/v2/models/model_lab_facet_values_type.rb @@ -0,0 +1,26 @@ +=begin +#Datadog API V2 Collection + +#Collection of all Datadog Public endpoints. + +The version of the OpenAPI document: 1.0 +Contact: support@datadoghq.com +Generated by: https://github.com/DataDog/datadog-api-client-ruby/tree/master/.generator + + Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + This product includes software developed at Datadog (https://www.datadoghq.com/). + Copyright 2020-Present Datadog, Inc. + +=end + +require 'date' +require 'time' + +module DatadogAPIClient::V2 + # The JSON:API type for a facet values resource. + class ModelLabFacetValuesType + include BaseEnumModel + + FACET_VALUES = "facet_values".freeze + end +end diff --git a/lib/datadog_api_client/v2/models/model_lab_metric_stat_range.rb b/lib/datadog_api_client/v2/models/model_lab_metric_stat_range.rb new file mode 100644 index 000000000000..32b77da5166d --- /dev/null +++ b/lib/datadog_api_client/v2/models/model_lab_metric_stat_range.rb @@ -0,0 +1,165 @@ +=begin +#Datadog API V2 Collection + +#Collection of all Datadog Public endpoints. + +The version of the OpenAPI document: 1.0 +Contact: support@datadoghq.com +Generated by: https://github.com/DataDog/datadog-api-client-ruby/tree/master/.generator + + Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + This product includes software developed at Datadog (https://www.datadoghq.com/). + Copyright 2020-Present Datadog, Inc. + +=end + +require 'date' +require 'time' + +module DatadogAPIClient::V2 + # The range of values for a specific metric statistic. + class ModelLabMetricStatRange + include BaseGenericModel + + # The maximum value of the statistic. + attr_reader :max + + # The minimum value of the statistic. + attr_reader :min + + # The metric statistic name. + attr_reader :stat + + attr_accessor :additional_properties + + # Attribute mapping from ruby-style variable name to JSON key. + # @!visibility private + def self.attribute_map + { + :'max' => :'max', + :'min' => :'min', + :'stat' => :'stat' + } + end + + # Attribute type mapping. + # @!visibility private + def self.openapi_types + { + :'max' => :'Float', + :'min' => :'Float', + :'stat' => :'String' + } + end + + # Initializes the object + # @param attributes [Hash] Model attributes in the form of hash + # @!visibility private + def initialize(attributes = {}) + if (!attributes.is_a?(Hash)) + fail ArgumentError, "The input argument (attributes) must be a hash in `DatadogAPIClient::V2::ModelLabMetricStatRange` initialize method" + end + + self.additional_properties = {} + # check to see if the attribute exists and convert string to symbol for hash key + attributes = attributes.each_with_object({}) { |(k, v), h| + if (!self.class.attribute_map.key?(k.to_sym)) + self.additional_properties[k.to_sym] = v + else + h[k.to_sym] = v + end + } + + if attributes.key?(:'max') + self.max = attributes[:'max'] + end + + if attributes.key?(:'min') + self.min = attributes[:'min'] + end + + if attributes.key?(:'stat') + self.stat = attributes[:'stat'] + end + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + # @!visibility private + def valid? + return false if @max.nil? + return false if @min.nil? + return false if @stat.nil? + true + end + + # Custom attribute writer method with validation + # @param max [Object] Object to be assigned + # @!visibility private + def max=(max) + if max.nil? + fail ArgumentError, 'invalid value for "max", max cannot be nil.' + end + @max = max + end + + # Custom attribute writer method with validation + # @param min [Object] Object to be assigned + # @!visibility private + def min=(min) + if min.nil? + fail ArgumentError, 'invalid value for "min", min cannot be nil.' + end + @min = min + end + + # Custom attribute writer method with validation + # @param stat [Object] Object to be assigned + # @!visibility private + def stat=(stat) + if stat.nil? + fail ArgumentError, 'invalid value for "stat", stat cannot be nil.' + end + @stat = stat + end + + # Returns the object in the form of hash, with additionalProperties support. + # @return [Hash] Returns the object in the form of hash + # @!visibility private + def to_hash + hash = {} + self.class.attribute_map.each_pair do |attr, param| + value = self.send(attr) + if value.nil? + is_nullable = self.class.openapi_nullable.include?(attr) + next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}")) + end + + hash[param] = _to_hash(value) + end + self.additional_properties.each_pair do |attr, value| + hash[attr] = value + end + hash + end + + # Checks equality by comparing each attribute. + # @param o [Object] Object to be compared + # @!visibility private + def ==(o) + return true if self.equal?(o) + self.class == o.class && + max == o.max && + min == o.min && + stat == o.stat && + additional_properties == o.additional_properties + end + + # Calculates hash code according to all attributes. + # @return [Integer] Hash code + # @!visibility private + def hash + [max, min, stat, additional_properties].hash + end + end +end diff --git a/lib/datadog_api_client/v2/models/model_lab_metric_summary.rb b/lib/datadog_api_client/v2/models/model_lab_metric_summary.rb new file mode 100644 index 000000000000..3982c772575a --- /dev/null +++ b/lib/datadog_api_client/v2/models/model_lab_metric_summary.rb @@ -0,0 +1,228 @@ +=begin +#Datadog API V2 Collection + +#Collection of all Datadog Public endpoints. + +The version of the OpenAPI document: 1.0 +Contact: support@datadoghq.com +Generated by: https://github.com/DataDog/datadog-api-client-ruby/tree/master/.generator + + Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + This product includes software developed at Datadog (https://www.datadoghq.com/). + Copyright 2020-Present Datadog, Inc. + +=end + +require 'date' +require 'time' + +module DatadogAPIClient::V2 + # Summary statistics for a metric recorded during a Model Lab run. + class ModelLabMetricSummary + include BaseGenericModel + + # The total number of recorded values. + attr_reader :count + + # The first step at which the metric was recorded. + attr_accessor :first_step + + # The metric name. + attr_reader :key + + # The last step at which the metric was recorded. + attr_accessor :last_step + + # The most recently recorded value. + attr_accessor :latest + + # The maximum recorded value. + attr_accessor :max + + # The mean of recorded values. + attr_accessor :mean + + # The minimum recorded value. + attr_accessor :min + + # The standard deviation of recorded values. + attr_accessor :stddev + + attr_accessor :additional_properties + + # Attribute mapping from ruby-style variable name to JSON key. + # @!visibility private + def self.attribute_map + { + :'count' => :'count', + :'first_step' => :'first_step', + :'key' => :'key', + :'last_step' => :'last_step', + :'latest' => :'latest', + :'max' => :'max', + :'mean' => :'mean', + :'min' => :'min', + :'stddev' => :'stddev' + } + end + + # Attribute type mapping. + # @!visibility private + def self.openapi_types + { + :'count' => :'Integer', + :'first_step' => :'Integer', + :'key' => :'String', + :'last_step' => :'Integer', + :'latest' => :'Float', + :'max' => :'Float', + :'mean' => :'Float', + :'min' => :'Float', + :'stddev' => :'Float' + } + end + + # List of attributes with nullable: true + # @!visibility private + def self.openapi_nullable + Set.new([ + :'first_step', + :'last_step', + :'latest', + :'max', + :'mean', + :'min', + :'stddev', + ]) + end + + # Initializes the object + # @param attributes [Hash] Model attributes in the form of hash + # @!visibility private + def initialize(attributes = {}) + if (!attributes.is_a?(Hash)) + fail ArgumentError, "The input argument (attributes) must be a hash in `DatadogAPIClient::V2::ModelLabMetricSummary` initialize method" + end + + self.additional_properties = {} + # check to see if the attribute exists and convert string to symbol for hash key + attributes = attributes.each_with_object({}) { |(k, v), h| + if (!self.class.attribute_map.key?(k.to_sym)) + self.additional_properties[k.to_sym] = v + else + h[k.to_sym] = v + end + } + + if attributes.key?(:'count') + self.count = attributes[:'count'] + end + + if attributes.key?(:'first_step') + self.first_step = attributes[:'first_step'] + end + + if attributes.key?(:'key') + self.key = attributes[:'key'] + end + + if attributes.key?(:'last_step') + self.last_step = attributes[:'last_step'] + end + + if attributes.key?(:'latest') + self.latest = attributes[:'latest'] + end + + if attributes.key?(:'max') + self.max = attributes[:'max'] + end + + if attributes.key?(:'mean') + self.mean = attributes[:'mean'] + end + + if attributes.key?(:'min') + self.min = attributes[:'min'] + end + + if attributes.key?(:'stddev') + self.stddev = attributes[:'stddev'] + end + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + # @!visibility private + def valid? + return false if @count.nil? + return false if @key.nil? + true + end + + # Custom attribute writer method with validation + # @param count [Object] Object to be assigned + # @!visibility private + def count=(count) + if count.nil? + fail ArgumentError, 'invalid value for "count", count cannot be nil.' + end + @count = count + end + + # Custom attribute writer method with validation + # @param key [Object] Object to be assigned + # @!visibility private + def key=(key) + if key.nil? + fail ArgumentError, 'invalid value for "key", key cannot be nil.' + end + @key = key + end + + # Returns the object in the form of hash, with additionalProperties support. + # @return [Hash] Returns the object in the form of hash + # @!visibility private + def to_hash + hash = {} + self.class.attribute_map.each_pair do |attr, param| + value = self.send(attr) + if value.nil? + is_nullable = self.class.openapi_nullable.include?(attr) + next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}")) + end + + hash[param] = _to_hash(value) + end + self.additional_properties.each_pair do |attr, value| + hash[attr] = value + end + hash + end + + # Checks equality by comparing each attribute. + # @param o [Object] Object to be compared + # @!visibility private + def ==(o) + return true if self.equal?(o) + self.class == o.class && + count == o.count && + first_step == o.first_step && + key == o.key && + last_step == o.last_step && + latest == o.latest && + max == o.max && + mean == o.mean && + min == o.min && + stddev == o.stddev && + additional_properties == o.additional_properties + end + + # Calculates hash code according to all attributes. + # @return [Integer] Hash code + # @!visibility private + def hash + [count, first_step, key, last_step, latest, max, mean, min, stddev, additional_properties].hash + end + end +end diff --git a/lib/datadog_api_client/v2/models/model_lab_numeric_range.rb b/lib/datadog_api_client/v2/models/model_lab_numeric_range.rb new file mode 100644 index 000000000000..6f71cda47427 --- /dev/null +++ b/lib/datadog_api_client/v2/models/model_lab_numeric_range.rb @@ -0,0 +1,144 @@ +=begin +#Datadog API V2 Collection + +#Collection of all Datadog Public endpoints. + +The version of the OpenAPI document: 1.0 +Contact: support@datadoghq.com +Generated by: https://github.com/DataDog/datadog-api-client-ruby/tree/master/.generator + + Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + This product includes software developed at Datadog (https://www.datadoghq.com/). + Copyright 2020-Present Datadog, Inc. + +=end + +require 'date' +require 'time' + +module DatadogAPIClient::V2 + # The numeric range of values for a facet. + class ModelLabNumericRange + include BaseGenericModel + + # The maximum value. + attr_reader :max + + # The minimum value. + attr_reader :min + + attr_accessor :additional_properties + + # Attribute mapping from ruby-style variable name to JSON key. + # @!visibility private + def self.attribute_map + { + :'max' => :'max', + :'min' => :'min' + } + end + + # Attribute type mapping. + # @!visibility private + def self.openapi_types + { + :'max' => :'Float', + :'min' => :'Float' + } + end + + # Initializes the object + # @param attributes [Hash] Model attributes in the form of hash + # @!visibility private + def initialize(attributes = {}) + if (!attributes.is_a?(Hash)) + fail ArgumentError, "The input argument (attributes) must be a hash in `DatadogAPIClient::V2::ModelLabNumericRange` initialize method" + end + + self.additional_properties = {} + # check to see if the attribute exists and convert string to symbol for hash key + attributes = attributes.each_with_object({}) { |(k, v), h| + if (!self.class.attribute_map.key?(k.to_sym)) + self.additional_properties[k.to_sym] = v + else + h[k.to_sym] = v + end + } + + if attributes.key?(:'max') + self.max = attributes[:'max'] + end + + if attributes.key?(:'min') + self.min = attributes[:'min'] + end + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + # @!visibility private + def valid? + return false if @max.nil? + return false if @min.nil? + true + end + + # Custom attribute writer method with validation + # @param max [Object] Object to be assigned + # @!visibility private + def max=(max) + if max.nil? + fail ArgumentError, 'invalid value for "max", max cannot be nil.' + end + @max = max + end + + # Custom attribute writer method with validation + # @param min [Object] Object to be assigned + # @!visibility private + def min=(min) + if min.nil? + fail ArgumentError, 'invalid value for "min", min cannot be nil.' + end + @min = min + end + + # Returns the object in the form of hash, with additionalProperties support. + # @return [Hash] Returns the object in the form of hash + # @!visibility private + def to_hash + hash = {} + self.class.attribute_map.each_pair do |attr, param| + value = self.send(attr) + if value.nil? + is_nullable = self.class.openapi_nullable.include?(attr) + next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}")) + end + + hash[param] = _to_hash(value) + end + self.additional_properties.each_pair do |attr, value| + hash[attr] = value + end + hash + end + + # Checks equality by comparing each attribute. + # @param o [Object] Object to be compared + # @!visibility private + def ==(o) + return true if self.equal?(o) + self.class == o.class && + max == o.max && + min == o.min && + additional_properties == o.additional_properties + end + + # Calculates hash code according to all attributes. + # @return [Integer] Hash code + # @!visibility private + def hash + [max, min, additional_properties].hash + end + end +end diff --git a/lib/datadog_api_client/v2/models/model_lab_page_meta.rb b/lib/datadog_api_client/v2/models/model_lab_page_meta.rb new file mode 100644 index 000000000000..e7b978d7baf7 --- /dev/null +++ b/lib/datadog_api_client/v2/models/model_lab_page_meta.rb @@ -0,0 +1,123 @@ +=begin +#Datadog API V2 Collection + +#Collection of all Datadog Public endpoints. + +The version of the OpenAPI document: 1.0 +Contact: support@datadoghq.com +Generated by: https://github.com/DataDog/datadog-api-client-ruby/tree/master/.generator + + Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + This product includes software developed at Datadog (https://www.datadoghq.com/). + Copyright 2020-Present Datadog, Inc. + +=end + +require 'date' +require 'time' + +module DatadogAPIClient::V2 + # Pagination metadata for a list response. + class ModelLabPageMeta + include BaseGenericModel + + # Pagination details for a list response. + attr_reader :page + + attr_accessor :additional_properties + + # Attribute mapping from ruby-style variable name to JSON key. + # @!visibility private + def self.attribute_map + { + :'page' => :'page' + } + end + + # Attribute type mapping. + # @!visibility private + def self.openapi_types + { + :'page' => :'ModelLabPageMetaPage' + } + end + + # Initializes the object + # @param attributes [Hash] Model attributes in the form of hash + # @!visibility private + def initialize(attributes = {}) + if (!attributes.is_a?(Hash)) + fail ArgumentError, "The input argument (attributes) must be a hash in `DatadogAPIClient::V2::ModelLabPageMeta` initialize method" + end + + self.additional_properties = {} + # check to see if the attribute exists and convert string to symbol for hash key + attributes = attributes.each_with_object({}) { |(k, v), h| + if (!self.class.attribute_map.key?(k.to_sym)) + self.additional_properties[k.to_sym] = v + else + h[k.to_sym] = v + end + } + + if attributes.key?(:'page') + self.page = attributes[:'page'] + end + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + # @!visibility private + def valid? + return false if @page.nil? + true + end + + # Custom attribute writer method with validation + # @param page [Object] Object to be assigned + # @!visibility private + def page=(page) + if page.nil? + fail ArgumentError, 'invalid value for "page", page cannot be nil.' + end + @page = page + end + + # Returns the object in the form of hash, with additionalProperties support. + # @return [Hash] Returns the object in the form of hash + # @!visibility private + def to_hash + hash = {} + self.class.attribute_map.each_pair do |attr, param| + value = self.send(attr) + if value.nil? + is_nullable = self.class.openapi_nullable.include?(attr) + next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}")) + end + + hash[param] = _to_hash(value) + end + self.additional_properties.each_pair do |attr, value| + hash[attr] = value + end + hash + end + + # Checks equality by comparing each attribute. + # @param o [Object] Object to be compared + # @!visibility private + def ==(o) + return true if self.equal?(o) + self.class == o.class && + page == o.page && + additional_properties == o.additional_properties + end + + # Calculates hash code according to all attributes. + # @return [Integer] Hash code + # @!visibility private + def hash + [page, additional_properties].hash + end + end +end diff --git a/lib/datadog_api_client/v2/models/model_lab_page_meta_page.rb b/lib/datadog_api_client/v2/models/model_lab_page_meta_page.rb new file mode 100644 index 000000000000..3ae06daca2fc --- /dev/null +++ b/lib/datadog_api_client/v2/models/model_lab_page_meta_page.rb @@ -0,0 +1,224 @@ +=begin +#Datadog API V2 Collection + +#Collection of all Datadog Public endpoints. + +The version of the OpenAPI document: 1.0 +Contact: support@datadoghq.com +Generated by: https://github.com/DataDog/datadog-api-client-ruby/tree/master/.generator + + Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + This product includes software developed at Datadog (https://www.datadoghq.com/). + Copyright 2020-Present Datadog, Inc. + +=end + +require 'date' +require 'time' + +module DatadogAPIClient::V2 + # Pagination details for a list response. + class ModelLabPageMetaPage + include BaseGenericModel + + # The first page number. + attr_accessor :first_number + + # The last page number. + attr_accessor :last_number + + # The next page number. + attr_accessor :next_number + + # The current page number. + attr_reader :number + + # The previous page number. + attr_accessor :prev_number + + # The number of items per page. + attr_reader :size + + # The total number of items. + attr_reader :total + + # The pagination type. + attr_accessor :type + + attr_accessor :additional_properties + + # Attribute mapping from ruby-style variable name to JSON key. + # @!visibility private + def self.attribute_map + { + :'first_number' => :'first_number', + :'last_number' => :'last_number', + :'next_number' => :'next_number', + :'number' => :'number', + :'prev_number' => :'prev_number', + :'size' => :'size', + :'total' => :'total', + :'type' => :'type' + } + end + + # Attribute type mapping. + # @!visibility private + def self.openapi_types + { + :'first_number' => :'Integer', + :'last_number' => :'Integer', + :'next_number' => :'Integer', + :'number' => :'Integer', + :'prev_number' => :'Integer', + :'size' => :'Integer', + :'total' => :'Integer', + :'type' => :'String' + } + end + + # List of attributes with nullable: true + # @!visibility private + def self.openapi_nullable + Set.new([ + :'next_number', + :'prev_number', + ]) + end + + # Initializes the object + # @param attributes [Hash] Model attributes in the form of hash + # @!visibility private + def initialize(attributes = {}) + if (!attributes.is_a?(Hash)) + fail ArgumentError, "The input argument (attributes) must be a hash in `DatadogAPIClient::V2::ModelLabPageMetaPage` initialize method" + end + + self.additional_properties = {} + # check to see if the attribute exists and convert string to symbol for hash key + attributes = attributes.each_with_object({}) { |(k, v), h| + if (!self.class.attribute_map.key?(k.to_sym)) + self.additional_properties[k.to_sym] = v + else + h[k.to_sym] = v + end + } + + if attributes.key?(:'first_number') + self.first_number = attributes[:'first_number'] + end + + if attributes.key?(:'last_number') + self.last_number = attributes[:'last_number'] + end + + if attributes.key?(:'next_number') + self.next_number = attributes[:'next_number'] + end + + if attributes.key?(:'number') + self.number = attributes[:'number'] + end + + if attributes.key?(:'prev_number') + self.prev_number = attributes[:'prev_number'] + end + + if attributes.key?(:'size') + self.size = attributes[:'size'] + end + + if attributes.key?(:'total') + self.total = attributes[:'total'] + end + + if attributes.key?(:'type') + self.type = attributes[:'type'] + end + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + # @!visibility private + def valid? + return false if @number.nil? + return false if @size.nil? + return false if @total.nil? + true + end + + # Custom attribute writer method with validation + # @param number [Object] Object to be assigned + # @!visibility private + def number=(number) + if number.nil? + fail ArgumentError, 'invalid value for "number", number cannot be nil.' + end + @number = number + end + + # Custom attribute writer method with validation + # @param size [Object] Object to be assigned + # @!visibility private + def size=(size) + if size.nil? + fail ArgumentError, 'invalid value for "size", size cannot be nil.' + end + @size = size + end + + # Custom attribute writer method with validation + # @param total [Object] Object to be assigned + # @!visibility private + def total=(total) + if total.nil? + fail ArgumentError, 'invalid value for "total", total cannot be nil.' + end + @total = total + end + + # Returns the object in the form of hash, with additionalProperties support. + # @return [Hash] Returns the object in the form of hash + # @!visibility private + def to_hash + hash = {} + self.class.attribute_map.each_pair do |attr, param| + value = self.send(attr) + if value.nil? + is_nullable = self.class.openapi_nullable.include?(attr) + next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}")) + end + + hash[param] = _to_hash(value) + end + self.additional_properties.each_pair do |attr, value| + hash[attr] = value + end + hash + end + + # Checks equality by comparing each attribute. + # @param o [Object] Object to be compared + # @!visibility private + def ==(o) + return true if self.equal?(o) + self.class == o.class && + first_number == o.first_number && + last_number == o.last_number && + next_number == o.next_number && + number == o.number && + prev_number == o.prev_number && + size == o.size && + total == o.total && + type == o.type && + additional_properties == o.additional_properties + end + + # Calculates hash code according to all attributes. + # @return [Integer] Hash code + # @!visibility private + def hash + [first_number, last_number, next_number, number, prev_number, size, total, type, additional_properties].hash + end + end +end diff --git a/lib/datadog_api_client/v2/models/model_lab_pagination_links.rb b/lib/datadog_api_client/v2/models/model_lab_pagination_links.rb new file mode 100644 index 000000000000..2ea4457d1675 --- /dev/null +++ b/lib/datadog_api_client/v2/models/model_lab_pagination_links.rb @@ -0,0 +1,154 @@ +=begin +#Datadog API V2 Collection + +#Collection of all Datadog Public endpoints. + +The version of the OpenAPI document: 1.0 +Contact: support@datadoghq.com +Generated by: https://github.com/DataDog/datadog-api-client-ruby/tree/master/.generator + + Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + This product includes software developed at Datadog (https://www.datadoghq.com/). + Copyright 2020-Present Datadog, Inc. + +=end + +require 'date' +require 'time' + +module DatadogAPIClient::V2 + # Pagination links for navigating list responses. + class ModelLabPaginationLinks + include BaseGenericModel + + # Link to the first page. + attr_accessor :first + + # Link to the last page. + attr_accessor :last + + # Link to the next page. + attr_accessor :_next + + # Link to the previous page. + attr_accessor :prev + + # Link to the current page. + attr_accessor :_self + + attr_accessor :additional_properties + + # Attribute mapping from ruby-style variable name to JSON key. + # @!visibility private + def self.attribute_map + { + :'first' => :'first', + :'last' => :'last', + :'_next' => :'next', + :'prev' => :'prev', + :'_self' => :'self' + } + end + + # Attribute type mapping. + # @!visibility private + def self.openapi_types + { + :'first' => :'String', + :'last' => :'String', + :'_next' => :'String', + :'prev' => :'String', + :'_self' => :'String' + } + end + + # List of attributes with nullable: true + # @!visibility private + def self.openapi_nullable + Set.new([ + :'_next', + :'prev', + ]) + end + + # Initializes the object + # @param attributes [Hash] Model attributes in the form of hash + # @!visibility private + def initialize(attributes = {}) + if (!attributes.is_a?(Hash)) + fail ArgumentError, "The input argument (attributes) must be a hash in `DatadogAPIClient::V2::ModelLabPaginationLinks` initialize method" + end + + self.additional_properties = {} + # check to see if the attribute exists and convert string to symbol for hash key + attributes = attributes.each_with_object({}) { |(k, v), h| + if (!self.class.attribute_map.key?(k.to_sym)) + self.additional_properties[k.to_sym] = v + else + h[k.to_sym] = v + end + } + + if attributes.key?(:'first') + self.first = attributes[:'first'] + end + + if attributes.key?(:'last') + self.last = attributes[:'last'] + end + + if attributes.key?(:'_next') + self._next = attributes[:'_next'] + end + + if attributes.key?(:'prev') + self.prev = attributes[:'prev'] + end + + if attributes.key?(:'_self') + self._self = attributes[:'_self'] + end + end + + # Returns the object in the form of hash, with additionalProperties support. + # @return [Hash] Returns the object in the form of hash + # @!visibility private + def to_hash + hash = {} + self.class.attribute_map.each_pair do |attr, param| + value = self.send(attr) + if value.nil? + is_nullable = self.class.openapi_nullable.include?(attr) + next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}")) + end + + hash[param] = _to_hash(value) + end + self.additional_properties.each_pair do |attr, value| + hash[attr] = value + end + hash + end + + # Checks equality by comparing each attribute. + # @param o [Object] Object to be compared + # @!visibility private + def ==(o) + return true if self.equal?(o) + self.class == o.class && + first == o.first && + last == o.last && + _next == o._next && + prev == o.prev && + _self == o._self && + additional_properties == o.additional_properties + end + + # Calculates hash code according to all attributes. + # @return [Integer] Hash code + # @!visibility private + def hash + [first, last, _next, prev, _self, additional_properties].hash + end + end +end diff --git a/lib/datadog_api_client/v2/models/model_lab_project_artifacts_attributes.rb b/lib/datadog_api_client/v2/models/model_lab_project_artifacts_attributes.rb new file mode 100644 index 000000000000..cd06b886e614 --- /dev/null +++ b/lib/datadog_api_client/v2/models/model_lab_project_artifacts_attributes.rb @@ -0,0 +1,125 @@ +=begin +#Datadog API V2 Collection + +#Collection of all Datadog Public endpoints. + +The version of the OpenAPI document: 1.0 +Contact: support@datadoghq.com +Generated by: https://github.com/DataDog/datadog-api-client-ruby/tree/master/.generator + + Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + This product includes software developed at Datadog (https://www.datadoghq.com/). + Copyright 2020-Present Datadog, Inc. + +=end + +require 'date' +require 'time' + +module DatadogAPIClient::V2 + # Artifact listing for a Model Lab project. + class ModelLabProjectArtifactsAttributes + include BaseGenericModel + + # The list of artifact files associated with the project. + attr_reader :files + + attr_accessor :additional_properties + + # Attribute mapping from ruby-style variable name to JSON key. + # @!visibility private + def self.attribute_map + { + :'files' => :'files' + } + end + + # Attribute type mapping. + # @!visibility private + def self.openapi_types + { + :'files' => :'Array' + } + end + + # Initializes the object + # @param attributes [Hash] Model attributes in the form of hash + # @!visibility private + def initialize(attributes = {}) + if (!attributes.is_a?(Hash)) + fail ArgumentError, "The input argument (attributes) must be a hash in `DatadogAPIClient::V2::ModelLabProjectArtifactsAttributes` initialize method" + end + + self.additional_properties = {} + # check to see if the attribute exists and convert string to symbol for hash key + attributes = attributes.each_with_object({}) { |(k, v), h| + if (!self.class.attribute_map.key?(k.to_sym)) + self.additional_properties[k.to_sym] = v + else + h[k.to_sym] = v + end + } + + if attributes.key?(:'files') + if (value = attributes[:'files']).is_a?(Array) + self.files = value + end + end + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + # @!visibility private + def valid? + return false if @files.nil? + true + end + + # Custom attribute writer method with validation + # @param files [Object] Object to be assigned + # @!visibility private + def files=(files) + if files.nil? + fail ArgumentError, 'invalid value for "files", files cannot be nil.' + end + @files = files + end + + # Returns the object in the form of hash, with additionalProperties support. + # @return [Hash] Returns the object in the form of hash + # @!visibility private + def to_hash + hash = {} + self.class.attribute_map.each_pair do |attr, param| + value = self.send(attr) + if value.nil? + is_nullable = self.class.openapi_nullable.include?(attr) + next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}")) + end + + hash[param] = _to_hash(value) + end + self.additional_properties.each_pair do |attr, value| + hash[attr] = value + end + hash + end + + # Checks equality by comparing each attribute. + # @param o [Object] Object to be compared + # @!visibility private + def ==(o) + return true if self.equal?(o) + self.class == o.class && + files == o.files && + additional_properties == o.additional_properties + end + + # Calculates hash code according to all attributes. + # @return [Integer] Hash code + # @!visibility private + def hash + [files, additional_properties].hash + end + end +end diff --git a/lib/datadog_api_client/v2/models/model_lab_project_artifacts_data.rb b/lib/datadog_api_client/v2/models/model_lab_project_artifacts_data.rb new file mode 100644 index 000000000000..9be677fa0e52 --- /dev/null +++ b/lib/datadog_api_client/v2/models/model_lab_project_artifacts_data.rb @@ -0,0 +1,165 @@ +=begin +#Datadog API V2 Collection + +#Collection of all Datadog Public endpoints. + +The version of the OpenAPI document: 1.0 +Contact: support@datadoghq.com +Generated by: https://github.com/DataDog/datadog-api-client-ruby/tree/master/.generator + + Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + This product includes software developed at Datadog (https://www.datadoghq.com/). + Copyright 2020-Present Datadog, Inc. + +=end + +require 'date' +require 'time' + +module DatadogAPIClient::V2 + # A project artifacts JSON:API resource object. + class ModelLabProjectArtifactsData + include BaseGenericModel + + # Artifact listing for a Model Lab project. + attr_reader :attributes + + # The unique identifier of the project artifacts resource. + attr_reader :id + + # The JSON:API type for a project artifacts resource. + attr_reader :type + + attr_accessor :additional_properties + + # Attribute mapping from ruby-style variable name to JSON key. + # @!visibility private + def self.attribute_map + { + :'attributes' => :'attributes', + :'id' => :'id', + :'type' => :'type' + } + end + + # Attribute type mapping. + # @!visibility private + def self.openapi_types + { + :'attributes' => :'ModelLabProjectArtifactsAttributes', + :'id' => :'String', + :'type' => :'ModelLabProjectArtifactsType' + } + end + + # Initializes the object + # @param attributes [Hash] Model attributes in the form of hash + # @!visibility private + def initialize(attributes = {}) + if (!attributes.is_a?(Hash)) + fail ArgumentError, "The input argument (attributes) must be a hash in `DatadogAPIClient::V2::ModelLabProjectArtifactsData` initialize method" + end + + self.additional_properties = {} + # check to see if the attribute exists and convert string to symbol for hash key + attributes = attributes.each_with_object({}) { |(k, v), h| + if (!self.class.attribute_map.key?(k.to_sym)) + self.additional_properties[k.to_sym] = v + else + h[k.to_sym] = v + end + } + + if attributes.key?(:'attributes') + self.attributes = attributes[:'attributes'] + end + + if attributes.key?(:'id') + self.id = attributes[:'id'] + end + + if attributes.key?(:'type') + self.type = attributes[:'type'] + end + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + # @!visibility private + def valid? + return false if @attributes.nil? + return false if @id.nil? + return false if @type.nil? + true + end + + # Custom attribute writer method with validation + # @param attributes [Object] Object to be assigned + # @!visibility private + def attributes=(attributes) + if attributes.nil? + fail ArgumentError, 'invalid value for "attributes", attributes cannot be nil.' + end + @attributes = attributes + end + + # Custom attribute writer method with validation + # @param id [Object] Object to be assigned + # @!visibility private + def id=(id) + if id.nil? + fail ArgumentError, 'invalid value for "id", id cannot be nil.' + end + @id = id + end + + # Custom attribute writer method with validation + # @param type [Object] Object to be assigned + # @!visibility private + def type=(type) + if type.nil? + fail ArgumentError, 'invalid value for "type", type cannot be nil.' + end + @type = type + end + + # Returns the object in the form of hash, with additionalProperties support. + # @return [Hash] Returns the object in the form of hash + # @!visibility private + def to_hash + hash = {} + self.class.attribute_map.each_pair do |attr, param| + value = self.send(attr) + if value.nil? + is_nullable = self.class.openapi_nullable.include?(attr) + next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}")) + end + + hash[param] = _to_hash(value) + end + self.additional_properties.each_pair do |attr, value| + hash[attr] = value + end + hash + end + + # Checks equality by comparing each attribute. + # @param o [Object] Object to be compared + # @!visibility private + def ==(o) + return true if self.equal?(o) + self.class == o.class && + attributes == o.attributes && + id == o.id && + type == o.type && + additional_properties == o.additional_properties + end + + # Calculates hash code according to all attributes. + # @return [Integer] Hash code + # @!visibility private + def hash + [attributes, id, type, additional_properties].hash + end + end +end diff --git a/lib/datadog_api_client/v2/models/model_lab_project_artifacts_response.rb b/lib/datadog_api_client/v2/models/model_lab_project_artifacts_response.rb new file mode 100644 index 000000000000..6ab7b95beb71 --- /dev/null +++ b/lib/datadog_api_client/v2/models/model_lab_project_artifacts_response.rb @@ -0,0 +1,123 @@ +=begin +#Datadog API V2 Collection + +#Collection of all Datadog Public endpoints. + +The version of the OpenAPI document: 1.0 +Contact: support@datadoghq.com +Generated by: https://github.com/DataDog/datadog-api-client-ruby/tree/master/.generator + + Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + This product includes software developed at Datadog (https://www.datadoghq.com/). + Copyright 2020-Present Datadog, Inc. + +=end + +require 'date' +require 'time' + +module DatadogAPIClient::V2 + # Response containing the artifact listing for a Model Lab project. + class ModelLabProjectArtifactsResponse + include BaseGenericModel + + # A project artifacts JSON:API resource object. + attr_reader :data + + attr_accessor :additional_properties + + # Attribute mapping from ruby-style variable name to JSON key. + # @!visibility private + def self.attribute_map + { + :'data' => :'data' + } + end + + # Attribute type mapping. + # @!visibility private + def self.openapi_types + { + :'data' => :'ModelLabProjectArtifactsData' + } + end + + # Initializes the object + # @param attributes [Hash] Model attributes in the form of hash + # @!visibility private + def initialize(attributes = {}) + if (!attributes.is_a?(Hash)) + fail ArgumentError, "The input argument (attributes) must be a hash in `DatadogAPIClient::V2::ModelLabProjectArtifactsResponse` initialize method" + end + + self.additional_properties = {} + # check to see if the attribute exists and convert string to symbol for hash key + attributes = attributes.each_with_object({}) { |(k, v), h| + if (!self.class.attribute_map.key?(k.to_sym)) + self.additional_properties[k.to_sym] = v + else + h[k.to_sym] = v + end + } + + if attributes.key?(:'data') + self.data = attributes[:'data'] + end + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + # @!visibility private + def valid? + return false if @data.nil? + true + end + + # Custom attribute writer method with validation + # @param data [Object] Object to be assigned + # @!visibility private + def data=(data) + if data.nil? + fail ArgumentError, 'invalid value for "data", data cannot be nil.' + end + @data = data + end + + # Returns the object in the form of hash, with additionalProperties support. + # @return [Hash] Returns the object in the form of hash + # @!visibility private + def to_hash + hash = {} + self.class.attribute_map.each_pair do |attr, param| + value = self.send(attr) + if value.nil? + is_nullable = self.class.openapi_nullable.include?(attr) + next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}")) + end + + hash[param] = _to_hash(value) + end + self.additional_properties.each_pair do |attr, value| + hash[attr] = value + end + hash + end + + # Checks equality by comparing each attribute. + # @param o [Object] Object to be compared + # @!visibility private + def ==(o) + return true if self.equal?(o) + self.class == o.class && + data == o.data && + additional_properties == o.additional_properties + end + + # Calculates hash code according to all attributes. + # @return [Integer] Hash code + # @!visibility private + def hash + [data, additional_properties].hash + end + end +end diff --git a/lib/datadog_api_client/v2/models/model_lab_project_artifacts_type.rb b/lib/datadog_api_client/v2/models/model_lab_project_artifacts_type.rb new file mode 100644 index 000000000000..a6a5adab0d45 --- /dev/null +++ b/lib/datadog_api_client/v2/models/model_lab_project_artifacts_type.rb @@ -0,0 +1,26 @@ +=begin +#Datadog API V2 Collection + +#Collection of all Datadog Public endpoints. + +The version of the OpenAPI document: 1.0 +Contact: support@datadoghq.com +Generated by: https://github.com/DataDog/datadog-api-client-ruby/tree/master/.generator + + Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + This product includes software developed at Datadog (https://www.datadoghq.com/). + Copyright 2020-Present Datadog, Inc. + +=end + +require 'date' +require 'time' + +module DatadogAPIClient::V2 + # The JSON:API type for a project artifacts resource. + class ModelLabProjectArtifactsType + include BaseEnumModel + + PROJECT_FILES = "project_files".freeze + end +end diff --git a/lib/datadog_api_client/v2/models/model_lab_project_attributes.rb b/lib/datadog_api_client/v2/models/model_lab_project_attributes.rb new file mode 100644 index 000000000000..f85def75545b --- /dev/null +++ b/lib/datadog_api_client/v2/models/model_lab_project_attributes.rb @@ -0,0 +1,291 @@ +=begin +#Datadog API V2 Collection + +#Collection of all Datadog Public endpoints. + +The version of the OpenAPI document: 1.0 +Contact: support@datadoghq.com +Generated by: https://github.com/DataDog/datadog-api-client-ruby/tree/master/.generator + + Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + This product includes software developed at Datadog (https://www.datadoghq.com/). + Copyright 2020-Present Datadog, Inc. + +=end + +require 'date' +require 'time' + +module DatadogAPIClient::V2 + # Attributes of a Model Lab project. + class ModelLabProjectAttributes + include BaseGenericModel + + # The storage location for project artifacts. + attr_reader :artifact_storage_location + + # The date and time the project was created. + attr_reader :created_at + + # The date and time the project was soft-deleted. + attr_accessor :deleted_at + + # A description of the project. + attr_reader :description + + # An optional external URL associated with the project. + attr_accessor :external_url + + # Whether the project is starred by the current user. + attr_reader :is_starred + + # The name of the project. + attr_reader :name + + # The UUID of the project owner. + attr_accessor :owner_id + + # The list of tags associated with the project. + attr_reader :tags + + # The date and time the project was last updated. + attr_reader :updated_at + + attr_accessor :additional_properties + + # Attribute mapping from ruby-style variable name to JSON key. + # @!visibility private + def self.attribute_map + { + :'artifact_storage_location' => :'artifact_storage_location', + :'created_at' => :'created_at', + :'deleted_at' => :'deleted_at', + :'description' => :'description', + :'external_url' => :'external_url', + :'is_starred' => :'is_starred', + :'name' => :'name', + :'owner_id' => :'owner_id', + :'tags' => :'tags', + :'updated_at' => :'updated_at' + } + end + + # Attribute type mapping. + # @!visibility private + def self.openapi_types + { + :'artifact_storage_location' => :'String', + :'created_at' => :'Time', + :'deleted_at' => :'Time', + :'description' => :'String', + :'external_url' => :'String', + :'is_starred' => :'Boolean', + :'name' => :'String', + :'owner_id' => :'String', + :'tags' => :'Array', + :'updated_at' => :'Time' + } + end + + # List of attributes with nullable: true + # @!visibility private + def self.openapi_nullable + Set.new([ + :'deleted_at', + :'external_url', + :'owner_id', + ]) + end + + # Initializes the object + # @param attributes [Hash] Model attributes in the form of hash + # @!visibility private + def initialize(attributes = {}) + if (!attributes.is_a?(Hash)) + fail ArgumentError, "The input argument (attributes) must be a hash in `DatadogAPIClient::V2::ModelLabProjectAttributes` initialize method" + end + + self.additional_properties = {} + # check to see if the attribute exists and convert string to symbol for hash key + attributes = attributes.each_with_object({}) { |(k, v), h| + if (!self.class.attribute_map.key?(k.to_sym)) + self.additional_properties[k.to_sym] = v + else + h[k.to_sym] = v + end + } + + if attributes.key?(:'artifact_storage_location') + self.artifact_storage_location = attributes[:'artifact_storage_location'] + end + + if attributes.key?(:'created_at') + self.created_at = attributes[:'created_at'] + end + + if attributes.key?(:'deleted_at') + self.deleted_at = attributes[:'deleted_at'] + end + + if attributes.key?(:'description') + self.description = attributes[:'description'] + end + + if attributes.key?(:'external_url') + self.external_url = attributes[:'external_url'] + end + + if attributes.key?(:'is_starred') + self.is_starred = attributes[:'is_starred'] + end + + if attributes.key?(:'name') + self.name = attributes[:'name'] + end + + if attributes.key?(:'owner_id') + self.owner_id = attributes[:'owner_id'] + end + + if attributes.key?(:'tags') + if (value = attributes[:'tags']).is_a?(Array) + self.tags = value + end + end + + if attributes.key?(:'updated_at') + self.updated_at = attributes[:'updated_at'] + end + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + # @!visibility private + def valid? + return false if @artifact_storage_location.nil? + return false if @created_at.nil? + return false if @description.nil? + return false if @is_starred.nil? + return false if @name.nil? + return false if @tags.nil? + return false if @updated_at.nil? + true + end + + # Custom attribute writer method with validation + # @param artifact_storage_location [Object] Object to be assigned + # @!visibility private + def artifact_storage_location=(artifact_storage_location) + if artifact_storage_location.nil? + fail ArgumentError, 'invalid value for "artifact_storage_location", artifact_storage_location cannot be nil.' + end + @artifact_storage_location = artifact_storage_location + end + + # Custom attribute writer method with validation + # @param created_at [Object] Object to be assigned + # @!visibility private + def created_at=(created_at) + if created_at.nil? + fail ArgumentError, 'invalid value for "created_at", created_at cannot be nil.' + end + @created_at = created_at + end + + # Custom attribute writer method with validation + # @param description [Object] Object to be assigned + # @!visibility private + def description=(description) + if description.nil? + fail ArgumentError, 'invalid value for "description", description cannot be nil.' + end + @description = description + end + + # Custom attribute writer method with validation + # @param is_starred [Object] Object to be assigned + # @!visibility private + def is_starred=(is_starred) + if is_starred.nil? + fail ArgumentError, 'invalid value for "is_starred", is_starred cannot be nil.' + end + @is_starred = is_starred + end + + # Custom attribute writer method with validation + # @param name [Object] Object to be assigned + # @!visibility private + def name=(name) + if name.nil? + fail ArgumentError, 'invalid value for "name", name cannot be nil.' + end + @name = name + end + + # Custom attribute writer method with validation + # @param tags [Object] Object to be assigned + # @!visibility private + def tags=(tags) + if tags.nil? + fail ArgumentError, 'invalid value for "tags", tags cannot be nil.' + end + @tags = tags + end + + # Custom attribute writer method with validation + # @param updated_at [Object] Object to be assigned + # @!visibility private + def updated_at=(updated_at) + if updated_at.nil? + fail ArgumentError, 'invalid value for "updated_at", updated_at cannot be nil.' + end + @updated_at = updated_at + end + + # Returns the object in the form of hash, with additionalProperties support. + # @return [Hash] Returns the object in the form of hash + # @!visibility private + def to_hash + hash = {} + self.class.attribute_map.each_pair do |attr, param| + value = self.send(attr) + if value.nil? + is_nullable = self.class.openapi_nullable.include?(attr) + next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}")) + end + + hash[param] = _to_hash(value) + end + self.additional_properties.each_pair do |attr, value| + hash[attr] = value + end + hash + end + + # Checks equality by comparing each attribute. + # @param o [Object] Object to be compared + # @!visibility private + def ==(o) + return true if self.equal?(o) + self.class == o.class && + artifact_storage_location == o.artifact_storage_location && + created_at == o.created_at && + deleted_at == o.deleted_at && + description == o.description && + external_url == o.external_url && + is_starred == o.is_starred && + name == o.name && + owner_id == o.owner_id && + tags == o.tags && + updated_at == o.updated_at && + additional_properties == o.additional_properties + end + + # Calculates hash code according to all attributes. + # @return [Integer] Hash code + # @!visibility private + def hash + [artifact_storage_location, created_at, deleted_at, description, external_url, is_starred, name, owner_id, tags, updated_at, additional_properties].hash + end + end +end diff --git a/lib/datadog_api_client/v2/models/model_lab_project_data.rb b/lib/datadog_api_client/v2/models/model_lab_project_data.rb new file mode 100644 index 000000000000..98d53731521c --- /dev/null +++ b/lib/datadog_api_client/v2/models/model_lab_project_data.rb @@ -0,0 +1,165 @@ +=begin +#Datadog API V2 Collection + +#Collection of all Datadog Public endpoints. + +The version of the OpenAPI document: 1.0 +Contact: support@datadoghq.com +Generated by: https://github.com/DataDog/datadog-api-client-ruby/tree/master/.generator + + Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + This product includes software developed at Datadog (https://www.datadoghq.com/). + Copyright 2020-Present Datadog, Inc. + +=end + +require 'date' +require 'time' + +module DatadogAPIClient::V2 + # A Model Lab project JSON:API resource object. + class ModelLabProjectData + include BaseGenericModel + + # Attributes of a Model Lab project. + attr_reader :attributes + + # The unique identifier of the project. + attr_reader :id + + # The JSON:API type for a Model Lab project resource. + attr_reader :type + + attr_accessor :additional_properties + + # Attribute mapping from ruby-style variable name to JSON key. + # @!visibility private + def self.attribute_map + { + :'attributes' => :'attributes', + :'id' => :'id', + :'type' => :'type' + } + end + + # Attribute type mapping. + # @!visibility private + def self.openapi_types + { + :'attributes' => :'ModelLabProjectAttributes', + :'id' => :'String', + :'type' => :'ModelLabProjectType' + } + end + + # Initializes the object + # @param attributes [Hash] Model attributes in the form of hash + # @!visibility private + def initialize(attributes = {}) + if (!attributes.is_a?(Hash)) + fail ArgumentError, "The input argument (attributes) must be a hash in `DatadogAPIClient::V2::ModelLabProjectData` initialize method" + end + + self.additional_properties = {} + # check to see if the attribute exists and convert string to symbol for hash key + attributes = attributes.each_with_object({}) { |(k, v), h| + if (!self.class.attribute_map.key?(k.to_sym)) + self.additional_properties[k.to_sym] = v + else + h[k.to_sym] = v + end + } + + if attributes.key?(:'attributes') + self.attributes = attributes[:'attributes'] + end + + if attributes.key?(:'id') + self.id = attributes[:'id'] + end + + if attributes.key?(:'type') + self.type = attributes[:'type'] + end + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + # @!visibility private + def valid? + return false if @attributes.nil? + return false if @id.nil? + return false if @type.nil? + true + end + + # Custom attribute writer method with validation + # @param attributes [Object] Object to be assigned + # @!visibility private + def attributes=(attributes) + if attributes.nil? + fail ArgumentError, 'invalid value for "attributes", attributes cannot be nil.' + end + @attributes = attributes + end + + # Custom attribute writer method with validation + # @param id [Object] Object to be assigned + # @!visibility private + def id=(id) + if id.nil? + fail ArgumentError, 'invalid value for "id", id cannot be nil.' + end + @id = id + end + + # Custom attribute writer method with validation + # @param type [Object] Object to be assigned + # @!visibility private + def type=(type) + if type.nil? + fail ArgumentError, 'invalid value for "type", type cannot be nil.' + end + @type = type + end + + # Returns the object in the form of hash, with additionalProperties support. + # @return [Hash] Returns the object in the form of hash + # @!visibility private + def to_hash + hash = {} + self.class.attribute_map.each_pair do |attr, param| + value = self.send(attr) + if value.nil? + is_nullable = self.class.openapi_nullable.include?(attr) + next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}")) + end + + hash[param] = _to_hash(value) + end + self.additional_properties.each_pair do |attr, value| + hash[attr] = value + end + hash + end + + # Checks equality by comparing each attribute. + # @param o [Object] Object to be compared + # @!visibility private + def ==(o) + return true if self.equal?(o) + self.class == o.class && + attributes == o.attributes && + id == o.id && + type == o.type && + additional_properties == o.additional_properties + end + + # Calculates hash code according to all attributes. + # @return [Integer] Hash code + # @!visibility private + def hash + [attributes, id, type, additional_properties].hash + end + end +end diff --git a/lib/datadog_api_client/v2/models/model_lab_project_facet_type.rb b/lib/datadog_api_client/v2/models/model_lab_project_facet_type.rb new file mode 100644 index 000000000000..f67b9a4d3684 --- /dev/null +++ b/lib/datadog_api_client/v2/models/model_lab_project_facet_type.rb @@ -0,0 +1,26 @@ +=begin +#Datadog API V2 Collection + +#Collection of all Datadog Public endpoints. + +The version of the OpenAPI document: 1.0 +Contact: support@datadoghq.com +Generated by: https://github.com/DataDog/datadog-api-client-ruby/tree/master/.generator + + Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + This product includes software developed at Datadog (https://www.datadoghq.com/). + Copyright 2020-Present Datadog, Inc. + +=end + +require 'date' +require 'time' + +module DatadogAPIClient::V2 + # The type of facet for filtering Model Lab projects. + class ModelLabProjectFacetType + include BaseEnumModel + + TAG = "tag".freeze + end +end diff --git a/lib/datadog_api_client/v2/models/model_lab_project_response.rb b/lib/datadog_api_client/v2/models/model_lab_project_response.rb new file mode 100644 index 000000000000..e00d56e6b366 --- /dev/null +++ b/lib/datadog_api_client/v2/models/model_lab_project_response.rb @@ -0,0 +1,123 @@ +=begin +#Datadog API V2 Collection + +#Collection of all Datadog Public endpoints. + +The version of the OpenAPI document: 1.0 +Contact: support@datadoghq.com +Generated by: https://github.com/DataDog/datadog-api-client-ruby/tree/master/.generator + + Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + This product includes software developed at Datadog (https://www.datadoghq.com/). + Copyright 2020-Present Datadog, Inc. + +=end + +require 'date' +require 'time' + +module DatadogAPIClient::V2 + # Response containing a single Model Lab project. + class ModelLabProjectResponse + include BaseGenericModel + + # A Model Lab project JSON:API resource object. + attr_reader :data + + attr_accessor :additional_properties + + # Attribute mapping from ruby-style variable name to JSON key. + # @!visibility private + def self.attribute_map + { + :'data' => :'data' + } + end + + # Attribute type mapping. + # @!visibility private + def self.openapi_types + { + :'data' => :'ModelLabProjectData' + } + end + + # Initializes the object + # @param attributes [Hash] Model attributes in the form of hash + # @!visibility private + def initialize(attributes = {}) + if (!attributes.is_a?(Hash)) + fail ArgumentError, "The input argument (attributes) must be a hash in `DatadogAPIClient::V2::ModelLabProjectResponse` initialize method" + end + + self.additional_properties = {} + # check to see if the attribute exists and convert string to symbol for hash key + attributes = attributes.each_with_object({}) { |(k, v), h| + if (!self.class.attribute_map.key?(k.to_sym)) + self.additional_properties[k.to_sym] = v + else + h[k.to_sym] = v + end + } + + if attributes.key?(:'data') + self.data = attributes[:'data'] + end + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + # @!visibility private + def valid? + return false if @data.nil? + true + end + + # Custom attribute writer method with validation + # @param data [Object] Object to be assigned + # @!visibility private + def data=(data) + if data.nil? + fail ArgumentError, 'invalid value for "data", data cannot be nil.' + end + @data = data + end + + # Returns the object in the form of hash, with additionalProperties support. + # @return [Hash] Returns the object in the form of hash + # @!visibility private + def to_hash + hash = {} + self.class.attribute_map.each_pair do |attr, param| + value = self.send(attr) + if value.nil? + is_nullable = self.class.openapi_nullable.include?(attr) + next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}")) + end + + hash[param] = _to_hash(value) + end + self.additional_properties.each_pair do |attr, value| + hash[attr] = value + end + hash + end + + # Checks equality by comparing each attribute. + # @param o [Object] Object to be compared + # @!visibility private + def ==(o) + return true if self.equal?(o) + self.class == o.class && + data == o.data && + additional_properties == o.additional_properties + end + + # Calculates hash code according to all attributes. + # @return [Integer] Hash code + # @!visibility private + def hash + [data, additional_properties].hash + end + end +end diff --git a/lib/datadog_api_client/v2/models/model_lab_project_type.rb b/lib/datadog_api_client/v2/models/model_lab_project_type.rb new file mode 100644 index 000000000000..641fc71838b2 --- /dev/null +++ b/lib/datadog_api_client/v2/models/model_lab_project_type.rb @@ -0,0 +1,26 @@ +=begin +#Datadog API V2 Collection + +#Collection of all Datadog Public endpoints. + +The version of the OpenAPI document: 1.0 +Contact: support@datadoghq.com +Generated by: https://github.com/DataDog/datadog-api-client-ruby/tree/master/.generator + + Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + This product includes software developed at Datadog (https://www.datadoghq.com/). + Copyright 2020-Present Datadog, Inc. + +=end + +require 'date' +require 'time' + +module DatadogAPIClient::V2 + # The JSON:API type for a Model Lab project resource. + class ModelLabProjectType + include BaseEnumModel + + PROJECTS = "projects".freeze + end +end diff --git a/lib/datadog_api_client/v2/models/model_lab_projects_response.rb b/lib/datadog_api_client/v2/models/model_lab_projects_response.rb new file mode 100644 index 000000000000..fb8fe5206833 --- /dev/null +++ b/lib/datadog_api_client/v2/models/model_lab_projects_response.rb @@ -0,0 +1,156 @@ +=begin +#Datadog API V2 Collection + +#Collection of all Datadog Public endpoints. + +The version of the OpenAPI document: 1.0 +Contact: support@datadoghq.com +Generated by: https://github.com/DataDog/datadog-api-client-ruby/tree/master/.generator + + Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + This product includes software developed at Datadog (https://www.datadoghq.com/). + Copyright 2020-Present Datadog, Inc. + +=end + +require 'date' +require 'time' + +module DatadogAPIClient::V2 + # Response containing a list of Model Lab projects with pagination metadata. + class ModelLabProjectsResponse + include BaseGenericModel + + # The list of projects. + attr_reader :data + + # Pagination links for navigating list responses. + attr_accessor :links + + # Pagination metadata for a list response. + attr_reader :meta + + attr_accessor :additional_properties + + # Attribute mapping from ruby-style variable name to JSON key. + # @!visibility private + def self.attribute_map + { + :'data' => :'data', + :'links' => :'links', + :'meta' => :'meta' + } + end + + # Attribute type mapping. + # @!visibility private + def self.openapi_types + { + :'data' => :'Array', + :'links' => :'ModelLabPaginationLinks', + :'meta' => :'ModelLabPageMeta' + } + end + + # Initializes the object + # @param attributes [Hash] Model attributes in the form of hash + # @!visibility private + def initialize(attributes = {}) + if (!attributes.is_a?(Hash)) + fail ArgumentError, "The input argument (attributes) must be a hash in `DatadogAPIClient::V2::ModelLabProjectsResponse` initialize method" + end + + self.additional_properties = {} + # check to see if the attribute exists and convert string to symbol for hash key + attributes = attributes.each_with_object({}) { |(k, v), h| + if (!self.class.attribute_map.key?(k.to_sym)) + self.additional_properties[k.to_sym] = v + else + h[k.to_sym] = v + end + } + + if attributes.key?(:'data') + if (value = attributes[:'data']).is_a?(Array) + self.data = value + end + end + + if attributes.key?(:'links') + self.links = attributes[:'links'] + end + + if attributes.key?(:'meta') + self.meta = attributes[:'meta'] + end + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + # @!visibility private + def valid? + return false if @data.nil? + return false if @meta.nil? + true + end + + # Custom attribute writer method with validation + # @param data [Object] Object to be assigned + # @!visibility private + def data=(data) + if data.nil? + fail ArgumentError, 'invalid value for "data", data cannot be nil.' + end + @data = data + end + + # Custom attribute writer method with validation + # @param meta [Object] Object to be assigned + # @!visibility private + def meta=(meta) + if meta.nil? + fail ArgumentError, 'invalid value for "meta", meta cannot be nil.' + end + @meta = meta + end + + # Returns the object in the form of hash, with additionalProperties support. + # @return [Hash] Returns the object in the form of hash + # @!visibility private + def to_hash + hash = {} + self.class.attribute_map.each_pair do |attr, param| + value = self.send(attr) + if value.nil? + is_nullable = self.class.openapi_nullable.include?(attr) + next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}")) + end + + hash[param] = _to_hash(value) + end + self.additional_properties.each_pair do |attr, value| + hash[attr] = value + end + hash + end + + # Checks equality by comparing each attribute. + # @param o [Object] Object to be compared + # @!visibility private + def ==(o) + return true if self.equal?(o) + self.class == o.class && + data == o.data && + links == o.links && + meta == o.meta && + additional_properties == o.additional_properties + end + + # Calculates hash code according to all attributes. + # @return [Integer] Hash code + # @!visibility private + def hash + [data, links, meta, additional_properties].hash + end + end +end diff --git a/lib/datadog_api_client/v2/models/model_lab_run_artifacts_attributes.rb b/lib/datadog_api_client/v2/models/model_lab_run_artifacts_attributes.rb new file mode 100644 index 000000000000..fe3d827f99c3 --- /dev/null +++ b/lib/datadog_api_client/v2/models/model_lab_run_artifacts_attributes.rb @@ -0,0 +1,146 @@ +=begin +#Datadog API V2 Collection + +#Collection of all Datadog Public endpoints. + +The version of the OpenAPI document: 1.0 +Contact: support@datadoghq.com +Generated by: https://github.com/DataDog/datadog-api-client-ruby/tree/master/.generator + + Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + This product includes software developed at Datadog (https://www.datadoghq.com/). + Copyright 2020-Present Datadog, Inc. + +=end + +require 'date' +require 'time' + +module DatadogAPIClient::V2 + # Artifact listing for a Model Lab run. + class ModelLabRunArtifactsAttributes + include BaseGenericModel + + # The list of artifact files and directories. + attr_reader :files + + # The path of the run's artifacts relative to the project's artifact root. + attr_reader :path_in_project + + attr_accessor :additional_properties + + # Attribute mapping from ruby-style variable name to JSON key. + # @!visibility private + def self.attribute_map + { + :'files' => :'files', + :'path_in_project' => :'path_in_project' + } + end + + # Attribute type mapping. + # @!visibility private + def self.openapi_types + { + :'files' => :'Array', + :'path_in_project' => :'String' + } + end + + # Initializes the object + # @param attributes [Hash] Model attributes in the form of hash + # @!visibility private + def initialize(attributes = {}) + if (!attributes.is_a?(Hash)) + fail ArgumentError, "The input argument (attributes) must be a hash in `DatadogAPIClient::V2::ModelLabRunArtifactsAttributes` initialize method" + end + + self.additional_properties = {} + # check to see if the attribute exists and convert string to symbol for hash key + attributes = attributes.each_with_object({}) { |(k, v), h| + if (!self.class.attribute_map.key?(k.to_sym)) + self.additional_properties[k.to_sym] = v + else + h[k.to_sym] = v + end + } + + if attributes.key?(:'files') + if (value = attributes[:'files']).is_a?(Array) + self.files = value + end + end + + if attributes.key?(:'path_in_project') + self.path_in_project = attributes[:'path_in_project'] + end + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + # @!visibility private + def valid? + return false if @files.nil? + return false if @path_in_project.nil? + true + end + + # Custom attribute writer method with validation + # @param files [Object] Object to be assigned + # @!visibility private + def files=(files) + if files.nil? + fail ArgumentError, 'invalid value for "files", files cannot be nil.' + end + @files = files + end + + # Custom attribute writer method with validation + # @param path_in_project [Object] Object to be assigned + # @!visibility private + def path_in_project=(path_in_project) + if path_in_project.nil? + fail ArgumentError, 'invalid value for "path_in_project", path_in_project cannot be nil.' + end + @path_in_project = path_in_project + end + + # Returns the object in the form of hash, with additionalProperties support. + # @return [Hash] Returns the object in the form of hash + # @!visibility private + def to_hash + hash = {} + self.class.attribute_map.each_pair do |attr, param| + value = self.send(attr) + if value.nil? + is_nullable = self.class.openapi_nullable.include?(attr) + next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}")) + end + + hash[param] = _to_hash(value) + end + self.additional_properties.each_pair do |attr, value| + hash[attr] = value + end + hash + end + + # Checks equality by comparing each attribute. + # @param o [Object] Object to be compared + # @!visibility private + def ==(o) + return true if self.equal?(o) + self.class == o.class && + files == o.files && + path_in_project == o.path_in_project && + additional_properties == o.additional_properties + end + + # Calculates hash code according to all attributes. + # @return [Integer] Hash code + # @!visibility private + def hash + [files, path_in_project, additional_properties].hash + end + end +end diff --git a/lib/datadog_api_client/v2/models/model_lab_run_artifacts_data.rb b/lib/datadog_api_client/v2/models/model_lab_run_artifacts_data.rb new file mode 100644 index 000000000000..98122a7ed783 --- /dev/null +++ b/lib/datadog_api_client/v2/models/model_lab_run_artifacts_data.rb @@ -0,0 +1,165 @@ +=begin +#Datadog API V2 Collection + +#Collection of all Datadog Public endpoints. + +The version of the OpenAPI document: 1.0 +Contact: support@datadoghq.com +Generated by: https://github.com/DataDog/datadog-api-client-ruby/tree/master/.generator + + Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + This product includes software developed at Datadog (https://www.datadoghq.com/). + Copyright 2020-Present Datadog, Inc. + +=end + +require 'date' +require 'time' + +module DatadogAPIClient::V2 + # A run artifacts JSON:API resource object. + class ModelLabRunArtifactsData + include BaseGenericModel + + # Artifact listing for a Model Lab run. + attr_reader :attributes + + # The unique identifier of the artifacts resource. + attr_reader :id + + # The JSON:API type for a run artifacts resource. + attr_reader :type + + attr_accessor :additional_properties + + # Attribute mapping from ruby-style variable name to JSON key. + # @!visibility private + def self.attribute_map + { + :'attributes' => :'attributes', + :'id' => :'id', + :'type' => :'type' + } + end + + # Attribute type mapping. + # @!visibility private + def self.openapi_types + { + :'attributes' => :'ModelLabRunArtifactsAttributes', + :'id' => :'String', + :'type' => :'ModelLabRunArtifactsType' + } + end + + # Initializes the object + # @param attributes [Hash] Model attributes in the form of hash + # @!visibility private + def initialize(attributes = {}) + if (!attributes.is_a?(Hash)) + fail ArgumentError, "The input argument (attributes) must be a hash in `DatadogAPIClient::V2::ModelLabRunArtifactsData` initialize method" + end + + self.additional_properties = {} + # check to see if the attribute exists and convert string to symbol for hash key + attributes = attributes.each_with_object({}) { |(k, v), h| + if (!self.class.attribute_map.key?(k.to_sym)) + self.additional_properties[k.to_sym] = v + else + h[k.to_sym] = v + end + } + + if attributes.key?(:'attributes') + self.attributes = attributes[:'attributes'] + end + + if attributes.key?(:'id') + self.id = attributes[:'id'] + end + + if attributes.key?(:'type') + self.type = attributes[:'type'] + end + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + # @!visibility private + def valid? + return false if @attributes.nil? + return false if @id.nil? + return false if @type.nil? + true + end + + # Custom attribute writer method with validation + # @param attributes [Object] Object to be assigned + # @!visibility private + def attributes=(attributes) + if attributes.nil? + fail ArgumentError, 'invalid value for "attributes", attributes cannot be nil.' + end + @attributes = attributes + end + + # Custom attribute writer method with validation + # @param id [Object] Object to be assigned + # @!visibility private + def id=(id) + if id.nil? + fail ArgumentError, 'invalid value for "id", id cannot be nil.' + end + @id = id + end + + # Custom attribute writer method with validation + # @param type [Object] Object to be assigned + # @!visibility private + def type=(type) + if type.nil? + fail ArgumentError, 'invalid value for "type", type cannot be nil.' + end + @type = type + end + + # Returns the object in the form of hash, with additionalProperties support. + # @return [Hash] Returns the object in the form of hash + # @!visibility private + def to_hash + hash = {} + self.class.attribute_map.each_pair do |attr, param| + value = self.send(attr) + if value.nil? + is_nullable = self.class.openapi_nullable.include?(attr) + next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}")) + end + + hash[param] = _to_hash(value) + end + self.additional_properties.each_pair do |attr, value| + hash[attr] = value + end + hash + end + + # Checks equality by comparing each attribute. + # @param o [Object] Object to be compared + # @!visibility private + def ==(o) + return true if self.equal?(o) + self.class == o.class && + attributes == o.attributes && + id == o.id && + type == o.type && + additional_properties == o.additional_properties + end + + # Calculates hash code according to all attributes. + # @return [Integer] Hash code + # @!visibility private + def hash + [attributes, id, type, additional_properties].hash + end + end +end diff --git a/lib/datadog_api_client/v2/models/model_lab_run_artifacts_response.rb b/lib/datadog_api_client/v2/models/model_lab_run_artifacts_response.rb new file mode 100644 index 000000000000..aa8aa3908dbd --- /dev/null +++ b/lib/datadog_api_client/v2/models/model_lab_run_artifacts_response.rb @@ -0,0 +1,123 @@ +=begin +#Datadog API V2 Collection + +#Collection of all Datadog Public endpoints. + +The version of the OpenAPI document: 1.0 +Contact: support@datadoghq.com +Generated by: https://github.com/DataDog/datadog-api-client-ruby/tree/master/.generator + + Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + This product includes software developed at Datadog (https://www.datadoghq.com/). + Copyright 2020-Present Datadog, Inc. + +=end + +require 'date' +require 'time' + +module DatadogAPIClient::V2 + # Response containing the artifact listing for a Model Lab run. + class ModelLabRunArtifactsResponse + include BaseGenericModel + + # A run artifacts JSON:API resource object. + attr_reader :data + + attr_accessor :additional_properties + + # Attribute mapping from ruby-style variable name to JSON key. + # @!visibility private + def self.attribute_map + { + :'data' => :'data' + } + end + + # Attribute type mapping. + # @!visibility private + def self.openapi_types + { + :'data' => :'ModelLabRunArtifactsData' + } + end + + # Initializes the object + # @param attributes [Hash] Model attributes in the form of hash + # @!visibility private + def initialize(attributes = {}) + if (!attributes.is_a?(Hash)) + fail ArgumentError, "The input argument (attributes) must be a hash in `DatadogAPIClient::V2::ModelLabRunArtifactsResponse` initialize method" + end + + self.additional_properties = {} + # check to see if the attribute exists and convert string to symbol for hash key + attributes = attributes.each_with_object({}) { |(k, v), h| + if (!self.class.attribute_map.key?(k.to_sym)) + self.additional_properties[k.to_sym] = v + else + h[k.to_sym] = v + end + } + + if attributes.key?(:'data') + self.data = attributes[:'data'] + end + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + # @!visibility private + def valid? + return false if @data.nil? + true + end + + # Custom attribute writer method with validation + # @param data [Object] Object to be assigned + # @!visibility private + def data=(data) + if data.nil? + fail ArgumentError, 'invalid value for "data", data cannot be nil.' + end + @data = data + end + + # Returns the object in the form of hash, with additionalProperties support. + # @return [Hash] Returns the object in the form of hash + # @!visibility private + def to_hash + hash = {} + self.class.attribute_map.each_pair do |attr, param| + value = self.send(attr) + if value.nil? + is_nullable = self.class.openapi_nullable.include?(attr) + next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}")) + end + + hash[param] = _to_hash(value) + end + self.additional_properties.each_pair do |attr, value| + hash[attr] = value + end + hash + end + + # Checks equality by comparing each attribute. + # @param o [Object] Object to be compared + # @!visibility private + def ==(o) + return true if self.equal?(o) + self.class == o.class && + data == o.data && + additional_properties == o.additional_properties + end + + # Calculates hash code according to all attributes. + # @return [Integer] Hash code + # @!visibility private + def hash + [data, additional_properties].hash + end + end +end diff --git a/lib/datadog_api_client/v2/models/model_lab_run_artifacts_type.rb b/lib/datadog_api_client/v2/models/model_lab_run_artifacts_type.rb new file mode 100644 index 000000000000..0f500614c660 --- /dev/null +++ b/lib/datadog_api_client/v2/models/model_lab_run_artifacts_type.rb @@ -0,0 +1,26 @@ +=begin +#Datadog API V2 Collection + +#Collection of all Datadog Public endpoints. + +The version of the OpenAPI document: 1.0 +Contact: support@datadoghq.com +Generated by: https://github.com/DataDog/datadog-api-client-ruby/tree/master/.generator + + Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + This product includes software developed at Datadog (https://www.datadoghq.com/). + Copyright 2020-Present Datadog, Inc. + +=end + +require 'date' +require 'time' + +module DatadogAPIClient::V2 + # The JSON:API type for a run artifacts resource. + class ModelLabRunArtifactsType + include BaseEnumModel + + ARTIFACTS = "artifacts".freeze + end +end diff --git a/lib/datadog_api_client/v2/models/model_lab_run_attributes.rb b/lib/datadog_api_client/v2/models/model_lab_run_attributes.rb new file mode 100644 index 000000000000..43c423d37e95 --- /dev/null +++ b/lib/datadog_api_client/v2/models/model_lab_run_attributes.rb @@ -0,0 +1,454 @@ +=begin +#Datadog API V2 Collection + +#Collection of all Datadog Public endpoints. + +The version of the OpenAPI document: 1.0 +Contact: support@datadoghq.com +Generated by: https://github.com/DataDog/datadog-api-client-ruby/tree/master/.generator + + Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + This product includes software developed at Datadog (https://www.datadoghq.com/). + Copyright 2020-Present Datadog, Inc. + +=end + +require 'date' +require 'time' + +module DatadogAPIClient::V2 + # Attributes of a Model Lab run. + class ModelLabRunAttributes + include BaseGenericModel + + # The date and time the run completed. + attr_accessor :completed_at + + # The date and time the run was created. + attr_reader :created_at + + # The date and time the run was soft-deleted. + attr_accessor :deleted_at + + # Whether a descendant run matched the applied filters. + attr_reader :descendant_match + + # A description of the run. + attr_reader :description + + # The duration of the run in seconds. + attr_accessor :duration + + # An optional external URL associated with the run. + attr_accessor :external_url + + # Whether the run has child runs. + attr_reader :has_children + + # Whether the run is pinned by the current user. + attr_reader :is_pinned + + # Summary statistics for metrics recorded during the run. + attr_reader :metric_summaries + + # The MLflow artifact storage location for this run. + attr_reader :mlflow_artifact_location + + # The name of the run. + attr_reader :name + + # The UUID of the run owner. + attr_accessor :owner_id + + # The list of parameters used for the run. + attr_accessor :params + + # The ID of the project this run belongs to. + attr_reader :project_id + + # The date and time the run started. + attr_reader :started_at + + # The status of a Model Lab run. + attr_reader :status + + # The list of tags associated with the run. + attr_reader :tags + + # The date and time the run was last updated. + attr_reader :updated_at + + attr_accessor :additional_properties + + # Attribute mapping from ruby-style variable name to JSON key. + # @!visibility private + def self.attribute_map + { + :'completed_at' => :'completed_at', + :'created_at' => :'created_at', + :'deleted_at' => :'deleted_at', + :'descendant_match' => :'descendant_match', + :'description' => :'description', + :'duration' => :'duration', + :'external_url' => :'external_url', + :'has_children' => :'has_children', + :'is_pinned' => :'is_pinned', + :'metric_summaries' => :'metric_summaries', + :'mlflow_artifact_location' => :'mlflow_artifact_location', + :'name' => :'name', + :'owner_id' => :'owner_id', + :'params' => :'params', + :'project_id' => :'project_id', + :'started_at' => :'started_at', + :'status' => :'status', + :'tags' => :'tags', + :'updated_at' => :'updated_at' + } + end + + # Attribute type mapping. + # @!visibility private + def self.openapi_types + { + :'completed_at' => :'Time', + :'created_at' => :'Time', + :'deleted_at' => :'Time', + :'descendant_match' => :'Boolean', + :'description' => :'String', + :'duration' => :'Float', + :'external_url' => :'String', + :'has_children' => :'Boolean', + :'is_pinned' => :'Boolean', + :'metric_summaries' => :'Array', + :'mlflow_artifact_location' => :'String', + :'name' => :'String', + :'owner_id' => :'String', + :'params' => :'Array', + :'project_id' => :'Integer', + :'started_at' => :'Time', + :'status' => :'ModelLabRunStatus', + :'tags' => :'Array', + :'updated_at' => :'Time' + } + end + + # List of attributes with nullable: true + # @!visibility private + def self.openapi_nullable + Set.new([ + :'completed_at', + :'deleted_at', + :'duration', + :'external_url', + :'owner_id', + :'params', + ]) + end + + # Initializes the object + # @param attributes [Hash] Model attributes in the form of hash + # @!visibility private + def initialize(attributes = {}) + if (!attributes.is_a?(Hash)) + fail ArgumentError, "The input argument (attributes) must be a hash in `DatadogAPIClient::V2::ModelLabRunAttributes` initialize method" + end + + self.additional_properties = {} + # check to see if the attribute exists and convert string to symbol for hash key + attributes = attributes.each_with_object({}) { |(k, v), h| + if (!self.class.attribute_map.key?(k.to_sym)) + self.additional_properties[k.to_sym] = v + else + h[k.to_sym] = v + end + } + + if attributes.key?(:'completed_at') + self.completed_at = attributes[:'completed_at'] + end + + if attributes.key?(:'created_at') + self.created_at = attributes[:'created_at'] + end + + if attributes.key?(:'deleted_at') + self.deleted_at = attributes[:'deleted_at'] + end + + if attributes.key?(:'descendant_match') + self.descendant_match = attributes[:'descendant_match'] + end + + if attributes.key?(:'description') + self.description = attributes[:'description'] + end + + if attributes.key?(:'duration') + self.duration = attributes[:'duration'] + end + + if attributes.key?(:'external_url') + self.external_url = attributes[:'external_url'] + end + + if attributes.key?(:'has_children') + self.has_children = attributes[:'has_children'] + end + + if attributes.key?(:'is_pinned') + self.is_pinned = attributes[:'is_pinned'] + end + + if attributes.key?(:'metric_summaries') + if (value = attributes[:'metric_summaries']).is_a?(Array) + self.metric_summaries = value + end + end + + if attributes.key?(:'mlflow_artifact_location') + self.mlflow_artifact_location = attributes[:'mlflow_artifact_location'] + end + + if attributes.key?(:'name') + self.name = attributes[:'name'] + end + + if attributes.key?(:'owner_id') + self.owner_id = attributes[:'owner_id'] + end + + if attributes.key?(:'params') + if (value = attributes[:'params']).is_a?(Array) + self.params = value + end + end + + if attributes.key?(:'project_id') + self.project_id = attributes[:'project_id'] + end + + if attributes.key?(:'started_at') + self.started_at = attributes[:'started_at'] + end + + if attributes.key?(:'status') + self.status = attributes[:'status'] + end + + if attributes.key?(:'tags') + if (value = attributes[:'tags']).is_a?(Array) + self.tags = value + end + end + + if attributes.key?(:'updated_at') + self.updated_at = attributes[:'updated_at'] + end + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + # @!visibility private + def valid? + return false if @created_at.nil? + return false if @descendant_match.nil? + return false if @description.nil? + return false if @has_children.nil? + return false if @is_pinned.nil? + return false if @metric_summaries.nil? + return false if @mlflow_artifact_location.nil? + return false if @name.nil? + return false if @project_id.nil? + return false if @started_at.nil? + return false if @status.nil? + return false if @tags.nil? + return false if @updated_at.nil? + true + end + + # Custom attribute writer method with validation + # @param created_at [Object] Object to be assigned + # @!visibility private + def created_at=(created_at) + if created_at.nil? + fail ArgumentError, 'invalid value for "created_at", created_at cannot be nil.' + end + @created_at = created_at + end + + # Custom attribute writer method with validation + # @param descendant_match [Object] Object to be assigned + # @!visibility private + def descendant_match=(descendant_match) + if descendant_match.nil? + fail ArgumentError, 'invalid value for "descendant_match", descendant_match cannot be nil.' + end + @descendant_match = descendant_match + end + + # Custom attribute writer method with validation + # @param description [Object] Object to be assigned + # @!visibility private + def description=(description) + if description.nil? + fail ArgumentError, 'invalid value for "description", description cannot be nil.' + end + @description = description + end + + # Custom attribute writer method with validation + # @param has_children [Object] Object to be assigned + # @!visibility private + def has_children=(has_children) + if has_children.nil? + fail ArgumentError, 'invalid value for "has_children", has_children cannot be nil.' + end + @has_children = has_children + end + + # Custom attribute writer method with validation + # @param is_pinned [Object] Object to be assigned + # @!visibility private + def is_pinned=(is_pinned) + if is_pinned.nil? + fail ArgumentError, 'invalid value for "is_pinned", is_pinned cannot be nil.' + end + @is_pinned = is_pinned + end + + # Custom attribute writer method with validation + # @param metric_summaries [Object] Object to be assigned + # @!visibility private + def metric_summaries=(metric_summaries) + if metric_summaries.nil? + fail ArgumentError, 'invalid value for "metric_summaries", metric_summaries cannot be nil.' + end + @metric_summaries = metric_summaries + end + + # Custom attribute writer method with validation + # @param mlflow_artifact_location [Object] Object to be assigned + # @!visibility private + def mlflow_artifact_location=(mlflow_artifact_location) + if mlflow_artifact_location.nil? + fail ArgumentError, 'invalid value for "mlflow_artifact_location", mlflow_artifact_location cannot be nil.' + end + @mlflow_artifact_location = mlflow_artifact_location + end + + # Custom attribute writer method with validation + # @param name [Object] Object to be assigned + # @!visibility private + def name=(name) + if name.nil? + fail ArgumentError, 'invalid value for "name", name cannot be nil.' + end + @name = name + end + + # Custom attribute writer method with validation + # @param project_id [Object] Object to be assigned + # @!visibility private + def project_id=(project_id) + if project_id.nil? + fail ArgumentError, 'invalid value for "project_id", project_id cannot be nil.' + end + @project_id = project_id + end + + # Custom attribute writer method with validation + # @param started_at [Object] Object to be assigned + # @!visibility private + def started_at=(started_at) + if started_at.nil? + fail ArgumentError, 'invalid value for "started_at", started_at cannot be nil.' + end + @started_at = started_at + end + + # Custom attribute writer method with validation + # @param status [Object] Object to be assigned + # @!visibility private + def status=(status) + if status.nil? + fail ArgumentError, 'invalid value for "status", status cannot be nil.' + end + @status = status + end + + # Custom attribute writer method with validation + # @param tags [Object] Object to be assigned + # @!visibility private + def tags=(tags) + if tags.nil? + fail ArgumentError, 'invalid value for "tags", tags cannot be nil.' + end + @tags = tags + end + + # Custom attribute writer method with validation + # @param updated_at [Object] Object to be assigned + # @!visibility private + def updated_at=(updated_at) + if updated_at.nil? + fail ArgumentError, 'invalid value for "updated_at", updated_at cannot be nil.' + end + @updated_at = updated_at + end + + # Returns the object in the form of hash, with additionalProperties support. + # @return [Hash] Returns the object in the form of hash + # @!visibility private + def to_hash + hash = {} + self.class.attribute_map.each_pair do |attr, param| + value = self.send(attr) + if value.nil? + is_nullable = self.class.openapi_nullable.include?(attr) + next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}")) + end + + hash[param] = _to_hash(value) + end + self.additional_properties.each_pair do |attr, value| + hash[attr] = value + end + hash + end + + # Checks equality by comparing each attribute. + # @param o [Object] Object to be compared + # @!visibility private + def ==(o) + return true if self.equal?(o) + self.class == o.class && + completed_at == o.completed_at && + created_at == o.created_at && + deleted_at == o.deleted_at && + descendant_match == o.descendant_match && + description == o.description && + duration == o.duration && + external_url == o.external_url && + has_children == o.has_children && + is_pinned == o.is_pinned && + metric_summaries == o.metric_summaries && + mlflow_artifact_location == o.mlflow_artifact_location && + name == o.name && + owner_id == o.owner_id && + params == o.params && + project_id == o.project_id && + started_at == o.started_at && + status == o.status && + tags == o.tags && + updated_at == o.updated_at && + additional_properties == o.additional_properties + end + + # Calculates hash code according to all attributes. + # @return [Integer] Hash code + # @!visibility private + def hash + [completed_at, created_at, deleted_at, descendant_match, description, duration, external_url, has_children, is_pinned, metric_summaries, mlflow_artifact_location, name, owner_id, params, project_id, started_at, status, tags, updated_at, additional_properties].hash + end + end +end diff --git a/lib/datadog_api_client/v2/models/model_lab_run_data.rb b/lib/datadog_api_client/v2/models/model_lab_run_data.rb new file mode 100644 index 000000000000..f911ced69046 --- /dev/null +++ b/lib/datadog_api_client/v2/models/model_lab_run_data.rb @@ -0,0 +1,165 @@ +=begin +#Datadog API V2 Collection + +#Collection of all Datadog Public endpoints. + +The version of the OpenAPI document: 1.0 +Contact: support@datadoghq.com +Generated by: https://github.com/DataDog/datadog-api-client-ruby/tree/master/.generator + + Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + This product includes software developed at Datadog (https://www.datadoghq.com/). + Copyright 2020-Present Datadog, Inc. + +=end + +require 'date' +require 'time' + +module DatadogAPIClient::V2 + # A Model Lab run JSON:API resource object. + class ModelLabRunData + include BaseGenericModel + + # Attributes of a Model Lab run. + attr_reader :attributes + + # The unique identifier of the run. + attr_reader :id + + # The JSON:API type for a Model Lab run resource. + attr_reader :type + + attr_accessor :additional_properties + + # Attribute mapping from ruby-style variable name to JSON key. + # @!visibility private + def self.attribute_map + { + :'attributes' => :'attributes', + :'id' => :'id', + :'type' => :'type' + } + end + + # Attribute type mapping. + # @!visibility private + def self.openapi_types + { + :'attributes' => :'ModelLabRunAttributes', + :'id' => :'String', + :'type' => :'ModelLabRunType' + } + end + + # Initializes the object + # @param attributes [Hash] Model attributes in the form of hash + # @!visibility private + def initialize(attributes = {}) + if (!attributes.is_a?(Hash)) + fail ArgumentError, "The input argument (attributes) must be a hash in `DatadogAPIClient::V2::ModelLabRunData` initialize method" + end + + self.additional_properties = {} + # check to see if the attribute exists and convert string to symbol for hash key + attributes = attributes.each_with_object({}) { |(k, v), h| + if (!self.class.attribute_map.key?(k.to_sym)) + self.additional_properties[k.to_sym] = v + else + h[k.to_sym] = v + end + } + + if attributes.key?(:'attributes') + self.attributes = attributes[:'attributes'] + end + + if attributes.key?(:'id') + self.id = attributes[:'id'] + end + + if attributes.key?(:'type') + self.type = attributes[:'type'] + end + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + # @!visibility private + def valid? + return false if @attributes.nil? + return false if @id.nil? + return false if @type.nil? + true + end + + # Custom attribute writer method with validation + # @param attributes [Object] Object to be assigned + # @!visibility private + def attributes=(attributes) + if attributes.nil? + fail ArgumentError, 'invalid value for "attributes", attributes cannot be nil.' + end + @attributes = attributes + end + + # Custom attribute writer method with validation + # @param id [Object] Object to be assigned + # @!visibility private + def id=(id) + if id.nil? + fail ArgumentError, 'invalid value for "id", id cannot be nil.' + end + @id = id + end + + # Custom attribute writer method with validation + # @param type [Object] Object to be assigned + # @!visibility private + def type=(type) + if type.nil? + fail ArgumentError, 'invalid value for "type", type cannot be nil.' + end + @type = type + end + + # Returns the object in the form of hash, with additionalProperties support. + # @return [Hash] Returns the object in the form of hash + # @!visibility private + def to_hash + hash = {} + self.class.attribute_map.each_pair do |attr, param| + value = self.send(attr) + if value.nil? + is_nullable = self.class.openapi_nullable.include?(attr) + next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}")) + end + + hash[param] = _to_hash(value) + end + self.additional_properties.each_pair do |attr, value| + hash[attr] = value + end + hash + end + + # Checks equality by comparing each attribute. + # @param o [Object] Object to be compared + # @!visibility private + def ==(o) + return true if self.equal?(o) + self.class == o.class && + attributes == o.attributes && + id == o.id && + type == o.type && + additional_properties == o.additional_properties + end + + # Calculates hash code according to all attributes. + # @return [Integer] Hash code + # @!visibility private + def hash + [attributes, id, type, additional_properties].hash + end + end +end diff --git a/lib/datadog_api_client/v2/models/model_lab_run_param.rb b/lib/datadog_api_client/v2/models/model_lab_run_param.rb new file mode 100644 index 000000000000..28de8a6389e3 --- /dev/null +++ b/lib/datadog_api_client/v2/models/model_lab_run_param.rb @@ -0,0 +1,144 @@ +=begin +#Datadog API V2 Collection + +#Collection of all Datadog Public endpoints. + +The version of the OpenAPI document: 1.0 +Contact: support@datadoghq.com +Generated by: https://github.com/DataDog/datadog-api-client-ruby/tree/master/.generator + + Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + This product includes software developed at Datadog (https://www.datadoghq.com/). + Copyright 2020-Present Datadog, Inc. + +=end + +require 'date' +require 'time' + +module DatadogAPIClient::V2 + # A key-value parameter for a Model Lab run. + class ModelLabRunParam + include BaseGenericModel + + # The parameter key. + attr_reader :key + + # The parameter value. + attr_reader :value + + attr_accessor :additional_properties + + # Attribute mapping from ruby-style variable name to JSON key. + # @!visibility private + def self.attribute_map + { + :'key' => :'key', + :'value' => :'value' + } + end + + # Attribute type mapping. + # @!visibility private + def self.openapi_types + { + :'key' => :'String', + :'value' => :'String' + } + end + + # Initializes the object + # @param attributes [Hash] Model attributes in the form of hash + # @!visibility private + def initialize(attributes = {}) + if (!attributes.is_a?(Hash)) + fail ArgumentError, "The input argument (attributes) must be a hash in `DatadogAPIClient::V2::ModelLabRunParam` initialize method" + end + + self.additional_properties = {} + # check to see if the attribute exists and convert string to symbol for hash key + attributes = attributes.each_with_object({}) { |(k, v), h| + if (!self.class.attribute_map.key?(k.to_sym)) + self.additional_properties[k.to_sym] = v + else + h[k.to_sym] = v + end + } + + if attributes.key?(:'key') + self.key = attributes[:'key'] + end + + if attributes.key?(:'value') + self.value = attributes[:'value'] + end + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + # @!visibility private + def valid? + return false if @key.nil? + return false if @value.nil? + true + end + + # Custom attribute writer method with validation + # @param key [Object] Object to be assigned + # @!visibility private + def key=(key) + if key.nil? + fail ArgumentError, 'invalid value for "key", key cannot be nil.' + end + @key = key + end + + # Custom attribute writer method with validation + # @param value [Object] Object to be assigned + # @!visibility private + def value=(value) + if value.nil? + fail ArgumentError, 'invalid value for "value", value cannot be nil.' + end + @value = value + end + + # Returns the object in the form of hash, with additionalProperties support. + # @return [Hash] Returns the object in the form of hash + # @!visibility private + def to_hash + hash = {} + self.class.attribute_map.each_pair do |attr, param| + value = self.send(attr) + if value.nil? + is_nullable = self.class.openapi_nullable.include?(attr) + next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}")) + end + + hash[param] = _to_hash(value) + end + self.additional_properties.each_pair do |attr, value| + hash[attr] = value + end + hash + end + + # Checks equality by comparing each attribute. + # @param o [Object] Object to be compared + # @!visibility private + def ==(o) + return true if self.equal?(o) + self.class == o.class && + key == o.key && + value == o.value && + additional_properties == o.additional_properties + end + + # Calculates hash code according to all attributes. + # @return [Integer] Hash code + # @!visibility private + def hash + [key, value, additional_properties].hash + end + end +end diff --git a/lib/datadog_api_client/v2/models/model_lab_run_response.rb b/lib/datadog_api_client/v2/models/model_lab_run_response.rb new file mode 100644 index 000000000000..c873009e7852 --- /dev/null +++ b/lib/datadog_api_client/v2/models/model_lab_run_response.rb @@ -0,0 +1,123 @@ +=begin +#Datadog API V2 Collection + +#Collection of all Datadog Public endpoints. + +The version of the OpenAPI document: 1.0 +Contact: support@datadoghq.com +Generated by: https://github.com/DataDog/datadog-api-client-ruby/tree/master/.generator + + Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + This product includes software developed at Datadog (https://www.datadoghq.com/). + Copyright 2020-Present Datadog, Inc. + +=end + +require 'date' +require 'time' + +module DatadogAPIClient::V2 + # Response containing a single Model Lab run. + class ModelLabRunResponse + include BaseGenericModel + + # A Model Lab run JSON:API resource object. + attr_reader :data + + attr_accessor :additional_properties + + # Attribute mapping from ruby-style variable name to JSON key. + # @!visibility private + def self.attribute_map + { + :'data' => :'data' + } + end + + # Attribute type mapping. + # @!visibility private + def self.openapi_types + { + :'data' => :'ModelLabRunData' + } + end + + # Initializes the object + # @param attributes [Hash] Model attributes in the form of hash + # @!visibility private + def initialize(attributes = {}) + if (!attributes.is_a?(Hash)) + fail ArgumentError, "The input argument (attributes) must be a hash in `DatadogAPIClient::V2::ModelLabRunResponse` initialize method" + end + + self.additional_properties = {} + # check to see if the attribute exists and convert string to symbol for hash key + attributes = attributes.each_with_object({}) { |(k, v), h| + if (!self.class.attribute_map.key?(k.to_sym)) + self.additional_properties[k.to_sym] = v + else + h[k.to_sym] = v + end + } + + if attributes.key?(:'data') + self.data = attributes[:'data'] + end + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + # @!visibility private + def valid? + return false if @data.nil? + true + end + + # Custom attribute writer method with validation + # @param data [Object] Object to be assigned + # @!visibility private + def data=(data) + if data.nil? + fail ArgumentError, 'invalid value for "data", data cannot be nil.' + end + @data = data + end + + # Returns the object in the form of hash, with additionalProperties support. + # @return [Hash] Returns the object in the form of hash + # @!visibility private + def to_hash + hash = {} + self.class.attribute_map.each_pair do |attr, param| + value = self.send(attr) + if value.nil? + is_nullable = self.class.openapi_nullable.include?(attr) + next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}")) + end + + hash[param] = _to_hash(value) + end + self.additional_properties.each_pair do |attr, value| + hash[attr] = value + end + hash + end + + # Checks equality by comparing each attribute. + # @param o [Object] Object to be compared + # @!visibility private + def ==(o) + return true if self.equal?(o) + self.class == o.class && + data == o.data && + additional_properties == o.additional_properties + end + + # Calculates hash code according to all attributes. + # @return [Integer] Hash code + # @!visibility private + def hash + [data, additional_properties].hash + end + end +end diff --git a/lib/datadog_api_client/v2/models/model_lab_run_status.rb b/lib/datadog_api_client/v2/models/model_lab_run_status.rb new file mode 100644 index 000000000000..a03171d0b447 --- /dev/null +++ b/lib/datadog_api_client/v2/models/model_lab_run_status.rb @@ -0,0 +1,32 @@ +=begin +#Datadog API V2 Collection + +#Collection of all Datadog Public endpoints. + +The version of the OpenAPI document: 1.0 +Contact: support@datadoghq.com +Generated by: https://github.com/DataDog/datadog-api-client-ruby/tree/master/.generator + + Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + This product includes software developed at Datadog (https://www.datadoghq.com/). + Copyright 2020-Present Datadog, Inc. + +=end + +require 'date' +require 'time' + +module DatadogAPIClient::V2 + # The status of a Model Lab run. + class ModelLabRunStatus + include BaseEnumModel + + PENDING = "pending".freeze + RUNNING = "running".freeze + COMPLETED = "completed".freeze + FAILED = "failed".freeze + KILLED = "killed".freeze + UNRESPONSIVE = "unresponsive".freeze + PAUSED = "paused".freeze + end +end diff --git a/lib/datadog_api_client/v2/models/model_lab_run_type.rb b/lib/datadog_api_client/v2/models/model_lab_run_type.rb new file mode 100644 index 000000000000..cc6e064fda26 --- /dev/null +++ b/lib/datadog_api_client/v2/models/model_lab_run_type.rb @@ -0,0 +1,26 @@ +=begin +#Datadog API V2 Collection + +#Collection of all Datadog Public endpoints. + +The version of the OpenAPI document: 1.0 +Contact: support@datadoghq.com +Generated by: https://github.com/DataDog/datadog-api-client-ruby/tree/master/.generator + + Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + This product includes software developed at Datadog (https://www.datadoghq.com/). + Copyright 2020-Present Datadog, Inc. + +=end + +require 'date' +require 'time' + +module DatadogAPIClient::V2 + # The JSON:API type for a Model Lab run resource. + class ModelLabRunType + include BaseEnumModel + + RUNS = "runs".freeze + end +end diff --git a/lib/datadog_api_client/v2/models/model_lab_runs_response.rb b/lib/datadog_api_client/v2/models/model_lab_runs_response.rb new file mode 100644 index 000000000000..82681662b76f --- /dev/null +++ b/lib/datadog_api_client/v2/models/model_lab_runs_response.rb @@ -0,0 +1,156 @@ +=begin +#Datadog API V2 Collection + +#Collection of all Datadog Public endpoints. + +The version of the OpenAPI document: 1.0 +Contact: support@datadoghq.com +Generated by: https://github.com/DataDog/datadog-api-client-ruby/tree/master/.generator + + Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + This product includes software developed at Datadog (https://www.datadoghq.com/). + Copyright 2020-Present Datadog, Inc. + +=end + +require 'date' +require 'time' + +module DatadogAPIClient::V2 + # Response containing a list of Model Lab runs with pagination metadata. + class ModelLabRunsResponse + include BaseGenericModel + + # The list of runs. + attr_reader :data + + # Pagination links for navigating list responses. + attr_accessor :links + + # Pagination metadata for a list response. + attr_reader :meta + + attr_accessor :additional_properties + + # Attribute mapping from ruby-style variable name to JSON key. + # @!visibility private + def self.attribute_map + { + :'data' => :'data', + :'links' => :'links', + :'meta' => :'meta' + } + end + + # Attribute type mapping. + # @!visibility private + def self.openapi_types + { + :'data' => :'Array', + :'links' => :'ModelLabPaginationLinks', + :'meta' => :'ModelLabPageMeta' + } + end + + # Initializes the object + # @param attributes [Hash] Model attributes in the form of hash + # @!visibility private + def initialize(attributes = {}) + if (!attributes.is_a?(Hash)) + fail ArgumentError, "The input argument (attributes) must be a hash in `DatadogAPIClient::V2::ModelLabRunsResponse` initialize method" + end + + self.additional_properties = {} + # check to see if the attribute exists and convert string to symbol for hash key + attributes = attributes.each_with_object({}) { |(k, v), h| + if (!self.class.attribute_map.key?(k.to_sym)) + self.additional_properties[k.to_sym] = v + else + h[k.to_sym] = v + end + } + + if attributes.key?(:'data') + if (value = attributes[:'data']).is_a?(Array) + self.data = value + end + end + + if attributes.key?(:'links') + self.links = attributes[:'links'] + end + + if attributes.key?(:'meta') + self.meta = attributes[:'meta'] + end + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + # @!visibility private + def valid? + return false if @data.nil? + return false if @meta.nil? + true + end + + # Custom attribute writer method with validation + # @param data [Object] Object to be assigned + # @!visibility private + def data=(data) + if data.nil? + fail ArgumentError, 'invalid value for "data", data cannot be nil.' + end + @data = data + end + + # Custom attribute writer method with validation + # @param meta [Object] Object to be assigned + # @!visibility private + def meta=(meta) + if meta.nil? + fail ArgumentError, 'invalid value for "meta", meta cannot be nil.' + end + @meta = meta + end + + # Returns the object in the form of hash, with additionalProperties support. + # @return [Hash] Returns the object in the form of hash + # @!visibility private + def to_hash + hash = {} + self.class.attribute_map.each_pair do |attr, param| + value = self.send(attr) + if value.nil? + is_nullable = self.class.openapi_nullable.include?(attr) + next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}")) + end + + hash[param] = _to_hash(value) + end + self.additional_properties.each_pair do |attr, value| + hash[attr] = value + end + hash + end + + # Checks equality by comparing each attribute. + # @param o [Object] Object to be compared + # @!visibility private + def ==(o) + return true if self.equal?(o) + self.class == o.class && + data == o.data && + links == o.links && + meta == o.meta && + additional_properties == o.additional_properties + end + + # Calculates hash code according to all attributes. + # @return [Integer] Hash code + # @!visibility private + def hash + [data, links, meta, additional_properties].hash + end + end +end diff --git a/lib/datadog_api_client/v2/models/model_lab_tag.rb b/lib/datadog_api_client/v2/models/model_lab_tag.rb new file mode 100644 index 000000000000..d056b8c9b154 --- /dev/null +++ b/lib/datadog_api_client/v2/models/model_lab_tag.rb @@ -0,0 +1,144 @@ +=begin +#Datadog API V2 Collection + +#Collection of all Datadog Public endpoints. + +The version of the OpenAPI document: 1.0 +Contact: support@datadoghq.com +Generated by: https://github.com/DataDog/datadog-api-client-ruby/tree/master/.generator + + Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + This product includes software developed at Datadog (https://www.datadoghq.com/). + Copyright 2020-Present Datadog, Inc. + +=end + +require 'date' +require 'time' + +module DatadogAPIClient::V2 + # A key-value tag attached to a resource. + class ModelLabTag + include BaseGenericModel + + # The tag key. + attr_reader :key + + # The tag value. + attr_reader :value + + attr_accessor :additional_properties + + # Attribute mapping from ruby-style variable name to JSON key. + # @!visibility private + def self.attribute_map + { + :'key' => :'key', + :'value' => :'value' + } + end + + # Attribute type mapping. + # @!visibility private + def self.openapi_types + { + :'key' => :'String', + :'value' => :'String' + } + end + + # Initializes the object + # @param attributes [Hash] Model attributes in the form of hash + # @!visibility private + def initialize(attributes = {}) + if (!attributes.is_a?(Hash)) + fail ArgumentError, "The input argument (attributes) must be a hash in `DatadogAPIClient::V2::ModelLabTag` initialize method" + end + + self.additional_properties = {} + # check to see if the attribute exists and convert string to symbol for hash key + attributes = attributes.each_with_object({}) { |(k, v), h| + if (!self.class.attribute_map.key?(k.to_sym)) + self.additional_properties[k.to_sym] = v + else + h[k.to_sym] = v + end + } + + if attributes.key?(:'key') + self.key = attributes[:'key'] + end + + if attributes.key?(:'value') + self.value = attributes[:'value'] + end + end + + # Check to see if the all the properties in the model are valid + # @return true if the model is valid + # @!visibility private + def valid? + return false if @key.nil? + return false if @value.nil? + true + end + + # Custom attribute writer method with validation + # @param key [Object] Object to be assigned + # @!visibility private + def key=(key) + if key.nil? + fail ArgumentError, 'invalid value for "key", key cannot be nil.' + end + @key = key + end + + # Custom attribute writer method with validation + # @param value [Object] Object to be assigned + # @!visibility private + def value=(value) + if value.nil? + fail ArgumentError, 'invalid value for "value", value cannot be nil.' + end + @value = value + end + + # Returns the object in the form of hash, with additionalProperties support. + # @return [Hash] Returns the object in the form of hash + # @!visibility private + def to_hash + hash = {} + self.class.attribute_map.each_pair do |attr, param| + value = self.send(attr) + if value.nil? + is_nullable = self.class.openapi_nullable.include?(attr) + next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}")) + end + + hash[param] = _to_hash(value) + end + self.additional_properties.each_pair do |attr, value| + hash[attr] = value + end + hash + end + + # Checks equality by comparing each attribute. + # @param o [Object] Object to be compared + # @!visibility private + def ==(o) + return true if self.equal?(o) + self.class == o.class && + key == o.key && + value == o.value && + additional_properties == o.additional_properties + end + + # Calculates hash code according to all attributes. + # @return [Integer] Hash code + # @!visibility private + def hash + [key, value, additional_properties].hash + end + end +end