|
20 | 20 | license: |
21 | 21 | name: BSD 3.0 |
22 | 22 | url: https://github.com/tapis-project/pods_service |
23 | | - version: 1.6.0 |
| 23 | + version: 1.9.0 |
24 | 24 | paths: |
25 | 25 | /traefik-config: |
26 | 26 | get: |
@@ -1322,6 +1322,61 @@ paths: |
1322 | 1322 | application/json: |
1323 | 1323 | schema: |
1324 | 1324 | $ref: '#/components/schemas/HTTPValidationError' |
| 1325 | + /pods/jupyter/ensure: |
| 1326 | + get: |
| 1327 | + tags: |
| 1328 | + - Jupyter |
| 1329 | + summary: Ensure user has a running Jupyter pod, useful for starting up coding |
| 1330 | + environment |
| 1331 | + description: 'Ensure the current user has a running Jupyter pod. |
| 1332 | +
|
| 1333 | + If not, create a new one named ''{username}jupyter'' from the base Jupyter |
| 1334 | + template. |
| 1335 | +
|
| 1336 | + Returns pod name and URL.' |
| 1337 | + operationId: ensure_jupyter_pod |
| 1338 | + responses: |
| 1339 | + '200': |
| 1340 | + description: Successful Response |
| 1341 | + content: |
| 1342 | + application/json: |
| 1343 | + schema: |
| 1344 | + title: Response Ensure Jupyter Pod |
| 1345 | + /pods/jupyter/{pod_id}/upload: |
| 1346 | + post: |
| 1347 | + tags: |
| 1348 | + - Jupyter |
| 1349 | + summary: Upload a document to the user's Jupyter pod |
| 1350 | + description: 'Upload a document to the user''s running Jupyter pod using the |
| 1351 | + Jupyter API. |
| 1352 | +
|
| 1353 | + Input: multipart form (file), and ''path'' (destination in Jupyter).' |
| 1354 | + operationId: upload_to_jupyter |
| 1355 | + parameters: |
| 1356 | + - required: true |
| 1357 | + schema: |
| 1358 | + type: string |
| 1359 | + title: Pod Id |
| 1360 | + name: pod_id |
| 1361 | + in: path |
| 1362 | + requestBody: |
| 1363 | + content: |
| 1364 | + multipart/form-data: |
| 1365 | + schema: |
| 1366 | + $ref: '#/components/schemas/Body_upload_to_jupyter' |
| 1367 | + required: true |
| 1368 | + responses: |
| 1369 | + '200': |
| 1370 | + description: Successful Response |
| 1371 | + content: |
| 1372 | + application/json: |
| 1373 | + schema: {} |
| 1374 | + '422': |
| 1375 | + description: Validation Error |
| 1376 | + content: |
| 1377 | + application/json: |
| 1378 | + schema: |
| 1379 | + $ref: '#/components/schemas/HTTPValidationError' |
1325 | 1380 | /pods: |
1326 | 1381 | get: |
1327 | 1382 | tags: |
@@ -1702,6 +1757,39 @@ paths: |
1702 | 1757 | application/json: |
1703 | 1758 | schema: |
1704 | 1759 | $ref: '#/components/schemas/HTTPValidationError' |
| 1760 | + /pods/{pod_id}/upload_to_pod: |
| 1761 | + post: |
| 1762 | + tags: |
| 1763 | + - Pods |
| 1764 | + summary: Upload a file directly into the pod's filesystem |
| 1765 | + description: Upload a file to a specific path inside the pod using Kubernetes |
| 1766 | + exec/copy (chunked streaming, no temp file). |
| 1767 | + operationId: upload_to_pod |
| 1768 | + parameters: |
| 1769 | + - required: true |
| 1770 | + schema: |
| 1771 | + type: string |
| 1772 | + title: Pod Id |
| 1773 | + name: pod_id |
| 1774 | + in: path |
| 1775 | + requestBody: |
| 1776 | + content: |
| 1777 | + multipart/form-data: |
| 1778 | + schema: |
| 1779 | + $ref: '#/components/schemas/Body_upload_to_pod' |
| 1780 | + required: true |
| 1781 | + responses: |
| 1782 | + '200': |
| 1783 | + description: Successful Response |
| 1784 | + content: |
| 1785 | + application/json: |
| 1786 | + schema: {} |
| 1787 | + '422': |
| 1788 | + description: Validation Error |
| 1789 | + content: |
| 1790 | + application/json: |
| 1791 | + schema: |
| 1792 | + $ref: '#/components/schemas/HTTPValidationError' |
1705 | 1793 | /pods/{pod_id}/permissions/{user}: |
1706 | 1794 | delete: |
1707 | 1795 | tags: |
@@ -1910,23 +1998,23 @@ paths: |
1910 | 1998 | \ 6) User logs in via browser, authorizes client, redirects to callback_url\ |
1911 | 1999 | \ at https://tacc.tapis.io/v3/pods/fastapi/auth/callback?code=CodeHere\n \ |
1912 | 2000 | \ 7) Callback url exchanges code for token, gets username from token, sets\ |
1913 | | - \ X-Tapis-Token and X-Tapis-Username cookies\n 8) User gets redirected back\ |
1914 | | - \ to https://fastapi.pods.tacc.tapis.io, Traefik starts forwardAuth, user\ |
1915 | | - \ at this point should be authenticated\n 9) Auth endpoint responds with\ |
1916 | | - \ 200, sets headers specified by networking stanza, and users gets to fastapi\ |
1917 | | - \ hello world response.\n\nusers can specify:\n - tapis_auth=True/False -\ |
1918 | | - \ Turns on auth\n - tapis_auth_response_headers - dict[str] - headers to set\ |
1919 | | - \ on response and their values\n - tapis_auth_allowed_users - list[str] -\ |
1920 | | - \ list of tapis users allowed to access pod\n - tapis_auth_return_path - str\ |
1921 | | - \ - uri to return to after auth, default is \"passthrough\", which we save\ |
1922 | | - \ in cookies(?) and return to. x-forwarded-host?\n\n - response headers need\ |
1923 | | - \ to be slightly modifiable to allow for different application requirements\n\ |
| 2001 | + \ X-Tapis-Token cookies, sets response headers according to tapis_auth_response_headers\n\ |
| 2002 | + \ 8) User gets redirected back to https://fastapi.pods.tacc.tapis.io/{tapis_auth_return_path},\ |
| 2003 | + \ Traefik starts forwardAuth, user at this point should be authenticated\n\ |
| 2004 | + \ 9) Auth endpoint responds with 200, sets headers specified by networking\ |
| 2005 | + \ stanza, and users gets to fastapi hello world response.\n\nusers can specify:\n\ |
| 2006 | + \ - tapis_auth=True/False - Turns on auth\n - tapis_auth_response_headers\ |
| 2007 | + \ - dict[str] - headers to set on response and their values\n - tapis_auth_allowed_users\ |
| 2008 | + \ - list[str] - list of tapis users allowed to access pod\n - tapis_auth_return_path\ |
| 2009 | + \ - str - uri to return to after auth, default is \"passthrough\", which we\ |
| 2010 | + \ save in cookies(?) and return to. x-forwarded-host?\n\n - response headers\ |
| 2011 | + \ need to be slightly modifiable to allow for different application requirements\n\ |
1924 | 2012 | \ - for example we have to pass username, but many apps require @email.bit,\ |
1925 | 2013 | \ so user must be able to append to user.\n - tapis_auth_response_headers:\ |
1926 | | - \ {\"X-Tapis-Username\": \"<<tapisusername>>@tapis.io\", \"X-Tapis-Token\"\ |
1927 | | - : \"<<token>>\", \"OAUTH2_USERNAME_KEY\": \"username\"}\n\n - tapis_auth_allowed_users,\ |
1928 | | - \ checks username against .lower() of username list to make sure it's in list.\ |
1929 | | - \ otherwise deny" |
| 2014 | + \ {\"X-Tapis-Username\": \"<<tapisusername>>@tapis.io\", \"FROM\": \"pods\ |
| 2015 | + \ auth endpoint from <<tenant>>.<<site>>\", \"OAUTH2_USERNAME_KEY\": \"username\"\ |
| 2016 | + }\n\n - tapis_auth_allowed_users, checks username against .lower() of username\ |
| 2017 | + \ list to make sure it's in list. otherwise deny" |
1930 | 2018 | operationId: pod_auth |
1931 | 2019 | parameters: |
1932 | 2020 | - required: true |
@@ -1974,6 +2062,34 @@ paths: |
1974 | 2062 | $ref: '#/components/schemas/HTTPValidationError' |
1975 | 2063 | components: |
1976 | 2064 | schemas: |
| 2065 | + Body_upload_to_jupyter: |
| 2066 | + properties: |
| 2067 | + file: |
| 2068 | + type: string |
| 2069 | + format: binary |
| 2070 | + title: File |
| 2071 | + path: |
| 2072 | + type: string |
| 2073 | + title: Path |
| 2074 | + type: object |
| 2075 | + required: |
| 2076 | + - file |
| 2077 | + - path |
| 2078 | + title: Body_upload_to_jupyter |
| 2079 | + Body_upload_to_pod: |
| 2080 | + properties: |
| 2081 | + file: |
| 2082 | + type: string |
| 2083 | + format: binary |
| 2084 | + title: File |
| 2085 | + dest_path: |
| 2086 | + type: string |
| 2087 | + title: Dest Path |
| 2088 | + type: object |
| 2089 | + required: |
| 2090 | + - file |
| 2091 | + - dest_path |
| 2092 | + title: Body_upload_to_pod |
1977 | 2093 | Body_upload_to_volume: |
1978 | 2094 | properties: |
1979 | 2095 | file: |
@@ -2260,6 +2376,7 @@ components: |
2260 | 2376 | format: date-time |
2261 | 2377 | title: Creation Ts |
2262 | 2378 | description: Time (UTC) that this image was created. |
| 2379 | + default: '2025-05-15T00:28:39.897690' |
2263 | 2380 | added_by: |
2264 | 2381 | type: string |
2265 | 2382 | title: Added By |
@@ -3690,6 +3807,38 @@ components: |
3690 | 3807 | title: Tapis Auth Return Path |
3691 | 3808 | description: Path to redirect to when accessing the pod via Tapis auth. |
3692 | 3809 | default: / |
| 3810 | + cors_allow_origins: |
| 3811 | + items: |
| 3812 | + type: string |
| 3813 | + type: array |
| 3814 | + title: Cors Allow Origins |
| 3815 | + description: List of CORS allowed origins. ex. ['https://tacc.develop.tapis.io', |
| 3816 | + 'https://tacc.tapis.io'] |
| 3817 | + default: [] |
| 3818 | + cors_allow_methods: |
| 3819 | + items: |
| 3820 | + type: string |
| 3821 | + type: array |
| 3822 | + title: Cors Allow Methods |
| 3823 | + description: List of CORS allowed methods. ex. ['GET', 'POST', 'PUT', 'DELETE'] |
| 3824 | + default: [] |
| 3825 | + cors_allow_headers: |
| 3826 | + items: |
| 3827 | + type: string |
| 3828 | + type: array |
| 3829 | + title: Cors Allow Headers |
| 3830 | + description: List of CORS allowed headers. ex. ['Content-Type', 'X-Tapis-Token'] |
| 3831 | + default: [] |
| 3832 | + cors_allow_credentials: |
| 3833 | + type: boolean |
| 3834 | + title: Cors Allow Credentials |
| 3835 | + description: Boolean to allow credentials to be sent with CORS requests. |
| 3836 | + default: false |
| 3837 | + cors_max_age: |
| 3838 | + type: integer |
| 3839 | + title: Cors Max Age |
| 3840 | + description: Max age of CORS preflight requests in seconds. |
| 3841 | + default: 100 |
3693 | 3842 | tapis_ui_uri: |
3694 | 3843 | type: string |
3695 | 3844 | title: Tapis Ui Uri |
@@ -3815,6 +3964,38 @@ components: |
3815 | 3964 | title: Tapis Auth Return Path |
3816 | 3965 | description: Path to redirect to when accessing the pod via Tapis auth. |
3817 | 3966 | default: / |
| 3967 | + cors_allow_origins: |
| 3968 | + items: |
| 3969 | + type: string |
| 3970 | + type: array |
| 3971 | + title: Cors Allow Origins |
| 3972 | + description: List of CORS allowed origins. ex. ['https://tacc.develop.tapis.io', |
| 3973 | + 'https://tacc.tapis.io'] |
| 3974 | + default: [] |
| 3975 | + cors_allow_methods: |
| 3976 | + items: |
| 3977 | + type: string |
| 3978 | + type: array |
| 3979 | + title: Cors Allow Methods |
| 3980 | + description: List of CORS allowed methods. ex. ['GET', 'POST', 'PUT', 'DELETE'] |
| 3981 | + default: [] |
| 3982 | + cors_allow_headers: |
| 3983 | + items: |
| 3984 | + type: string |
| 3985 | + type: array |
| 3986 | + title: Cors Allow Headers |
| 3987 | + description: List of CORS allowed headers. ex. ['Content-Type', 'X-Tapis-Token'] |
| 3988 | + default: [] |
| 3989 | + cors_allow_credentials: |
| 3990 | + type: boolean |
| 3991 | + title: Cors Allow Credentials |
| 3992 | + description: Boolean to allow credentials to be sent with CORS requests. |
| 3993 | + default: false |
| 3994 | + cors_max_age: |
| 3995 | + type: integer |
| 3996 | + title: Cors Max Age |
| 3997 | + description: Max age of CORS preflight requests in seconds. |
| 3998 | + default: 100 |
3818 | 3999 | tapis_ui_uri: |
3819 | 4000 | type: string |
3820 | 4001 | title: Tapis Ui Uri |
@@ -3885,14 +4066,14 @@ components: |
3885 | 4066 | tags: |
3886 | 4067 | - name: Pods |
3887 | 4068 | description: Create and command pods. |
3888 | | -- name: Credentials |
3889 | | - description: Manage pod's credentials used. |
3890 | | -- name: Logs |
3891 | | - description: Manage pod logs. |
3892 | | -- name: Permissions |
3893 | | - description: Manage pod permissions. Grant specific TACC users **READ**, **USER**, |
3894 | | - and **ADMIN** level permissions. |
| 4069 | +- name: Templates |
| 4070 | + description: Create and manage templated pod definitions for use in pod deployment. |
3895 | 4071 | - name: Volumes |
3896 | 4072 | description: Create and manage volumes. |
3897 | 4073 | - name: Snapshots |
3898 | 4074 | description: Create and manage snapshots. |
| 4075 | +- name: Images |
| 4076 | + description: Create and manage docker images available in the service. |
| 4077 | +- name: Permissions |
| 4078 | + description: Manage pod permissions. Grant specific TACC users **READ**, **USER**, |
| 4079 | + and **ADMIN** level permissions. |
0 commit comments