Skip to content

Commit d6400b4

Browse files
chore(closes OPEN-11851): expose update project endpoint
1 parent b38265a commit d6400b4

16 files changed

Lines changed: 570 additions & 8 deletions

‎.stats.yml‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
configured_endpoints: 31
2-
openapi_spec_hash: a574ef9082e992c25120554886a9ab7a
3-
config_hash: 2d4f9621ceae4bb25977853a964a0e54
1+
configured_endpoints: 32
2+
openapi_spec_hash: 72e2dd8871904fe6c130d1c81b033d5a
3+
config_hash: f75dd97d47c446f8fdc8bcb36f445eea

‎api.md‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,13 @@
33
Types:
44

55
```python
6-
from openlayer.types import ProjectCreateResponse, ProjectListResponse
6+
from openlayer.types import ProjectCreateResponse, ProjectUpdateResponse, ProjectListResponse
77
```
88

99
Methods:
1010

1111
- <code title="post /projects">client.projects.<a href="./src/openlayer/resources/projects/projects.py">create</a>(\*\*<a href="src/openlayer/types/project_create_params.py">params</a>) -> <a href="./src/openlayer/types/project_create_response.py">ProjectCreateResponse</a></code>
12+
- <code title="patch /projects/{projectId}">client.projects.<a href="./src/openlayer/resources/projects/projects.py">update</a>(project_id, \*\*<a href="src/openlayer/types/project_update_params.py">params</a>) -> <a href="./src/openlayer/types/project_update_response.py">ProjectUpdateResponse</a></code>
1213
- <code title="get /projects">client.projects.<a href="./src/openlayer/resources/projects/projects.py">list</a>(\*\*<a href="src/openlayer/types/project_list_params.py">params</a>) -> <a href="./src/openlayer/types/project_list_response.py">ProjectListResponse</a></code>
1314
- <code title="delete /projects/{projectId}">client.projects.<a href="./src/openlayer/resources/projects/projects.py">delete</a>(project_id) -> None</code>
1415

‎src/openlayer/resources/projects/projects.py‎

Lines changed: 175 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
TestsResourceWithStreamingResponse,
1616
AsyncTestsResourceWithStreamingResponse,
1717
)
18-
from ...types import project_list_params, project_create_params
18+
from ...types import project_list_params, project_create_params, project_update_params
1919
from .commits import (
2020
CommitsResource,
2121
AsyncCommitsResource,
@@ -24,7 +24,7 @@
2424
CommitsResourceWithStreamingResponse,
2525
AsyncCommitsResourceWithStreamingResponse,
2626
)
27-
from ..._types import Body, Omit, Query, Headers, NoneType, NotGiven, omit, not_given
27+
from ..._types import Body, Omit, Query, Headers, NoneType, NotGiven, SequenceNotStr, omit, not_given
2828
from ..._utils import path_template, maybe_transform, async_maybe_transform
2929
from ..._compat import cached_property
3030
from ..._resource import SyncAPIResource, AsyncAPIResource
@@ -45,6 +45,7 @@
4545
)
4646
from ...types.project_list_response import ProjectListResponse
4747
from ...types.project_create_response import ProjectCreateResponse
48+
from ...types.project_update_response import ProjectUpdateResponse
4849

4950
__all__ = ["ProjectsResource", "AsyncProjectsResource"]
5051

@@ -86,7 +87,11 @@ def create(
8687
*,
8788
name: str,
8889
task_type: Literal["llm-base", "tabular-classification", "tabular-regression", "text-classification"],
90+
data_retention_days: Optional[int] | Omit = omit,
8991
description: Optional[str] | Omit = omit,
92+
model_developer: Optional[str] | Omit = omit,
93+
model_types: Optional[SequenceNotStr[str]] | Omit = omit,
94+
purpose: Optional[str] | Omit = omit,
9095
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
9196
# The extra values given here take precedence over values defined on the client or passed to this method.
9297
extra_headers: Headers | None = None,
@@ -102,8 +107,17 @@ def create(
102107
103108
task_type: The task type of the project.
104109
110+
data_retention_days: Number of days to retain monitoring data for this project. Null means data is
111+
retained indefinitely.
112+
105113
description: The project description.
106114
115+
model_developer: Who developed the model used in this project.
116+
117+
model_types: The kinds of model used in this project.
118+
119+
purpose: What the system in this project is intended to do.
120+
107121
extra_headers: Send extra headers
108122
109123
extra_query: Add additional query parameters to the request
@@ -118,7 +132,11 @@ def create(
118132
{
119133
"name": name,
120134
"task_type": task_type,
135+
"data_retention_days": data_retention_days,
121136
"description": description,
137+
"model_developer": model_developer,
138+
"model_types": model_types,
139+
"purpose": purpose,
122140
},
123141
project_create_params.ProjectCreateParams,
124142
),
@@ -128,6 +146,69 @@ def create(
128146
cast_to=ProjectCreateResponse,
129147
)
130148

149+
def update(
150+
self,
151+
project_id: str,
152+
*,
153+
data_retention_days: Optional[int] | Omit = omit,
154+
description: Optional[str] | Omit = omit,
155+
model_developer: Optional[str] | Omit = omit,
156+
model_types: Optional[SequenceNotStr[str]] | Omit = omit,
157+
name: str | Omit = omit,
158+
purpose: Optional[str] | Omit = omit,
159+
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
160+
# The extra values given here take precedence over values defined on the client or passed to this method.
161+
extra_headers: Headers | None = None,
162+
extra_query: Query | None = None,
163+
extra_body: Body | None = None,
164+
timeout: float | httpx.Timeout | None | NotGiven = not_given,
165+
) -> ProjectUpdateResponse:
166+
"""
167+
Update a project's metadata.
168+
169+
Args:
170+
data_retention_days: Number of days to retain monitoring data for this project. Null means data is
171+
retained indefinitely.
172+
173+
description: The project description.
174+
175+
model_developer: Who developed the model used in this project.
176+
177+
model_types: The kinds of model used in this project.
178+
179+
name: The project name.
180+
181+
purpose: What the system in this project is intended to do.
182+
183+
extra_headers: Send extra headers
184+
185+
extra_query: Add additional query parameters to the request
186+
187+
extra_body: Add additional JSON properties to the request
188+
189+
timeout: Override the client-level default timeout for this request, in seconds
190+
"""
191+
if not project_id:
192+
raise ValueError(f"Expected a non-empty value for `project_id` but received {project_id!r}")
193+
return self._patch(
194+
path_template("/projects/{project_id}", project_id=project_id),
195+
body=maybe_transform(
196+
{
197+
"data_retention_days": data_retention_days,
198+
"description": description,
199+
"model_developer": model_developer,
200+
"model_types": model_types,
201+
"name": name,
202+
"purpose": purpose,
203+
},
204+
project_update_params.ProjectUpdateParams,
205+
),
206+
options=make_request_options(
207+
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
208+
),
209+
cast_to=ProjectUpdateResponse,
210+
)
211+
131212
def list(
132213
self,
133214
*,
@@ -255,7 +336,11 @@ async def create(
255336
*,
256337
name: str,
257338
task_type: Literal["llm-base", "tabular-classification", "tabular-regression", "text-classification"],
339+
data_retention_days: Optional[int] | Omit = omit,
258340
description: Optional[str] | Omit = omit,
341+
model_developer: Optional[str] | Omit = omit,
342+
model_types: Optional[SequenceNotStr[str]] | Omit = omit,
343+
purpose: Optional[str] | Omit = omit,
259344
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
260345
# The extra values given here take precedence over values defined on the client or passed to this method.
261346
extra_headers: Headers | None = None,
@@ -271,8 +356,17 @@ async def create(
271356
272357
task_type: The task type of the project.
273358
359+
data_retention_days: Number of days to retain monitoring data for this project. Null means data is
360+
retained indefinitely.
361+
274362
description: The project description.
275363
364+
model_developer: Who developed the model used in this project.
365+
366+
model_types: The kinds of model used in this project.
367+
368+
purpose: What the system in this project is intended to do.
369+
276370
extra_headers: Send extra headers
277371
278372
extra_query: Add additional query parameters to the request
@@ -287,7 +381,11 @@ async def create(
287381
{
288382
"name": name,
289383
"task_type": task_type,
384+
"data_retention_days": data_retention_days,
290385
"description": description,
386+
"model_developer": model_developer,
387+
"model_types": model_types,
388+
"purpose": purpose,
291389
},
292390
project_create_params.ProjectCreateParams,
293391
),
@@ -297,6 +395,69 @@ async def create(
297395
cast_to=ProjectCreateResponse,
298396
)
299397

398+
async def update(
399+
self,
400+
project_id: str,
401+
*,
402+
data_retention_days: Optional[int] | Omit = omit,
403+
description: Optional[str] | Omit = omit,
404+
model_developer: Optional[str] | Omit = omit,
405+
model_types: Optional[SequenceNotStr[str]] | Omit = omit,
406+
name: str | Omit = omit,
407+
purpose: Optional[str] | Omit = omit,
408+
# Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
409+
# The extra values given here take precedence over values defined on the client or passed to this method.
410+
extra_headers: Headers | None = None,
411+
extra_query: Query | None = None,
412+
extra_body: Body | None = None,
413+
timeout: float | httpx.Timeout | None | NotGiven = not_given,
414+
) -> ProjectUpdateResponse:
415+
"""
416+
Update a project's metadata.
417+
418+
Args:
419+
data_retention_days: Number of days to retain monitoring data for this project. Null means data is
420+
retained indefinitely.
421+
422+
description: The project description.
423+
424+
model_developer: Who developed the model used in this project.
425+
426+
model_types: The kinds of model used in this project.
427+
428+
name: The project name.
429+
430+
purpose: What the system in this project is intended to do.
431+
432+
extra_headers: Send extra headers
433+
434+
extra_query: Add additional query parameters to the request
435+
436+
extra_body: Add additional JSON properties to the request
437+
438+
timeout: Override the client-level default timeout for this request, in seconds
439+
"""
440+
if not project_id:
441+
raise ValueError(f"Expected a non-empty value for `project_id` but received {project_id!r}")
442+
return await self._patch(
443+
path_template("/projects/{project_id}", project_id=project_id),
444+
body=await async_maybe_transform(
445+
{
446+
"data_retention_days": data_retention_days,
447+
"description": description,
448+
"model_developer": model_developer,
449+
"model_types": model_types,
450+
"name": name,
451+
"purpose": purpose,
452+
},
453+
project_update_params.ProjectUpdateParams,
454+
),
455+
options=make_request_options(
456+
extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
457+
),
458+
cast_to=ProjectUpdateResponse,
459+
)
460+
300461
async def list(
301462
self,
302463
*,
@@ -394,6 +555,9 @@ def __init__(self, projects: ProjectsResource) -> None:
394555
self.create = to_raw_response_wrapper(
395556
projects.create,
396557
)
558+
self.update = to_raw_response_wrapper(
559+
projects.update,
560+
)
397561
self.list = to_raw_response_wrapper(
398562
projects.list,
399563
)
@@ -421,6 +585,9 @@ def __init__(self, projects: AsyncProjectsResource) -> None:
421585
self.create = async_to_raw_response_wrapper(
422586
projects.create,
423587
)
588+
self.update = async_to_raw_response_wrapper(
589+
projects.update,
590+
)
424591
self.list = async_to_raw_response_wrapper(
425592
projects.list,
426593
)
@@ -448,6 +615,9 @@ def __init__(self, projects: ProjectsResource) -> None:
448615
self.create = to_streamed_response_wrapper(
449616
projects.create,
450617
)
618+
self.update = to_streamed_response_wrapper(
619+
projects.update,
620+
)
451621
self.list = to_streamed_response_wrapper(
452622
projects.list,
453623
)
@@ -475,6 +645,9 @@ def __init__(self, projects: AsyncProjectsResource) -> None:
475645
self.create = async_to_streamed_response_wrapper(
476646
projects.create,
477647
)
648+
self.update = async_to_streamed_response_wrapper(
649+
projects.update,
650+
)
478651
self.list = async_to_streamed_response_wrapper(
479652
projects.list,
480653
)

‎src/openlayer/types/__init__.py‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,10 @@
66
from .test_evaluate_params import TestEvaluateParams as TestEvaluateParams
77
from .project_create_params import ProjectCreateParams as ProjectCreateParams
88
from .project_list_response import ProjectListResponse as ProjectListResponse
9+
from .project_update_params import ProjectUpdateParams as ProjectUpdateParams
910
from .test_evaluate_response import TestEvaluateResponse as TestEvaluateResponse
1011
from .project_create_response import ProjectCreateResponse as ProjectCreateResponse
12+
from .project_update_response import ProjectUpdateResponse as ProjectUpdateResponse
1113
from .workspace_update_params import WorkspaceUpdateParams as WorkspaceUpdateParams
1214
from .commit_retrieve_response import CommitRetrieveResponse as CommitRetrieveResponse
1315
from .test_list_results_params import TestListResultsParams as TestListResultsParams

‎src/openlayer/types/inference_pipeline_retrieve_response.py‎

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -273,11 +273,26 @@ class Project(BaseModel):
273273
workspace_id: Optional[str] = FieldInfo(alias="workspaceId", default=None)
274274
"""The workspace id."""
275275

276+
data_retention_days: Optional[int] = FieldInfo(alias="dataRetentionDays", default=None)
277+
"""Number of days to retain monitoring data for this project.
278+
279+
Null means data is retained indefinitely.
280+
"""
281+
276282
description: Optional[str] = None
277283
"""The project description."""
278284

279285
git_repo: Optional[ProjectGitRepo] = FieldInfo(alias="gitRepo", default=None)
280286

287+
api_model_developer: Optional[str] = FieldInfo(alias="modelDeveloper", default=None)
288+
"""Who developed the model used in this project."""
289+
290+
api_model_types: Optional[List[str]] = FieldInfo(alias="modelTypes", default=None)
291+
"""The kinds of model used in this project."""
292+
293+
purpose: Optional[str] = None
294+
"""What the system in this project is intended to do."""
295+
281296

282297
class WorkspaceMonthlyUsage(BaseModel):
283298
execution_time_ms: Optional[int] = FieldInfo(alias="executionTimeMs", default=None)

‎src/openlayer/types/inference_pipeline_update_response.py‎

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -273,11 +273,26 @@ class Project(BaseModel):
273273
workspace_id: Optional[str] = FieldInfo(alias="workspaceId", default=None)
274274
"""The workspace id."""
275275

276+
data_retention_days: Optional[int] = FieldInfo(alias="dataRetentionDays", default=None)
277+
"""Number of days to retain monitoring data for this project.
278+
279+
Null means data is retained indefinitely.
280+
"""
281+
276282
description: Optional[str] = None
277283
"""The project description."""
278284

279285
git_repo: Optional[ProjectGitRepo] = FieldInfo(alias="gitRepo", default=None)
280286

287+
api_model_developer: Optional[str] = FieldInfo(alias="modelDeveloper", default=None)
288+
"""Who developed the model used in this project."""
289+
290+
api_model_types: Optional[List[str]] = FieldInfo(alias="modelTypes", default=None)
291+
"""The kinds of model used in this project."""
292+
293+
purpose: Optional[str] = None
294+
"""What the system in this project is intended to do."""
295+
281296

282297
class WorkspaceMonthlyUsage(BaseModel):
283298
execution_time_ms: Optional[int] = FieldInfo(alias="executionTimeMs", default=None)

0 commit comments

Comments
 (0)