Every API here is available over the APIs.io API and to AI agents over MCP.
{"openapi":"3.1.0","info":{"title":"Skore Hub","description":"\nThis REST API is divided in small services.\nEach service has its own OpenAPI specification.\n- [identity](/identity/docs)\n- [projects](/projects/docs)\n ","version":"0.1.0"},"paths":{"/identity/admin/invitations/{email}":{"get":{"tags":["identity","admin"],"summary":"List Invitations By Email","description":"List all invitations for a given email.","operationId":"list_invitations_by_email_identity_admin_invitations__email__get","parameters":[{"name":"email","in":"path","required":true,"schema":{"type":"string","title":"Email"}},{"name":"config_file","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Config File"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Invitation"},"title":"Response List Invitations By Email Identity Admin Invitations Email Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/identity/oauth/login":{"get":{"tags":["identity","OAuth"],"summary":"Oauth Login","description":"Initiate OAuth login flow.\n\nStarts the authorization code flow by redirecting the user to the authorization\nserver's login page.\n\n**Parameters**\n- `success_uri`: The URI to redirect the user in case of successful login flow.\n\n**Responses**:\n- `200`: Returns a response containing the IDP authorization url","operationId":"oauth_login_identity_oauth_login_get","parameters":[{"name":"success_uri","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Success Uri"}},{"name":"display_registration","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Display Registration"}},{"name":"config_file","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Config File"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LoginResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/identity/oauth/accept-invitation":{"get":{"tags":["identity","OAuth"],"summary":"Accept Invitation","description":"Initiate OAuth login flow.\n\nStarts the authorization code flow by redirecting the user to the authorization\nserver's login page.\n\n**Parameters**\n- `success_uri`: The URI to redirect the user in case of successful login flow.\n\n**Responses**:\n- `200`: Returns a response containing the IDP authorization url","operationId":"accept_invitation_identity_oauth_accept_invitation_get","parameters":[{"name":"success_uri","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Success Uri"}},{"name":"config_file","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Config File"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LoginResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/identity/oauth/device/login":{"get":{"tags":["identity","OAuth Device"],"summary":"Oauth Device","description":"Initiate device OAuth flow.\n\nInitiates the OAuth device flow.\nProvides the user with a URL and a OTP code to authenticate the device.\n\n**Parameters**:\n- `success_uri`: The URI to redirect the user in case of successful login flow.\n\n**Responses**:\n- `200`: Returns a response containing the IDP authorization url and a device code.","operationId":"oauth_device_identity_oauth_device_login_get","parameters":[{"name":"success_uri","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Success Uri"}},{"name":"config_file","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Config File"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InitiateDeviceAuthResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/identity/oauth/callback":{"get":{"tags":["identity","OAuth"],"summary":"Oauth Callback","description":"Handle the OAuth callback with the authorization code.\n\nThis endpoint processes the callback from the authorization server,\nexchanges the authorization code for an access token, and returns the token.\n\n**Parameters**:\n- `code`: The authorization code returned by the authorization server.\n- `state`: A unique value to prevent CSRF attacks.\n\n**Responses**:\n- `200`: Returns the access token on successful exchange.\n- `400`: Returns an error if the state or code is invalid.\n- `422`: Returns an error if the state or code format is invalid.","operationId":"oauth_callback_identity_oauth_callback_get","parameters":[{"name":"code","in":"query","required":true,"schema":{"type":"string","title":"Code"}},{"name":"state","in":"query","required":true,"schema":{"type":"string","title":"State"}},{"name":"config_file","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Config File"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"title":"Response Oauth Callback Identity Oauth Callback Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/identity/oauth/device/callback":{"get":{"tags":["identity","OAuth Device"],"summary":"Oauth Device Callback","description":"Handle the device authorization callback.\n\nThis endpoint processes the callback from the authorization server.\nIt stores the device authorization code for later use.\n\n**Parameters**:\n- `code`: The authorization code provided by the user.\n- `state`: A unique value to identify the device flow.\n\n**Responses**:\n- `200`: Renders a template prompting the user to enter a code.\n- `422`: Returns an error if the state or code format is invalid.","operationId":"oauth_device_callback_identity_oauth_device_callback_get","parameters":[{"name":"code","in":"query","required":true,"schema":{"type":"string","title":"Code"}},{"name":"state","in":"query","required":true,"schema":{"type":"string","title":"State"}},{"name":"config_file","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Config File"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"title":"Response Oauth Device Callback Identity Oauth Device Callback Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["identity","OAuth Device"],"summary":"Oauth Device Callback Validation","description":"Validate the user-provided device code.\n\nThis endpoint verifies the code entered by the user during the device auth flow.\n\n**Parameters**:\n- `state`: The unique value identifying the device flow.\n- `user_code`: The code entered by the user.\n\n**Responses**:\n- `201`: The device is successfully authenticated.\n- `422`: Returns an error if the state or user_code format is invalid.","operationId":"oauth_device_callback_validation_identity_oauth_device_callback_post","parameters":[{"name":"config_file","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Config File"}}],"requestBody":{"required":true,"content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/Body_oauth_device_callback_validation_identity_oauth_device_callback_post"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"title":"Response Oauth Device Callback Validation Identity Oauth Device Callback Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/identity/oauth/device/code-probe":{"get":{"tags":["identity","OAuth Device"],"summary":"Oauth Token Code Is Accessible","description":"Get the device access code status.\n\nAllow a device to know if the awaited `access_code` has been received by the hub\nand is ready for an exchange with the `access_token`.\n\n**Responses**:\n- `204`: The authorization code has been received and is ready for exchange.\n- `400`: The authorization code has not been received yet.\n- `404`: The authentication flow for this `device_code` has not been found.","operationId":"oauth_token_code_is_accessible_identity_oauth_device_code_probe_get","parameters":[{"name":"device_code","in":"query","required":true,"schema":{"type":"string","title":"Device Code"}},{"name":"config_file","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Config File"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/identity/oauth/device/token":{"get":{"tags":["identity","OAuth Device"],"summary":"Oauth Device Token","description":"Exchanges the device code for an access token.\n\nThis endpoint completes the device authorization flow by exchanging the\nvalidated device code for an access token.\n\n**Parameters**:\n- `device_code`: The code provided at authentication flow initiation.\n\n**Responses**:\n- `200`: Returns the access token on successful exchange.\n- `422`: Returns an error if the device_code format is invalid.","operationId":"oauth_device_token_identity_oauth_device_token_get","parameters":[{"name":"device_code","in":"query","required":true,"schema":{"type":"string","title":"Device Code"}},{"name":"config_file","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Config File"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExchangeCodeResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/identity/oauth/token/refresh":{"post":{"tags":["identity","OAuth","OAuth Device"],"summary":"Refresh Token","description":"Refresh an access token using a provided refresh token.\n\nThis endpoint allows a client to obtain a new access token by providing a valid\nrefresh token.\nIf a `success_uri` is specified in the request, the user will be redirected to that\nURI with the new access and refresh tokens as query parameters.\n\n**Parameters**:\n- `request`: The request body containing the refresh token and optional success URI.\n\n**Responses**:\n- `200`: Returns a new access token if successful.\n- `307`: Redirects to the specified success URI with new token parameters.\n- `400`: Returns an error if the refresh process fails.","operationId":"refresh_token_identity_oauth_token_refresh_post","parameters":[{"name":"config_file","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Config File"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RefreshTokenRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"title":"Response Refresh Token Identity Oauth Token Refresh Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/identity/oauth/logout":{"post":{"tags":["identity","OAuth","OAuth Device"],"summary":"Logout","description":"Log out the user (standard OIDC).\n\nRevokes the access and refresh tokens on the OAuth2 provider (when a\nrevocation endpoint is advertised) and clears authentication cookies.\n\n**Responses**:\n- `204`: The user has been logged out.","operationId":"logout_identity_oauth_logout_post","parameters":[{"name":"config_file","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Config File"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/identity/workspaces":{"post":{"tags":["identity","Workspace"],"summary":"Create Workspace","description":"Create and persist a new workspace.\n\n**Parameters**\n- `form`: The workspace creation form filled with the `public_id` to use.\n\n**Responses**:\n- `201`: Returns the unique identifier of the newly created workspace.","operationId":"create_workspace_identity_workspaces_post","parameters":[{"name":"config_file","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Config File"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateWorkspaceRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateWorkspaceResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["identity","Workspace"],"summary":"List Workspaces","description":"Return a filtered list of workspaces.\n\n**Parameters**\n- `filters`: List of filters to limit the workspace listing query.\n\n**Responses**\n- `200`: A filtered list of workspaces.","operationId":"list_workspaces_identity_workspaces_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":10,"title":"Limit"}},{"name":"cursor","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Cursor"}},{"name":"sort","in":"query","required":false,"schema":{"$ref":"#/components/schemas/SortOrder","default":"ASC"}},{"name":"sort_by","in":"query","required":false,"schema":{"enum":["id","created_at"],"type":"string","default":"id","title":"Sort By"}},{"name":"config_file","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Config File"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListWorkspaceResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/identity/workspaces/{workspace_id}":{"delete":{"tags":["identity","Workspace"],"summary":"Delete Workspace","description":"Delete an existing workspace.\n\nDo nothing if the workspace do not exists.\n\n**Parameters**\n- `workspace_id`: Unique identifier of the workspace to delete.\n\n**Responses**:\n- `204`: No content.","operationId":"delete_workspace_identity_workspaces__workspace_id__delete","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"integer","title":"Workspace Id"}},{"name":"config_file","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Config File"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["identity","Workspace"],"summary":"Get Workspace","description":"Retrieve a workspace from its unique identifier (ID).\n\n**Parameters**\n- `workspace_id`: The workspace's unique identifier.\n\n**Responses**\n- `200`: The requested workspace.","operationId":"get_workspace_identity_workspaces__workspace_id__get","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"integer","title":"Workspace Id"}},{"name":"config_file","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Config File"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Workspace"}}}},"404":{"description":"Not Found"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"put":{"tags":["identity","Workspace"],"summary":"Update Workspace","description":"Update a workspace.\n\n**Parameters**\n- `workspace_id`: The workspace to update.\n\n**Responses**\n- `204`: No content. The workspace has been updated.","operationId":"update_workspace_identity_workspaces__workspace_id__put","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"integer","title":"Workspace Id"}},{"name":"config_file","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Config File"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateWorkspaceRequest"}}}},"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/identity/workspaces/public-id-availability":{"get":{"tags":["identity","Workspace"],"summary":"Check Workspace Public Id Available","description":"Check if a workspace public id is available and get a suggestion.\n\n**Parameters**\n- `public_id`: The workspace public id to check.\n\n**Responses**\n- `200`: Returns whether the slug is available and a suggested unique slug.","operationId":"check_workspace_public_id_available_identity_workspaces_public_id_availability_get","parameters":[{"name":"public_id","in":"query","required":true,"schema":{"type":"string","minLength":1,"maxLength":64,"title":"Public Id"}},{"name":"config_file","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Config File"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"anyOf":[{"type":"boolean"},{"type":"string"},{"type":"null"}]},"title":"Response Check Workspace Public Id Available Identity Workspaces Public Id Availability Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/identity/workspaces/{workspace_id}/invitations":{"post":{"tags":["identity","Workspace"],"summary":"Create Workspace Invitation","description":"Create a workspace invitation and send an invitation email.\n\nOnly workspace owners can invite. The invited user receives an email with a\nlink to accept; on acceptance they join the workspace with the given role\nand the permissions defined for that role in code.\n\n**Parameters**\n- `workspace_id`: The workspace to invite into.\n- `email`: Invitee email.\n- `role`: owner, contributor, or reader.\n\n**Responses**\n- `201`: The created invitation (without the secret key).\n- `403`: Caller is not a workspace owner.\n- `404`: Workspace does not exist.","operationId":"create_workspace_invitation_identity_workspaces__workspace_id__invitations_post","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"integer","title":"Workspace Id"}},{"name":"config_file","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Config File"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Body_create_workspace_invitation_identity_workspaces__workspace_id__invitations_post"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Invitation"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/identity/workspaces/{workspace_id}/invitation-link":{"post":{"tags":["identity","Workspace"],"summary":"Create Workspace Invitation Link","description":"Create a shareable invitation URL for this workspace.\n\nThe returned URL uses the same acceptance flow as email invitations.\n\n**Parameters**\n- ``workspace_id``: Target workspace.\n- ``body.role``: Role granted when the invite is accepted.\n\n**Responses**\n- ``201``: Invitation URL.\n- ``403``: Caller is not a workspace owner.","operationId":"create_workspace_invitation_link_identity_workspaces__workspace_id__invitation_link_post","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"integer","title":"Workspace Id"}},{"name":"config_file","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Config File"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateWorkspaceInvitationLinkRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspaceInvitationLinkResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/identity/workspaces/{workspace_id}/members/{user_id}":{"delete":{"tags":["identity","Workspace"],"summary":"Remove Member From Workspace","description":"Remove a member from a workspace.\n\n**Parameters**\n- `workspace_id`: The workspace to remove the member from.\n- `user_id`: The user to remove from the workspace.\n\n**Responses**\n- `204`: No content.","operationId":"remove_member_from_workspace_identity_workspaces__workspace_id__members__user_id__delete","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"integer","title":"Workspace Id"}},{"name":"user_id","in":"path","required":true,"schema":{"type":"string","title":"User Id"}},{"name":"config_file","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Config File"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/identity/workspaces/{workspace_id}/members/{user_id}/role":{"put":{"tags":["identity","Workspace"],"summary":"Set Member Role","description":"Set a workspace member's role and replace their permissions from the static map.\n\n**Parameters**\n- `workspace_id`: The workspace.\n- `user_id`: The member whose role is updated.\n- `form.role`: owner, contributor, or reader.\n\n**Responses**\n- `204`: Role and permissions updated.\n- `403`: Caller lacks permission, or the target is the last workspace owner.\n- `404`: Target user is not a member of the workspace.","operationId":"set_member_role_identity_workspaces__workspace_id__members__user_id__role_put","parameters":[{"name":"workspace_id","in":"path","required":true,"schema":{"type":"integer","title":"Workspace Id"}},{"name":"user_id","in":"path","required":true,"schema":{"type":"string","title":"User Id"}},{"name":"config_file","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Config File"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetMemberRoleRequest"}}}},"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/identity/users/me":{"get":{"tags":["identity"],"summary":"Me","description":"Get the current user profile.","operationId":"me_identity_users_me_get","parameters":[{"name":"config_file","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Config File"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserProfileDto"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/identity/users/{user_id}":{"get":{"tags":["identity"],"summary":"Get User","description":"Get a user profile by ID.","operationId":"get_user_identity_users__user_id__get","parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","title":"User Id"}},{"name":"config_file","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Config File"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserProfileDto"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/identity/users/{user_id}/api-keys":{"post":{"tags":["identity"],"summary":"Create Api Key","description":"Create a new API key for the current user.","operationId":"create_api_key_identity_users__user_id__api_keys_post","parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","title":"User Id"}},{"name":"config_file","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Config File"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAPIKeyPayload"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAPIKeyResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["identity"],"summary":"List Api Keys","description":"List all API keys of the authenticated user.","operationId":"list_api_keys_identity_users__user_id__api_keys_get","parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","title":"User Id"}},{"name":"config_file","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Config File"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/UserAPIKey"},"title":"Response List Api Keys Identity Users User Id Api Keys Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/identity/users/{user_id}/api-keys/{api_key_id}":{"delete":{"tags":["identity"],"summary":"Delete Api Key","description":"Delete an existing API key for the current user.","operationId":"delete_api_key_identity_users__user_id__api_keys__api_key_id__delete","parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","title":"User Id"}},{"name":"api_key_id","in":"path","required":true,"schema":{"type":"integer","title":"Api Key Id"}},{"name":"config_file","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Config File"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"patch":{"tags":["identity"],"summary":"Patch Api Key","description":"Update an existing API key for the current user.","operationId":"patch_api_key_identity_users__user_id__api_keys__api_key_id__patch","parameters":[{"name":"user_id","in":"path","required":true,"schema":{"type":"string","title":"User Id"}},{"name":"api_key_id","in":"path","required":true,"schema":{"type":"integer","title":"Api Key Id"}},{"name":"config_file","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Config File"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateAPIKeyPayload"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"anyOf":[{"type":"integer"},{"type":"string"},{"type":"null"}]},"title":"Response Patch Api Key Identity Users User Id Api Keys Api Key Id Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/identity/invitations/{key}":{"get":{"tags":["identity"],"summary":"Get Invitation","description":"Check if the given invitation exists if true redirect the user to the IdP.\n\nThe route has probably been invoked by an invitation link.","operationId":"get_invitation_identity_invitations__key__get","parameters":[{"name":"key","in":"path","required":true,"schema":{"type":"string","title":"Key"}},{"name":"success_uri","in":"query","required":true,"schema":{"type":"string","title":"Success Uri"}},{"name":"config_file","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Config File"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/projects/{workspace_public_id}/{project_name}":{"post":{"tags":["projects","Projects"],"summary":"Create Project","description":"Create a project; idempotent (201 created, 208 already exists).","operationId":"create_project_projects__workspace_public_id___project_name__post","parameters":[{"name":"workspace_public_id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":64,"title":"Workspace Public Id"}},{"name":"project_name","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":150,"description":"The project name.","title":"Project Name"},"description":"The project name."},{"name":"config_file","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Config File"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":{"anyOf":[{"type":"integer"},{"type":"string"}]},"title":"Response Create Project Projects Workspace Public Id Project Name Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"tags":["projects","Projects"],"summary":"Get Project","description":"Endpoint to read a project from its ID.","operationId":"get_project_projects__workspace_public_id___project_name__get","parameters":[{"name":"workspace_public_id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":64,"title":"Workspace Public Id"}},{"name":"project_name","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":150,"title":"Project Name"}},{"name":"config_file","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Config File"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Project"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["projects","Projects"],"summary":"Delete Project","description":"Endpoint to delete a project.","operationId":"delete_project_projects__workspace_public_id___project_name__delete","parameters":[{"name":"workspace_public_id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":64,"title":"Workspace Public Id"}},{"name":"project_name","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":150,"title":"Project Name"}},{"name":"config_file","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Config File"}}],"responses":{"204":{"description":"Successful Response"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/projects/{workspace_public_id}":{"get":{"tags":["projects","Projects"],"summary":"List Workspace Projects","description":"Endpoint to list projects.","operationId":"list_workspace_projects_projects__workspace_public_id__get","parameters":[{"name":"workspace_public_id","in":"path","required":true,"schema":{"type":"string","minLength":1,"maxLength":64,"title":"Workspace Public Id"}},{"name":"config_file","in":"
# --- truncated at 32 KB (129 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/probabl/refs/heads/main/openapi/probabl-skore-hub-openapi.json