Skip to content

Commit f914247

Browse files
agtravesoclaude
andcommitted
Sync YepCodeApi with OpenAPI spec — add 25 missing endpoints and 9 new types
Adds coverage for: service accounts, process/module version & alias CRUD, process dependencies, schedule update, team dependencies, team get/update, and sandboxes. Types added: ServiceAccount, ProgrammingLanguageManifest, UpdateTeamDependenciesInput, Team, UpdateTeamInput, Sandbox, CreateSandboxInput, UpdateSandboxInput, ServiceAccountInput. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1 parent 713fd1a commit f914247

2 files changed

Lines changed: 192 additions & 0 deletions

File tree

yepcode_run/api/types.py

Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -468,3 +468,82 @@ def from_dict(data: dict) -> "StorageObject":
468468
class CreateStorageObjectInput:
469469
name: str
470470
file: Any
471+
472+
473+
# Service account types
474+
@dataclass
475+
class ServiceAccount:
476+
id: str
477+
name: str
478+
client_id: str
479+
client_secret: Optional[str] = None
480+
created_at: Optional[datetime] = None
481+
updated_at: Optional[datetime] = None
482+
483+
484+
@dataclass
485+
class ServiceAccountInput:
486+
name: str
487+
488+
489+
# Dependency manifest types
490+
@dataclass
491+
class ProgrammingLanguageManifest:
492+
id: str
493+
programming_language: ProgrammingLanguage
494+
dependencies: Optional[Dict[str, str]] = None
495+
next_installation: Optional[Dict[str, str]] = None
496+
497+
498+
@dataclass
499+
class UpdateTeamDependenciesInput:
500+
dependencies: Optional[Dict[str, str]] = None
501+
502+
503+
# Team types
504+
@dataclass
505+
class Team:
506+
slug: str
507+
name: str
508+
zone_id: Optional[str] = None
509+
parent_team_slugs: Optional[List[str]] = None
510+
params_schema_validation_enabled: Optional[bool] = None
511+
error_handler_config: Optional[Dict[str, Any]] = None
512+
created_at: Optional[datetime] = None
513+
514+
515+
@dataclass
516+
class UpdateTeamInput:
517+
name: Optional[str] = None
518+
zone_id: Optional[str] = None
519+
parent_team_slugs: Optional[List[str]] = None
520+
params_schema_validation_enabled: Optional[bool] = None
521+
error_handler_config: Optional[Dict[str, Any]] = None
522+
523+
524+
# Sandbox types
525+
@dataclass
526+
class Sandbox:
527+
id: str
528+
name: str
529+
grpc_server_url: Optional[str] = None
530+
grpc_api_key: Optional[str] = None
531+
image_id: Optional[str] = None
532+
public_http_ports: Optional[List[int]] = None
533+
metadata: Optional[Dict[str, Any]] = None
534+
timeout_at: Optional[datetime] = None
535+
536+
537+
@dataclass
538+
class CreateSandboxInput:
539+
name: str
540+
image_id: Optional[str] = None
541+
timeout: Optional[int] = None
542+
metadata: Optional[Dict[str, Any]] = None
543+
public_http_ports: Optional[List[int]] = None
544+
public_http_ports_basic_auth: Optional[Dict[str, str]] = None
545+
546+
547+
@dataclass
548+
class UpdateSandboxInput:
549+
timeout: Optional[int] = None

yepcode_run/api/yepcode_api.py

Lines changed: 113 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,16 @@
4242
ScheduledProcessInput,
4343
CreateStorageObjectInput,
4444
StorageObject,
45+
ServiceAccount,
46+
ServiceAccountInput,
47+
ProgrammingLanguage,
48+
ProgrammingLanguageManifest,
49+
UpdateTeamDependenciesInput,
50+
Team,
51+
UpdateTeamInput,
52+
Sandbox,
53+
CreateSandboxInput,
54+
UpdateSandboxInput,
4555
)
4656

4757

@@ -469,6 +479,109 @@ def create_module_version_alias(
469479
) -> VersionedModuleAlias:
470480
return self._request("POST", f"/modules/{module_id}/aliases", {"data": data})
471481

482+
def get_module_version(self, module_id: str, version_id: str) -> VersionedModule:
483+
return self._request("GET", f"/modules/{module_id}/versions/{version_id}")
484+
485+
def delete_module_version(self, module_id: str, version_id: str) -> None:
486+
self._request("DELETE", f"/modules/{module_id}/versions/{version_id}")
487+
488+
def get_module_version_alias(
489+
self, module_id: str, alias_id: str
490+
) -> VersionedModuleAlias:
491+
return self._request("GET", f"/modules/{module_id}/aliases/{alias_id}")
492+
493+
def update_module_version_alias(
494+
self, module_id: str, alias_id: str, data: VersionedModuleAliasInput
495+
) -> VersionedModuleAlias:
496+
return self._request(
497+
"PATCH", f"/modules/{module_id}/aliases/{alias_id}", {"data": data}
498+
)
499+
500+
def delete_module_version_alias(self, module_id: str, alias_id: str) -> None:
501+
self._request("DELETE", f"/modules/{module_id}/aliases/{alias_id}")
502+
503+
def get_process_version(
504+
self, process_id: str, version_id: str
505+
) -> VersionedProcess:
506+
return self._request("GET", f"/processes/{process_id}/versions/{version_id}")
507+
508+
def delete_process_version(self, process_id: str, version_id: str) -> None:
509+
self._request("DELETE", f"/processes/{process_id}/versions/{version_id}")
510+
511+
def get_process_version_alias(
512+
self, process_id: str, alias_id: str
513+
) -> VersionedProcessAlias:
514+
return self._request("GET", f"/processes/{process_id}/aliases/{alias_id}")
515+
516+
def update_process_version_alias(
517+
self, process_id: str, alias_id: str, data: VersionedProcessAliasInput
518+
) -> VersionedProcessAlias:
519+
return self._request(
520+
"PATCH", f"/processes/{process_id}/aliases/{alias_id}", {"data": data}
521+
)
522+
523+
def delete_process_version_alias(self, process_id: str, alias_id: str) -> None:
524+
self._request("DELETE", f"/processes/{process_id}/aliases/{alias_id}")
525+
526+
def get_process_dependencies(self, process_id: str) -> ProgrammingLanguageManifest:
527+
return self._request("GET", f"/processes/{process_id}/dependencies")
528+
529+
def update_process_dependencies(
530+
self, process_id: str, data: UpdateTeamDependenciesInput
531+
) -> ProgrammingLanguageManifest:
532+
return self._request(
533+
"PUT", f"/processes/{process_id}/dependencies", {"data": data}
534+
)
535+
536+
def update_schedule(self, id: str, data: ScheduledProcessInput) -> Schedule:
537+
return self._request("PATCH", f"/schedules/{id}", {"data": data})
538+
539+
def get_service_accounts(self) -> List[ServiceAccount]:
540+
return self._request("GET", "/auth/service-accounts")
541+
542+
def create_service_account(self, data: ServiceAccountInput) -> ServiceAccount:
543+
return self._request("POST", "/auth/service-accounts", {"data": data})
544+
545+
def delete_service_account(self, id: str) -> None:
546+
self._request("DELETE", f"/auth/service-accounts/{id}")
547+
548+
def get_team_dependencies(
549+
self, language: ProgrammingLanguage
550+
) -> ProgrammingLanguageManifest:
551+
return self._request("GET", f"/dependencies/{language.value}")
552+
553+
def update_team_dependencies(
554+
self, language: ProgrammingLanguage, data: UpdateTeamDependenciesInput
555+
) -> ProgrammingLanguageManifest:
556+
return self._request(
557+
"PUT", f"/dependencies/{language.value}", {"data": data}
558+
)
559+
560+
def install_team_dependencies(
561+
self, language: ProgrammingLanguage
562+
) -> ProgrammingLanguageManifest:
563+
return self._request("POST", f"/dependencies/{language.value}/install")
564+
565+
def discard_team_dependencies_installation(
566+
self, language: ProgrammingLanguage
567+
) -> None:
568+
self._request("DELETE", f"/dependencies/{language.value}/install")
569+
570+
def get_team(self) -> Team:
571+
return self._request("GET", "/team")
572+
573+
def update_team(self, data: UpdateTeamInput) -> Team:
574+
return self._request("PATCH", "/team", {"data": data})
575+
576+
def create_sandbox(self, data: CreateSandboxInput) -> Sandbox:
577+
return self._request("POST", "/sandboxes", {"data": data})
578+
579+
def update_sandbox(self, sandbox_id: str, data: UpdateSandboxInput) -> Sandbox:
580+
return self._request("POST", f"/sandboxes/{sandbox_id}", {"data": data})
581+
582+
def kill_sandbox(self, sandbox_id: str) -> None:
583+
self._request("POST", f"/sandboxes/{sandbox_id}/kill")
584+
472585
def get_objects(self, params: Optional[Dict[str, Any]] = None) -> List[StorageObject]:
473586
response = self._request("GET", "/storage/objects", {"params": params or {}})
474587
return [StorageObject.from_dict(obj) for obj in response]

0 commit comments

Comments
 (0)