openapi: 3.0.0 info: title: Zuplo Developer API Keys - Buckets 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 servers: - url: https://dev.zuplo.com description: Zuplo Developer API security: - ApiKeyAuth: [] tags: - 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: /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 components: parameters: 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.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 schemas: 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.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.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.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.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.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.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 responses: 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}'