Render Logs API

Query historical logs across services, datastores, jobs, and cron jobs with rich filters and timestamp pagination via GET /logs, and subscribe to real-time logs over a documented WebSocket at wss://api.render.com/v1/logs/subscribe.

OpenAPI Specification

render-com-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Render API
  description: >-
    The Render REST API programmatically manages resources on the Render cloud
    application platform (PaaS). It exposes almost all of the functionality
    available in the Render Dashboard - services (web services, static sites,
    private services, background workers, cron jobs), deploys, custom domains,
    environment variables and groups, secret files, managed Postgres and Key
    Value (Redis-compatible) datastores, one-off jobs, persistent disks,
    Blueprints, projects and environments, workspaces and members, registry
    credentials, metrics, logs, and webhooks. All requests are authenticated
    with a Bearer API key created in the Render Dashboard. Real-time log
    streaming is available over a WebSocket surface (see the companion AsyncAPI
    document). This OpenAPI document models the REST surface; a subset of
    endpoints is confirmed against Render's public API reference and the
    remainder follow Render's documented, consistent REST conventions.
  version: '1.0'
  contact:
    name: Render
    url: https://render.com
  license:
    name: Proprietary
    url: https://render.com/terms
servers:
  - url: https://api.render.com/v1
    description: Render Public API
security:
  - bearerAuth: []
tags:
  - name: Services
    description: Web services, static sites, private services, background workers, and cron jobs.
  - name: Deploys
    description: Build and release deploys for a service, plus rollback.
  - name: Custom Domains
    description: Custom domains attached to a service, with DNS and TLS.
  - name: Environment Variables
    description: Per-service environment variables and secret files.
  - name: Environment Groups
    description: Reusable groups of environment variables and secret files.
  - name: Postgres
    description: Managed Render Postgres instances.
  - name: Key Value
    description: Redis-compatible Key Value datastores.
  - name: Jobs
    description: One-off jobs run in a service environment.
  - name: Disks
    description: Persistent disks and snapshots.
  - name: Blueprints
    description: Infrastructure-as-code Blueprints (render.yaml).
  - name: Projects
    description: Projects and their environments.
  - name: Environments
    description: Environments within a project.
  - name: Workspaces
    description: Workspaces (owners) and members.
  - name: Registry Credentials
    description: Container registry credentials.
  - name: Metrics
    description: Time-series metrics for services and datastores.
  - name: Logs
    description: Historical log queries. Real-time streaming is over WebSocket.
  - name: Webhooks
    description: Outbound webhooks for platform events.
paths:
  /services:
    get:
      operationId: listServices
      tags: [Services]
      summary: List services
      description: List all services in the authorized workspaces, with filters and cursor pagination.
      parameters:
        - $ref: '#/components/parameters/Cursor'
        - $ref: '#/components/parameters/Limit'
      responses:
        '200':
          description: A list of services.
        '401':
          $ref: '#/components/responses/Unauthorized'
    post:
      operationId: createService
      tags: [Services]
      summary: Create a service
      description: Create a new service (web service, static site, private service, background worker, or cron job).
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
      responses:
        '201':
          description: The created service.
        '401':
          $ref: '#/components/responses/Unauthorized'
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /services/{serviceId}:
    parameters:
      - $ref: '#/components/parameters/ServiceId'
    get:
      operationId: retrieveService
      tags: [Services]
      summary: Retrieve a service
      responses:
        '200':
          description: The requested service.
        '404':
          $ref: '#/components/responses/NotFound'
    patch:
      operationId: updateService
      tags: [Services]
      summary: Update a service
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
      responses:
        '200':
          description: The updated service.
    delete:
      operationId: deleteService
      tags: [Services]
      summary: Delete a service
      responses:
        '204':
          description: The service was deleted.
  /services/{serviceId}/deploys:
    parameters:
      - $ref: '#/components/parameters/ServiceId'
    get:
      operationId: listDeploys
      tags: [Deploys]
      summary: List deploys
      responses:
        '200':
          description: A list of deploys for the service.
    post:
      operationId: createDeploy
      tags: [Deploys]
      summary: Trigger a deploy
      requestBody:
        content:
          application/json:
            schema:
              type: object
      responses:
        '201':
          description: The triggered deploy.
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /services/{serviceId}/deploys/{deployId}:
    parameters:
      - $ref: '#/components/parameters/ServiceId'
      - $ref: '#/components/parameters/DeployId'
    get:
      operationId: retrieveDeploy
      tags: [Deploys]
      summary: Retrieve a deploy
      responses:
        '200':
          description: The requested deploy.
  /services/{serviceId}/deploys/{deployId}/cancel:
    parameters:
      - $ref: '#/components/parameters/ServiceId'
      - $ref: '#/components/parameters/DeployId'
    post:
      operationId: cancelDeploy
      tags: [Deploys]
      summary: Cancel a deploy
      responses:
        '200':
          description: The canceled deploy.
  /services/{serviceId}/rollback:
    parameters:
      - $ref: '#/components/parameters/ServiceId'
    post:
      operationId: rollbackService
      tags: [Deploys]
      summary: Roll back a service
      description: Roll a service back to a previous deploy.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
      responses:
        '201':
          description: The rollback deploy.
  /services/{serviceId}/restart:
    parameters:
      - $ref: '#/components/parameters/ServiceId'
    post:
      operationId: restartService
      tags: [Services]
      summary: Restart a service
      responses:
        '202':
          description: Restart accepted.
  /services/{serviceId}/suspend:
    parameters:
      - $ref: '#/components/parameters/ServiceId'
    post:
      operationId: suspendService
      tags: [Services]
      summary: Suspend a service
      responses:
        '202':
          description: Suspend accepted.
  /services/{serviceId}/resume:
    parameters:
      - $ref: '#/components/parameters/ServiceId'
    post:
      operationId: resumeService
      tags: [Services]
      summary: Resume a service
      responses:
        '202':
          description: Resume accepted.
  /services/{serviceId}/scale:
    parameters:
      - $ref: '#/components/parameters/ServiceId'
    post:
      operationId: scaleService
      tags: [Services]
      summary: Scale a service
      description: Set the number of running instances for a service (manual scaling).
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                numInstances:
                  type: integer
      responses:
        '202':
          description: Scale accepted.
  /services/{serviceId}/autoscaling:
    parameters:
      - $ref: '#/components/parameters/ServiceId'
    put:
      operationId: updateAutoscaling
      tags: [Services]
      summary: Update autoscaling
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
      responses:
        '200':
          description: The updated autoscaling configuration.
    delete:
      operationId: disableAutoscaling
      tags: [Services]
      summary: Disable autoscaling
      responses:
        '204':
          description: Autoscaling disabled.
  /services/{serviceId}/cache/purge:
    parameters:
      - $ref: '#/components/parameters/ServiceId'
    post:
      operationId: purgeCache
      tags: [Services]
      summary: Purge static site cache
      responses:
        '202':
          description: Cache purge accepted.
  /services/{serviceId}/preview:
    parameters:
      - $ref: '#/components/parameters/ServiceId'
    post:
      operationId: createServicePreview
      tags: [Services]
      summary: Create a service preview
      requestBody:
        content:
          application/json:
            schema:
              type: object
      responses:
        '201':
          description: The created preview service.
  /services/{serviceId}/events:
    parameters:
      - $ref: '#/components/parameters/ServiceId'
    get:
      operationId: listEvents
      tags: [Services]
      summary: List service events
      responses:
        '200':
          description: A list of service events.
  /services/{serviceId}/custom-domains:
    parameters:
      - $ref: '#/components/parameters/ServiceId'
    get:
      operationId: listCustomDomains
      tags: [Custom Domains]
      summary: List custom domains
      responses:
        '200':
          description: A list of custom domains.
    post:
      operationId: createCustomDomain
      tags: [Custom Domains]
      summary: Add a custom domain
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
      responses:
        '201':
          description: The added custom domain.
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /services/{serviceId}/custom-domains/{customDomainIdOrName}:
    parameters:
      - $ref: '#/components/parameters/ServiceId'
      - name: customDomainIdOrName
        in: path
        required: true
        schema:
          type: string
    get:
      operationId: retrieveCustomDomain
      tags: [Custom Domains]
      summary: Retrieve a custom domain
      responses:
        '200':
          description: The requested custom domain.
    delete:
      operationId: deleteCustomDomain
      tags: [Custom Domains]
      summary: Delete a custom domain
      responses:
        '204':
          description: The custom domain was deleted.
  /services/{serviceId}/custom-domains/{customDomainIdOrName}/verify:
    parameters:
      - $ref: '#/components/parameters/ServiceId'
      - name: customDomainIdOrName
        in: path
        required: true
        schema:
          type: string
    post:
      operationId: verifyCustomDomain
      tags: [Custom Domains]
      summary: Verify a custom domain
      responses:
        '200':
          description: Verification result.
  /services/{serviceId}/env-vars:
    parameters:
      - $ref: '#/components/parameters/ServiceId'
    get:
      operationId: listEnvVars
      tags: [Environment Variables]
      summary: List environment variables
      responses:
        '200':
          description: A list of environment variables.
    put:
      operationId: replaceEnvVars
      tags: [Environment Variables]
      summary: Replace environment variables
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: array
              items:
                type: object
      responses:
        '200':
          description: The updated environment variables.
  /services/{serviceId}/env-vars/{envVarKey}:
    parameters:
      - $ref: '#/components/parameters/ServiceId'
      - name: envVarKey
        in: path
        required: true
        schema:
          type: string
    get:
      operationId: retrieveEnvVar
      tags: [Environment Variables]
      summary: Retrieve an environment variable
      responses:
        '200':
          description: The requested environment variable.
    put:
      operationId: upsertEnvVar
      tags: [Environment Variables]
      summary: Add or update an environment variable
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                value:
                  type: string
      responses:
        '200':
          description: The upserted environment variable.
    delete:
      operationId: deleteEnvVar
      tags: [Environment Variables]
      summary: Delete an environment variable
      responses:
        '204':
          description: The environment variable was deleted.
  /services/{serviceId}/secret-files:
    parameters:
      - $ref: '#/components/parameters/ServiceId'
    get:
      operationId: listSecretFiles
      tags: [Environment Variables]
      summary: List secret files
      responses:
        '200':
          description: A list of secret files.
    put:
      operationId: replaceSecretFiles
      tags: [Environment Variables]
      summary: Replace secret files
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: array
              items:
                type: object
      responses:
        '200':
          description: The updated secret files.
  /services/{serviceId}/secret-files/{secretFileName}:
    parameters:
      - $ref: '#/components/parameters/ServiceId'
      - name: secretFileName
        in: path
        required: true
        schema:
          type: string
    put:
      operationId: upsertSecretFile
      tags: [Environment Variables]
      summary: Add or update a secret file
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
      responses:
        '200':
          description: The upserted secret file.
    delete:
      operationId: deleteSecretFile
      tags: [Environment Variables]
      summary: Delete a secret file
      responses:
        '204':
          description: The secret file was deleted.
  /env-groups:
    get:
      operationId: listEnvGroups
      tags: [Environment Groups]
      summary: List environment groups
      responses:
        '200':
          description: A list of environment groups.
    post:
      operationId: createEnvGroup
      tags: [Environment Groups]
      summary: Create an environment group
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
      responses:
        '201':
          description: The created environment group.
  /env-groups/{envGroupId}:
    parameters:
      - name: envGroupId
        in: path
        required: true
        schema:
          type: string
    get:
      operationId: retrieveEnvGroup
      tags: [Environment Groups]
      summary: Retrieve an environment group
      responses:
        '200':
          description: The requested environment group.
    patch:
      operationId: updateEnvGroup
      tags: [Environment Groups]
      summary: Update an environment group
      requestBody:
        content:
          application/json:
            schema:
              type: object
      responses:
        '200':
          description: The updated environment group.
    delete:
      operationId: deleteEnvGroup
      tags: [Environment Groups]
      summary: Delete an environment group
      responses:
        '204':
          description: The environment group was deleted.
  /env-groups/{envGroupId}/env-vars/{envVarKey}:
    parameters:
      - name: envGroupId
        in: path
        required: true
        schema:
          type: string
      - name: envVarKey
        in: path
        required: true
        schema:
          type: string
    put:
      operationId: upsertEnvGroupEnvVar
      tags: [Environment Groups]
      summary: Add or update a variable in an environment group
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
      responses:
        '200':
          description: The upserted variable.
    delete:
      operationId: deleteEnvGroupEnvVar
      tags: [Environment Groups]
      summary: Delete a variable from an environment group
      responses:
        '204':
          description: The variable was deleted.
  /postgres:
    get:
      operationId: listPostgres
      tags: [Postgres]
      summary: List Postgres instances
      responses:
        '200':
          description: A list of Postgres instances.
    post:
      operationId: createPostgres
      tags: [Postgres]
      summary: Create a Postgres instance
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
      responses:
        '201':
          description: The created Postgres instance.
  /postgres/{postgresId}:
    parameters:
      - name: postgresId
        in: path
        required: true
        schema:
          type: string
    get:
      operationId: retrievePostgres
      tags: [Postgres]
      summary: Retrieve a Postgres instance
      responses:
        '200':
          description: The requested Postgres instance.
    patch:
      operationId: updatePostgres
      tags: [Postgres]
      summary: Update a Postgres instance
      requestBody:
        content:
          application/json:
            schema:
              type: object
      responses:
        '200':
          description: The updated Postgres instance.
    delete:
      operationId: deletePostgres
      tags: [Postgres]
      summary: Delete a Postgres instance
      responses:
        '204':
          description: The Postgres instance was deleted.
  /postgres/{postgresId}/connection-info:
    parameters:
      - name: postgresId
        in: path
        required: true
        schema:
          type: string
    get:
      operationId: retrievePostgresConnectionInfo
      tags: [Postgres]
      summary: Retrieve Postgres connection info
      responses:
        '200':
          description: Connection strings and credentials.
  /postgres/{postgresId}/suspend:
    parameters:
      - name: postgresId
        in: path
        required: true
        schema:
          type: string
    post:
      operationId: suspendPostgres
      tags: [Postgres]
      summary: Suspend a Postgres instance
      responses:
        '202':
          description: Suspend accepted.
  /postgres/{postgresId}/resume:
    parameters:
      - name: postgresId
        in: path
        required: true
        schema:
          type: string
    post:
      operationId: resumePostgres
      tags: [Postgres]
      summary: Resume a Postgres instance
      responses:
        '202':
          description: Resume accepted.
  /postgres/{postgresId}/export:
    parameters:
      - name: postgresId
        in: path
        required: true
        schema:
          type: string
    post:
      operationId: createPostgresExport
      tags: [Postgres]
      summary: Trigger a Postgres export
      responses:
        '201':
          description: The triggered export.
  /postgres/{postgresId}/exports:
    parameters:
      - name: postgresId
        in: path
        required: true
        schema:
          type: string
    get:
      operationId: listPostgresExports
      tags: [Postgres]
      summary: List Postgres exports
      responses:
        '200':
          description: A list of exports.
  /postgres/{postgresId}/recovery-info:
    parameters:
      - name: postgresId
        in: path
        required: true
        schema:
          type: string
    get:
      operationId: retrievePostgresRecoveryInfo
      tags: [Postgres]
      summary: Retrieve point-in-time recovery info
      responses:
        '200':
          description: Recovery window information.
  /postgres/{postgresId}/recovery:
    parameters:
      - name: postgresId
        in: path
        required: true
        schema:
          type: string
    post:
      operationId: triggerPostgresRecovery
      tags: [Postgres]
      summary: Trigger a point-in-time recovery
      requestBody:
        content:
          application/json:
            schema:
              type: object
      responses:
        '201':
          description: The recovery result.
  /postgres/{postgresId}/failover:
    parameters:
      - name: postgresId
        in: path
        required: true
        schema:
          type: string
    post:
      operationId: triggerPostgresFailover
      tags: [Postgres]
      summary: Trigger a Postgres failover
      responses:
        '202':
          description: Failover accepted.
  /key-value:
    get:
      operationId: listKeyValue
      tags: [Key Value]
      summary: List Key Value instances
      responses:
        '200':
          description: A list of Key Value instances.
    post:
      operationId: createKeyValue
      tags: [Key Value]
      summary: Create a Key Value instance
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
      responses:
        '201':
          description: The created Key Value instance.
  /key-value/{keyValueId}:
    parameters:
      - name: keyValueId
        in: path
        required: true
        schema:
          type: string
    get:
      operationId: retrieveKeyValue
      tags: [Key Value]
      summary: Retrieve a Key Value instance
      responses:
        '200':
          description: The requested Key Value instance.
    patch:
      operationId: updateKeyValue
      tags: [Key Value]
      summary: Update a Key Value instance
      requestBody:
        content:
          application/json:
            schema:
              type: object
      responses:
        '200':
          description: The updated Key Value instance.
    delete:
      operationId: deleteKeyValue
      tags: [Key Value]
      summary: Delete a Key Value instance
      responses:
        '204':
          description: The Key Value instance was deleted.
  /key-value/{keyValueId}/connection-info:
    parameters:
      - name: keyValueId
        in: path
        required: true
        schema:
          type: string
    get:
      operationId: retrieveKeyValueConnectionInfo
      tags: [Key Value]
      summary: Retrieve Key Value connection info
      responses:
        '200':
          description: Connection strings and credentials.
  /services/{serviceId}/jobs:
    parameters:
      - $ref: '#/components/parameters/ServiceId'
    get:
      operationId: listJobs
      tags: [Jobs]
      summary: List one-off jobs
      responses:
        '200':
          description: A list of jobs for the service.
    post:
      operationId: createJob
      tags: [Jobs]
      summary: Create a one-off job
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                startCommand:
                  type: string
      responses:
        '201':
          description: The created job.
        '429':
          $ref: '#/components/responses/TooManyRequests'
  /services/{serviceId}/jobs/{jobId}:
    parameters:
      - $ref: '#/components/parameters/ServiceId'
      - name: jobId
        in: path
        required: true
        schema:
          type: string
    get:
      operationId: retrieveJob
      tags: [Jobs]
      summary: Retrieve a one-off job
      responses:
        '200':
          description: The requested job.
  /disks:
    get:
      operationId: listDisks
      tags: [Disks]
      summary: List disks
      responses:
        '200':
          description: A list of disks.
    post:
      operationId: createDisk
      tags: [Disks]
      summary: Add a disk
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
      responses:
        '201':
          description: The created disk.
  /disks/{diskId}:
    parameters:
      - name: diskId
        in: path
        required: true
        schema:
          type: string
    get:
      operationId: retrieveDisk
      tags: [Disks]
      summary: Retrieve a disk
      responses:
        '200':
          description: The requested disk.
    patch:
      operationId: updateDisk
      tags: [Disks]
      summary: Update a disk
      requestBody:
        content:
          application/json:
            schema:
              type: object
      responses:
        '200':
          description: The updated disk.
    delete:
      operationId: deleteDisk
      tags: [Disks]
      summary: Delete a disk
      responses:
        '204':
          description: The disk was deleted.
  /disks/{diskId}/snapshots:
    parameters:
      - name: diskId
        in: path
        required: true
        schema:
          type: string
    get:
      operationId: listDiskSnapshots
      tags: [Disks]
      summary: List disk snapshots
      responses:
        '200':
          description: A list of snapshots.
  /disks/{diskId}/snapshots/restore:
    parameters:
      - name: diskId
        in: path
        required: true
        schema:
          type: string
    post:
      operationId: restoreDiskSnapshot
      tags: [Disks]
      summary: Restore a disk from a snapshot
      requestBody:
        content:
          application/json:
            schema:
              type: object
      responses:
        '202':
          description: Restore accepted.
  /blueprints:
    get:
      operationId: listBlueprints
      tags: [Blueprints]
      summary: List Blueprints
      responses:
        '200':
          description: A list of Blueprints.
  /blueprints/validate:
    post:
      operationId: validateBlueprint
      tags: [Blueprints]
      summary: Validate a Blueprint spec
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
      responses:
        '200':
          description: Validation result.
  /blueprints/{blueprintId}:
    parameters:
      - name: blueprintId
        in: path
        required: true
        schema:
          type: string
    get:
      operationId: retrieveBlueprint
      tags: [Blueprints]
      summary: Retrieve a Blueprint
      responses:
        '200':
          description: The requested Blueprint.
    patch:
      operationId: updateBlueprint
      tags: [Blueprints]
      summary: Update a Blueprint
      requestBody:
        content:
          application/json:
            schema:
              type: object
      responses:
        '200':
          description: The updated Blueprint.
    delete:
      operationId: disconnectBlueprint
      tags: [Blueprints]
      summary: Disconnect a Blueprint
      responses:
        '204':
          description: The Blueprint was disconnected.
  /blueprints/{blueprintId}/syncs:
    parameters:
      - name: blueprintId
        in: path
        required: true
        schema:
          type: string
    get:
      operationId: listBlueprintSyncs
      tags: [Blueprints]
      summary: List Blueprint syncs
      responses:
        '200':
          description: A list of Blueprint syncs.
  /projects:
    get:
      operationId: listProjects
      tags: [Projects]
      summary: List projects
      responses:
        '200':
          description: A list of projects.
    post:
      operationId: createProject
      tags: [Projects]
      summary: Create a project
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
      responses:
        '201':
          description: The created project.
  /projects/{projectId}:
    parameters:
      - name: projectId
        in: path
        required: true
        schema:
          type: string
    get:
      operationId: retrieveProject
      tags: [Projects]
      summary: Retrieve a project
      responses:
        '200':
          description: The requested project.
    patch:
      operationId: updateProject
      tags: [Projects]
      summary: Update a project
      requestBody:
        content:
          application/json:
            schema:
              type: object
      responses:
        '200':
          description: The updated project.
    delete:
      operationId: deleteProject
      tags: [Projects]
      summary: Delete a project
      responses:
        '204':
          description: The project was deleted.
  /environments:
    get:
      operationId: listEnvironments
      tags: [Environments]
      summary: List environments
      responses:
        '200':
          description: A list of environments.
    post:
      operationId: createEnvironment
      tags: [Environments]
      summary: Create an environment
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
      responses:
        '201':
          description: The created environment.
  /environments/{environmentId}:
    parameters:
      - name: environmentId
        in: path
        required: true
        schema:
          type: string
    get:
      operationId: retrieveEnvironment
      tags: [Environments]
      summary: Retrieve an environment
      responses:
        '200':
          description: The requested environment.
    patch:
      operationId: updateEnvironment
      tags: [Environments]
      summary: Update an environment
      requestBody:
        content:
          application/json:
            schema:
              type: object
      responses:
        '200':
          description: The updated environment.
    delete:
      operationId: deleteEnvironment
      tags: [Environments]
      summary: Delete an environment
      responses:
        '204':
          description: The environment was deleted.
  /owners:
    get:
      operationId: listOwners
      tags: [Workspaces]
      summary: List workspaces
      description: List the workspaces (owners) the API key can access.
      responses:
        '200':
          description: A list of workspaces.
  /owners/{ownerId}:
    parameters:
      - $ref: '#/components/parameters/OwnerId'
    get:
      operationId: retrieveOwner
      tags: [Workspaces]
      summary: Retrieve a workspace
      responses:
        '200':
          description: The requested workspace.
  /owners/{ownerId}/members:
    parameters:
      - $ref: '#/components/parameters/OwnerId'
    get:
      operationId: listOwnerMembers
      tags: [Workspaces]
      summary: List workspace members
      responses:
        '200':
          description: A list of members.
  /owners/{ownerId}/members/{userId}:
    parameters:
      - $ref: '#/components/parameters/OwnerId'
      - name: userId
        in: path
        required: true
        schema:
          type: string
    patch:
      operationId: updateOwnerMember
      tags: [Workspaces]
      summary: Update a member's role
      requestBody:
        content:
          application/json:
            schema:
              type: object
      responses:
        '200':
          description: The updated member.
    delete:
      operationId: removeOwnerMember
      tags: [Workspaces]
      summary: Remove a member
      responses:
        '204':
          description: The member was removed.
  /owners/{ownerId}/audit-logs:
    parameters:
      - $ref: '#/components/parameters/OwnerId'
    get:
      operationId: listAuditLogs
      tags: [Workspaces]
      summary: List workspace audit logs
      responses:
        '200':
          description: A list of audit log entries.
  /registrycredentials:
    get:
      operationId: listRegistryCredentials
      tags: [Registry Credentials]
      summary: List registry credentials
      responses:
        '200':
          description: A list of registry credentials.
    post:
      operationId: createRegistryCredential
      tags: [Registry Credentials]
      summary: Create a registry credential
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
      responses:
        '201':
          description: The created registry credential.
  /registrycredentials/{registryCredentialId}:
    parameters:
      - name: registryCredentialId
        in: p

# --- truncated at 32 KB (40 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/render-com/refs/heads/main/openapi/render-com-openapi.yml