openapi: 3.0.0 info: title: Zuplo Developer API termsOfService: https://zuplo.com/legal/terms contact: name: Zuplo url: https://zuplo.com/ email: support@zuplo.com description: The Zuplo Developer API (ZAPI) enables developers to programmatically manage API keys, consumers, buckets, tunnels, deployments, metering, audit logs, and more. version: 1.0.0 tags: - name: mTLS - name: Projects - name: Audit Logs - name: Metering V2 - Subscription Usage - name: Metering V2 - Consumers - name: Metering V2 - Consumer Usage - name: Metering V3 - Stripe Setup - name: Metering V3 - Plan Invites - name: Metering V3 - Monetization Configuration - name: MCP Servers description: MCP server endpoints for AI-powered tools - name: Managed Dedicated - Fleet Configurations description: Manage proxy configurations for managed-dedicated fleets - name: Managed Dedicated - Fleets description: List and retrieve fleet information - name: Metering V2 - Tenants description: API Metering tenant management - name: Key Auth V2 - Api Keys description: API key authentication management - name: Metering V2 - Plans description: API Metering plan management - name: Metering V2 - Users description: API Metering user managmenet - name: Metering V2 - Subscriptions description: API Metering bucket management - name: Client Auth - OAuth description: Client authentication endpoints - name: Metering - Quotas description: API Metering quotas - name: Metering - Subscriptions description: API Metering subscriptions - name: Metering - Plans description: API Metering plan management - name: Metering - Buckets description: API Metering bucket management - name: Custom Domains description: Manage account custom domains and their deployment mappings - name: Environments description: Zuplo environments - name: Analytics description: Analytics and usage data - name: Tunnel Services description: List of endpoints available to manage services for a given tunnel. - name: Tunnels description: List of endpoints available to perform operations on Tunnels. - name: Deployments description: Set of operations available to handle deployments. You can learn more about deployments [here](https://zuplo.com/docs/articles/environments). - name: Variables description: Set of operations available to create and update environment variables. You can learn more about environment variables [here](https://zuplo.com/docs/articles/environment-variables). - name: API Keys - Keys description: This is an object representing an API key. This section includes a list of endpoints to perform CRUD operations on an API key. You can learn more about API keys [here](https://zuplo.com/docs/articles/api-key-management#api-keys). - name: API Keys - Managers description: A Manager is an object representing a group of managers in a given consumer. This section includes a group of endpoints available to perform operations on a manager. You can learn more about consumer managers [here](https://zuplo.com/docs/articles/api-key-management#consumers). - name: API Keys - Consumers description: A Consumer is an object representing a group of API keys in a given bucket. This section includes a group of endpoints available to perform CRUD operations on a consumer. You can learn more about consumers [here](https://zuplo.com/docs/articles/api-key-management#consumers). - name: API Keys - Buckets description: A Bucket is an object representing a group of API key consumers for a given account. This section includes a group of endpoints available to perform CRUD operations on a bucket. You can learn more about buckets [here](https://zuplo.com/docs/articles/api-key-buckets). paths: /mcp/docs: post: operationId: MCPService_post summary: Docs MCP Server description: The Zuplo Documentation MCP server parameters: [] responses: '200': description: The request has succeeded. content: application/json: schema: {} tags: - MCP Servers x-mcp-server: name: zuplo-docs version: 1.0.0 tools: - name: search-zuplo-docs description: Use this tool to do a semantic search for reference content related to Zuplo. The results provided will be extracts from documentation sites and other public sources like GitHub. The content may not fully answer your question -- be circumspect when reviewing and interpreting these extracts before using them in your response. - name: ask-question-about-zuplo description: Use this tool to ask a question about Zuplo to an AI Support Agent that is knowledgeable about Zuplo. Use this tool to ask specific troubleshooting, feature capability, or conceptual questions. Be specific and provide the minimum context needed to address your question in full /openapi: get: operationId: openApi summary: OpenAPI Specification description: Returns the OpenAPI V3 spec for Zuplo's Developer API parameters: [] responses: '200': description: The request has succeeded. /v1/accounts/{accountName}/audit-logs: get: operationId: AuditLogsService_list summary: Query Audit Logs description: Retrieves audit logs with optional filtering and pagination. parameters: - $ref: '#/components/parameters/Zuplo.Common.AccountParams' - $ref: '#/components/parameters/Zuplo.AuditLogs.AuditLogsQuery.limit' - $ref: '#/components/parameters/Zuplo.AuditLogs.AuditLogsQuery.offset' - $ref: '#/components/parameters/Zuplo.AuditLogs.AuditLogsQuery.action' - $ref: '#/components/parameters/Zuplo.AuditLogs.AuditLogsQuery.startDate' - $ref: '#/components/parameters/Zuplo.AuditLogs.AuditLogsQuery.endDate' - $ref: '#/components/parameters/Zuplo.AuditLogs.AuditLogsQuery.actor' - $ref: '#/components/parameters/Zuplo.AuditLogs.AuditLogsQuery.success' responses: '200': description: The request has succeeded. content: application/json: schema: $ref: '#/components/schemas/Zuplo.AuditLogs.AuditLogsResponse' '400': description: The server could not understand the request due to invalid syntax. content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.BadRequestProblemResponse' '401': description: Access is unauthorized. content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.UnauthorizedProblemResponse' '500': description: Server error content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.InternalServerErrorProblemResponse' tags: - Audit Logs /v1/accounts/{accountName}/custom-domains: get: operationId: CustomDomainsService_list summary: Get Custom Domains description: Gets the account custom domains parameters: - $ref: '#/components/parameters/Zuplo.Common.AccountParams' responses: '200': description: The request has succeeded. content: application/json: schema: $ref: '#/components/schemas/Zuplo.CustomDomains.CustomDomainsList' '400': description: The server could not understand the request due to invalid syntax. content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.BadRequestProblemResponse' '401': description: Access is unauthorized. content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.UnauthorizedProblemResponse' '500': description: Server error content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.InternalServerErrorProblemResponse' tags: - Custom Domains post: operationId: CustomDomainsService_create summary: Create Custom Domain description: Creates a custom domain parameters: - $ref: '#/components/parameters/Zuplo.Common.AccountParams' responses: '200': description: The request has succeeded. content: application/json: schema: $ref: '#/components/schemas/Zuplo.CustomDomains.CustomDomainMutationResult' '400': description: The server could not understand the request due to invalid syntax. content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.BadRequestProblemResponse' '401': description: Access is unauthorized. content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.UnauthorizedProblemResponse' '500': description: Server error content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.InternalServerErrorProblemResponse' tags: - Custom Domains requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/Zuplo.CustomDomains.CustomDomainCreateBody' patch: operationId: CustomDomainsService_update summary: Update a Custom Domain description: Updates a custom domain parameters: - $ref: '#/components/parameters/Zuplo.Common.AccountParams' responses: '200': description: The request has succeeded. content: application/json: schema: $ref: '#/components/schemas/Zuplo.CustomDomains.CustomDomainMutationResult' '400': description: The server could not understand the request due to invalid syntax. content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.BadRequestProblemResponse' '401': description: Access is unauthorized. content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.UnauthorizedProblemResponse' '500': description: Server error content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.InternalServerErrorProblemResponse' tags: - Custom Domains requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/Zuplo.CustomDomains.CustomDomainUpdateBody' delete: operationId: CustomDomainsService_delete summary: Delete a Custom Domain description: Delete a custom domain parameters: - $ref: '#/components/parameters/Zuplo.Common.AccountParams' - $ref: '#/components/parameters/Zuplo.CustomDomains.CustomDomainDeleteQuery.hostname' - $ref: '#/components/parameters/Zuplo.CustomDomains.CustomDomainDeleteQuery.deploymentName' responses: '200': description: The request has succeeded. '400': description: The server could not understand the request due to invalid syntax. content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.BadRequestProblemResponse' '401': description: Access is unauthorized. content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.UnauthorizedProblemResponse' '500': description: Server error content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.InternalServerErrorProblemResponse' tags: - Custom Domains /v1/accounts/{accountName}/key-buckets: get: operationId: ApiKeyBucketsService_list summary: Lists Buckets description: Lists all buckets belonging to this account. parameters: - $ref: '#/components/parameters/Zuplo.Common.AccountParams' responses: '200': description: The request has succeeded. content: application/json: schema: $ref: '#/components/schemas/Zuplo.ApiKeys.Buckets' '400': description: The server could not understand the request due to invalid syntax. content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.BadRequestProblemResponse' '401': description: Access is unauthorized. content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.UnauthorizedProblemResponse' '429': $ref: '#/components/responses/RateLimitWithRetryAfter' '500': description: Server error content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.InternalServerErrorProblemResponse' tags: - API Keys - Buckets post: operationId: ApiKeyBucketsService_create summary: Creates a Bucket description: Creates a new bucket for this account. parameters: - $ref: '#/components/parameters/Zuplo.Common.AccountParams' responses: '200': description: The request has succeeded. content: application/json: schema: $ref: '#/components/schemas/Zuplo.ApiKeys.Bucket' '400': description: The server could not understand the request due to invalid syntax. content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.BadRequestProblemResponse' '401': description: Access is unauthorized. content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.UnauthorizedProblemResponse' '429': $ref: '#/components/responses/RateLimitWithRetryAfter' '500': description: Server error content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.InternalServerErrorProblemResponse' tags: - API Keys - Buckets requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/Zuplo.ApiKeys.BucketCreateBody' /v1/accounts/{accountName}/key-buckets/{bucketName}: get: operationId: ApiKeyBucketsService_read summary: Gets a Bucket description: Returns the details for a bucket, including the token used to connect to the bucket. parameters: - $ref: '#/components/parameters/Zuplo.Common.AccountParams' - $ref: '#/components/parameters/Zuplo.ApiKeys.BucketParams.bucketName' responses: '200': description: The request has succeeded. content: application/json: schema: $ref: '#/components/schemas/Zuplo.ApiKeys.Bucket' '400': description: The server could not understand the request due to invalid syntax. content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.BadRequestProblemResponse' '401': description: Access is unauthorized. content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.UnauthorizedProblemResponse' '404': description: The server cannot find the requested resource. content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.NotFoundProblemResponse' '429': $ref: '#/components/responses/RateLimitWithRetryAfter' '500': description: Server error content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.InternalServerErrorProblemResponse' tags: - API Keys - Buckets patch: operationId: ApiKeyBucketsService_update summary: Updates a Bucket description: Updates a bucket, and returns the updated value. parameters: - $ref: '#/components/parameters/Zuplo.Common.AccountParams' - $ref: '#/components/parameters/Zuplo.ApiKeys.BucketParams.bucketName' responses: '200': description: The request has succeeded. content: application/json: schema: $ref: '#/components/schemas/Zuplo.ApiKeys.Bucket' '400': description: The server could not understand the request due to invalid syntax. content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.BadRequestProblemResponse' '401': description: Access is unauthorized. content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.UnauthorizedProblemResponse' '404': description: The server cannot find the requested resource. content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.NotFoundProblemResponse' '429': $ref: '#/components/responses/RateLimitWithRetryAfter' '500': description: Server error content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.InternalServerErrorProblemResponse' tags: - API Keys - Buckets requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/Zuplo.ApiKeys.BucketUpdateBody' delete: operationId: ApiKeyBucketsService_delete summary: Deletes a Bucket description: Deletes a bucket and any related resources parameters: - $ref: '#/components/parameters/Zuplo.Common.AccountParams' - $ref: '#/components/parameters/Zuplo.ApiKeys.BucketParams.bucketName' responses: '204': description: There is no content to send for this request, but the headers may be useful. '400': description: The server could not understand the request due to invalid syntax. content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.BadRequestProblemResponse' '401': description: Access is unauthorized. content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.UnauthorizedProblemResponse' '404': description: The server cannot find the requested resource. content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.NotFoundProblemResponse' '429': $ref: '#/components/responses/RateLimitWithRetryAfter' '500': description: Server error content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.InternalServerErrorProblemResponse' tags: - API Keys - Buckets /v1/accounts/{accountName}/key-buckets/{bucketName}/consumers: get: operationId: ApiKeyConsumersService_list summary: Lists Consumers description: Lists all consumers belonging to this account. parameters: - $ref: '#/components/parameters/Zuplo.Common.AccountParams' - $ref: '#/components/parameters/Zuplo.ApiKeys.BucketParams.bucketName' - name: limit in: query required: true description: 'The maximum number of entries to return. If the value exceeds the maximum, then the maximum value will be used. Default: 1000' schema: type: integer minimum: 1 maximum: 1000 explode: false - name: offset in: query required: true description: 'The offset of the first item returned in the collection. Default: 0' schema: type: integer minimum: 0 explode: false - $ref: '#/components/parameters/Zuplo.ApiKeys.IncludeApiKeyParam' - $ref: '#/components/parameters/Zuplo.ApiKeys.IncludeManagerInvitesParam' - $ref: '#/components/parameters/Zuplo.ApiKeys.IncludeManagerParam' - $ref: '#/components/parameters/Zuplo.ApiKeys.KeyFormatQueryParam' - $ref: '#/components/parameters/Zuplo.ApiKeys.ManagerEmailQueryParam' - $ref: '#/components/parameters/Zuplo.ApiKeys.TagQueryParam' responses: '200': description: The request has succeeded. content: application/json: schema: $ref: '#/components/schemas/Zuplo.ApiKeys.Consumers' '400': description: The server could not understand the request due to invalid syntax. content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.BadRequestProblemResponse' '401': description: Access is unauthorized. content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.UnauthorizedProblemResponse' '429': $ref: '#/components/responses/RateLimitWithRetryAfter' '500': description: Server error content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.InternalServerErrorProblemResponse' tags: - API Keys - Consumers post: operationId: ApiKeyConsumersService_create summary: Creates a Consumer description: Creates a new consumer for this account. parameters: - $ref: '#/components/parameters/Zuplo.Common.AccountParams' - $ref: '#/components/parameters/Zuplo.ApiKeys.BucketParams.bucketName' - $ref: '#/components/parameters/Zuplo.ApiKeys.WithApiKeyQueryParam' responses: '200': description: The request has succeeded. content: application/json: schema: $ref: '#/components/schemas/Zuplo.ApiKeys.Consumer' '400': description: The server could not understand the request due to invalid syntax. content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.BadRequestProblemResponse' '401': description: Access is unauthorized. content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.UnauthorizedProblemResponse' '429': $ref: '#/components/responses/RateLimitWithRetryAfter' '500': description: Server error content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.InternalServerErrorProblemResponse' tags: - API Keys - Consumers requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/Zuplo.ApiKeys.ConsumerCreateBody' /v1/accounts/{accountName}/key-buckets/{bucketName}/consumers/{consumerName}: get: operationId: ApiKeyConsumersService_read summary: Gets a Consumer description: Gets a consumer given a bucket name and consumer name. parameters: - $ref: '#/components/parameters/Zuplo.Common.AccountParams' - $ref: '#/components/parameters/Zuplo.ApiKeys.BucketParams.bucketName' - $ref: '#/components/parameters/Zuplo.ApiKeys.ConsumerParams.consumerName' - $ref: '#/components/parameters/Zuplo.ApiKeys.IncludeApiKeyParam' - $ref: '#/components/parameters/Zuplo.ApiKeys.KeyFormatQueryParam' - $ref: '#/components/parameters/Zuplo.ApiKeys.IncludeManagerParam' - $ref: '#/components/parameters/Zuplo.ApiKeys.IncludeManagerInvitesParam' - $ref: '#/components/parameters/Zuplo.ApiKeys.TagQueryParam' responses: '200': description: The request has succeeded. content: application/json: schema: $ref: '#/components/schemas/Zuplo.ApiKeys.Consumer' '400': description: The server could not understand the request due to invalid syntax. content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.BadRequestProblemResponse' '401': description: Access is unauthorized. content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.UnauthorizedProblemResponse' '404': description: The server cannot find the requested resource. content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.NotFoundProblemResponse' '429': $ref: '#/components/responses/RateLimitWithRetryAfter' '500': description: Server error content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.InternalServerErrorProblemResponse' tags: - API Keys - Consumers patch: operationId: ApiKeyConsumersService_update summary: Updates a Consumer description: Update the consumer with the matching consumer name. parameters: - $ref: '#/components/parameters/Zuplo.Common.AccountParams' - $ref: '#/components/parameters/Zuplo.ApiKeys.BucketParams.bucketName' - $ref: '#/components/parameters/Zuplo.ApiKeys.ConsumerParams.consumerName' - $ref: '#/components/parameters/Zuplo.ApiKeys.TagQueryParam' responses: '200': description: The request has succeeded. content: application/json: schema: $ref: '#/components/schemas/Zuplo.ApiKeys.Consumer' '400': description: The server could not understand the request due to invalid syntax. content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.BadRequestProblemResponse' '401': description: Access is unauthorized. content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.UnauthorizedProblemResponse' '404': description: The server cannot find the requested resource. content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.NotFoundProblemResponse' '429': $ref: '#/components/responses/RateLimitWithRetryAfter' '500': description: Server error content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.InternalServerErrorProblemResponse' tags: - API Keys - Consumers requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/Zuplo.ApiKeys.ConsumerUpdateBody' delete: operationId: ApiKeyConsumersService_delete summary: Deletes a Consumer description: Deletes a consumer and any related resources parameters: - $ref: '#/components/parameters/Zuplo.Common.AccountParams' - $ref: '#/components/parameters/Zuplo.ApiKeys.BucketParams.bucketName' - $ref: '#/components/parameters/Zuplo.ApiKeys.ConsumerParams.consumerName' - $ref: '#/components/parameters/Zuplo.ApiKeys.TagQueryParam' responses: '204': description: There is no content to send for this request, but the headers may be useful. '400': description: The server could not understand the request due to invalid syntax. content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.BadRequestProblemResponse' '401': description: Access is unauthorized. content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.UnauthorizedProblemResponse' '404': description: The server cannot find the requested resource. content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.NotFoundProblemResponse' '429': $ref: '#/components/responses/RateLimitWithRetryAfter' '500': description: Server error content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.InternalServerErrorProblemResponse' tags: - API Keys - Consumers /v1/accounts/{accountName}/key-buckets/{bucketName}/consumers/{consumerName}/keys: get: operationId: ApiKeyKeysService_list summary: Lists Keys description: Lists all keys for this consumer. parameters: - $ref: '#/components/parameters/Zuplo.Common.AccountParams' - $ref: '#/components/parameters/Zuplo.ApiKeys.BucketParams.bucketName' - $ref: '#/components/parameters/Zuplo.ApiKeys.ConsumerParams.consumerName' - name: limit in: query required: true description: 'The maximum number of entries to return. If the value exceeds the maximum, then the maximum value will be used. Default: 1000' schema: type: integer minimum: 1 maximum: 1000 explode: false - name: offset in: query required: true description: 'The offset of the first item returned in the collection. Default: 0' schema: type: integer minimum: 0 explode: false - $ref: '#/components/parameters/Zuplo.ApiKeys.KeyFormatQueryParam' responses: '200': description: The request has succeeded. content: application/json: schema: $ref: '#/components/schemas/Zuplo.ApiKeys.ApiKeys' '400': description: The server could not understand the request due to invalid syntax. content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.BadRequestProblemResponse' '401': description: Access is unauthorized. content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.UnauthorizedProblemResponse' '429': $ref: '#/components/responses/RateLimitWithRetryAfter' '500': description: Server error content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.InternalServerErrorProblemResponse' tags: - API Keys - Keys post: operationId: ApiKeyKeysService_create summary: Creates an API Key description: Creates a new API key for this consumer. New API keys will automatically have [API Key Leak Detection](https://zuplo.com/docs/articles/api-key-leak-detection) enabled. parameters: - $ref: '#/components/parameters/Zuplo.Common.AccountParams' - $ref: '#/components/parameters/Zuplo.ApiKeys.BucketParams.bucketName' - $ref: '#/components/parameters/Zuplo.ApiKeys.ConsumerParams.consumerName' responses: '200': description: The request has succeeded. content: application/json: schema: $ref: '#/components/schemas/Zuplo.ApiKeys.ApiKey' '400': description: The server could not understand the request due to invalid syntax. content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.BadRequestProblemResponse' '401': description: Access is unauthorized. content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.UnauthorizedProblemResponse' '429': $ref: '#/components/responses/RateLimitWithRetryAfter' '500': description: Server error content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.InternalServerErrorProblemResponse' tags: - API Keys - Keys requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/Zuplo.ApiKeys.ApiKeyCreateOrUpdateBody' /v1/accounts/{accountName}/key-buckets/{bucketName}/consumers/{consumerName}/keys/$bulk: post: operationId: ApiKeyKeysService_bulkCreate summary: Creates Multiple API Keys description: Creates multiple new API keys for this consumer. parameters: - $ref: '#/components/parameters/Zuplo.Common.AccountParams' - $ref: '#/components/parameters/Zuplo.ApiKeys.BucketParams.bucketName' - $ref: '#/components/parameters/Zuplo.ApiKeys.ConsumerParams.consumerName' responses: '200': description: The request has succeeded. content: application/json: schema: $ref: '#/components/schemas/Zuplo.ApiKeys.ApiKeys' '400': description: The server could not understand the request due to invalid syntax. content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.BadRequestProblemResponse' '401': description: Access is unauthorized. content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.UnauthorizedProblemResponse' '429': $ref: '#/components/responses/RateLimitWithRetryAfter' '500': description: Server error content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.InternalServerErrorProblemResponse' tags: - API Keys - Keys requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ApiKeyBulkCreateOrUpdateBody' /v1/accounts/{accountName}/key-buckets/{bucketName}/consumers/{consumerName}/keys/{keyId}: get: operationId: ApiKeyKeysService_get summary: Gets an API Key description: Retrieves an API key for this consumer. parameters: - $ref: '#/components/parameters/Zuplo.Common.AccountParams' - $ref: '#/components/parameters/Zuplo.ApiKeys.BucketParams.bucketName' - $ref: '#/components/parameters/Zuplo.ApiKeys.ConsumerParams.consumerName' - $ref: '#/components/parameters/Zuplo.ApiKeys.ApiKeyParams.keyId' - $ref: '#/components/parameters/Zuplo.ApiKeys.KeyFormatQueryParam' - $ref: '#/components/parameters/Zuplo.ApiKeys.TagQueryParam' responses: '200': description: The request has succeeded. content: application/json: schema: $ref: '#/components/schemas/Zuplo.ApiKeys.ApiKey' '400': description: The server could not understand the request due to invalid syntax. content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.BadRequestProblemResponse' '401': description: Access is unauthorized. content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.UnauthorizedProblemResponse' '404': description: The server cannot find the requested resource. content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.NotFoundProblemResponse' '429': $ref: '#/components/responses/RateLimitWithRetryAfter' '500': description: Server error content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.InternalServerErrorProblemResponse' tags: - API Keys - Keys patch: operationId: ApiKeyKeysService_update summary: Updates an API Key description: Updates an API key for this consumer. parameters: - $ref: '#/components/parameters/Zuplo.Common.AccountParams' - $ref: '#/components/parameters/Zuplo.ApiKeys.BucketParams.bucketName' - $ref: '#/components/parameters/Zuplo.ApiKeys.ConsumerParams.consumerName' - $ref: '#/components/parameters/Zuplo.ApiKeys.ApiKeyParams.keyId' - $ref: '#/components/parameters/Zuplo.ApiKeys.TagQueryParam' responses: '200': description: The request has succeeded. content: application/json: schema: $ref: '#/components/schemas/Zuplo.ApiKeys.ApiKey' '400': description: The server could not understand the request due to invalid syntax. content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.BadRequestProblemResponse' '401': description: Access is unauthorized. content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.UnauthorizedProblemResponse' '404': description: The server cannot find the requested resource. content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.NotFoundProblemResponse' '429': $ref: '#/components/responses/RateLimitWithRetryAfter' '500': description: Server error content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.InternalServerErrorProblemResponse' tags: - API Keys - Keys requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/Zuplo.ApiKeys.ApiKeyCreateOrUpdateBody' delete: operationId: ApiKeyKeysService_delete summary: Deletes an API Key description: Deletes an API key for this consumer. parameters: - $ref: '#/components/parameters/Zuplo.Common.AccountParams' - $ref: '#/components/parameters/Zuplo.ApiKeys.BucketParams.bucketName' - $ref: '#/components/parameters/Zuplo.ApiKeys.ConsumerParams.consumerName' - $ref: '#/components/parameters/Zuplo.ApiKeys.ApiKeyParams.keyId' - $ref: '#/components/parameters/Zuplo.ApiKeys.TagQueryParam' responses: '204': description: There is no content to send for this request, but the headers may be useful. '400': description: The server could not understand the request due to invalid syntax. content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.BadRequestProblemResponse' '401': description: Access is unauthorized. content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.UnauthorizedProblemResponse' '404': description: The server cannot find the requested resource. content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.NotFoundProblemResponse' '429': $ref: '#/components/responses/RateLimitWithRetryAfter' '500': description: Server error content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.InternalServerErrorProblemResponse' tags: - API Keys - Keys /v1/accounts/{accountName}/key-buckets/{bucketName}/consumers/{consumerName}/managers: get: operationId: ApiKeyConsumerManagers_list summary: Lists Managers description: Lists all managers belonging to a consumer. parameters: - $ref: '#/components/parameters/Zuplo.Common.AccountParams' - $ref: '#/components/parameters/Zuplo.ApiKeys.BucketParams.bucketName' - $ref: '#/components/parameters/Zuplo.ApiKeys.ConsumerParams.consumerName' - name: limit in: query required: true description: 'The maximum number of entries to return. If the value exceeds the maximum, then the maximum value will be used. Default: 1000' schema: type: integer minimum: 1 maximum: 1000 explode: false - name: offset in: query required: true description: 'The offset of the first item returned in the collection. Default: 0' schema: type: integer minimum: 0 explode: false responses: '200': description: The request has succeeded. content: application/json: schema: $ref: '#/components/schemas/Zuplo.ApiKeys.Managers' '400': description: The server could not understand the request due to invalid syntax. content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.BadRequestProblemResponse' '401': description: Access is unauthorized. content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.UnauthorizedProblemResponse' '429': $ref: '#/components/responses/RateLimitWithRetryAfter' '500': description: Server error content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.InternalServerErrorProblemResponse' tags: - API Keys - Managers post: operationId: ApiKeyConsumerManagers_create summary: Creates a Manager description: Creates a new manager for a consumer. parameters: - $ref: '#/components/parameters/Zuplo.Common.AccountParams' - $ref: '#/components/parameters/Zuplo.ApiKeys.BucketParams.bucketName' - $ref: '#/components/parameters/Zuplo.ApiKeys.ConsumerParams.consumerName' responses: '200': description: The request has succeeded. content: application/json: schema: $ref: '#/components/schemas/Zuplo.ApiKeys.Manager' '400': description: The server could not understand the request due to invalid syntax. content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.BadRequestProblemResponse' '401': description: Access is unauthorized. content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.UnauthorizedProblemResponse' '429': $ref: '#/components/responses/RateLimitWithRetryAfter' '500': description: Server error content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.InternalServerErrorProblemResponse' tags: - API Keys - Managers requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/Zuplo.ApiKeys.ManagerCreateBody' /v1/accounts/{accountName}/key-buckets/{bucketName}/consumers/{consumerName}/managers/{managerId}: delete: operationId: ApiKeyConsumerManagers_delete summary: Deletes a Manager description: Deletes a manager record parameters: - $ref: '#/components/parameters/Zuplo.Common.AccountParams' - $ref: '#/components/parameters/Zuplo.ApiKeys.BucketParams.bucketName' - $ref: '#/components/parameters/Zuplo.ApiKeys.ConsumerParams.consumerName' - $ref: '#/components/parameters/Zuplo.ApiKeys.ManagerParams.managerId' responses: '204': description: There is no content to send for this request, but the headers may be useful. '400': description: The server could not understand the request due to invalid syntax. content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.BadRequestProblemResponse' '401': description: Access is unauthorized. content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.UnauthorizedProblemResponse' '404': description: The server cannot find the requested resource. content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.NotFoundProblemResponse' '429': $ref: '#/components/responses/RateLimitWithRetryAfter' '500': description: Server error content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.InternalServerErrorProblemResponse' tags: - API Keys - Managers /v1/accounts/{accountName}/key-buckets/{bucketName}/consumers/{consumerName}/roll-key: post: operationId: ApiKeyConsumersService_rollKey summary: Roll Consumer Keys description: Set expiration for keys with no expiration date and creates a new key. parameters: - $ref: '#/components/parameters/Zuplo.Common.AccountParams' - $ref: '#/components/parameters/Zuplo.ApiKeys.BucketParams.bucketName' - $ref: '#/components/parameters/Zuplo.ApiKeys.ConsumerParams.consumerName' - $ref: '#/components/parameters/Zuplo.ApiKeys.TagQueryParam' responses: '204': description: There is no content to send for this request, but the headers may be useful. '400': description: The server could not understand the request due to invalid syntax. content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.BadRequestProblemResponse' '401': description: Access is unauthorized. content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.UnauthorizedProblemResponse' '404': description: The server cannot find the requested resource. content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.NotFoundProblemResponse' '429': $ref: '#/components/responses/RateLimitWithRetryAfter' '500': description: Server error content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.InternalServerErrorProblemResponse' tags: - API Keys - Consumers requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/Zuplo.Common.ExpiresOnField' /v1/accounts/{accountName}/projects/{projectName}/branches/{branchName}/variables: post: operationId: VariablesService_create summary: Creates a Variable description: Creates a new environment variable in a branch for a given project. parameters: - $ref: '#/components/parameters/Zuplo.Common.AccountParams' - $ref: '#/components/parameters/Zuplo.Common.AccountProjectParams.projectName' - $ref: '#/components/parameters/Zuplo.Common.BranchParams' responses: '201': description: The request has succeeded and a new resource has been created as a result. content: application/json: schema: $ref: '#/components/schemas/Zuplo.Variables.Variable' '400': description: The server could not understand the request due to invalid syntax. content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.BadRequestProblemResponse' '401': description: Access is unauthorized. content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.UnauthorizedProblemResponse' '500': description: Server error content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.InternalServerErrorProblemResponse' tags: - Variables requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/Zuplo.Variables.VariableCreateBody' /v1/accounts/{accountName}/projects/{projectName}/branches/{branchName}/variables/{variableName}: patch: operationId: VariablesService_update summary: Updates a Variable description: Update the value of a variable in a branch for a given project. parameters: - $ref: '#/components/parameters/Zuplo.Common.AccountParams' - $ref: '#/components/parameters/Zuplo.Common.AccountProjectParams.projectName' - $ref: '#/components/parameters/Zuplo.Common.BranchParams' - $ref: '#/components/parameters/Zuplo.Common.VariableParams' responses: '200': description: The request has succeeded. content: application/json: schema: $ref: '#/components/schemas/Zuplo.Variables.Variable' '400': description: The server could not understand the request due to invalid syntax. content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.BadRequestProblemResponse' '401': description: Access is unauthorized. content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.UnauthorizedProblemResponse' '404': description: The server cannot find the requested resource. content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.NotFoundProblemResponse' '500': description: Server error content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.InternalServerErrorProblemResponse' tags: - Variables requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/Zuplo.Variables.VariableUpdateBody' /v1/accounts/{accountName}/projects/{projectName}/deployment-status/{statusId}: get: operationId: V1_deploymentStatus summary: Gets a Deployment Status description: Gets the deployment status of your upload. Use the UUID of the uploaded sources as the `statusId`. parameters: - $ref: '#/components/parameters/Zuplo.Common.AccountParams' - $ref: '#/components/parameters/Zuplo.Common.AccountProjectParams.projectName' - name: statusId in: path required: true description: The UUID of the uploaded sources. schema: type: string responses: '200': description: The request has succeeded. content: application/json: schema: $ref: '#/components/schemas/Zuplo.DeploymentStatus.DeploymentStatus' '400': description: The server could not understand the request due to invalid syntax. content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.BadRequestProblemResponse' '401': description: Access is unauthorized. content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.UnauthorizedProblemResponse' '404': description: The server cannot find the requested resource. content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.NotFoundProblemResponse' '500': description: Server error content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.InternalServerErrorProblemResponse' tags: - Deployments /v1/accounts/{accountName}/projects/{projectName}/deployments: get: operationId: DeploymentsService_list summary: Lists Deployments description: Lists the deployments for the specified account and project. parameters: - $ref: '#/components/parameters/Zuplo.Common.AccountParams' - $ref: '#/components/parameters/Zuplo.Common.AccountProjectParams.projectName' responses: '200': description: The request has succeeded. content: application/json: schema: $ref: '#/components/schemas/Zuplo.Deployments.DeploymentsList' '400': description: The server could not understand the request due to invalid syntax. content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.BadRequestProblemResponse' '401': description: Access is unauthorized. content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.UnauthorizedProblemResponse' '500': description: Server error content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.InternalServerErrorProblemResponse' tags: - Deployments /v1/accounts/{accountName}/tunnels: get: operationId: TunnelService_list summary: Lists Tunnels description: Lists all tunnels belonging to this account. parameters: - $ref: '#/components/parameters/Zuplo.Common.AccountParams' responses: '200': description: The request has succeeded. content: application/json: schema: $ref: '#/components/schemas/Zuplo.Tunnels.TunnelList' '400': description: The server could not understand the request due to invalid syntax. content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.BadRequestProblemResponse' '401': description: Access is unauthorized. content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.UnauthorizedProblemResponse' '500': description: Server error content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.InternalServerErrorProblemResponse' tags: - Tunnels post: operationId: TunnelService_create summary: Creates a Tunnel description: Creates a new tunnel for this account. parameters: - $ref: '#/components/parameters/Zuplo.Common.AccountParams' responses: '201': description: The request has succeeded and a new resource has been created as a result. content: application/json: schema: $ref: '#/components/schemas/Zuplo.Tunnels.Tunnel' '400': description: The server could not understand the request due to invalid syntax. content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.BadRequestProblemResponse' '401': description: Access is unauthorized. content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.UnauthorizedProblemResponse' '500': description: Server error content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.InternalServerErrorProblemResponse' tags: - Tunnels requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/Zuplo.Tunnels.Tunnel' /v1/accounts/{accountName}/tunnels/{tunnelId}: get: operationId: TunnelService_read summary: Gets a Tunnel description: Returns the details for a tunnel, including the token used to connect to the tunnel. parameters: - $ref: '#/components/parameters/Zuplo.Common.AccountParams' - $ref: '#/components/parameters/Zuplo.Tunnels.TunnelIdParam' responses: '200': description: The request has succeeded. content: application/json: schema: $ref: '#/components/schemas/Zuplo.Tunnels.Tunnel' '400': description: The server could not understand the request due to invalid syntax. content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.BadRequestProblemResponse' '401': description: Access is unauthorized. content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.UnauthorizedProblemResponse' '404': description: The server cannot find the requested resource. content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.NotFoundProblemResponse' '500': description: Server error content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.InternalServerErrorProblemResponse' tags: - Tunnels delete: operationId: TunnelService_delete summary: Deletes a Tunnel description: Deletes a tunnel and any services that it has. parameters: - $ref: '#/components/parameters/Zuplo.Common.AccountParams' - $ref: '#/components/parameters/Zuplo.Tunnels.TunnelIdParam' responses: '200': description: The request has succeeded. content: application/json: schema: $ref: '#/components/schemas/Zuplo.Tunnels.TunnelTeardownOperation' '400': description: The server could not understand the request due to invalid syntax. content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.BadRequestProblemResponse' '401': description: Access is unauthorized. content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.UnauthorizedProblemResponse' '404': description: The server cannot find the requested resource. content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.NotFoundProblemResponse' '500': description: Server error content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.InternalServerErrorProblemResponse' tags: - Tunnels /v1/accounts/{accountName}/tunnels/{tunnelId}/$rotate-token: post: operationId: TunnelService_update summary: Rotates the Token description: Rotates the token used to connect to the tunnel. parameters: - $ref: '#/components/parameters/Zuplo.Common.AccountParams' - $ref: '#/components/parameters/Zuplo.Tunnels.TunnelIdParam' responses: '200': description: The request has succeeded. content: application/json: schema: $ref: '#/components/schemas/Zuplo.Tunnels.Tunnel' '400': description: The server could not understand the request due to invalid syntax. content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.BadRequestProblemResponse' '401': description: Access is unauthorized. content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.UnauthorizedProblemResponse' '404': description: The server cannot find the requested resource. content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.NotFoundProblemResponse' '500': description: Server error content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.InternalServerErrorProblemResponse' tags: - Tunnels /v1/accounts/{accountName}/tunnels/{tunnelId}/provisioning-operations/{operationId}: get: operationId: TunneledServicesService_getProvisioningStatus summary: Gets a Provisioning Status description: This endpoint returns the status of the services that the tunnel is currently configured for. Provisioning the services is an asynchronous process so this endpoint allows you to poll the status. parameters: - $ref: '#/components/parameters/Zuplo.Common.AccountParams' - $ref: '#/components/parameters/Zuplo.Tunnels.TunnelIdParam' - $ref: '#/components/parameters/Zuplo.Tunnels.TunneledServiceProvisioningStatusParams.operationId' responses: '200': description: The request has succeeded. content: application/json: schema: $ref: '#/components/schemas/Zuplo.Tunnels.TunneledServicesProvisioningOperation' '400': description: The server could not understand the request due to invalid syntax. content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.BadRequestProblemResponse' '401': description: Access is unauthorized. content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.UnauthorizedProblemResponse' '500': description: Server error content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.InternalServerErrorProblemResponse' tags: - Tunnel Services /v1/accounts/{accountName}/tunnels/{tunnelId}/services-configuration: get: operationId: TunneledServicesService_getServiceConfiguration summary: Gets a Service Configuration description: This endpoint returns a snapshot of the services that the tunnel is currently configured for. parameters: - $ref: '#/components/parameters/Zuplo.Common.AccountParams' - $ref: '#/components/parameters/Zuplo.Tunnels.TunnelIdParam' responses: '200': description: The request has succeeded. content: application/json: schema: $ref: '#/components/schemas/Zuplo.Tunnels.TunneledServicesConfiguration' '400': description: The server could not understand the request due to invalid syntax. content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.BadRequestProblemResponse' '401': description: Access is unauthorized. content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.UnauthorizedProblemResponse' '500': description: Server error content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.InternalServerErrorProblemResponse' tags: - Tunnel Services put: operationId: TunneledServicesService_putServiceConfiguration summary: Configures Tunnel Services description: This endpoint reads the request body and creates/updates/delete the services that the tunnel connects to. parameters: - $ref: '#/components/parameters/Zuplo.Common.AccountParams' - $ref: '#/components/parameters/Zuplo.Tunnels.TunnelIdParam' responses: '200': description: The request has succeeded. content: application/json: schema: $ref: '#/components/schemas/Zuplo.Tunnels.TunneledServicesProvisioningOperation' '400': description: The server could not understand the request due to invalid syntax. content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.BadRequestProblemResponse' '401': description: Access is unauthorized. content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.UnauthorizedProblemResponse' '500': description: Server error content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.InternalServerErrorProblemResponse' tags: - Tunnel Services requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/Zuplo.Tunnels.TunneledServicesConfiguration' /v1/accounts/{accountName}/tunnels/{tunnelId}/teardown-operations/{operationId}: get: operationId: TunnelService_getProvisioningStatus summary: Gets a Teardown Status description: This endpoint returns the status of the deletion of the tunnel. Tearing down the tunnel is an asynchronous process so this endpoint allows you to poll the status. parameters: - $ref: '#/components/parameters/Zuplo.Common.AccountParams' - $ref: '#/components/parameters/Zuplo.Tunnels.TunnelIdParam' - $ref: '#/components/parameters/Zuplo.Tunnels.TunnelTeardownStatusParams.operationId' responses: '200': description: The request has succeeded. content: application/json: schema: $ref: '#/components/schemas/Zuplo.Tunnels.TunnelTeardownOperation' '400': description: The server could not understand the request due to invalid syntax. content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.BadRequestProblemResponse' '401': description: Access is unauthorized. content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.UnauthorizedProblemResponse' '500': description: Server error content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.InternalServerErrorProblemResponse' tags: - Tunnels /v1/deployments/sources: post: operationId: DeployService_sources summary: Upload Deployment Source description: Creates a URL for uploading sources. parameters: [] responses: '200': description: The request has succeeded. content: application/json: schema: $ref: '#/components/schemas/Zuplo.Sources.Source' '400': description: The server could not understand the request due to invalid syntax. content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.BadRequestProblemResponse' '401': description: Access is unauthorized. content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.UnauthorizedProblemResponse' '500': description: Server error content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.InternalServerErrorProblemResponse' tags: - Deployments requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/Zuplo.Deploys.SourceCreateBody' /v1/deployments/{deploymentName}: get: operationId: DeploymentsService_read summary: Get a Deployment description: Gets the specified deployment. parameters: - $ref: '#/components/parameters/Zuplo.Common.DeployParams' responses: '200': description: The request has succeeded. content: application/json: schema: $ref: '#/components/schemas/Zuplo.Deployments.Deployment' '400': description: The server could not understand the request due to invalid syntax. content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.BadRequestProblemResponse' '401': description: Access is unauthorized. content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.UnauthorizedProblemResponse' '500': description: Server error content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.InternalServerErrorProblemResponse' tags: - Deployments delete: operationId: DeploymentsService_delete summary: Deletes a Deployment description: Deletes the specified deployment. parameters: - $ref: '#/components/parameters/Zuplo.Common.DeployParams' responses: '200': description: The request has succeeded. '400': description: The server could not understand the request due to invalid syntax. content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.BadRequestProblemResponse' '401': description: Access is unauthorized. content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.UnauthorizedProblemResponse' '500': description: Server error content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.InternalServerErrorProblemResponse' tags: - Deployments /v1/deployments/{deploymentName}/deploy: post: operationId: DeployService_redeploy summary: Re-deploy a Deployment description: Re-deploys the specified deployment so that it can pick up new environment variables or other configuration changes. parameters: - $ref: '#/components/parameters/Zuplo.Common.DeployParams' responses: '200': description: The request has succeeded. content: application/json: schema: $ref: '#/components/schemas/Zuplo.Deploys.DeploymentResponse' '400': description: The server could not understand the request due to invalid syntax. content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.BadRequestProblemResponse' '401': description: Access is unauthorized. content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.UnauthorizedProblemResponse' '500': description: Server error content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.InternalServerErrorProblemResponse' tags: - Deployments /v1/who-am-i: get: operationId: V1_whoAmI summary: Who Am I description: Returns basic information about the caller. Supports both API key and JWT authentication. The response always includes the subject identifier (`sub`). The `account` field is included when called with an API key, and `email` is included when called with a JWT that carries the email claim. parameters: [] responses: '200': description: The request has succeeded. content: application/json: schema: $ref: '#/components/schemas/Zuplo.WhoAmI.WhoAmI' '400': description: The server could not understand the request due to invalid syntax. content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.BadRequestProblemResponse' '401': description: Access is unauthorized. content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.UnauthorizedProblemResponse' '500': description: Server error content: application/json: schema: $ref: '#/components/schemas/Zuplo.HttpProblemDetails.InternalServerErrorProblemResponse' components: parameters: Zuplo.ApiKeys.ApiKeyParams.keyId: name: keyId in: path required: true description: The key id. schema: type: string Zuplo.ApiKeys.BucketParams.bucketName: name: bucketName in: path required: true description: The name of the bucket. Zuplo automatically creates a bucket for your project. You can find it in youe Zuplo Portal under Settings > Project Information. schema: type: string Zuplo.ApiKeys.ConsumerParams.consumerName: name: consumerName in: path required: true description: The name of the consumer. schema: type: string Zuplo.ApiKeys.IncludeApiKeyParam: name: include-api-keys in: query required: false description: Include the api key data in the response. schema: type: boolean x-example: true x-example: true explode: false Zuplo.ApiKeys.IncludeManagerInvitesParam: name: include-manager-invites in: query required: false description: Include the manager invites data in the response. schema: type: boolean x-example: true x-example: true explode: false Zuplo.ApiKeys.IncludeManagerParam: name: include-managers in: query required: false description: Include the manager's data in the response. schema: type: boolean x-example: true x-example: true explode: false Zuplo.ApiKeys.KeyFormatQueryParam: name: key-format in: query required: false description: 'The format of the key to return. `none`: Key is completely hidden. `visible`: Key is completely visible. `masked`: Part of key suffix is visible.' schema: $ref: '#/components/schemas/Zuplo.ApiKeys.KeyFormat' x-example: masked x-example: masked explode: false Zuplo.ApiKeys.ManagerEmailQueryParam: name: manager-email in: query required: false description: Filter by email address of key manager. schema: type: string x-example: bob@example.com x-example: bob@example.com explode: false Zuplo.ApiKeys.ManagerParams.managerId: name: managerId in: path required: true description: The manager id schema: type: string Zuplo.ApiKeys.TagQueryParam: name: tag in: query required: false description: Query by tag. Example usage is `tag.account=foo`, where `account` is the name of the tag property and `foo` is the value. schema: type: string explode: false Zuplo.ApiKeys.WithApiKeyQueryParam: name: with-api-key in: query required: false description: If an API key should be created with the consumer. schema: type: boolean x-example: true x-example: true explode: false Zuplo.AuditLogs.AuditLogsQuery.action: name: action in: query required: false description: Filter by specific action (e.g., 'account.create') schema: type: string explode: false Zuplo.AuditLogs.AuditLogsQuery.actor: name: actor in: query required: false description: Filter by actor email address or subject identifier schema: type: string explode: false Zuplo.AuditLogs.AuditLogsQuery.endDate: name: endDate in: query required: false description: Filter events before this date (ISO 8601 format) schema: type: string format: date-time explode: false Zuplo.AuditLogs.AuditLogsQuery.limit: name: limit in: query required: false description: Maximum number of results to return (1-100) schema: type: integer format: int32 minimum: 1 maximum: 100 default: 20 explode: false Zuplo.AuditLogs.AuditLogsQuery.offset: name: offset in: query required: false description: Number of results to skip for pagination schema: type: integer format: int32 minimum: 0 default: 0 explode: false Zuplo.AuditLogs.AuditLogsQuery.startDate: name: startDate in: query required: false description: Filter events after this date (ISO 8601 format) schema: type: string format: date-time explode: false Zuplo.AuditLogs.AuditLogsQuery.success: name: success in: query required: false description: Filter by success status (true for successful, false for failed) schema: type: boolean explode: false Zuplo.ClientAuth.BucketParams: name: bucketId in: path required: true description: The id of the bucket. Zuplo automatically creates buckets for your project. You can find it in your Zuplo Portal under the Settings tab for your project. schema: type: string Zuplo.Common.AccountParams: name: accountName in: path required: true description: The name of the account. You can find this in your Zuplo Portal under Settings > Project Information. schema: type: string Zuplo.Common.AccountProjectParams.projectName: name: projectName in: path required: true description: The name of the project. You can find this in your Zuplo Portal under Settings > Project Information. schema: type: string Zuplo.Common.BranchParams: name: branchName in: path required: true description: The name of the branch in your source control provider. schema: type: string Zuplo.Common.DeployParams: name: deploymentName in: path required: true description: The name of the deployment. You can find this in the Zuplo Portal under Settings > Environments. schema: type: string Zuplo.Common.EnvironmentParams: name: environmentName in: path required: true description: The name of the environment. schema: type: string Zuplo.Common.VariableParams: name: variableName in: path required: true description: The name of the environment variable. schema: type: string Zuplo.CustomDomains.CustomDomainDeleteQuery.deploymentName: name: deploymentName in: query required: false description: The deployment associated with the hostname, when deleting a deployment-specific mapping. schema: type: string explode: false Zuplo.CustomDomains.CustomDomainDeleteQuery.hostname: name: hostname in: query required: true description: The hostname of the custom domain to delete. schema: type: string explode: false Zuplo.KeyAuthV2.BucketParams: name: bucketId in: path required: true description: The id of the bucket. Zuplo automatically creates buckets for your project. You can find it in your Zuplo Portal under the Settings tab for your project. schema: type: string Zuplo.KeyAuthV2.ConsumerParams.consumerId: name: consumerId in: path required: true description: The id of the consumer. schema: type: string Zuplo.Metering.BucketParams: name: bucketId in: path required: true description: The id of the bucket. Zuplo automatically creates buckets for your project. You can find it in your Zuplo Portal under the Settings tab for your project. schema: type: string Zuplo.Metering.PlanParams.planId: name: planId in: path required: true description: The id of the plan. schema: type: string Zuplo.Metering.SubscriptionParams.subscriptionId: name: subscriptionId in: path required: true description: The id of the subscription. schema: type: string Zuplo.MeteringV2.BucketParams: name: bucketId in: path required: true description: The id of the bucket. Zuplo automatically creates buckets for your project. You can find it in your Zuplo Portal under the Settings tab for your project. schema: type: string Zuplo.MeteringV2.ConsumerParams.consumerId: name: consumerId in: path required: true description: The id of the consumer. schema: type: string Zuplo.MeteringV2.PlansParams.planId: name: planId in: path required: true description: The id of the plan. schema: type: string Zuplo.MeteringV2.SubscriptionsParams.subscriptionId: name: subscriptionId in: path required: true description: The id of the subscription. schema: type: string Zuplo.MeteringV2.TenantsParams.tenantId: name: tenantId in: path required: true description: The id of the tenant. schema: type: string Zuplo.MeteringV2.UsersParams.userId: name: userId in: path required: true description: The id of the user. schema: type: string Zuplo.MeteringV3.BucketParams: name: bucketId in: path required: true description: The id of the bucket. Zuplo automatically creates buckets for your project. You can find it in your Zuplo Portal under the Settings tab for your project. schema: type: string Zuplo.MeteringV3.PlanInviteParams.planInviteId: name: planInviteId in: path required: true description: The id of the plan invite. schema: type: string Zuplo.MtlsCertificates.MtlsCertificateParams: name: id in: path required: true description: The ID of the mTLS certificate. schema: type: string Zuplo.Tunnels.TunnelIdParam: name: tunnelId in: path required: true description: The ID of the tunnel. schema: type: string Zuplo.Tunnels.TunnelTeardownStatusParams.operationId: name: operationId in: path required: true description: The ID of the deletion operation. schema: type: string Zuplo.Tunnels.TunneledServiceProvisioningStatusParams.operationId: name: operationId in: path required: true description: The ID of the operation. schema: type: string schemas: ApiKeyBulkCreateOrUpdateBody: type: array items: $ref: '#/components/schemas/Zuplo.ApiKeys.ApiKeyCreateOrUpdateBody' example: - description: My secret api key expiresOn: '2023-04-20T05:54:34.408Z' key: zpka_EXAMPLE_KEY_REDACTED_FOR_DOCS_1 - description: My secret api key2 expiresOn: '2023-05-20T05:54:34.408Z' key: zpka_EXAMPLE_KEY_REDACTED_FOR_DOCS_2 Zuplo.Accounts.Account: type: object required: - id - name properties: id: type: string description: The id of the account example: 103f832d-5331-42db-9d38-bbac05a68305 name: type: string description: The name of the account example: my-account label: type: string description: The label of the account example: My Account description: A Zuplo account example: id: 103f832d-5331-42db-9d38-bbac05a68305 name: my-account label: My Account Zuplo.Accounts.AccountsList: type: object required: - data properties: data: type: array items: $ref: '#/components/schemas/Zuplo.Accounts.Account' example: data: - id: 103f832d-5331-42db-9d38-bbac05a68305 name: my-account label: My Account - id: b006949f-c71a-43d8-8533-92d8dedc5d1c name: orange-fox Zuplo.ApiKeys.ApiKey: type: object required: - createdOn - updatedOn - id properties: createdOn: type: string format: date-time description: When the item was created. example: '2023-04-18T05:54:34.408Z' readOnly: true updatedOn: type: string format: date-time description: When the item was last updated. example: '2023-04-20T05:54:34.408Z' readOnly: true id: type: string readOnly: true expiresOn: type: string format: date-time description: When the key expires. x-example: '2023-04-18T05:54:34.408Z' description: type: string description: The description of the api key. key: type: string description: The API key's value. You can use this parameter to override Zuplo's default key format, but this is not recommended as you will lose our [API Key Leak Detection](https://zuplo.com/docs/articles/api-key-leak-detection) description: A Consumer can have any number of API keys associated with it. Each API Key shares the same identity (i.e. Consumer) when authenticating with this service. Keys can have their own description to note the use of the key and can have an expiration date. Expired keys will not be permitted to authenticate after their expiration. example: createdOn: '2023-04-20T05:54:34.408Z' updatedOn: '2023-04-20T05:54:34.408Z' id: key_m1m4ol223R0kGHGZY7tPQMQl description: My secret api key expiresOn: '2023-04-20T05:54:34.408Z' key: zpka_EXAMPLE_KEY_REDACTED_FOR_DOCS_1 Zuplo.ApiKeys.ApiKeyCreateOrUpdateBody: type: object properties: expiresOn: type: string format: date-time description: When the key expires. x-example: '2023-04-18T05:54:34.408Z' description: type: string description: The description of the api key. key: type: string description: The API key's value. You can use this parameter to override Zuplo's default key format, but this is not recommended as you will lose our [API Key Leak Detection](https://zuplo.com/docs/articles/api-key-leak-detection) example: description: My secret api key expiresOn: '2023-04-20T05:54:34.408Z' key: zpka_EXAMPLE_KEY_REDACTED_FOR_DOCS_1 Zuplo.ApiKeys.ApiKeys: type: object required: - data properties: data: type: array items: $ref: '#/components/schemas/Zuplo.ApiKeys.ApiKey' limit: type: integer format: uint32 example: 1000 offset: type: integer format: uint32 example: 0 total: type: integer format: uint32 example: data: - createdOn: '2023-04-20T05:54:34.408Z' updatedOn: '2023-04-20T05:54:34.408Z' id: key_m1m4ol223R0kGHGZY7tPQMQl description: My secret api key expiresOn: '2023-04-20T05:54:34.408Z' key: zpka_EXAMPLE_KEY_REDACTED_FOR_DOCS_1 limit: 1000 offset: 0 Zuplo.ApiKeys.Bucket: type: object required: - createdOn - updatedOn - id - name properties: createdOn: type: string format: date-time description: When the item was created. example: '2023-04-18T05:54:34.408Z' readOnly: true updatedOn: type: string format: date-time description: When the item was last updated. example: '2023-04-20T05:54:34.408Z' readOnly: true id: type: string x-example: bckt_pCcNMjERFSoh5xIQir7o99Z6KDoLp36e readOnly: true isRetrievable: type: boolean description: Whether the API keys stored in the bucket are retrievable x-example: true name: type: string pattern: ^[a-z0-9-]{5,128}$ description: A friendly name for the bucket. x-example: my-bucket description: type: string description: A description of the bucket. x-example: Bucket for zuplo consumers tags: type: object additionalProperties: type: string description: Key value pairs to associate with the bucket. x-example: foo: baz description: Top level group for API key mangement. A bucket could be used with a single Zuplo environment or shared among multiple environments or projects. By default a Zuplo API Gateway project will be created with several buckets that map to production, preview, and working copy environments. example: id: bckt_pCcNMjERFSoh5xIQir7o99Z6KDoLp36e name: my-bucket createdOn: '2023-07-24T19:26:36.000Z' updatedOn: '2023-07-24T19:26:36.000Z' description: Bucket for zuplo consumers isRetrievable: true tags: foo: bar Zuplo.ApiKeys.BucketCreateBody: type: object required: - name properties: name: type: string pattern: ^[a-z0-9-]{5,128}$ description: A friendly name for the bucket. x-example: my-bucket description: type: string description: A description of the bucket. x-example: Bucket for zuplo consumers tags: type: object additionalProperties: type: string description: Key value pairs to associate with the bucket. x-example: foo: baz example: name: my-bucket description: Bucket for zuplo consumers tags: foo: bar Zuplo.ApiKeys.BucketUpdateBody: type: object properties: description: type: string description: A description of the bucket. x-example: Bucket for zuplo consumers tags: type: object additionalProperties: type: string description: Key value pairs to associate with the bucket. x-example: foo: baz example: description: Bucket for zuplo consumers tags: foo: bar Zuplo.ApiKeys.Buckets: type: object required: - data properties: data: type: array items: $ref: '#/components/schemas/Zuplo.ApiKeys.Bucket' limit: type: integer format: uint32 example: 1000 offset: type: integer format: uint32 example: 0 total: type: integer format: uint32 example: data: - id: bckt_pCcNMjERFSoh5xIQir7o99Z6KDoLp36e name: my-bucket createdOn: '2023-07-24T19:26:36.000Z' updatedOn: '2023-07-24T19:26:36.000Z' description: Bucket for zuplo consumers isRetrievable: true tags: foo: bar Zuplo.ApiKeys.Consumer: type: object required: - createdOn - updatedOn - id - name properties: createdOn: type: string format: date-time description: When the item was created. example: '2023-04-18T05:54:34.408Z' readOnly: true updatedOn: type: string format: date-time description: When the item was last updated. example: '2023-04-20T05:54:34.408Z' readOnly: true id: type: string readOnly: true name: type: string pattern: ^[a-z0-9-]{1,128}$ description: A friendly name for the consumer. This name is used as the default user.sub property in the API Key Authentication policy. apiKeys: type: array items: $ref: '#/components/schemas/Zuplo.ApiKeys.ApiKey' description: type: string description: A description of the consumer. tags: type: object additionalProperties: type: string description: Key value pairs to associate with the consumer. metadata: type: object additionalProperties: type: string description: Generic metadata associated with the consumer. description: 'Consumers are the core of the API Key service. The consumer is the ''identity'' of any API Keys that are created. ' example: id: csmr_brw0leTAVw478VFKD4F6OqVI name: zup-inc createdOn: '2023-04-20T05:54:34.408Z' updatedOn: '2023-04-20T05:54:34.408Z' description: Consumer for zup inc tags: foo: bar metadata: id: zup-id-343 managers: - id: eusr_MeefoYod5eQN33MEjC4PeRFH createdOn: '2023-06-19T17:32:11.990Z' email: mgr@zuploinc.com sub: sub-oauth2|113533232396018044159 apiKeys: - id: key_AM7eAiR0BiaXTam951XmC9kK description: api key for zup inc createdOn: '2023-06-19T17:32:17.737Z' updatedOn: '2023-06-19T17:32:17.737Z' expiresOn: '2035-06-19T17:32:17.737Z' key: '****69ff2f90' Zuplo.ApiKeys.ConsumerCreateBody: type: object required: - name properties: name: type: string pattern: ^[a-z0-9-]{1,128}$ description: A friendly name for the consumer. This name is used as the default user.sub property in the API Key Authentication policy. managers: anyOf: - type: array items: type: string - type: array items: $ref: '#/components/schemas/Zuplo.ApiKeys.Manager' description: Email addresses of the managers to invite or a list of managers (with subs) to add to the consumer. apiKeys: type: array items: $ref: '#/components/schemas/Zuplo.ApiKeys.ApiKey' description: type: string description: A description of the consumer. tags: type: object additionalProperties: type: string description: Key value pairs to associate with the consumer. metadata: type: object additionalProperties: type: string description: Generic metadata associated with the consumer. example: name: zup-inc description: Consumer for zup inc tags: foo: bar metadata: id: zup-id-343 managers: - id: '123' email: user@example.com sub: oauth2|113533232396018044159 createdOn: '2023-06-19T17:32:11.990Z' Zuplo.ApiKeys.ConsumerUpdateBody: type: object properties: description: type: string description: A description of the consumer. tags: type: object additionalProperties: type: string description: Key value pairs to associate with the consumer. metadata: type: object additionalProperties: type: string description: Generic metadata associated with the consumer. example: description: Consumer for zup inc tags: foo: bar metadata: id: zup-id-343 Zuplo.ApiKeys.Consumers: type: object required: - data properties: data: type: array items: $ref: '#/components/schemas/Zuplo.ApiKeys.Consumer' limit: type: integer format: uint32 example: 1000 offset: type: integer format: uint32 example: 0 total: type: integer format: uint32 example: data: - id: csmr_brw0leTAVw478VFKD4F6OqVI name: zup-inc createdOn: '2023-04-20T05:54:34.408Z' updatedOn: '2023-04-20T05:54:34.408Z' description: Consumer for zup inc tags: foo: bar metadata: id: zup-id-343 managers: - id: eusr_MeefoYod5eQN33MEjC4PeRFH createdOn: '2023-06-19T17:32:11.990Z' email: mgr@zuploinc.com sub: sub-oauth2|113533232396018044159 apiKeys: - id: key_AM7eAiR0BiaXTam951XmC9kK description: api key for zup inc createdOn: '2023-06-19T17:32:17.737Z' updatedOn: '2023-06-19T17:32:17.737Z' expiresOn: '2035-06-19T17:32:17.737Z' key: '****69ff2f90' offset: 0 limit: 1000 Zuplo.ApiKeys.KeyFormat: type: string enum: - none - visible - masked Zuplo.ApiKeys.Manager: type: object required: - createdOn - id - email - sub properties: email: type: string description: The email address of the manager sub: type: string description: The sub of the manager in the identity provider description: Managers are users that have access to a consumer. Managers can be added directly to a consumer (using email and sub) or invited (using only email) to a consumer. example: createdOn: '2023-04-20T05:54:34.408Z' id: managerId email: bob@example.com sub: sub-oauth2|113533232396018044159 Zuplo.ApiKeys.ManagerCreateBody: type: object required: - email - sub properties: email: type: string description: The email address of the manager x-example: bob@example.com sub: type: string description: The sub of the manager in the identity provider x-example: sub-oauth2|113533232396018044159 example: email: bob@example.com sub: sub-oauth2|113533232396018044159 Zuplo.ApiKeys.Managers: type: object required: - data properties: data: type: array items: $ref: '#/components/schemas/Zuplo.ApiKeys.Manager' limit: type: integer format: uint32 example: 1000 offset: type: integer format: uint32 example: 0 total: type: integer format: uint32 example: data: - createdOn: '2023-04-20T05:54:34.408Z' id: managerId email: bob@example.com sub: sub-oauth2|113533232396018044159 limit: 1000 offset: 0 Zuplo.AuditLogs.ActingAs: type: object required: - sub - email properties: sub: type: string description: The subject identifier of the user being impersonated email: type: string nullable: true description: The email address of the impersonated user (if available) description: Details about the user being impersonated, if applicable Zuplo.AuditLogs.Actor: type: object required: - sub - email - type - connection - actingAs - metadata properties: sub: type: string description: The subject identifier of the actor (user ID, API key, etc.) email: type: string nullable: true description: The email address of the actor (only for user actors) type: type: string description: The type of actor (e.g., 'user', 'consumer', 'service', 'anonymous') connection: type: string nullable: true description: The authentication connection used (e.g., 'auth0', 'google') actingAs: type: object allOf: - $ref: '#/components/schemas/Zuplo.AuditLogs.ActingAs' nullable: true description: Information about the user being impersonated, if any metadata: type: object additionalProperties: {} nullable: true description: Additional metadata about the actor description: Details about the actor who performed the action Zuplo.AuditLogs.AuditLog: type: object required: - action - metadata - actor - resources - context - route - timestamp - requestId - success - error properties: action: type: string description: The action that was performed (e.g., 'account.create', 'project.delete') metadata: type: object additionalProperties: {} nullable: true description: Additional metadata about the action actor: allOf: - $ref: '#/components/schemas/Zuplo.AuditLogs.Actor' description: Details about the actor who performed the action resources: type: array items: $ref: '#/components/schemas/Zuplo.AuditLogs.Resource' nullable: true description: List of resources affected by this action context: allOf: - $ref: '#/components/schemas/Zuplo.AuditLogs.Context' description: Contextual information about where and how the action was performed route: allOf: - $ref: '#/components/schemas/Zuplo.AuditLogs.Route' description: Information about the API route that triggered this audit event timestamp: type: string format: date-time description: The timestamp when the action occurred requestId: type: string description: The unique request ID for correlation success: type: boolean nullable: true description: Whether the action was successful error: type: string nullable: true description: Error message if the action failed description: An audit log entry representing an action performed in the system Zuplo.AuditLogs.AuditLogsPagination: type: object required: - limit - offset - total - hasMore properties: limit: type: integer format: int32 description: Maximum number of results returned offset: type: integer format: int32 description: Number of results skipped total: type: integer format: int32 description: Total number of results available hasMore: type: boolean description: Whether there are more results available description: Pagination information for audit logs Zuplo.AuditLogs.AuditLogsResponse: type: object required: - data - pagination properties: data: type: array items: $ref: '#/components/schemas/Zuplo.AuditLogs.AuditLog' description: Array of audit log entries pagination: allOf: - $ref: '#/components/schemas/Zuplo.AuditLogs.AuditLogsPagination' description: Pagination information description: Response containing a list of audit logs with pagination Zuplo.AuditLogs.Context: type: object required: - ipAddress - userAgent - country - region - city - postalCode - metroCode - asOrg properties: ipAddress: type: string nullable: true description: The IP address of the request userAgent: type: string nullable: true description: The user agent string of the request country: type: string nullable: true description: The ISO 3166-1 alpha-2 country code (e.g., 'US', 'GB') region: type: string nullable: true description: The region/state code (e.g., 'CA' for California) city: type: string nullable: true description: The city name from which the request originated postalCode: type: string nullable: true description: The postal/ZIP code metroCode: type: string nullable: true description: The metro code (DMA code in the US) asOrg: type: string nullable: true description: The Autonomous System organization (ISP name) description: Contextual information about where and how the action was performed Zuplo.AuditLogs.Resource: type: object required: - type - id - metadata properties: type: type: string description: The type of resource (e.g., 'account', 'project', 'deployment') id: type: string description: The unique identifier of the resource metadata: type: object additionalProperties: {} nullable: true description: Additional metadata about the resource description: A resource affected by the action Zuplo.AuditLogs.Route: type: object required: - source - url - method properties: source: type: string nullable: true description: The source system or API that handled the request (e.g., 'api', 'gateway') url: type: string nullable: true description: The full URL path of the request method: type: string nullable: true description: The HTTP method used for the request description: Information about the API route that triggered this audit event Zuplo.ClientAuth.JwksResponse: type: object required: - keys properties: keys: type: object additionalProperties: {} Zuplo.ClientAuth.OAuthAccessTokenResponse: type: object required: - access_token - token_type - expires_in properties: access_token: type: string example: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJz... token_type: type: string enum: - Bearer example: Bearer expires_in: type: integer example: 3600 scope: type: string example: account project deployment Zuplo.ClientAuth.OAuthErrorResponse: type: object required: - error - error_description properties: error: type: string example: invalid_client error_description: type: string example: Client authentication failed Zuplo.Common.ExpiresOnField: type: object required: - expiresOn properties: expiresOn: type: string format: date-time description: When the item will expire. example: '2050-04-18T05:54:34.408Z' example: expiresOn: '2050-04-18T05:54:34.408Z' Zuplo.Configurations.Configuration: type: object required: - accountName - projectName - environmentType - systemConfigurations properties: accountName: type: string example: chocolate_great_buzzard projectName: type: string example: lime-fox environmentType: type: string enum: - production - preview - development example: production systemConfigurations: type: string example: 72ih3avJtXRUz6jqHtLEBFVmJDYr1GZtMTKFS8Q71SbyiHgzbL9fPscMURcuEPnryrMv3ABU1fB4qgopG5CkmdgD2... example: accountName: chocolate_great_buzzard projectName: lime-fox environmentType: production systemConfigurations: 72ih3avJtXRUz6jqHtLEBFVmJDYr1GZtMTKFS8Q71SbyiHgzbL9fPscMURcuEPnryrMv3ABU1fB4qgopG5CkmdgD2... Zuplo.ConsumerAnalytics.CallsByStatusCodeData: type: object Zuplo.ConsumerAnalytics.CallsDetailData: type: object required: - consumer - timeStamp - totalCalls - callsByStatusCode properties: consumer: type: string readOnly: true timeStamp: type: string readOnly: true totalCalls: type: integer readOnly: true callsByStatusCode: type: array items: $ref: '#/components/schemas/Zuplo.ConsumerAnalytics.CallsByStatusCodeData' readOnly: true Zuplo.ConsumerAnalytics.RecentCallsData: type: object required: - data properties: data: type: array items: $ref: '#/components/schemas/Zuplo.ConsumerAnalytics.RequestData' readOnly: true Zuplo.ConsumerAnalytics.ReponseStatsByStatusCodeData: type: object required: - data properties: data: allOf: - $ref: '#/components/schemas/Zuplo.ConsumerAnalytics.StatsByStatusCodeData' readOnly: true Zuplo.ConsumerAnalytics.RequestData: type: object required: - consumer - method - routePath - statusCode - timeStamp - city - country properties: consumer: type: string readOnly: true method: type: string readOnly: true routePath: type: string readOnly: true statusCode: type: string readOnly: true timeStamp: type: string readOnly: true city: type: string readOnly: true country: type: string readOnly: true Zuplo.ConsumerAnalytics.StatsByStatusCode.TimeWindowFilter: type: string enum: - last-hour - last-24-hours - last-7-days - last-30-days - last-3-months Zuplo.ConsumerAnalytics.StatsByStatusCodeData: type: object properties: stats: type: array items: $ref: '#/components/schemas/Zuplo.ConsumerAnalytics.StatsData' readOnly: true details: type: array items: $ref: '#/components/schemas/Zuplo.ConsumerAnalytics.CallsDetailData' readOnly: true Zuplo.ConsumerAnalytics.StatsData: type: object required: - totalCalls - consumer - callsByStatusCode properties: totalCalls: type: integer readOnly: true consumer: type: string readOnly: true callsByStatusCode: type: array items: $ref: '#/components/schemas/Zuplo.ConsumerAnalytics.CallsByStatusCodeData' readOnly: true Zuplo.CustomDomains.CustomDomain: type: object required: - id - accountName - projectName - deployments - hostname - provider properties: id: type: string description: The unique identifier for the custom domain. example: cdm_01HZX8D7A1M9S0K4Y2N6P3Q8R5 accountName: type: string description: The account that owns the custom domain. example: chocolate_great_buzzard projectName: type: string description: The project associated with the custom domain. example: todo-list-api deployments: type: array items: $ref: '#/components/schemas/Zuplo.CustomDomains.CustomDomainDeployment' description: The deployments currently mapped to this hostname. hostname: type: string description: The hostname assigned to the custom domain. example: api.example.com provider: allOf: - $ref: '#/components/schemas/Zuplo.CustomDomains.CustomDomainProvider' description: The provider backing the custom domain. example: cloudflare description: A custom domain configured for an account. example: id: cdm_01HZX8D7A1M9S0K4Y2N6P3Q8R5 accountName: chocolate_great_buzzard projectName: todo-list-api deployments: - deploymentName: todo-list-api-main-59eec11 branch: main environmentType: PRODUCTION isDefault: true stage: api cname: todo-list-api-main-59eec11.zuplo.app hostname: api.example.com provider: cloudflare Zuplo.CustomDomains.CustomDomainCreateBody: type: object required: - hostname properties: hostname: type: string description: The hostname to configure as a custom domain. example: api.example.com deploymentName: type: string description: The deployment to associate with the hostname. example: todo-list-api-main-59eec11 stage: allOf: - $ref: '#/components/schemas/Zuplo.CustomDomains.CustomDomainStage' description: The stage to expose on the hostname. example: api isDefault: type: boolean description: Whether this domain should be the default domain for the deployment. example: true isAlias: type: boolean description: Whether the domain should be configured as an alias. example: false description: Request body for creating a custom domain. example: hostname: api.example.com deploymentName: todo-list-api-main-59eec11 stage: api isDefault: true isAlias: false Zuplo.CustomDomains.CustomDomainDeployment: type: object required: - deploymentName - branch - environmentType - isDefault - stage - cname properties: deploymentName: type: string nullable: true description: The deployment name associated with the custom domain. example: todo-list-api-main-59eec11 branch: type: string nullable: true description: The branch associated with the deployment. example: main environmentType: allOf: - $ref: '#/components/schemas/Zuplo.CustomDomains.CustomDomainEnvironmentType' nullable: true description: The environment type associated with the deployment. example: PRODUCTION isDefault: type: boolean description: Whether this deployment is the default for the hostname. example: true stage: allOf: - $ref: '#/components/schemas/Zuplo.CustomDomains.CustomDomainStage' nullable: true description: The stage exposed by this custom domain mapping. example: api cname: type: string nullable: true description: The CNAME target for this deployment. example: todo-list-api-main-59eec11.zuplo.app description: A deployment bound to a custom domain. example: deploymentName: todo-list-api-main-59eec11 branch: main environmentType: PRODUCTION isDefault: true stage: api cname: todo-list-api-main-59eec11.zuplo.app Zuplo.CustomDomains.CustomDomainEnvironmentType: type: string enum: - PRODUCTION - PREVIEW - WORKING_COPY description: The environment type targeted by a custom domain deployment. Zuplo.CustomDomains.CustomDomainMutationResult: type: object required: - deploymentName - hostname - stage - ownershipVerification - cname properties: deploymentName: type: string nullable: true description: The deployment associated with the hostname. example: todo-list-api-main-59eec11 hostname: type: string description: The hostname that was created or updated. example: api.example.com stage: allOf: - $ref: '#/components/schemas/Zuplo.CustomDomains.CustomDomainStage' nullable: true description: The stage exposed by the hostname. example: api ownershipVerification: type: object allOf: - $ref: '#/components/schemas/Zuplo.CustomDomains.OwnershipVerification' nullable: true description: The DNS record required to verify domain ownership, if any. cname: type: string nullable: true description: The CNAME target for the custom domain, if any. example: todo-list-api-main-59eec11.zuplo.app description: The result of creating or updating a custom domain. example: deploymentName: todo-list-api-main-59eec11 hostname: api.example.com stage: api ownershipVerification: name: _zuplo.api.example.com type: TXT value: zuplo-verification-token cname: todo-list-api-main-59eec11.zuplo.app Zuplo.CustomDomains.CustomDomainProvider: type: string enum: - cloudflare - amazon - custom - alias description: The provider backing a custom domain. Zuplo.CustomDomains.CustomDomainStage: type: string enum: - api - dev-portal description: The stage exposed by a custom domain. Zuplo.CustomDomains.CustomDomainUpdateBody: type: object required: - hostname properties: hostname: type: string description: The hostname to update. example: api.example.com deploymentName: type: string description: The deployment to associate with the hostname. example: todo-list-api-main-59eec11 isDefault: type: boolean description: Whether this domain should be the default domain for the deployment. example: true description: Request body for updating a custom domain. example: hostname: api.example.com deploymentName: todo-list-api-main-59eec11 isDefault: true Zuplo.CustomDomains.CustomDomainsList: type: object required: - data - offset - limit properties: data: type: array items: $ref: '#/components/schemas/Zuplo.CustomDomains.CustomDomain' description: The custom domains returned for the account. offset: type: integer format: uint32 description: The number of records skipped. example: 0 limit: type: integer format: uint32 description: The maximum number of records returned. example: 100 description: Response containing a paginated list of custom domains. example: data: - id: cdm_01HZX8D7A1M9S0K4Y2N6P3Q8R5 accountName: chocolate_great_buzzard projectName: todo-list-api deployments: - deploymentName: todo-list-api-main-59eec11 branch: main environmentType: PRODUCTION isDefault: true stage: api cname: todo-list-api-main-59eec11.zuplo.app hostname: api.example.com provider: cloudflare offset: 0 limit: 100 Zuplo.CustomDomains.OwnershipVerification: type: object required: - name - type - value properties: name: type: string description: The DNS record name to create. example: _zuplo.api.example.com type: type: string description: The DNS record type to create. example: TXT value: type: string description: The DNS record value to create. example: zuplo-verification-token description: DNS record details used to verify domain ownership. example: name: _zuplo.api.example.com type: TXT value: zuplo-verification-token Zuplo.DeploymentStatus.DeploymentStatus: type: object required: - status - url - steps - buildResult properties: status: type: string enum: - SUCCESS - ERROR - IN_PROGRESS example: SUCCESS url: type: string example: https://api.zuplo.com/v1/deployments/lime-fox-main-bbe7540 steps: type: object additionalProperties: {} buildResult: type: object additionalProperties: {} description: Status of a Zuplo project deployment, including the status, build results, and a URL to view more details. example: status: SUCCESS url: https://api.zuplo.com/v1/deployments/lime-fox-main-bbe7540 steps: {} buildResult: {} Zuplo.Deployments.Deployment: type: object required: - name - url - label - urlParameter - createdOn - updatedOn - loggingId - accountName - projectName - state - message - branchName - environmentType properties: name: type: string description: The name of the deployment. You can find this in the Zuplo Portal under Settings > Environments. example: lime-fox-main-bbe7540 url: type: string example: https://api.zuplo.com/deployments/lime-fox-main-bbe7540 label: type: string example: main urlParameter: type: string example: main createdOn: type: string example: '2023-07-25T23:41:41.468Z' updatedOn: type: string example: '2023-07-25T23:41:41.468Z' loggingId: type: string example: chocolate_great_buzzard::lime-fox::main::main::bbe7540 accountName: type: string example: chocolate_great_buzzard projectName: type: string example: lime-fox state: type: string example: STARTED message: type: string enum: - '' example: '' branchName: type: string example: main environmentType: type: string example: PRODUCTION description: A single deployment of a Zup. example: name: lime-fox-main-bbe7540 label: main urlParameter: main createdOn: '2023-07-25T23:41:41.468Z' updatedOn: '2023-07-25T23:41:41.468Z' loggingId: chocolate_great_buzzard::lime-fox::main::main::bbe7540 accountName: chocolate_great_buzzard projectName: lime-fox state: STARTED message: '' branchName: main url: https://lime-fox-main-bbe7540.zuplo.app environmentType: PRODUCTION Zuplo.Deployments.DeploymentsList: type: object required: - data properties: data: type: array items: $ref: '#/components/schemas/Zuplo.Deployments.Deployment' example: data: - name: lime-fox-main-bbe7540 label: main urlParameter: main createdOn: '2023-07-25T23:41:41.468Z' updatedOn: '2023-07-25T23:41:41.468Z' loggingId: chocolate_great_buzzard::lime-fox::main::main::bbe7540 accountName: chocolate_great_buzzard projectName: lime-fox state: STARTED message: '' branchName: main url: https://lime-fox-main-bbe7540.zuplo.app environmentType: PRODUCTION Zuplo.Deploys.DeploymentResponse: type: object required: - status properties: status: type: string example: status: request enqueued Zuplo.Deploys.SourceCreateBody: type: object required: - accountName - projectName - branchName properties: accountName: type: string description: The name of the account example: my-account projectName: type: string description: The name of the project example: my-project branchName: type: string description: The name of the branch for deployment example: main Zuplo.Deploys.SourceUrlCreateBody: type: object required: - accountName - projectName - branchName properties: accountName: type: string description: The name of the account example: my-account projectName: type: string description: The name of the project example: my-project branchName: type: string description: The name of the branch for deployment example: main repositoryUrl: type: string description: The git repository url of the source code example: https://github.com/my-account/my-project branch: type: string description: The git branch example: main sha: type: string description: The git sha of the commit example: 9fb5c38a83013be1625c9b5cb2d1bdf458ff827e Zuplo.Environments.Environment: type: object required: - name - createdOn - accountName - projectName - branchName - environmentType properties: name: type: string description: The name of the environment. example: lime-fox-main-bbe7540 createdOn: type: string example: '2023-07-25T23:41:41.468Z' accountName: type: string example: chocolate_great_buzzard projectName: type: string example: lime-fox branchName: type: string example: main environmentType: type: string enum: - production - preview - development example: production description: The environment representing a Zup. This is mainly used in self-hosting deployments. example: name: lime-fox-main-bbe7540 accountName: chocolate_great_buzzard projectName: lime-fox createdOn: '2023-07-25T23:41:41.468Z' branchName: main environmentType: production Zuplo.Environments.EnvironmentCreateBody: type: object required: - accountName - projectName - environmentType - branchName properties: accountName: type: string description: The name of the account example: my-account projectName: type: string description: The name of the project example: my-project environmentType: type: string enum: - production - preview description: The name of the branch for deployment example: preview branchName: type: string description: The name of the branch for deployment example: main Zuplo.Environments.EnvironmentsList: type: object required: - data properties: data: type: array items: $ref: '#/components/schemas/Zuplo.Environments.Environment' example: data: - name: lime-fox-main-bbe7540 accountName: chocolate_great_buzzard projectName: lime-fox createdOn: '2023-07-25T23:41:41.468Z' branchName: main environmentType: production Zuplo.HttpProblemDetails.BadRequestProblemResponse: type: object required: - type - title properties: type: type: string enum: - https://httpproblems.com/http-status/400 title: type: string enum: - Bad Request allOf: - type: object required: - type - title properties: type: type: string title: type: string detail: type: string instance: type: string example: type: https://httpproblems.com/http-status/400 title: Bad Request status: 400 Zuplo.HttpProblemDetails.InternalServerErrorProblemResponse: type: object required: - type - title properties: type: type: string enum: - https://httpproblems.com/http-status/500 title: type: string enum: - Internal Server Error allOf: - type: object required: - type - title properties: type: type: string title: type: string detail: type: string instance: type: string example: type: https://httpproblems.com/http-status/500 title: Internal Server Error status: 500 Zuplo.HttpProblemDetails.NotFoundProblemResponse: type: object required: - type - title properties: type: type: string enum: - https://httpproblems.com/http-status/404 title: type: string enum: - Not Found allOf: - type: object required: - type - title properties: type: type: string title: type: string detail: type: string instance: type: string example: type: https://httpproblems.com/http-status/404 title: Not Found status: 404 Zuplo.HttpProblemDetails.UnauthorizedProblemResponse: type: object required: - type - title properties: type: type: string enum: - https://httpproblems.com/http-status/401 title: type: string enum: - Unauthorized allOf: - type: object required: - type - title properties: type: type: string title: type: string detail: type: string instance: type: string example: type: https://httpproblems.com/http-status/401 title: Unauthorized status: 401 Zuplo.ManagedDedicated.Fleet: type: object required: - id - name - vendor - controlPlaneUrl - isAccountDefault - createdOn - updatedOn properties: id: type: string description: Fleet ID name: type: string description: Fleet name vendor: allOf: - $ref: '#/components/schemas/Zuplo.ManagedDedicated.FleetVendor' description: Fleet vendor controlPlaneUrl: type: string description: Control plane URL isAccountDefault: type: boolean description: Whether this is the default fleet for the account createdOn: type: string format: date-time description: Creation timestamp updatedOn: type: string format: date-time description: Last update timestamp description: Fleet information Zuplo.ManagedDedicated.FleetConfigurationRequest: type: object additionalProperties: {} description: Fleet configuration request Zuplo.ManagedDedicated.FleetConfigurationResponse: type: object additionalProperties: {} description: Fleet configuration response Zuplo.ManagedDedicated.FleetListResponse: type: object required: - data properties: data: type: array items: $ref: '#/components/schemas/Zuplo.ManagedDedicated.Fleet' description: List of fleets description: Fleet list response Zuplo.ManagedDedicated.FleetVendor: type: string enum: - akamai - amazon - google - microsoft description: Fleet vendor Zuplo.Metering.Bucket: type: object required: - createdOn - updatedOn - id - accountName properties: createdOn: type: string format: date-time description: When the item was created. example: '2023-04-18T05:54:34.408Z' readOnly: true updatedOn: type: string format: date-time description: When the item was last updated. example: '2023-04-20T05:54:34.408Z' readOnly: true id: type: string example: mtr_STYBm01FabkgZOP3KtkYdJuO readOnly: true accountName: type: string example: my-account readOnly: true example: id: mtr_STYBm01FabkgZOP3KtkYdJuO accountName: my-account createdOn: '2023-07-24T19:26:36.000Z' updatedOn: '2023-07-24T19:26:36.000Z' Zuplo.Metering.Buckets: type: object required: - data properties: data: type: array items: $ref: '#/components/schemas/Zuplo.Metering.Bucket' limit: type: integer format: uint32 example: 1000 offset: type: integer format: uint32 example: 0 total: type: integer format: uint32 example: data: - id: mtr_STYBm01FabkgZOP3KtkYdJuO accountName: my-account createdOn: '2023-07-24T19:26:36.000Z' updatedOn: '2023-07-24T19:26:36.000Z' Zuplo.Metering.Plan: type: object required: - createdOn - updatedOn - id - hasSubscriptions - label - planExternalId - meters properties: createdOn: type: string format: date-time description: When the item was created. example: '2023-04-18T05:54:34.408Z' readOnly: true updatedOn: type: string format: date-time description: When the item was last updated. example: '2023-04-20T05:54:34.408Z' readOnly: true id: type: string example: plan_40dRwJecUOu9xDj2OeXDcYA5 readOnly: true hasSubscriptions: type: boolean example: true readOnly: true label: type: string example: Basic Subscription Plan planExternalId: type: string example: prod_Pbyd5ARBWtFxkg meters: type: object additionalProperties: type: object properties: label: type: string example: Requests max: type: integer example: 10 available: type: integer required: - max example: requests: label: Requests max: 10 trialDays: type: integer example: 10 trialEndStatus: type: string enum: - paused - canceled example: paused isTrialCollectPayment: type: boolean example: id: plan_GUmJS9zKX5mkY46Cf6fAUejZ createdOn: '2024-01-23T21:31:47Z' updatedOn: '2024-01-23T21:31:47Z' label: someLabel planExternalId: somePlanExternalId meters: computeUnits: label: Compute Units max: 30 requests: label: Requests max: 10 hasSubscriptions: true Zuplo.Metering.PlanCreateBody: type: object required: - label - planExternalId - meters properties: label: type: string example: Basic Subscription Plan planExternalId: type: string example: prod_Pbyd5ARBWtFxkg meters: type: object additionalProperties: type: object properties: label: type: string example: Requests max: type: integer example: 10 available: type: integer required: - max example: requests: label: Requests max: 10 trialDays: type: integer example: 10 trialEndStatus: type: string enum: - paused - canceled example: paused isTrialCollectPayment: type: boolean Zuplo.Metering.PlanUpdateBody: type: object properties: label: type: string example: Basic Subscription Plan planExternalId: type: string example: prod_Pbyd5ARBWtFxkg meters: type: object additionalProperties: type: object properties: label: type: string example: Requests max: type: integer example: 10 available: type: integer example: requests: label: Requests max: 10 trialDays: type: integer example: 10 trialEndStatus: type: string enum: - paused - canceled example: paused isTrialCollectPayment: type: boolean Zuplo.Metering.Plans: type: object required: - data properties: data: type: array items: $ref: '#/components/schemas/Zuplo.Metering.Plan' limit: type: integer format: uint32 example: 1000 offset: type: integer format: uint32 example: 0 total: type: integer format: uint32 example: data: - id: plan_GUmJS9zKX5mkY46Cf6fAUejZ createdOn: '2024-01-23T21:31:47Z' updatedOn: '2024-01-23T21:31:47Z' label: someLabel planExternalId: somePlanExternalId meters: computeUnits: label: Compute Units max: 30 requests: label: Requests max: 10 hasSubscriptions: true Zuplo.Metering.Quota: type: object additionalProperties: type: integer example: requests: 10 Zuplo.Metering.Subscription: type: object required: - createdOn - updatedOn - id - planIds - planExternalIds - status - type - renewalStrategy - region - customerKey - subscriptionExternalId - customerExternalId properties: createdOn: type: string format: date-time description: When the item was created. example: '2023-04-18T05:54:34.408Z' readOnly: true updatedOn: type: string format: date-time description: When the item was last updated. example: '2023-04-20T05:54:34.408Z' readOnly: true id: type: string example: sbsc_BnCcCqQHM5H4z60sTR0FfCKg readOnly: true planIds: type: array items: type: string example: - plan_ZLbXn7SCZt6KJnD6SU8Ljv8w planExternalIds: type: array items: type: string example: - prod_Pbyd5ARBWtFxkg quotaResetAnchor: type: string format: date-time status: type: string enum: - active - inactive - incomplete - incomplete-expired - trialing - past-due - canceled - unpaid - paused type: type: string enum: - periodic renewalStrategy: type: string enum: - monthly - yearly region: type: string enum: - us-central1 - us-east1 - europe-west4 customerKey: type: string example: d8984b34-defd-458c-bf34-7fb1b69ce714 subscriptionExternalId: type: string example: sub_1OmlUlLQav6G4UBHsPy2BY7J customerExternalId: type: string example: cus_PbzTcoZtPtelYg metadata: type: object additionalProperties: {} trialEndStatus: type: string example: paused trialEndDate: type: string format: date-time trialStartDate: type: string format: date-time nextBillingCycle: type: string format: date-time productKey: type: string example: id: sbsc_2te8204SbBQ9Zf0D9Ec9SKQC planIds: - plan_ZLbXn7SCZt6KJnD6SU8Ljv8w planExternalIds: - prod_Pbyd5ARBWtFxkg createdOn: '2024-02-22T23:16:06Z' updatedOn: '2024-02-22T23:16:06Z' quotaResetAnchor: '2024-02-22T23:16:06Z' status: active type: periodic renewalStrategy: monthly region: us-central1 customerKey: d8984b34-defd-458c-bf34-7fb1b69ce714 subscriptionExternalId: sub_1OmlUlLQav6G4UBHsPy2BY7J customerExternalId: cus_PbzTcoZtPtelYg nextBillingCycle: '2024-06-22T00:00:00Z' Zuplo.Metering.SubscriptionCreateBody: type: object required: - planIds - planExternalIds - status - type - renewalStrategy - region - customerKey - subscriptionExternalId - customerExternalId properties: planIds: type: array items: type: string example: - plan_ZLbXn7SCZt6KJnD6SU8Ljv8w planExternalIds: type: array items: type: string example: - prod_Pbyd5ARBWtFxkg quotaResetAnchor: type: string format: date-time status: type: string enum: - active - inactive - incomplete - incomplete-expired - trialing - past-due - canceled - unpaid - paused type: type: string enum: - periodic renewalStrategy: type: string enum: - monthly - yearly region: type: string enum: - us-central1 - us-east1 - europe-west4 customerKey: type: string example: d8984b34-defd-458c-bf34-7fb1b69ce714 subscriptionExternalId: type: string example: sub_1OmlUlLQav6G4UBHsPy2BY7J customerExternalId: type: string example: cus_PbzTcoZtPtelYg metadata: type: object additionalProperties: {} trialEndStatus: type: string example: paused trialEndDate: type: string format: date-time trialStartDate: type: string format: date-time nextBillingCycle: type: string format: date-time productKey: type: string Zuplo.Metering.SubscriptionUpdateBody: type: object properties: planExternalIds: type: array items: type: string example: - prod_Pbyd5ARBWtFxkg status: type: string enum: - active - inactive - incomplete - incomplete-expired - trialing - past-due - canceled - unpaid - paused prorate: type: number example: 0.75 metadata: type: object additionalProperties: {} trialEndDate: type: string format: date-time Zuplo.Metering.Subscriptions: type: object required: - data properties: data: type: array items: $ref: '#/components/schemas/Zuplo.Metering.Subscription' limit: type: integer format: uint32 example: 1000 offset: type: integer format: uint32 example: 0 total: type: integer format: uint32 example: data: - id: sbsc_vP3r5TxhjMBLZr6JsNGAWkgB planIds: - plan_5jqkZ9K6VzCn2YSeQ0l7WoRl planExternalIds: - prod_PQIwOzwlFOd0ky createdOn: '2024-02-06T23:34:10Z' updatedOn: '2024-02-06T23:34:10Z' quotaResetAnchor: '2024-02-06T23:34:10Z' status: active type: periodic renewalStrategy: monthly region: us-central1 customerKey: 5b8d3cc0-5cd7-4910-a502-d904181815c2 productKey: routes.oas.json subscriptionExternalId: sub_1Ogy6hEgfsfDxksqxt4Ffiv8 customerExternalId: cus_PW0625dV3Cz0sr nextBillingCycle: '2024-03-06T00:00:00Z' Zuplo.MtlsCertificates.CertificateInfo: type: object required: - subject - issuer - validFrom - validTo - serialNumber properties: subject: type: string description: Certificate subject example: CN=example.com issuer: type: string description: Certificate issuer example: CN=Example CA validFrom: type: string description: Certificate valid from date example: '2024-01-01T00:00:00Z' validTo: type: string description: Certificate valid to date example: '2025-01-01T00:00:00Z' serialNumber: type: string description: Certificate serial number example: '12345' Zuplo.MtlsCertificates.Environments: type: object required: - development - preview - production properties: development: type: boolean description: Whether the certificate is enabled for the development environment preview: type: boolean description: Whether the certificate is enabled for the preview environment production: type: boolean description: Whether the certificate is enabled for the production environment Zuplo.MtlsCertificates.MtlsCertificate: type: object required: - id - name - certificateInfo - environments - createdOn - updatedOn properties: id: type: string description: The unique identifier for the certificate example: cert_abc123 readOnly: true name: type: string minLength: 1 maxLength: 120 description: The name of the certificate. Must be alphanumeric with underscores. example: my_client_cert certificateInfo: allOf: - $ref: '#/components/schemas/Zuplo.MtlsCertificates.CertificateInfo' description: Certificate information environments: allOf: - $ref: '#/components/schemas/Zuplo.MtlsCertificates.Environments' description: Environments where the certificate is enabled createdOn: type: string format: date-time description: When the item was created. example: '2023-04-18T05:54:34.408Z' readOnly: true updatedOn: type: string format: date-time description: When the item was last updated. example: '2023-04-20T05:54:34.408Z' readOnly: true Zuplo.MtlsCertificates.MtlsCertificateCreateBody: type: object required: - name - certificate - key - environments properties: name: type: string minLength: 1 maxLength: 120 description: The name of the certificate. Must be alphanumeric with underscores. example: my_client_cert certificate: type: string minLength: 1 description: The PEM-encoded certificate key: type: string minLength: 1 description: The PEM-encoded private key environments: type: array items: type: string enum: - development - preview - production minItems: 1 description: List of environments where the certificate should be enabled Zuplo.MtlsCertificates.MtlsCertificateListResponse: type: object required: - data - offset - limit properties: data: type: array items: $ref: '#/components/schemas/Zuplo.MtlsCertificates.MtlsCertificate' description: List of mTLS certificates offset: type: integer format: int32 description: Offset for pagination limit: type: integer format: int32 description: Limit for pagination Zuplo.MtlsCertificates.MtlsCertificateUpdateBody: type: object properties: environments: type: array items: type: string enum: - development - preview - production minItems: 1 description: List of environments where the certificate should be enabled Zuplo.Projects.Project: type: object required: - name - accountName properties: name: type: string description: The name of the project example: lime-fox accountName: type: string description: The name of the account this project belongs to example: lime-fox description: A single project. example: name: lime-fox accountName: chocolate_great_buzzard Zuplo.Projects.ProjectCreateBody: type: object required: - name properties: name: type: string description: The name of the project example: lime-fox description: The body of the project creation request. example: name: lime-fox Zuplo.Projects.ProjectsList: type: object required: - data properties: data: type: array items: $ref: '#/components/schemas/Zuplo.Projects.Project' example: data: - name: lime-fox accountName: chocolate_great_buzzard - name: orange-fox accountName: chocolate_great_buzzard Zuplo.Sources.Source: type: object required: - uploadUrl properties: uploadUrl: type: string example: https://storage.googleapis.com/[..]1fac8da132b9 example: uploadUrl: https://storage.googleapis.com/[..]1fac8da132b9 Zuplo.Tunnels.Tunnel: type: object required: - tunnelId - name - token properties: tunnelId: type: string example: tnl_JcHFzTcJ9y4GU69lKBOaxFYU readOnly: true name: type: string pattern: ^[a-zA-Z0-9-]{3,24}$ description: A friendly name for the tunnel. example: api-service-tunnel token: type: string description: Set your TUNNEL_TOKEN to this value to connect to the tunnel. example: eyJhIjoiODJh[..]m89In0= readOnly: true description: Tunnels allow you to expose services running on bare metal, on-premises, or other non-cloud providers to the Zuplo platform. [Further reading](https://zuplo.com/docs/articles/secure-tunnel). example: tunnelId: tnl_JcHFzTcJ9y4GU69lKBOaxFYU name: api-service-tunnel token: eyJhIjoiODJhNGM0ZTBlYWY3ZmU3YjQyMWRlZHU1ODhlNjg1ZGMiLCJ0IjoiNjY3ZWZhODktYzIyNS00NTIyLWI0M2EtYTgwYzY0OTgxMGY1IiwicyI6IkY5RGdVNnNNOTJWT245OUlUSWxMazVwY3lHV0ZLVG1jcHg2d0I5TkR4Vm89In0= Zuplo.Tunnels.TunnelList: type: object required: - data properties: data: type: array items: $ref: '#/components/schemas/Zuplo.Tunnels.TunnelListItem' limit: type: integer format: uint32 example: 1000 offset: type: integer format: uint32 example: 0 total: type: integer format: uint32 example: data: - id: tnl_JcHFzTcJ9y4GU69lKBOaxFYU name: api-service-tunnel Zuplo.Tunnels.TunnelListItem: type: object required: - id - name properties: id: type: string example: tnl_JcHFzTcJ9y4GU69lKBOaxFYU readOnly: true name: type: string pattern: ^[a-zA-Z0-9-]{3,24}$ description: A friendly name for the tunnel. example: api-service-tunnel Zuplo.Tunnels.TunnelTeardownOperation: type: object required: - id - status properties: id: type: string example: tst_1vmvAjaCun9Mfeosn3Og4ddD readOnly: true status: type: string enum: - in-progress - success - error example: success message: type: string example: Successfully torn down tunnel. details: type: string Zuplo.Tunnels.TunneledServiceConfiguration: type: object required: - name - endpoint - configurations properties: name: type: string pattern: ^[a-zA-Z0-9-]{3,24}$ description: A friendly name for the service. This name needs to be unique across all your tunneled services. Changing this will invalidate existing services with the name. example: authservice endpoint: type: string description: The URL of the service that the tunnel will forward to, e.g, http://localhost:3000 example: https://localhost:3000 configurations: type: array items: type: object properties: project: type: string description: The name the project. example: alpha-beta-gamma accessibleBy: type: array items: type: string enum: - working-copy - preview - production description: The environments of the project that should have acess to this tunneled service. example: - preview - production required: - project - accessibleBy description: A list of projects that should have access to this tunneled service under the service://name URL scheme. description: Tunnel service configuration. Zuplo.Tunnels.TunneledServicesConfiguration: type: object required: - version - services properties: version: type: integer format: uint8 description: The version of this configuration format. example: 1 services: type: array items: $ref: '#/components/schemas/Zuplo.Tunnels.TunneledServiceConfiguration' description: A list of services that the tunnel will connect to. Zuplo.Tunnels.TunneledServicesProvisioningOperation: type: object required: - id - status properties: id: type: string example: pst_ezMUOh0xFqRWg84DPH5jVwgO readOnly: true status: type: string enum: - in-progress - success - error example: success message: type: string example: Successfully provisioned services. details: type: string Zuplo.Variables.Variable: type: object required: - branch - createdOn - updatedOn - name - isSecret - value properties: branch: type: string example: preview readOnly: true createdOn: type: string format: date-time description: When the item was created. example: '2023-04-18T05:54:34.408Z' readOnly: true updatedOn: type: string format: date-time description: When the item was last updated. example: '2023-04-20T05:54:34.408Z' readOnly: true name: type: string description: The name of the variable. Must be named in SCREAMING_SNAKE_CASE. example: APP_ENVIRONMENT_KEY isSecret: type: boolean description: Whether the variable is a secret. example: true value: type: string description: The value of the variable. example: name: PORTAL_ID isSecret: false value: '89333' branch: main createdOn: '2023-04-18T05:54:34.408Z' updatedOn: '2023-04-20T05:54:34.408Z' Zuplo.Variables.VariableCreateBody: type: object required: - name - isSecret - value properties: name: type: string description: The name of the variable. Must be named in SCREAMING_SNAKE_CASE. example: APP_ENVIRONMENT_KEY isSecret: type: boolean description: Whether the variable is a secret. example: true value: type: string description: The value of the variable. example: name: PORTAL_ID isSecret: false value: '89333' Zuplo.Variables.VariableUpdateBody: type: object properties: value: type: string description: The value of the variable. example: value: '89333' Zuplo.WhoAmI.WhoAmI: type: object required: - sub properties: account: type: string example: chocolate_blizzard_treat email: type: string example: user@example.com sub: type: string example: auth0|abc123 responses: RateLimitNoRetryAfter: description: Rate Limiting Response content: application/json: schema: type: object required: - type - title - status examples: - type: https://httpproblems.com/http-status/429 title: Too Many Requests status: 429 instance: /foo/bar properties: type: type: string example: https://httpproblems.com/http-status/429 description: A URI reference that identifies the problem. title: type: string example: Too Many Requests description: A short, human-readable summary of the problem. status: type: number example: 429 description: The HTTP status code. instance: type: string example: /foo/bar RateLimitWithRetryAfter: description: Rate Limiting Response content: application/json: schema: type: object required: - type - title - status examples: - type: https://httpproblems.com/http-status/429 title: Too Many Requests status: 429 instance: /foo/bar properties: type: type: string example: https://httpproblems.com/http-status/429 description: A URI reference that identifies the problem. title: type: string example: Too Many Requests description: A short, human-readable summary of the problem. status: type: number example: 429 description: The HTTP status code. instance: type: string example: /foo/bar headers: retry-after: description: The number of seconds to wait before making a new request. schema: type: integer example: 60 securitySchemes: ApiKeyAuth: type: apiKey in: header name: Authorization description: 'API key authentication. Format: Bearer {api-key}' servers: - url: https://dev.zuplo.com description: Zuplo Developer API security: - ApiKeyAuth: []