openapi: 3.0.2 info: title: Render Public Audit Logs Workspaces API description: Manage everything about your Render services version: 1.0.0 contact: name: Render API url: https://community.render.com email: support@render.com servers: - url: https://api.render.com/v1 security: - BearerAuth: [] tags: - name: Workspaces description: The `Workspaces` endpoints supply more information about the workspaces that your API key has access to. This category was previously called `Owners`, as reflected by endpoint paths. paths: /owners/{ownerId}/members/{userId}: parameters: - $ref: '#/components/parameters/ownerIdPathParam' - $ref: '#/components/parameters/userIdPathParam' patch: summary: Update workspace member role description: 'Update the role of an existing workspace member. ' operationId: update-workspace-member tags: - Workspaces requestBody: required: true content: application/json: schema: type: object required: - role properties: role: $ref: '#/components/schemas/teamMemberRole' example: role: ADMIN responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/teamMember' example: userId: usr-0r1b2c3d4e5f6g7h8i9 name: Jane Doe email: jane.doe@example.com status: active role: ADMIN mfaEnabled: true '400': $ref: '#/components/responses/400BadRequest' '401': $ref: '#/components/responses/401Unauthorized' '403': $ref: '#/components/responses/403Forbidden' '404': $ref: '#/components/responses/404NotFound' '409': $ref: '#/components/responses/409Conflict' '429': $ref: '#/components/responses/429RateLimit' '500': $ref: '#/components/responses/500InternalServerError' '503': $ref: '#/components/responses/503ServiceUnavailable' delete: summary: Remove workspace member description: 'Remove a user from the specified workspace. ' operationId: remove-workspace-member tags: - Workspaces responses: '204': description: No Content '400': $ref: '#/components/responses/400BadRequest' '401': $ref: '#/components/responses/401Unauthorized' '403': $ref: '#/components/responses/403Forbidden' '404': $ref: '#/components/responses/404NotFound' '429': $ref: '#/components/responses/429RateLimit' '500': $ref: '#/components/responses/500InternalServerError' '503': $ref: '#/components/responses/503ServiceUnavailable' /owners: get: summary: List workspaces description: 'List the workspaces that your API key has access to, optionally filtered by name or owner email address. ' operationId: list-owners tags: - Workspaces parameters: - name: name description: Only return workspaces with one of the provided names. Only exact matches are returned. in: query schema: type: array items: type: string - name: email description: Only return workspaces owned by one of the provided email addresses. in: query schema: type: array items: type: string - $ref: '#/components/parameters/cursorParam' - $ref: '#/components/parameters/limitParam' responses: '200': description: OK content: application/json: schema: type: array items: $ref: '#/components/schemas/ownerWithCursor' '401': $ref: '#/components/responses/401Unauthorized' '406': $ref: '#/components/responses/406NotAcceptable' '429': $ref: '#/components/responses/429RateLimit' '500': $ref: '#/components/responses/500InternalServerError' '503': $ref: '#/components/responses/503ServiceUnavailable' /owners/{ownerId}: parameters: - name: ownerId in: path required: true description: The ID of the user or team schema: type: string get: summary: Retrieve workspace description: 'Retrieve the workspace with the provided ID. Workspace IDs start with `tea-`. If you provide a user ID (starts with `own-`), this endpoint returns the user''s default workspace. ' operationId: retrieve-owner tags: - Workspaces responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/owner' '401': $ref: '#/components/responses/401Unauthorized' '404': $ref: '#/components/responses/404NotFound' '406': $ref: '#/components/responses/406NotAcceptable' '410': $ref: '#/components/responses/410Gone' '429': $ref: '#/components/responses/429RateLimit' '500': $ref: '#/components/responses/500InternalServerError' '503': $ref: '#/components/responses/503ServiceUnavailable' /owners/{ownerId}/members: parameters: - name: ownerId in: path required: true description: The ID of the team schema: type: string get: summary: List workspace members description: 'Retrieves the list of users belonging to the workspace with the provided ID. ' operationId: retrieve-owner-members tags: - Workspaces responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/teamMembers' '401': $ref: '#/components/responses/401Unauthorized' '404': $ref: '#/components/responses/404NotFound' '406': $ref: '#/components/responses/406NotAcceptable' '410': $ref: '#/components/responses/410Gone' '429': $ref: '#/components/responses/429RateLimit' '500': $ref: '#/components/responses/500InternalServerError' '503': $ref: '#/components/responses/503ServiceUnavailable' components: responses: 429RateLimit: description: Rate limit has been surpassed. content: application/json: schema: $ref: '#/components/schemas/error' 409Conflict: description: The current state of the resource conflicts with this request. content: application/json: schema: $ref: '#/components/schemas/error' 503ServiceUnavailable: description: Server currently unavailable. content: application/json: schema: $ref: '#/components/schemas/error' 403Forbidden: description: You do not have permissions for the requested resource. content: application/json: schema: $ref: '#/components/schemas/error' 500InternalServerError: description: An unexpected server error has occurred. content: application/json: schema: $ref: '#/components/schemas/error' 404NotFound: description: Unable to find the requested resource. content: application/json: schema: $ref: '#/components/schemas/error' 406NotAcceptable: description: Unable to generate preferred media types as specified by Accept request header. content: application/json: schema: $ref: '#/components/schemas/error' 400BadRequest: description: The request could not be understood by the server. content: application/json: schema: $ref: '#/components/schemas/error' 401Unauthorized: description: Authorization information is missing or invalid. content: application/json: schema: $ref: '#/components/schemas/error' 410Gone: description: The requested resource is no longer available. content: application/json: schema: $ref: '#/components/schemas/error' schemas: teamMemberRole: type: string description: The member's workspace role. Values are always returned in uppercase. enum: - ADMIN - DEVELOPER - WORKSPACE_CONTRIBUTOR - WORKSPACE_BILLING - WORKSPACE_VIEWER example: DEVELOPER owner: type: object required: - id - name - email - type properties: id: type: string name: type: string email: type: string ipAllowList: type: array items: $ref: '#/components/schemas/cidrBlockAndDescription' twoFactorAuthEnabled: type: boolean description: Whether two-factor authentication is enabled for the owner. Only present if `type` is `user`. type: type: string enum: - user - team ownerWithCursor: type: object properties: owner: $ref: '#/components/schemas/owner' cursor: $ref: '#/components/schemas/cursor' cursor: type: string teamMembers: type: array items: $ref: '#/components/schemas/teamMember' cidrBlockAndDescription: type: object required: - cidrBlock - description properties: cidrBlock: type: string description: description: User-provided description of the CIDR block type: string teamMember: type: object required: - userId - name - email - status - role - mfaEnabled properties: userId: type: string name: type: string email: type: string status: type: string enum: - active - inactive role: $ref: '#/components/schemas/teamMemberRole' mfaEnabled: type: boolean error: type: object properties: id: type: string message: type: string parameters: cursorParam: name: cursor in: query required: false description: The position in the result list to start from when fetching paginated results. For details, see [Pagination](https://api-docs.render.com/reference/pagination). schema: type: string limitParam: name: limit in: query required: false description: The maximum number of items to return. For details, see [Pagination](https://api-docs.render.com/reference/pagination). schema: type: integer default: 20 minimum: 1 maximum: 100 description: Defaults to 20 userIdPathParam: name: userId in: path required: true description: The ID of the user (Render object ID with a `usr-` prefix). schema: type: string pattern: ^usr-[0-9a-v]{20}$ example: usr-5k6m7n8p9q0r1s2t3u4v ownerIdPathParam: name: ownerId in: path description: The ID of the workspace to return resources for schema: type: string required: true securitySchemes: BearerAuth: type: http scheme: bearer x-readme: metrics-enabled: false