diff --git a/.generator/schemas/v2/openapi.yaml b/.generator/schemas/v2/openapi.yaml index 0eb131fbc4b..74eb9a9b7a2 100644 --- a/.generator/schemas/v2/openapi.yaml +++ b/.generator/schemas/v2/openapi.yaml @@ -132875,6 +132875,251 @@ components: description: Offset type. type: string type: object + TemporaryGrantRequestAttributes: + description: Request history and the linked grant state. List and detail reads include grant_state for approved requests. Decision responses record the decision; read the request for current grant state. + properties: + created_at: + description: When the request was submitted. + example: "2028-02-16T00:00:00Z" + format: date-time + type: string + decided_at: + description: When the decision or cancellation was recorded. + example: "2028-02-16T00:00:00Z" + format: date-time + type: string + decided_by_user_id: + description: UUID of the reviewer, or requester when canceled. + example: 12345678-1234-1234-1234-123456789012 + format: uuid + type: string + entity_key: + description: The requester identity resolved by the server. + example: user_handle:jane@example.com + type: string + expires_at: + description: Immutable exclusive expiry, normalized to UTC microsecond precision. + example: "2028-02-16T00:00:00Z" + format: date-time + type: string + grant_state: + $ref: "#/components/schemas/TemporaryGrantRequestGrantState" + justification: + description: Reason for requesting temporary credits. Trimmed and limited to 4096 UTF-8 bytes. + example: Credits needed to finish the incident investigation. + maxLength: 4096 + minLength: 1 + type: string + quota_namespace: + description: The quota namespace. Only AI credits are supported. + example: ai_credits + type: string + requested_by_user_id: + description: UUID of the authenticated requester. + example: 12345678-1234-1234-1234-123456789012 + format: uuid + type: string + status: + $ref: "#/components/schemas/TemporaryGrantRequestStatus" + total: + description: Target monthly AI-credit limit in positive whole credits, not additional credits. Fractional credits are not accepted. + example: 200 + format: int64 + maximum: 9223372036854 + minimum: 1 + type: integer + required: + - quota_namespace + - entity_key + - requested_by_user_id + - total + - justification + - expires_at + - status + - created_at + type: object + TemporaryGrantRequestCreateAttributes: + additionalProperties: false + description: Immutable terms and justification for a temporary grant request. + properties: + expires_at: + description: Exclusive expiry. Must be a future timestamp with a timezone; date-only values are rejected. Omitted or null defaults to the next UTC month boundary. Approval accepts this deadline unchanged. + example: "2028-02-16T00:00:00Z" + format: date-time + nullable: true + type: string + justification: + description: Reason for requesting temporary credits. Trimmed and limited to 4096 UTF-8 bytes. + example: Credits needed to finish the incident investigation. + maxLength: 4096 + minLength: 1 + type: string + total: + description: Target monthly AI-credit limit in positive whole credits, not additional credits. Fractional credits are not accepted. + example: 200 + format: int64 + maximum: 9223372036854 + minimum: 1 + type: integer + required: + - total + - justification + type: object + TemporaryGrantRequestCreateData: + description: The request resource to create. The server generates its ID. + properties: + attributes: + $ref: "#/components/schemas/TemporaryGrantRequestCreateAttributes" + type: + $ref: "#/components/schemas/TemporaryGrantRequestType" + required: + - type + - attributes + type: object + TemporaryGrantRequestCreateRequest: + description: Create a request for the authenticated human user. + properties: + data: + $ref: "#/components/schemas/TemporaryGrantRequestCreateData" + required: + - data + type: object + TemporaryGrantRequestData: + description: A temporary grant request resource. + properties: + attributes: + $ref: "#/components/schemas/TemporaryGrantRequestAttributes" + id: + description: Server-generated request UUID. + example: 12345678-1234-1234-1234-123456789012 + format: uuid + type: string + type: + $ref: "#/components/schemas/TemporaryGrantRequestType" + required: + - id + - type + - attributes + type: object + TemporaryGrantRequestDecision: + description: Approve the exact submitted total and expiry, or deny the request. + enum: + - approved + - denied + example: approved + type: string + x-enum-varnames: + - APPROVED + - DENIED + TemporaryGrantRequestDecisionAttributes: + additionalProperties: false + description: Binary decision. Overrides, reason fields, and unknown attributes are rejected, including null values. + properties: + decision: + $ref: "#/components/schemas/TemporaryGrantRequestDecision" + required: + - decision + type: object + TemporaryGrantRequestDecisionData: + description: A decision on a pending request. + properties: + attributes: + $ref: "#/components/schemas/TemporaryGrantRequestDecisionAttributes" + id: + description: Optional request UUID. If supplied it must match request_id in the path. + example: 12345678-1234-1234-1234-123456789012 + format: uuid + type: string + type: + $ref: "#/components/schemas/TemporaryGrantRequestType" + required: + - type + - attributes + type: object + TemporaryGrantRequestDecisionRequest: + description: Approve or deny a pending request. + properties: + data: + $ref: "#/components/schemas/TemporaryGrantRequestDecisionData" + required: + - data + type: object + TemporaryGrantRequestGrantState: + description: Current state of the grant associated with an approved request. Replaced means a successor superseded this grant; the successor need not still be active. Absent for requests that were not approved. + enum: + - active + - expired + - revoked + - replaced + example: active + type: string + x-enum-varnames: + - ACTIVE + - EXPIRED + - REVOKED + - REPLACED + TemporaryGrantRequestListMeta: + description: Pagination metadata. + properties: + page: + $ref: "#/components/schemas/TemporaryGrantRequestPage" + required: + - page + type: object + TemporaryGrantRequestListResponse: + description: A page of temporary grant requests, ordered by UUID rather than creation time. + properties: + data: + description: Requests visible to the authenticated caller. + items: + $ref: "#/components/schemas/TemporaryGrantRequestData" + type: array + meta: + $ref: "#/components/schemas/TemporaryGrantRequestListMeta" + required: + - data + - meta + type: object + TemporaryGrantRequestPage: + description: UUID cursor pagination. A full final page can return a cursor followed by an empty page. + properties: + next_cursor: + description: Use this UUID as page[cursor] to retrieve the next page. Omitted when the page is not full. + example: 12345678-1234-1234-1234-123456789012 + format: uuid + type: string + type: object + TemporaryGrantRequestResponse: + description: A single temporary grant request. + properties: + data: + $ref: "#/components/schemas/TemporaryGrantRequestData" + required: + - data + type: object + TemporaryGrantRequestStatus: + description: The durable request decision, independent of whether its grant is still active. + enum: + - pending + - approved + - denied + - cancelled + example: pending + type: string + x-enum-varnames: + - PENDING + - APPROVED + - DENIED + - CANCELLED + TemporaryGrantRequestType: + default: temporary_grant_requests + description: The temporary grant request resource type. + enum: + - temporary_grant_requests + example: temporary_grant_requests + type: string + x-enum-varnames: + - TEMPORARY_GRANT_REQUESTS TenancyConfig: description: Response containing a single OCI tenancy integration configuration. example: @@ -246942,6 +247187,347 @@ paths: x-unstable: |- **Note**: This endpoint is in preview and is subject to change. If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/). + /api/v2/usage/admin/temporary-grant-requests: + get: + description: List all request statuses within the authenticated organization. Filter by pending status for the review queue. Requires Billing Edit, including for reads. Requires an authenticated human user and the temporary-grants feature enabled for the organization. Service-account credentials are unsupported. Request status remains approved after expiry, revocation, or replacement. + operationId: PublicListTemporaryGrantRequests + parameters: + - description: Optional status; defaults to all statuses. + in: query + name: filter[status] + required: false + schema: + $ref: "#/components/schemas/TemporaryGrantRequestStatus" + - description: Page size, from 1 to 100. + in: query + name: page[limit] + required: false + schema: + default: 50 + format: int64 + maximum: 100 + minimum: 1 + type: integer + - description: UUID cursor from meta.page.next_cursor. + in: query + name: page[cursor] + required: false + schema: + format: uuid + type: string + - description: Filter by requester UUID within the authenticated organization. + in: query + name: filter[requested_by_user_id] + required: false + schema: + format: uuid + type: string + responses: + "200": + content: + application/json: + examples: + default: + value: + data: + - attributes: + created_at: "2028-02-16T00:00:00Z" + entity_key: user_handle:jane@example.com + expires_at: "2028-03-01T00:00:00Z" + justification: Credits needed to finish the incident investigation. + quota_namespace: ai_credits + requested_by_user_id: 12345678-1234-1234-1234-123456789012 + status: pending + total: 200 + id: 34567890-3456-3456-3456-345678901234 + type: temporary_grant_requests + meta: + page: {} + schema: + $ref: "#/components/schemas/TemporaryGrantRequestListResponse" + description: OK + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Bad Request + "401": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Unauthorized + "403": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Forbidden + "404": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Not Found + "409": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Conflict + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + security: + - apiKeyAuth: [] + appKeyAuth: [] + - AuthZ: + - billing_edit + summary: List organization temporary grant requests + tags: + - Usage Metering + x-pagination: + cursorParam: page[cursor] + cursorPath: meta.page.next_cursor + limitParam: page[limit] + resultsPath: data + x-permission: + operator: OR + permissions: + - billing_edit + x-unstable: This endpoint is in Preview and is subject to change. + /api/v2/usage/admin/temporary-grant-requests/{request_id}: + get: + description: Read an organization request, justification, decision, and linked grant state. Requires Billing Edit. Requires an authenticated human user and the temporary-grants feature enabled for the organization. Service-account credentials are unsupported. Request status remains approved after expiry, revocation, or replacement. + operationId: PublicGetTemporaryGrantRequest + parameters: + - description: The temporary grant request UUID. + in: path + name: request_id + required: true + schema: + description: The request UUID. + example: 12345678-1234-1234-1234-123456789012 + format: uuid + type: string + responses: + "200": + content: + application/json: + examples: + default: + value: + data: + attributes: + created_at: "2028-02-16T00:00:00Z" + entity_key: user_handle:jane@example.com + expires_at: "2028-03-01T00:00:00Z" + justification: Credits needed to finish the incident investigation. + quota_namespace: ai_credits + requested_by_user_id: 12345678-1234-1234-1234-123456789012 + status: pending + total: 200 + id: 34567890-3456-3456-3456-345678901234 + type: temporary_grant_requests + schema: + $ref: "#/components/schemas/TemporaryGrantRequestResponse" + description: OK + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Bad Request + "401": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Unauthorized + "403": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Forbidden + "404": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Not Found + "409": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Conflict + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + security: + - apiKeyAuth: [] + appKeyAuth: [] + - AuthZ: + - billing_edit + summary: Get an organization temporary grant request + tags: + - Usage Metering + x-permission: + operator: OR + permissions: + - billing_edit + x-unstable: This endpoint is in Preview and is subject to change. + /api/v2/usage/admin/temporary-grant-requests/{request_id}/decision: + post: + description: Approve or deny the immutable submitted terms. Approval atomically writes the grant, audit, and request decision. An expired request cannot be approved. Requires Billing Edit. Requires an authenticated human user and the temporary-grants feature enabled for the organization. Service-account credentials are unsupported. Request status remains approved after expiry, revocation, or replacement. + operationId: PublicDecideTemporaryGrantRequest + parameters: + - description: The temporary grant request UUID. + in: path + name: request_id + required: true + schema: + description: The request UUID. + example: 12345678-1234-1234-1234-123456789012 + format: uuid + type: string + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/TemporaryGrantRequestDecisionRequest" + required: true + responses: + "200": + content: + application/json: + examples: + default: + value: + data: + attributes: + created_at: "2028-02-16T00:00:00Z" + decided_at: "2028-02-16T01:00:00Z" + decided_by_user_id: 23456789-2345-2345-2345-234567890123 + entity_key: user_handle:jane@example.com + expires_at: "2028-03-01T00:00:00Z" + justification: Credits needed to finish the incident investigation. + quota_namespace: ai_credits + requested_by_user_id: 12345678-1234-1234-1234-123456789012 + status: approved + total: 200 + id: 34567890-3456-3456-3456-345678901234 + type: temporary_grant_requests + schema: + $ref: "#/components/schemas/TemporaryGrantRequestResponse" + description: OK + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Bad Request + "401": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Unauthorized + "403": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Forbidden + "404": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Not Found + "409": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Conflict + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + security: + - apiKeyAuth: [] + appKeyAuth: [] + - AuthZ: + - billing_edit + summary: Decide a temporary grant request + tags: + - Usage Metering + x-permission: + operator: OR + permissions: + - billing_edit + x-unstable: This endpoint is in Preview and is subject to change. + /api/v2/usage/admin/temporary-grant-requests/{request_id}/grant: + delete: + description: Revoke only the grant still associated with this approved request. Request and audit history remain. A stale request cannot revoke a replacement grant. Requires Billing Edit. Requires an authenticated human user and the temporary-grants feature enabled for the organization. Service-account credentials are unsupported. Request status remains approved after expiry, revocation, or replacement. + operationId: PublicRevokeRequestedTemporaryGrant + parameters: + - description: The temporary grant request UUID. + in: path + name: request_id + required: true + schema: + description: The request UUID. + example: 12345678-1234-1234-1234-123456789012 + format: uuid + type: string + responses: + "204": + description: No Content + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Bad Request + "401": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Unauthorized + "403": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Forbidden + "404": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Not Found + "409": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Conflict + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + security: + - apiKeyAuth: [] + appKeyAuth: [] + - AuthZ: + - billing_edit + summary: Revoke a requested temporary grant + tags: + - Usage Metering + x-permission: + operator: OR + permissions: + - billing_edit + x-unstable: This endpoint is in Preview and is subject to change. /api/v2/usage/application_security: get: deprecated: true @@ -248149,6 +248735,386 @@ paths: operator: OR permissions: - usage_read + /api/v2/usage/temporary-grant-requests: + get: + description: List the authenticated user's own requests, including decided requests. Other users' requests are never included. Requires an authenticated human user and the temporary-grants feature enabled for the organization. Service-account credentials are unsupported. Request status remains approved after expiry, revocation, or replacement. + operationId: PublicListMyTemporaryGrantRequests + parameters: + - description: Optional status; defaults to all statuses. + in: query + name: filter[status] + required: false + schema: + $ref: "#/components/schemas/TemporaryGrantRequestStatus" + - description: Page size, from 1 to 100. + in: query + name: page[limit] + required: false + schema: + default: 50 + format: int64 + maximum: 100 + minimum: 1 + type: integer + - description: UUID cursor from meta.page.next_cursor. + in: query + name: page[cursor] + required: false + schema: + format: uuid + type: string + responses: + "200": + content: + application/json: + examples: + default: + value: + data: + - attributes: + created_at: "2028-02-16T00:00:00Z" + entity_key: user_handle:jane@example.com + expires_at: "2028-03-01T00:00:00Z" + justification: Credits needed to finish the incident investigation. + quota_namespace: ai_credits + requested_by_user_id: 12345678-1234-1234-1234-123456789012 + status: pending + total: 200 + id: 34567890-3456-3456-3456-345678901234 + type: temporary_grant_requests + meta: + page: {} + schema: + $ref: "#/components/schemas/TemporaryGrantRequestListResponse" + description: OK + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Bad Request + "401": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Unauthorized + "403": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Forbidden + "404": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Not Found + "409": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Conflict + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + security: + - apiKeyAuth: [] + appKeyAuth: [] + - AuthZ: + - assistant_access + - AuthZ: + - bits_dev_write + - AuthZ: + - bits_investigations_write + - AuthZ: + - bits_security_analyst_write + - AuthZ: + - agent_builder_run + - AuthZ: + - billing_edit + summary: List your temporary grant requests + tags: + - Usage Metering + x-pagination: + cursorParam: page[cursor] + cursorPath: meta.page.next_cursor + limitParam: page[limit] + resultsPath: data + x-permission: + operator: OR + permissions: + - assistant_access + - bits_dev_write + - bits_investigations_write + - bits_security_analyst_write + - agent_builder_run + - billing_edit + x-unstable: This endpoint is in Preview and is subject to change. + post: + description: Submit a request for the authenticated human user with a target monthly limit in positive whole AI credits, justification, and optional expiry. Fractional credits are not accepted. Requires an authenticated human user and the temporary-grants feature enabled for the organization. Service-account credentials are unsupported. Request status remains approved after expiry, revocation, or replacement. + operationId: PublicCreateTemporaryGrantRequest + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/TemporaryGrantRequestCreateRequest" + required: true + responses: + "201": + content: + application/json: + examples: + default: + value: + data: + attributes: + created_at: "2028-02-16T00:00:00Z" + entity_key: user_handle:jane@example.com + expires_at: "2028-03-01T00:00:00Z" + justification: Credits needed to finish the incident investigation. + quota_namespace: ai_credits + requested_by_user_id: 12345678-1234-1234-1234-123456789012 + status: pending + total: 200 + id: 34567890-3456-3456-3456-345678901234 + type: temporary_grant_requests + schema: + $ref: "#/components/schemas/TemporaryGrantRequestResponse" + description: Created + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Bad Request + "401": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Unauthorized + "403": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Forbidden + "404": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Not Found + "409": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Conflict + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + security: + - apiKeyAuth: [] + appKeyAuth: [] + - AuthZ: + - assistant_access + - AuthZ: + - bits_dev_write + - AuthZ: + - bits_investigations_write + - AuthZ: + - bits_security_analyst_write + - AuthZ: + - agent_builder_run + - AuthZ: + - billing_edit + summary: Create a temporary grant request + tags: + - Usage Metering + x-permission: + operator: OR + permissions: + - assistant_access + - bits_dev_write + - bits_investigations_write + - bits_security_analyst_write + - agent_builder_run + - billing_edit + x-unstable: This endpoint is in Preview and is subject to change. + /api/v2/usage/temporary-grant-requests/{request_id}: + delete: + description: Cancel an owned pending request. Retains request history and does not create or revoke a grant. Requires an authenticated human user and the temporary-grants feature enabled for the organization. Service-account credentials are unsupported. Request status remains approved after expiry, revocation, or replacement. + operationId: PublicCancelTemporaryGrantRequest + parameters: + - description: The temporary grant request UUID. + in: path + name: request_id + required: true + schema: + description: The request UUID. + example: 12345678-1234-1234-1234-123456789012 + format: uuid + type: string + responses: + "204": + description: No Content + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Bad Request + "401": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Unauthorized + "403": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Forbidden + "404": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Not Found + "409": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Conflict + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + security: + - apiKeyAuth: [] + appKeyAuth: [] + - AuthZ: + - assistant_access + - AuthZ: + - bits_dev_write + - AuthZ: + - bits_investigations_write + - AuthZ: + - bits_security_analyst_write + - AuthZ: + - agent_builder_run + - AuthZ: + - billing_edit + summary: Cancel your temporary grant request + tags: + - Usage Metering + x-permission: + operator: OR + permissions: + - assistant_access + - bits_dev_write + - bits_investigations_write + - bits_security_analyst_write + - agent_builder_run + - billing_edit + x-unstable: This endpoint is in Preview and is subject to change. + get: + description: Read an owned request, its decision, and its linked grant state. Requires an authenticated human user and the temporary-grants feature enabled for the organization. Service-account credentials are unsupported. Request status remains approved after expiry, revocation, or replacement. + operationId: PublicGetMyTemporaryGrantRequest + parameters: + - description: The temporary grant request UUID. + in: path + name: request_id + required: true + schema: + description: The request UUID. + example: 12345678-1234-1234-1234-123456789012 + format: uuid + type: string + responses: + "200": + content: + application/json: + examples: + default: + value: + data: + attributes: + created_at: "2028-02-16T00:00:00Z" + entity_key: user_handle:jane@example.com + expires_at: "2028-03-01T00:00:00Z" + justification: Credits needed to finish the incident investigation. + quota_namespace: ai_credits + requested_by_user_id: 12345678-1234-1234-1234-123456789012 + status: pending + total: 200 + id: 34567890-3456-3456-3456-345678901234 + type: temporary_grant_requests + schema: + $ref: "#/components/schemas/TemporaryGrantRequestResponse" + description: OK + "400": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Bad Request + "401": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Unauthorized + "403": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Forbidden + "404": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Not Found + "409": + content: + application/json: + schema: + $ref: "#/components/schemas/JSONAPIErrorResponse" + description: Conflict + "429": + $ref: "#/components/responses/TooManyRequestsResponse" + security: + - apiKeyAuth: [] + appKeyAuth: [] + - AuthZ: + - assistant_access + - AuthZ: + - bits_dev_write + - AuthZ: + - bits_investigations_write + - AuthZ: + - bits_security_analyst_write + - AuthZ: + - agent_builder_run + - AuthZ: + - billing_edit + summary: Get your temporary grant request + tags: + - Usage Metering + x-permission: + operator: OR + permissions: + - assistant_access + - bits_dev_write + - bits_investigations_write + - bits_security_analyst_write + - agent_builder_run + - billing_edit + x-unstable: This endpoint is in Preview and is subject to change. /api/v2/usage/usage-attribution-types: get: description: |- diff --git a/examples/v2/usage-metering/PublicCancelTemporaryGrantRequest.java b/examples/v2/usage-metering/PublicCancelTemporaryGrantRequest.java new file mode 100644 index 00000000000..f758a980706 --- /dev/null +++ b/examples/v2/usage-metering/PublicCancelTemporaryGrantRequest.java @@ -0,0 +1,27 @@ +// Cancel your temporary grant request returns "No Content" response + +import com.datadog.api.client.ApiClient; +import com.datadog.api.client.ApiException; +import com.datadog.api.client.v2.api.UsageMeteringApi; +import java.util.UUID; + +public class Example { + public static void main(String[] args) { + ApiClient defaultClient = ApiClient.getDefaultApiClient(); + defaultClient.setAccessToken(System.getenv("DD_BEARER_TOKEN")); + defaultClient.setUnstableOperationEnabled("v2.publicCancelTemporaryGrantRequest", true); + UsageMeteringApi apiInstance = new UsageMeteringApi(defaultClient); + + try { + apiInstance.publicCancelTemporaryGrantRequest( + UUID.fromString("12345678-1234-1234-1234-123456789012")); + } catch (ApiException e) { + System.err.println( + "Exception when calling UsageMeteringApi#publicCancelTemporaryGrantRequest"); + System.err.println("Status code: " + e.getCode()); + System.err.println("Reason: " + e.getResponseBody()); + System.err.println("Response headers: " + e.getResponseHeaders()); + e.printStackTrace(); + } + } +} diff --git a/examples/v2/usage-metering/PublicCreateTemporaryGrantRequest.java b/examples/v2/usage-metering/PublicCreateTemporaryGrantRequest.java new file mode 100644 index 00000000000..cae69eff044 --- /dev/null +++ b/examples/v2/usage-metering/PublicCreateTemporaryGrantRequest.java @@ -0,0 +1,43 @@ +// Create a temporary grant request returns "Created" response + +import com.datadog.api.client.ApiClient; +import com.datadog.api.client.ApiException; +import com.datadog.api.client.v2.api.UsageMeteringApi; +import com.datadog.api.client.v2.model.TemporaryGrantRequestCreateAttributes; +import com.datadog.api.client.v2.model.TemporaryGrantRequestCreateData; +import com.datadog.api.client.v2.model.TemporaryGrantRequestCreateRequest; +import com.datadog.api.client.v2.model.TemporaryGrantRequestResponse; +import com.datadog.api.client.v2.model.TemporaryGrantRequestType; +import java.time.OffsetDateTime; + +public class Example { + public static void main(String[] args) { + ApiClient defaultClient = ApiClient.getDefaultApiClient(); + defaultClient.setAccessToken(System.getenv("DD_BEARER_TOKEN")); + defaultClient.setUnstableOperationEnabled("v2.publicCreateTemporaryGrantRequest", true); + UsageMeteringApi apiInstance = new UsageMeteringApi(defaultClient); + + TemporaryGrantRequestCreateRequest body = + new TemporaryGrantRequestCreateRequest() + .data( + new TemporaryGrantRequestCreateData() + .attributes( + new TemporaryGrantRequestCreateAttributes() + .expiresAt(OffsetDateTime.parse("2028-02-16T00:00:00Z")) + .justification("Credits needed to finish the incident investigation.") + .total(200L)) + .type(TemporaryGrantRequestType.TEMPORARY_GRANT_REQUESTS)); + + try { + TemporaryGrantRequestResponse result = apiInstance.publicCreateTemporaryGrantRequest(body); + System.out.println(result); + } catch (ApiException e) { + System.err.println( + "Exception when calling UsageMeteringApi#publicCreateTemporaryGrantRequest"); + System.err.println("Status code: " + e.getCode()); + System.err.println("Reason: " + e.getResponseBody()); + System.err.println("Response headers: " + e.getResponseHeaders()); + e.printStackTrace(); + } + } +} diff --git a/examples/v2/usage-metering/PublicCreateTemporaryGrantRequest_400561207.java b/examples/v2/usage-metering/PublicCreateTemporaryGrantRequest_400561207.java new file mode 100644 index 00000000000..bb7eae3fe9f --- /dev/null +++ b/examples/v2/usage-metering/PublicCreateTemporaryGrantRequest_400561207.java @@ -0,0 +1,41 @@ +// Create a temporary grant request with a justification + +import com.datadog.api.client.ApiClient; +import com.datadog.api.client.ApiException; +import com.datadog.api.client.v2.api.UsageMeteringApi; +import com.datadog.api.client.v2.model.TemporaryGrantRequestCreateAttributes; +import com.datadog.api.client.v2.model.TemporaryGrantRequestCreateData; +import com.datadog.api.client.v2.model.TemporaryGrantRequestCreateRequest; +import com.datadog.api.client.v2.model.TemporaryGrantRequestResponse; +import com.datadog.api.client.v2.model.TemporaryGrantRequestType; + +public class Example { + public static void main(String[] args) { + ApiClient defaultClient = ApiClient.getDefaultApiClient(); + defaultClient.setAccessToken(System.getenv("DD_BEARER_TOKEN")); + defaultClient.setUnstableOperationEnabled("v2.publicCreateTemporaryGrantRequest", true); + UsageMeteringApi apiInstance = new UsageMeteringApi(defaultClient); + + TemporaryGrantRequestCreateRequest body = + new TemporaryGrantRequestCreateRequest() + .data( + new TemporaryGrantRequestCreateData() + .type(TemporaryGrantRequestType.TEMPORARY_GRANT_REQUESTS) + .attributes( + new TemporaryGrantRequestCreateAttributes() + .total(200L) + .justification("SDK temporary grant request test"))); + + try { + TemporaryGrantRequestResponse result = apiInstance.publicCreateTemporaryGrantRequest(body); + System.out.println(result); + } catch (ApiException e) { + System.err.println( + "Exception when calling UsageMeteringApi#publicCreateTemporaryGrantRequest"); + System.err.println("Status code: " + e.getCode()); + System.err.println("Reason: " + e.getResponseBody()); + System.err.println("Response headers: " + e.getResponseHeaders()); + e.printStackTrace(); + } + } +} diff --git a/examples/v2/usage-metering/PublicDecideTemporaryGrantRequest.java b/examples/v2/usage-metering/PublicDecideTemporaryGrantRequest.java new file mode 100644 index 00000000000..245b1754bd4 --- /dev/null +++ b/examples/v2/usage-metering/PublicDecideTemporaryGrantRequest.java @@ -0,0 +1,45 @@ +// Decide a temporary grant request returns "OK" response + +import com.datadog.api.client.ApiClient; +import com.datadog.api.client.ApiException; +import com.datadog.api.client.v2.api.UsageMeteringApi; +import com.datadog.api.client.v2.model.TemporaryGrantRequestDecision; +import com.datadog.api.client.v2.model.TemporaryGrantRequestDecisionAttributes; +import com.datadog.api.client.v2.model.TemporaryGrantRequestDecisionData; +import com.datadog.api.client.v2.model.TemporaryGrantRequestDecisionRequest; +import com.datadog.api.client.v2.model.TemporaryGrantRequestResponse; +import com.datadog.api.client.v2.model.TemporaryGrantRequestType; +import java.util.UUID; + +public class Example { + public static void main(String[] args) { + ApiClient defaultClient = ApiClient.getDefaultApiClient(); + defaultClient.setAccessToken(System.getenv("DD_BEARER_TOKEN")); + defaultClient.setUnstableOperationEnabled("v2.publicDecideTemporaryGrantRequest", true); + UsageMeteringApi apiInstance = new UsageMeteringApi(defaultClient); + + TemporaryGrantRequestDecisionRequest body = + new TemporaryGrantRequestDecisionRequest() + .data( + new TemporaryGrantRequestDecisionData() + .attributes( + new TemporaryGrantRequestDecisionAttributes() + .decision(TemporaryGrantRequestDecision.APPROVED)) + .id(UUID.fromString("12345678-1234-1234-1234-123456789012")) + .type(TemporaryGrantRequestType.TEMPORARY_GRANT_REQUESTS)); + + try { + TemporaryGrantRequestResponse result = + apiInstance.publicDecideTemporaryGrantRequest( + UUID.fromString("12345678-1234-1234-1234-123456789012"), body); + System.out.println(result); + } catch (ApiException e) { + System.err.println( + "Exception when calling UsageMeteringApi#publicDecideTemporaryGrantRequest"); + System.err.println("Status code: " + e.getCode()); + System.err.println("Reason: " + e.getResponseBody()); + System.err.println("Response headers: " + e.getResponseHeaders()); + e.printStackTrace(); + } + } +} diff --git a/examples/v2/usage-metering/PublicGetMyTemporaryGrantRequest.java b/examples/v2/usage-metering/PublicGetMyTemporaryGrantRequest.java new file mode 100644 index 00000000000..a6b1d039a81 --- /dev/null +++ b/examples/v2/usage-metering/PublicGetMyTemporaryGrantRequest.java @@ -0,0 +1,30 @@ +// Get your temporary grant request returns "OK" response + +import com.datadog.api.client.ApiClient; +import com.datadog.api.client.ApiException; +import com.datadog.api.client.v2.api.UsageMeteringApi; +import com.datadog.api.client.v2.model.TemporaryGrantRequestResponse; +import java.util.UUID; + +public class Example { + public static void main(String[] args) { + ApiClient defaultClient = ApiClient.getDefaultApiClient(); + defaultClient.setAccessToken(System.getenv("DD_BEARER_TOKEN")); + defaultClient.setUnstableOperationEnabled("v2.publicGetMyTemporaryGrantRequest", true); + UsageMeteringApi apiInstance = new UsageMeteringApi(defaultClient); + + try { + TemporaryGrantRequestResponse result = + apiInstance.publicGetMyTemporaryGrantRequest( + UUID.fromString("12345678-1234-1234-1234-123456789012")); + System.out.println(result); + } catch (ApiException e) { + System.err.println( + "Exception when calling UsageMeteringApi#publicGetMyTemporaryGrantRequest"); + System.err.println("Status code: " + e.getCode()); + System.err.println("Reason: " + e.getResponseBody()); + System.err.println("Response headers: " + e.getResponseHeaders()); + e.printStackTrace(); + } + } +} diff --git a/examples/v2/usage-metering/PublicGetMyTemporaryGrantRequest_32902673.java b/examples/v2/usage-metering/PublicGetMyTemporaryGrantRequest_32902673.java new file mode 100644 index 00000000000..6afd3bb7604 --- /dev/null +++ b/examples/v2/usage-metering/PublicGetMyTemporaryGrantRequest_32902673.java @@ -0,0 +1,39 @@ +// Read an owned temporary grant request + +import com.datadog.api.client.ApiClient; +import com.datadog.api.client.ApiException; +import com.datadog.api.client.v2.api.UsageMeteringApi; +import com.datadog.api.client.v2.model.TemporaryGrantRequestResponse; +import java.util.UUID; + +public class Example { + public static void main(String[] args) { + ApiClient defaultClient = ApiClient.getDefaultApiClient(); + defaultClient.setAccessToken(System.getenv("DD_BEARER_TOKEN")); + defaultClient.setUnstableOperationEnabled("v2.publicCreateTemporaryGrantRequest", true); + defaultClient.setUnstableOperationEnabled("v2.publicGetMyTemporaryGrantRequest", true); + UsageMeteringApi apiInstance = new UsageMeteringApi(defaultClient); + + // there is a valid "temporary_grant_request" in the system + UUID TEMPORARY_GRANT_REQUEST_DATA_ID = null; + try { + TEMPORARY_GRANT_REQUEST_DATA_ID = + UUID.fromString(System.getenv("TEMPORARY_GRANT_REQUEST_DATA_ID")); + } catch (IllegalArgumentException e) { + System.err.println("Error parsing UUID: " + e.getMessage()); + } + + try { + TemporaryGrantRequestResponse result = + apiInstance.publicGetMyTemporaryGrantRequest(TEMPORARY_GRANT_REQUEST_DATA_ID); + System.out.println(result); + } catch (ApiException e) { + System.err.println( + "Exception when calling UsageMeteringApi#publicGetMyTemporaryGrantRequest"); + System.err.println("Status code: " + e.getCode()); + System.err.println("Reason: " + e.getResponseBody()); + System.err.println("Response headers: " + e.getResponseHeaders()); + e.printStackTrace(); + } + } +} diff --git a/examples/v2/usage-metering/PublicGetTemporaryGrantRequest.java b/examples/v2/usage-metering/PublicGetTemporaryGrantRequest.java new file mode 100644 index 00000000000..87f8e6787b8 --- /dev/null +++ b/examples/v2/usage-metering/PublicGetTemporaryGrantRequest.java @@ -0,0 +1,29 @@ +// Get an organization temporary grant request returns "OK" response + +import com.datadog.api.client.ApiClient; +import com.datadog.api.client.ApiException; +import com.datadog.api.client.v2.api.UsageMeteringApi; +import com.datadog.api.client.v2.model.TemporaryGrantRequestResponse; +import java.util.UUID; + +public class Example { + public static void main(String[] args) { + ApiClient defaultClient = ApiClient.getDefaultApiClient(); + defaultClient.setAccessToken(System.getenv("DD_BEARER_TOKEN")); + defaultClient.setUnstableOperationEnabled("v2.publicGetTemporaryGrantRequest", true); + UsageMeteringApi apiInstance = new UsageMeteringApi(defaultClient); + + try { + TemporaryGrantRequestResponse result = + apiInstance.publicGetTemporaryGrantRequest( + UUID.fromString("12345678-1234-1234-1234-123456789012")); + System.out.println(result); + } catch (ApiException e) { + System.err.println("Exception when calling UsageMeteringApi#publicGetTemporaryGrantRequest"); + System.err.println("Status code: " + e.getCode()); + System.err.println("Reason: " + e.getResponseBody()); + System.err.println("Response headers: " + e.getResponseHeaders()); + e.printStackTrace(); + } + } +} diff --git a/examples/v2/usage-metering/PublicListMyTemporaryGrantRequests.java b/examples/v2/usage-metering/PublicListMyTemporaryGrantRequests.java new file mode 100644 index 00000000000..beff1350073 --- /dev/null +++ b/examples/v2/usage-metering/PublicListMyTemporaryGrantRequests.java @@ -0,0 +1,27 @@ +// List your temporary grant requests returns "OK" response + +import com.datadog.api.client.ApiClient; +import com.datadog.api.client.ApiException; +import com.datadog.api.client.v2.api.UsageMeteringApi; +import com.datadog.api.client.v2.model.TemporaryGrantRequestListResponse; + +public class Example { + public static void main(String[] args) { + ApiClient defaultClient = ApiClient.getDefaultApiClient(); + defaultClient.setAccessToken(System.getenv("DD_BEARER_TOKEN")); + defaultClient.setUnstableOperationEnabled("v2.publicListMyTemporaryGrantRequests", true); + UsageMeteringApi apiInstance = new UsageMeteringApi(defaultClient); + + try { + TemporaryGrantRequestListResponse result = apiInstance.publicListMyTemporaryGrantRequests(); + System.out.println(result); + } catch (ApiException e) { + System.err.println( + "Exception when calling UsageMeteringApi#publicListMyTemporaryGrantRequests"); + System.err.println("Status code: " + e.getCode()); + System.err.println("Reason: " + e.getResponseBody()); + System.err.println("Response headers: " + e.getResponseHeaders()); + e.printStackTrace(); + } + } +} diff --git a/examples/v2/usage-metering/PublicListMyTemporaryGrantRequests_1522274412.java b/examples/v2/usage-metering/PublicListMyTemporaryGrantRequests_1522274412.java new file mode 100644 index 00000000000..c450cb0d901 --- /dev/null +++ b/examples/v2/usage-metering/PublicListMyTemporaryGrantRequests_1522274412.java @@ -0,0 +1,33 @@ +// List your pending temporary grant requests + +import com.datadog.api.client.ApiClient; +import com.datadog.api.client.ApiException; +import com.datadog.api.client.v2.api.UsageMeteringApi; +import com.datadog.api.client.v2.api.UsageMeteringApi.PublicListMyTemporaryGrantRequestsOptionalParameters; +import com.datadog.api.client.v2.model.TemporaryGrantRequestListResponse; +import com.datadog.api.client.v2.model.TemporaryGrantRequestStatus; + +public class Example { + public static void main(String[] args) { + ApiClient defaultClient = ApiClient.getDefaultApiClient(); + defaultClient.setAccessToken(System.getenv("DD_BEARER_TOKEN")); + defaultClient.setUnstableOperationEnabled("v2.publicListMyTemporaryGrantRequests", true); + UsageMeteringApi apiInstance = new UsageMeteringApi(defaultClient); + + try { + TemporaryGrantRequestListResponse result = + apiInstance.publicListMyTemporaryGrantRequests( + new PublicListMyTemporaryGrantRequestsOptionalParameters() + .filterStatus(TemporaryGrantRequestStatus.PENDING) + .pageLimit(1L)); + System.out.println(result); + } catch (ApiException e) { + System.err.println( + "Exception when calling UsageMeteringApi#publicListMyTemporaryGrantRequests"); + System.err.println("Status code: " + e.getCode()); + System.err.println("Reason: " + e.getResponseBody()); + System.err.println("Response headers: " + e.getResponseHeaders()); + e.printStackTrace(); + } + } +} diff --git a/examples/v2/usage-metering/PublicListMyTemporaryGrantRequests_3885243213.java b/examples/v2/usage-metering/PublicListMyTemporaryGrantRequests_3885243213.java new file mode 100644 index 00000000000..522b7a219f6 --- /dev/null +++ b/examples/v2/usage-metering/PublicListMyTemporaryGrantRequests_3885243213.java @@ -0,0 +1,30 @@ +// List your temporary grant requests returns "OK" response with pagination + +import com.datadog.api.client.ApiClient; +import com.datadog.api.client.PaginationIterable; +import com.datadog.api.client.v2.api.UsageMeteringApi; +import com.datadog.api.client.v2.model.TemporaryGrantRequestData; + +public class Example { + public static void main(String[] args) { + ApiClient defaultClient = ApiClient.getDefaultApiClient(); + defaultClient.setAccessToken(System.getenv("DD_BEARER_TOKEN")); + defaultClient.setUnstableOperationEnabled("v2.publicListMyTemporaryGrantRequests", true); + UsageMeteringApi apiInstance = new UsageMeteringApi(defaultClient); + + try { + PaginationIterable iterable = + apiInstance.publicListMyTemporaryGrantRequestsWithPagination(); + + for (TemporaryGrantRequestData item : iterable) { + System.out.println(item); + } + } catch (RuntimeException e) { + System.err.println( + "Exception when calling" + + " UsageMeteringApi#publicListMyTemporaryGrantRequestsWithPagination"); + System.err.println("Reason: " + e.getMessage()); + e.printStackTrace(); + } + } +} diff --git a/examples/v2/usage-metering/PublicListTemporaryGrantRequests.java b/examples/v2/usage-metering/PublicListTemporaryGrantRequests.java new file mode 100644 index 00000000000..074359b6bcf --- /dev/null +++ b/examples/v2/usage-metering/PublicListTemporaryGrantRequests.java @@ -0,0 +1,27 @@ +// List organization temporary grant requests returns "OK" response + +import com.datadog.api.client.ApiClient; +import com.datadog.api.client.ApiException; +import com.datadog.api.client.v2.api.UsageMeteringApi; +import com.datadog.api.client.v2.model.TemporaryGrantRequestListResponse; + +public class Example { + public static void main(String[] args) { + ApiClient defaultClient = ApiClient.getDefaultApiClient(); + defaultClient.setAccessToken(System.getenv("DD_BEARER_TOKEN")); + defaultClient.setUnstableOperationEnabled("v2.publicListTemporaryGrantRequests", true); + UsageMeteringApi apiInstance = new UsageMeteringApi(defaultClient); + + try { + TemporaryGrantRequestListResponse result = apiInstance.publicListTemporaryGrantRequests(); + System.out.println(result); + } catch (ApiException e) { + System.err.println( + "Exception when calling UsageMeteringApi#publicListTemporaryGrantRequests"); + System.err.println("Status code: " + e.getCode()); + System.err.println("Reason: " + e.getResponseBody()); + System.err.println("Response headers: " + e.getResponseHeaders()); + e.printStackTrace(); + } + } +} diff --git a/examples/v2/usage-metering/PublicListTemporaryGrantRequests_3760725651.java b/examples/v2/usage-metering/PublicListTemporaryGrantRequests_3760725651.java new file mode 100644 index 00000000000..7f990036af3 --- /dev/null +++ b/examples/v2/usage-metering/PublicListTemporaryGrantRequests_3760725651.java @@ -0,0 +1,29 @@ +// List organization temporary grant requests returns "OK" response with pagination + +import com.datadog.api.client.ApiClient; +import com.datadog.api.client.PaginationIterable; +import com.datadog.api.client.v2.api.UsageMeteringApi; +import com.datadog.api.client.v2.model.TemporaryGrantRequestData; + +public class Example { + public static void main(String[] args) { + ApiClient defaultClient = ApiClient.getDefaultApiClient(); + defaultClient.setAccessToken(System.getenv("DD_BEARER_TOKEN")); + defaultClient.setUnstableOperationEnabled("v2.publicListTemporaryGrantRequests", true); + UsageMeteringApi apiInstance = new UsageMeteringApi(defaultClient); + + try { + PaginationIterable iterable = + apiInstance.publicListTemporaryGrantRequestsWithPagination(); + + for (TemporaryGrantRequestData item : iterable) { + System.out.println(item); + } + } catch (RuntimeException e) { + System.err.println( + "Exception when calling UsageMeteringApi#publicListTemporaryGrantRequestsWithPagination"); + System.err.println("Reason: " + e.getMessage()); + e.printStackTrace(); + } + } +} diff --git a/examples/v2/usage-metering/PublicRevokeRequestedTemporaryGrant.java b/examples/v2/usage-metering/PublicRevokeRequestedTemporaryGrant.java new file mode 100644 index 00000000000..865d5e88826 --- /dev/null +++ b/examples/v2/usage-metering/PublicRevokeRequestedTemporaryGrant.java @@ -0,0 +1,27 @@ +// Revoke a requested temporary grant returns "No Content" response + +import com.datadog.api.client.ApiClient; +import com.datadog.api.client.ApiException; +import com.datadog.api.client.v2.api.UsageMeteringApi; +import java.util.UUID; + +public class Example { + public static void main(String[] args) { + ApiClient defaultClient = ApiClient.getDefaultApiClient(); + defaultClient.setAccessToken(System.getenv("DD_BEARER_TOKEN")); + defaultClient.setUnstableOperationEnabled("v2.publicRevokeRequestedTemporaryGrant", true); + UsageMeteringApi apiInstance = new UsageMeteringApi(defaultClient); + + try { + apiInstance.publicRevokeRequestedTemporaryGrant( + UUID.fromString("12345678-1234-1234-1234-123456789012")); + } catch (ApiException e) { + System.err.println( + "Exception when calling UsageMeteringApi#publicRevokeRequestedTemporaryGrant"); + System.err.println("Status code: " + e.getCode()); + System.err.println("Reason: " + e.getResponseBody()); + System.err.println("Response headers: " + e.getResponseHeaders()); + e.printStackTrace(); + } + } +} diff --git a/src/main/java/com/datadog/api/client/ApiClient.java b/src/main/java/com/datadog/api/client/ApiClient.java index 69b59ac84ef..0c05ddd4636 100644 --- a/src/main/java/com/datadog/api/client/ApiClient.java +++ b/src/main/java/com/datadog/api/client/ApiClient.java @@ -1231,6 +1231,14 @@ public class ApiClient { put("v2.deletePendingQuota", false); put("v2.deleteQuota", false); put("v2.listQuotas", false); + put("v2.publicCancelTemporaryGrantRequest", false); + put("v2.publicCreateTemporaryGrantRequest", false); + put("v2.publicDecideTemporaryGrantRequest", false); + put("v2.publicGetMyTemporaryGrantRequest", false); + put("v2.publicGetTemporaryGrantRequest", false); + put("v2.publicListMyTemporaryGrantRequests", false); + put("v2.publicListTemporaryGrantRequests", false); + put("v2.publicRevokeRequestedTemporaryGrant", false); put("v2.updateQuota", false); put("v2.createOwnershipFeedback", false); put("v2.getOwnershipEvidence", false); diff --git a/src/main/java/com/datadog/api/client/v2/api/UsageMeteringApi.java b/src/main/java/com/datadog/api/client/v2/api/UsageMeteringApi.java index f87c37c010c..a2b657e7450 100644 --- a/src/main/java/com/datadog/api/client/v2/api/UsageMeteringApi.java +++ b/src/main/java/com/datadog/api/client/v2/api/UsageMeteringApi.java @@ -13,6 +13,12 @@ import com.datadog.api.client.v2.model.MonthlyCostAttributionResponse; import com.datadog.api.client.v2.model.ProjectedCostResponse; import com.datadog.api.client.v2.model.SortDirection; +import com.datadog.api.client.v2.model.TemporaryGrantRequestCreateRequest; +import com.datadog.api.client.v2.model.TemporaryGrantRequestData; +import com.datadog.api.client.v2.model.TemporaryGrantRequestDecisionRequest; +import com.datadog.api.client.v2.model.TemporaryGrantRequestListResponse; +import com.datadog.api.client.v2.model.TemporaryGrantRequestResponse; +import com.datadog.api.client.v2.model.TemporaryGrantRequestStatus; import com.datadog.api.client.v2.model.UsageApplicationSecurityMonitoringResponse; import com.datadog.api.client.v2.model.UsageAttributionTypesResponse; import com.datadog.api.client.v2.model.UsageLambdaTracedInvocationsResponse; @@ -32,6 +38,7 @@ import java.util.LinkedHashMap; import java.util.List; import java.util.Map; +import java.util.UUID; import java.util.concurrent.CompletableFuture; @jakarta.annotation.Generated( @@ -4132,6 +4139,1619 @@ public CompletableFuture> listQuotasWithHtt new GenericType() {}); } + /** + * Cancel your temporary grant request. + * + *

See {@link #publicCancelTemporaryGrantRequestWithHttpInfo}. + * + * @param requestId The temporary grant request UUID. (required) + * @throws ApiException if fails to make API call + */ + public void publicCancelTemporaryGrantRequest(UUID requestId) throws ApiException { + publicCancelTemporaryGrantRequestWithHttpInfo(requestId); + } + + /** + * Cancel your temporary grant request. + * + *

See {@link #publicCancelTemporaryGrantRequestWithHttpInfoAsync}. + * + * @param requestId The temporary grant request UUID. (required) + * @return CompletableFuture + */ + public CompletableFuture publicCancelTemporaryGrantRequestAsync(UUID requestId) { + return publicCancelTemporaryGrantRequestWithHttpInfoAsync(requestId) + .thenApply( + response -> { + return response.getData(); + }); + } + + /** + * Cancel an owned pending request. Retains request history and does not create or revoke a grant. + * Requires an authenticated human user and the temporary-grants feature enabled for the + * organization. Service-account credentials are unsupported. Request status remains approved + * after expiry, revocation, or replacement. + * + * @param requestId The temporary grant request UUID. (required) + * @return ApiResponse<Void> + * @throws ApiException if fails to make API call + * @http.response.details + * + * + * + * + * + * + * + * + * + * + *
Response details
Status Code Description Response Headers
204 No Content -
400 Bad Request -
401 Unauthorized -
403 Forbidden -
404 Not Found -
409 Conflict -
429 Too many requests -
+ */ + public ApiResponse publicCancelTemporaryGrantRequestWithHttpInfo(UUID requestId) + throws ApiException { + // Check if unstable operation is enabled + String operationId = "publicCancelTemporaryGrantRequest"; + if (apiClient.isUnstableOperationEnabled("v2." + operationId)) { + apiClient.getLogger().warning(String.format("Using unstable operation '%s'", operationId)); + } else { + throw new ApiException(0, String.format("Unstable operation '%s' is disabled", operationId)); + } + Object localVarPostBody = null; + + // verify the required parameter 'requestId' is set + if (requestId == null) { + throw new ApiException( + 400, + "Missing the required parameter 'requestId' when calling" + + " publicCancelTemporaryGrantRequest"); + } + // create path and map variables + String localVarPath = + "/api/v2/usage/temporary-grant-requests/{request_id}" + .replaceAll("\\{" + "request_id" + "\\}", apiClient.escapeString(requestId.toString())); + + Map localVarHeaderParams = new HashMap(); + + Invocation.Builder builder = + apiClient.createBuilder( + "v2.UsageMeteringApi.publicCancelTemporaryGrantRequest", + localVarPath, + new ArrayList(), + localVarHeaderParams, + new HashMap(), + new String[] {"*/*"}, + new String[] {"apiKeyAuth", "appKeyAuth", "AuthZ"}); + return apiClient.invokeAPI( + "DELETE", + builder, + localVarHeaderParams, + new String[] {}, + localVarPostBody, + new HashMap(), + false, + null); + } + + /** + * Cancel your temporary grant request. + * + *

See {@link #publicCancelTemporaryGrantRequestWithHttpInfo}. + * + * @param requestId The temporary grant request UUID. (required) + * @return CompletableFuture<ApiResponse<Void>> + */ + public CompletableFuture> publicCancelTemporaryGrantRequestWithHttpInfoAsync( + UUID requestId) { + // Check if unstable operation is enabled + String operationId = "publicCancelTemporaryGrantRequest"; + if (apiClient.isUnstableOperationEnabled("v2." + operationId)) { + apiClient.getLogger().warning(String.format("Using unstable operation '%s'", operationId)); + } else { + CompletableFuture> result = new CompletableFuture<>(); + result.completeExceptionally( + new ApiException(0, String.format("Unstable operation '%s' is disabled", operationId))); + return result; + } + Object localVarPostBody = null; + + // verify the required parameter 'requestId' is set + if (requestId == null) { + CompletableFuture> result = new CompletableFuture<>(); + result.completeExceptionally( + new ApiException( + 400, + "Missing the required parameter 'requestId' when calling" + + " publicCancelTemporaryGrantRequest")); + return result; + } + // create path and map variables + String localVarPath = + "/api/v2/usage/temporary-grant-requests/{request_id}" + .replaceAll("\\{" + "request_id" + "\\}", apiClient.escapeString(requestId.toString())); + + Map localVarHeaderParams = new HashMap(); + + Invocation.Builder builder; + try { + builder = + apiClient.createBuilder( + "v2.UsageMeteringApi.publicCancelTemporaryGrantRequest", + localVarPath, + new ArrayList(), + localVarHeaderParams, + new HashMap(), + new String[] {"*/*"}, + new String[] {"apiKeyAuth", "appKeyAuth", "AuthZ"}); + } catch (ApiException ex) { + CompletableFuture> result = new CompletableFuture<>(); + result.completeExceptionally(ex); + return result; + } + return apiClient.invokeAPIAsync( + "DELETE", + builder, + localVarHeaderParams, + new String[] {}, + localVarPostBody, + new HashMap(), + false, + null); + } + + /** + * Create a temporary grant request. + * + *

See {@link #publicCreateTemporaryGrantRequestWithHttpInfo}. + * + * @param body (required) + * @return TemporaryGrantRequestResponse + * @throws ApiException if fails to make API call + */ + public TemporaryGrantRequestResponse publicCreateTemporaryGrantRequest( + TemporaryGrantRequestCreateRequest body) throws ApiException { + return publicCreateTemporaryGrantRequestWithHttpInfo(body).getData(); + } + + /** + * Create a temporary grant request. + * + *

See {@link #publicCreateTemporaryGrantRequestWithHttpInfoAsync}. + * + * @param body (required) + * @return CompletableFuture<TemporaryGrantRequestResponse> + */ + public CompletableFuture publicCreateTemporaryGrantRequestAsync( + TemporaryGrantRequestCreateRequest body) { + return publicCreateTemporaryGrantRequestWithHttpInfoAsync(body) + .thenApply( + response -> { + return response.getData(); + }); + } + + /** + * Submit a request for the authenticated human user with a target monthly limit in positive whole + * AI credits, justification, and optional expiry. Fractional credits are not accepted. Requires + * an authenticated human user and the temporary-grants feature enabled for the organization. + * Service-account credentials are unsupported. Request status remains approved after expiry, + * revocation, or replacement. + * + * @param body (required) + * @return ApiResponse<TemporaryGrantRequestResponse> + * @throws ApiException if fails to make API call + * @http.response.details + * + * + * + * + * + * + * + * + * + * + *
Response details
Status Code Description Response Headers
201 Created -
400 Bad Request -
401 Unauthorized -
403 Forbidden -
404 Not Found -
409 Conflict -
429 Too many requests -
+ */ + public ApiResponse publicCreateTemporaryGrantRequestWithHttpInfo( + TemporaryGrantRequestCreateRequest body) throws ApiException { + // Check if unstable operation is enabled + String operationId = "publicCreateTemporaryGrantRequest"; + if (apiClient.isUnstableOperationEnabled("v2." + operationId)) { + apiClient.getLogger().warning(String.format("Using unstable operation '%s'", operationId)); + } else { + throw new ApiException(0, String.format("Unstable operation '%s' is disabled", operationId)); + } + Object localVarPostBody = body; + + // verify the required parameter 'body' is set + if (body == null) { + throw new ApiException( + 400, + "Missing the required parameter 'body' when calling publicCreateTemporaryGrantRequest"); + } + // create path and map variables + String localVarPath = "/api/v2/usage/temporary-grant-requests"; + + Map localVarHeaderParams = new HashMap(); + + Invocation.Builder builder = + apiClient.createBuilder( + "v2.UsageMeteringApi.publicCreateTemporaryGrantRequest", + localVarPath, + new ArrayList(), + localVarHeaderParams, + new HashMap(), + new String[] {"application/json"}, + new String[] {"apiKeyAuth", "appKeyAuth", "AuthZ"}); + return apiClient.invokeAPI( + "POST", + builder, + localVarHeaderParams, + new String[] {"application/json"}, + localVarPostBody, + new HashMap(), + false, + new GenericType() {}); + } + + /** + * Create a temporary grant request. + * + *

See {@link #publicCreateTemporaryGrantRequestWithHttpInfo}. + * + * @param body (required) + * @return CompletableFuture<ApiResponse<TemporaryGrantRequestResponse>> + */ + public CompletableFuture> + publicCreateTemporaryGrantRequestWithHttpInfoAsync(TemporaryGrantRequestCreateRequest body) { + // Check if unstable operation is enabled + String operationId = "publicCreateTemporaryGrantRequest"; + if (apiClient.isUnstableOperationEnabled("v2." + operationId)) { + apiClient.getLogger().warning(String.format("Using unstable operation '%s'", operationId)); + } else { + CompletableFuture> result = + new CompletableFuture<>(); + result.completeExceptionally( + new ApiException(0, String.format("Unstable operation '%s' is disabled", operationId))); + return result; + } + Object localVarPostBody = body; + + // verify the required parameter 'body' is set + if (body == null) { + CompletableFuture> result = + new CompletableFuture<>(); + result.completeExceptionally( + new ApiException( + 400, + "Missing the required parameter 'body' when calling" + + " publicCreateTemporaryGrantRequest")); + return result; + } + // create path and map variables + String localVarPath = "/api/v2/usage/temporary-grant-requests"; + + Map localVarHeaderParams = new HashMap(); + + Invocation.Builder builder; + try { + builder = + apiClient.createBuilder( + "v2.UsageMeteringApi.publicCreateTemporaryGrantRequest", + localVarPath, + new ArrayList(), + localVarHeaderParams, + new HashMap(), + new String[] {"application/json"}, + new String[] {"apiKeyAuth", "appKeyAuth", "AuthZ"}); + } catch (ApiException ex) { + CompletableFuture> result = + new CompletableFuture<>(); + result.completeExceptionally(ex); + return result; + } + return apiClient.invokeAPIAsync( + "POST", + builder, + localVarHeaderParams, + new String[] {"application/json"}, + localVarPostBody, + new HashMap(), + false, + new GenericType() {}); + } + + /** + * Decide a temporary grant request. + * + *

See {@link #publicDecideTemporaryGrantRequestWithHttpInfo}. + * + * @param requestId The temporary grant request UUID. (required) + * @param body (required) + * @return TemporaryGrantRequestResponse + * @throws ApiException if fails to make API call + */ + public TemporaryGrantRequestResponse publicDecideTemporaryGrantRequest( + UUID requestId, TemporaryGrantRequestDecisionRequest body) throws ApiException { + return publicDecideTemporaryGrantRequestWithHttpInfo(requestId, body).getData(); + } + + /** + * Decide a temporary grant request. + * + *

See {@link #publicDecideTemporaryGrantRequestWithHttpInfoAsync}. + * + * @param requestId The temporary grant request UUID. (required) + * @param body (required) + * @return CompletableFuture<TemporaryGrantRequestResponse> + */ + public CompletableFuture publicDecideTemporaryGrantRequestAsync( + UUID requestId, TemporaryGrantRequestDecisionRequest body) { + return publicDecideTemporaryGrantRequestWithHttpInfoAsync(requestId, body) + .thenApply( + response -> { + return response.getData(); + }); + } + + /** + * Approve or deny the immutable submitted terms. Approval atomically writes the grant, audit, and + * request decision. An expired request cannot be approved. Requires Billing Edit. Requires an + * authenticated human user and the temporary-grants feature enabled for the organization. + * Service-account credentials are unsupported. Request status remains approved after expiry, + * revocation, or replacement. + * + * @param requestId The temporary grant request UUID. (required) + * @param body (required) + * @return ApiResponse<TemporaryGrantRequestResponse> + * @throws ApiException if fails to make API call + * @http.response.details + * + * + * + * + * + * + * + * + * + * + *
Response details
Status Code Description Response Headers
200 OK -
400 Bad Request -
401 Unauthorized -
403 Forbidden -
404 Not Found -
409 Conflict -
429 Too many requests -
+ */ + public ApiResponse publicDecideTemporaryGrantRequestWithHttpInfo( + UUID requestId, TemporaryGrantRequestDecisionRequest body) throws ApiException { + // Check if unstable operation is enabled + String operationId = "publicDecideTemporaryGrantRequest"; + if (apiClient.isUnstableOperationEnabled("v2." + operationId)) { + apiClient.getLogger().warning(String.format("Using unstable operation '%s'", operationId)); + } else { + throw new ApiException(0, String.format("Unstable operation '%s' is disabled", operationId)); + } + Object localVarPostBody = body; + + // verify the required parameter 'requestId' is set + if (requestId == null) { + throw new ApiException( + 400, + "Missing the required parameter 'requestId' when calling" + + " publicDecideTemporaryGrantRequest"); + } + + // verify the required parameter 'body' is set + if (body == null) { + throw new ApiException( + 400, + "Missing the required parameter 'body' when calling publicDecideTemporaryGrantRequest"); + } + // create path and map variables + String localVarPath = + "/api/v2/usage/admin/temporary-grant-requests/{request_id}/decision" + .replaceAll("\\{" + "request_id" + "\\}", apiClient.escapeString(requestId.toString())); + + Map localVarHeaderParams = new HashMap(); + + Invocation.Builder builder = + apiClient.createBuilder( + "v2.UsageMeteringApi.publicDecideTemporaryGrantRequest", + localVarPath, + new ArrayList(), + localVarHeaderParams, + new HashMap(), + new String[] {"application/json"}, + new String[] {"apiKeyAuth", "appKeyAuth", "AuthZ"}); + return apiClient.invokeAPI( + "POST", + builder, + localVarHeaderParams, + new String[] {"application/json"}, + localVarPostBody, + new HashMap(), + false, + new GenericType() {}); + } + + /** + * Decide a temporary grant request. + * + *

See {@link #publicDecideTemporaryGrantRequestWithHttpInfo}. + * + * @param requestId The temporary grant request UUID. (required) + * @param body (required) + * @return CompletableFuture<ApiResponse<TemporaryGrantRequestResponse>> + */ + public CompletableFuture> + publicDecideTemporaryGrantRequestWithHttpInfoAsync( + UUID requestId, TemporaryGrantRequestDecisionRequest body) { + // Check if unstable operation is enabled + String operationId = "publicDecideTemporaryGrantRequest"; + if (apiClient.isUnstableOperationEnabled("v2." + operationId)) { + apiClient.getLogger().warning(String.format("Using unstable operation '%s'", operationId)); + } else { + CompletableFuture> result = + new CompletableFuture<>(); + result.completeExceptionally( + new ApiException(0, String.format("Unstable operation '%s' is disabled", operationId))); + return result; + } + Object localVarPostBody = body; + + // verify the required parameter 'requestId' is set + if (requestId == null) { + CompletableFuture> result = + new CompletableFuture<>(); + result.completeExceptionally( + new ApiException( + 400, + "Missing the required parameter 'requestId' when calling" + + " publicDecideTemporaryGrantRequest")); + return result; + } + + // verify the required parameter 'body' is set + if (body == null) { + CompletableFuture> result = + new CompletableFuture<>(); + result.completeExceptionally( + new ApiException( + 400, + "Missing the required parameter 'body' when calling" + + " publicDecideTemporaryGrantRequest")); + return result; + } + // create path and map variables + String localVarPath = + "/api/v2/usage/admin/temporary-grant-requests/{request_id}/decision" + .replaceAll("\\{" + "request_id" + "\\}", apiClient.escapeString(requestId.toString())); + + Map localVarHeaderParams = new HashMap(); + + Invocation.Builder builder; + try { + builder = + apiClient.createBuilder( + "v2.UsageMeteringApi.publicDecideTemporaryGrantRequest", + localVarPath, + new ArrayList(), + localVarHeaderParams, + new HashMap(), + new String[] {"application/json"}, + new String[] {"apiKeyAuth", "appKeyAuth", "AuthZ"}); + } catch (ApiException ex) { + CompletableFuture> result = + new CompletableFuture<>(); + result.completeExceptionally(ex); + return result; + } + return apiClient.invokeAPIAsync( + "POST", + builder, + localVarHeaderParams, + new String[] {"application/json"}, + localVarPostBody, + new HashMap(), + false, + new GenericType() {}); + } + + /** + * Get your temporary grant request. + * + *

See {@link #publicGetMyTemporaryGrantRequestWithHttpInfo}. + * + * @param requestId The temporary grant request UUID. (required) + * @return TemporaryGrantRequestResponse + * @throws ApiException if fails to make API call + */ + public TemporaryGrantRequestResponse publicGetMyTemporaryGrantRequest(UUID requestId) + throws ApiException { + return publicGetMyTemporaryGrantRequestWithHttpInfo(requestId).getData(); + } + + /** + * Get your temporary grant request. + * + *

See {@link #publicGetMyTemporaryGrantRequestWithHttpInfoAsync}. + * + * @param requestId The temporary grant request UUID. (required) + * @return CompletableFuture<TemporaryGrantRequestResponse> + */ + public CompletableFuture publicGetMyTemporaryGrantRequestAsync( + UUID requestId) { + return publicGetMyTemporaryGrantRequestWithHttpInfoAsync(requestId) + .thenApply( + response -> { + return response.getData(); + }); + } + + /** + * Read an owned request, its decision, and its linked grant state. Requires an authenticated + * human user and the temporary-grants feature enabled for the organization. Service-account + * credentials are unsupported. Request status remains approved after expiry, revocation, or + * replacement. + * + * @param requestId The temporary grant request UUID. (required) + * @return ApiResponse<TemporaryGrantRequestResponse> + * @throws ApiException if fails to make API call + * @http.response.details + * + * + * + * + * + * + * + * + * + * + *
Response details
Status Code Description Response Headers
200 OK -
400 Bad Request -
401 Unauthorized -
403 Forbidden -
404 Not Found -
409 Conflict -
429 Too many requests -
+ */ + public ApiResponse publicGetMyTemporaryGrantRequestWithHttpInfo( + UUID requestId) throws ApiException { + // Check if unstable operation is enabled + String operationId = "publicGetMyTemporaryGrantRequest"; + if (apiClient.isUnstableOperationEnabled("v2." + operationId)) { + apiClient.getLogger().warning(String.format("Using unstable operation '%s'", operationId)); + } else { + throw new ApiException(0, String.format("Unstable operation '%s' is disabled", operationId)); + } + Object localVarPostBody = null; + + // verify the required parameter 'requestId' is set + if (requestId == null) { + throw new ApiException( + 400, + "Missing the required parameter 'requestId' when calling" + + " publicGetMyTemporaryGrantRequest"); + } + // create path and map variables + String localVarPath = + "/api/v2/usage/temporary-grant-requests/{request_id}" + .replaceAll("\\{" + "request_id" + "\\}", apiClient.escapeString(requestId.toString())); + + Map localVarHeaderParams = new HashMap(); + + Invocation.Builder builder = + apiClient.createBuilder( + "v2.UsageMeteringApi.publicGetMyTemporaryGrantRequest", + localVarPath, + new ArrayList(), + localVarHeaderParams, + new HashMap(), + new String[] {"application/json"}, + new String[] {"apiKeyAuth", "appKeyAuth", "AuthZ"}); + return apiClient.invokeAPI( + "GET", + builder, + localVarHeaderParams, + new String[] {}, + localVarPostBody, + new HashMap(), + false, + new GenericType() {}); + } + + /** + * Get your temporary grant request. + * + *

See {@link #publicGetMyTemporaryGrantRequestWithHttpInfo}. + * + * @param requestId The temporary grant request UUID. (required) + * @return CompletableFuture<ApiResponse<TemporaryGrantRequestResponse>> + */ + public CompletableFuture> + publicGetMyTemporaryGrantRequestWithHttpInfoAsync(UUID requestId) { + // Check if unstable operation is enabled + String operationId = "publicGetMyTemporaryGrantRequest"; + if (apiClient.isUnstableOperationEnabled("v2." + operationId)) { + apiClient.getLogger().warning(String.format("Using unstable operation '%s'", operationId)); + } else { + CompletableFuture> result = + new CompletableFuture<>(); + result.completeExceptionally( + new ApiException(0, String.format("Unstable operation '%s' is disabled", operationId))); + return result; + } + Object localVarPostBody = null; + + // verify the required parameter 'requestId' is set + if (requestId == null) { + CompletableFuture> result = + new CompletableFuture<>(); + result.completeExceptionally( + new ApiException( + 400, + "Missing the required parameter 'requestId' when calling" + + " publicGetMyTemporaryGrantRequest")); + return result; + } + // create path and map variables + String localVarPath = + "/api/v2/usage/temporary-grant-requests/{request_id}" + .replaceAll("\\{" + "request_id" + "\\}", apiClient.escapeString(requestId.toString())); + + Map localVarHeaderParams = new HashMap(); + + Invocation.Builder builder; + try { + builder = + apiClient.createBuilder( + "v2.UsageMeteringApi.publicGetMyTemporaryGrantRequest", + localVarPath, + new ArrayList(), + localVarHeaderParams, + new HashMap(), + new String[] {"application/json"}, + new String[] {"apiKeyAuth", "appKeyAuth", "AuthZ"}); + } catch (ApiException ex) { + CompletableFuture> result = + new CompletableFuture<>(); + result.completeExceptionally(ex); + return result; + } + return apiClient.invokeAPIAsync( + "GET", + builder, + localVarHeaderParams, + new String[] {}, + localVarPostBody, + new HashMap(), + false, + new GenericType() {}); + } + + /** + * Get an organization temporary grant request. + * + *

See {@link #publicGetTemporaryGrantRequestWithHttpInfo}. + * + * @param requestId The temporary grant request UUID. (required) + * @return TemporaryGrantRequestResponse + * @throws ApiException if fails to make API call + */ + public TemporaryGrantRequestResponse publicGetTemporaryGrantRequest(UUID requestId) + throws ApiException { + return publicGetTemporaryGrantRequestWithHttpInfo(requestId).getData(); + } + + /** + * Get an organization temporary grant request. + * + *

See {@link #publicGetTemporaryGrantRequestWithHttpInfoAsync}. + * + * @param requestId The temporary grant request UUID. (required) + * @return CompletableFuture<TemporaryGrantRequestResponse> + */ + public CompletableFuture publicGetTemporaryGrantRequestAsync( + UUID requestId) { + return publicGetTemporaryGrantRequestWithHttpInfoAsync(requestId) + .thenApply( + response -> { + return response.getData(); + }); + } + + /** + * Read an organization request, justification, decision, and linked grant state. Requires Billing + * Edit. Requires an authenticated human user and the temporary-grants feature enabled for the + * organization. Service-account credentials are unsupported. Request status remains approved + * after expiry, revocation, or replacement. + * + * @param requestId The temporary grant request UUID. (required) + * @return ApiResponse<TemporaryGrantRequestResponse> + * @throws ApiException if fails to make API call + * @http.response.details + * + * + * + * + * + * + * + * + * + * + *
Response details
Status Code Description Response Headers
200 OK -
400 Bad Request -
401 Unauthorized -
403 Forbidden -
404 Not Found -
409 Conflict -
429 Too many requests -
+ */ + public ApiResponse publicGetTemporaryGrantRequestWithHttpInfo( + UUID requestId) throws ApiException { + // Check if unstable operation is enabled + String operationId = "publicGetTemporaryGrantRequest"; + if (apiClient.isUnstableOperationEnabled("v2." + operationId)) { + apiClient.getLogger().warning(String.format("Using unstable operation '%s'", operationId)); + } else { + throw new ApiException(0, String.format("Unstable operation '%s' is disabled", operationId)); + } + Object localVarPostBody = null; + + // verify the required parameter 'requestId' is set + if (requestId == null) { + throw new ApiException( + 400, + "Missing the required parameter 'requestId' when calling publicGetTemporaryGrantRequest"); + } + // create path and map variables + String localVarPath = + "/api/v2/usage/admin/temporary-grant-requests/{request_id}" + .replaceAll("\\{" + "request_id" + "\\}", apiClient.escapeString(requestId.toString())); + + Map localVarHeaderParams = new HashMap(); + + Invocation.Builder builder = + apiClient.createBuilder( + "v2.UsageMeteringApi.publicGetTemporaryGrantRequest", + localVarPath, + new ArrayList(), + localVarHeaderParams, + new HashMap(), + new String[] {"application/json"}, + new String[] {"apiKeyAuth", "appKeyAuth", "AuthZ"}); + return apiClient.invokeAPI( + "GET", + builder, + localVarHeaderParams, + new String[] {}, + localVarPostBody, + new HashMap(), + false, + new GenericType() {}); + } + + /** + * Get an organization temporary grant request. + * + *

See {@link #publicGetTemporaryGrantRequestWithHttpInfo}. + * + * @param requestId The temporary grant request UUID. (required) + * @return CompletableFuture<ApiResponse<TemporaryGrantRequestResponse>> + */ + public CompletableFuture> + publicGetTemporaryGrantRequestWithHttpInfoAsync(UUID requestId) { + // Check if unstable operation is enabled + String operationId = "publicGetTemporaryGrantRequest"; + if (apiClient.isUnstableOperationEnabled("v2." + operationId)) { + apiClient.getLogger().warning(String.format("Using unstable operation '%s'", operationId)); + } else { + CompletableFuture> result = + new CompletableFuture<>(); + result.completeExceptionally( + new ApiException(0, String.format("Unstable operation '%s' is disabled", operationId))); + return result; + } + Object localVarPostBody = null; + + // verify the required parameter 'requestId' is set + if (requestId == null) { + CompletableFuture> result = + new CompletableFuture<>(); + result.completeExceptionally( + new ApiException( + 400, + "Missing the required parameter 'requestId' when calling" + + " publicGetTemporaryGrantRequest")); + return result; + } + // create path and map variables + String localVarPath = + "/api/v2/usage/admin/temporary-grant-requests/{request_id}" + .replaceAll("\\{" + "request_id" + "\\}", apiClient.escapeString(requestId.toString())); + + Map localVarHeaderParams = new HashMap(); + + Invocation.Builder builder; + try { + builder = + apiClient.createBuilder( + "v2.UsageMeteringApi.publicGetTemporaryGrantRequest", + localVarPath, + new ArrayList(), + localVarHeaderParams, + new HashMap(), + new String[] {"application/json"}, + new String[] {"apiKeyAuth", "appKeyAuth", "AuthZ"}); + } catch (ApiException ex) { + CompletableFuture> result = + new CompletableFuture<>(); + result.completeExceptionally(ex); + return result; + } + return apiClient.invokeAPIAsync( + "GET", + builder, + localVarHeaderParams, + new String[] {}, + localVarPostBody, + new HashMap(), + false, + new GenericType() {}); + } + + /** Manage optional parameters to publicListMyTemporaryGrantRequests. */ + public static class PublicListMyTemporaryGrantRequestsOptionalParameters { + private TemporaryGrantRequestStatus filterStatus; + private Long pageLimit; + private UUID pageCursor; + + /** + * Set filterStatus. + * + * @param filterStatus Optional status; defaults to all statuses. (optional) + * @return PublicListMyTemporaryGrantRequestsOptionalParameters + */ + public PublicListMyTemporaryGrantRequestsOptionalParameters filterStatus( + TemporaryGrantRequestStatus filterStatus) { + this.filterStatus = filterStatus; + return this; + } + + /** + * Set pageLimit. + * + * @param pageLimit Page size, from 1 to 100. (optional, default to 50) + * @return PublicListMyTemporaryGrantRequestsOptionalParameters + */ + public PublicListMyTemporaryGrantRequestsOptionalParameters pageLimit(Long pageLimit) { + this.pageLimit = pageLimit; + return this; + } + + /** + * Set pageCursor. + * + * @param pageCursor UUID cursor from meta.page.next_cursor. (optional) + * @return PublicListMyTemporaryGrantRequestsOptionalParameters + */ + public PublicListMyTemporaryGrantRequestsOptionalParameters pageCursor(UUID pageCursor) { + this.pageCursor = pageCursor; + return this; + } + } + + /** + * List your temporary grant requests. + * + *

See {@link #publicListMyTemporaryGrantRequestsWithHttpInfo}. + * + * @return TemporaryGrantRequestListResponse + * @throws ApiException if fails to make API call + */ + public TemporaryGrantRequestListResponse publicListMyTemporaryGrantRequests() + throws ApiException { + return publicListMyTemporaryGrantRequestsWithHttpInfo( + new PublicListMyTemporaryGrantRequestsOptionalParameters()) + .getData(); + } + + /** + * List your temporary grant requests. + * + *

See {@link #publicListMyTemporaryGrantRequestsWithHttpInfoAsync}. + * + * @return CompletableFuture<TemporaryGrantRequestListResponse> + */ + public CompletableFuture + publicListMyTemporaryGrantRequestsAsync() { + return publicListMyTemporaryGrantRequestsWithHttpInfoAsync( + new PublicListMyTemporaryGrantRequestsOptionalParameters()) + .thenApply( + response -> { + return response.getData(); + }); + } + + /** + * List your temporary grant requests. + * + *

See {@link #publicListMyTemporaryGrantRequestsWithHttpInfo}. + * + * @param parameters Optional parameters for the request. + * @return TemporaryGrantRequestListResponse + * @throws ApiException if fails to make API call + */ + public TemporaryGrantRequestListResponse publicListMyTemporaryGrantRequests( + PublicListMyTemporaryGrantRequestsOptionalParameters parameters) throws ApiException { + return publicListMyTemporaryGrantRequestsWithHttpInfo(parameters).getData(); + } + + /** + * List your temporary grant requests. + * + *

See {@link #publicListMyTemporaryGrantRequestsWithHttpInfoAsync}. + * + * @param parameters Optional parameters for the request. + * @return CompletableFuture<TemporaryGrantRequestListResponse> + */ + public CompletableFuture + publicListMyTemporaryGrantRequestsAsync( + PublicListMyTemporaryGrantRequestsOptionalParameters parameters) { + return publicListMyTemporaryGrantRequestsWithHttpInfoAsync(parameters) + .thenApply( + response -> { + return response.getData(); + }); + } + + /** + * List your temporary grant requests. + * + *

See {@link #publicListMyTemporaryGrantRequestsWithHttpInfo}. + * + * @return PaginationIterable<TemporaryGrantRequestData> + */ + public PaginationIterable + publicListMyTemporaryGrantRequestsWithPagination() { + PublicListMyTemporaryGrantRequestsOptionalParameters parameters = + new PublicListMyTemporaryGrantRequestsOptionalParameters(); + return publicListMyTemporaryGrantRequestsWithPagination(parameters); + } + + /** + * List your temporary grant requests. + * + *

See {@link #publicListMyTemporaryGrantRequestsWithHttpInfo}. + * + * @return TemporaryGrantRequestListResponse + */ + public PaginationIterable + publicListMyTemporaryGrantRequestsWithPagination( + PublicListMyTemporaryGrantRequestsOptionalParameters parameters) { + String resultsPath = "getData"; + String valueGetterPath = "getMeta.getPage.getNextCursor"; + String valueSetterPath = "pageCursor"; + Boolean valueSetterParamOptional = true; + Long limit; + + if (parameters.pageLimit == null) { + limit = 50l; + parameters.pageLimit(limit); + } else { + limit = parameters.pageLimit; + } + + LinkedHashMap args = new LinkedHashMap(); + args.put("optionalParams", parameters); + + PaginationIterable iterator = + new PaginationIterable( + this, + "publicListMyTemporaryGrantRequests", + resultsPath, + valueGetterPath, + valueSetterPath, + valueSetterParamOptional, + true, + true, + limit, + args, + 0); + + return iterator; + } + + /** + * List the authenticated user's own requests, including decided requests. Other users' requests + * are never included. Requires an authenticated human user and the temporary-grants feature + * enabled for the organization. Service-account credentials are unsupported. Request status + * remains approved after expiry, revocation, or replacement. + * + * @param parameters Optional parameters for the request. + * @return ApiResponse<TemporaryGrantRequestListResponse> + * @throws ApiException if fails to make API call + * @http.response.details + * + * + * + * + * + * + * + * + * + * + *
Response details
Status Code Description Response Headers
200 OK -
400 Bad Request -
401 Unauthorized -
403 Forbidden -
404 Not Found -
409 Conflict -
429 Too many requests -
+ */ + public ApiResponse + publicListMyTemporaryGrantRequestsWithHttpInfo( + PublicListMyTemporaryGrantRequestsOptionalParameters parameters) throws ApiException { + // Check if unstable operation is enabled + String operationId = "publicListMyTemporaryGrantRequests"; + if (apiClient.isUnstableOperationEnabled("v2." + operationId)) { + apiClient.getLogger().warning(String.format("Using unstable operation '%s'", operationId)); + } else { + throw new ApiException(0, String.format("Unstable operation '%s' is disabled", operationId)); + } + Object localVarPostBody = null; + TemporaryGrantRequestStatus filterStatus = parameters.filterStatus; + Long pageLimit = parameters.pageLimit; + UUID pageCursor = parameters.pageCursor; + // create path and map variables + String localVarPath = "/api/v2/usage/temporary-grant-requests"; + + List localVarQueryParams = new ArrayList(); + Map localVarHeaderParams = new HashMap(); + + localVarQueryParams.addAll(apiClient.parameterToPairs("", "filter[status]", filterStatus)); + localVarQueryParams.addAll(apiClient.parameterToPairs("", "page[limit]", pageLimit)); + localVarQueryParams.addAll(apiClient.parameterToPairs("", "page[cursor]", pageCursor)); + + Invocation.Builder builder = + apiClient.createBuilder( + "v2.UsageMeteringApi.publicListMyTemporaryGrantRequests", + localVarPath, + localVarQueryParams, + localVarHeaderParams, + new HashMap(), + new String[] {"application/json"}, + new String[] {"apiKeyAuth", "appKeyAuth", "AuthZ"}); + return apiClient.invokeAPI( + "GET", + builder, + localVarHeaderParams, + new String[] {}, + localVarPostBody, + new HashMap(), + false, + new GenericType() {}); + } + + /** + * List your temporary grant requests. + * + *

See {@link #publicListMyTemporaryGrantRequestsWithHttpInfo}. + * + * @param parameters Optional parameters for the request. + * @return CompletableFuture<ApiResponse<TemporaryGrantRequestListResponse>> + */ + public CompletableFuture> + publicListMyTemporaryGrantRequestsWithHttpInfoAsync( + PublicListMyTemporaryGrantRequestsOptionalParameters parameters) { + // Check if unstable operation is enabled + String operationId = "publicListMyTemporaryGrantRequests"; + if (apiClient.isUnstableOperationEnabled("v2." + operationId)) { + apiClient.getLogger().warning(String.format("Using unstable operation '%s'", operationId)); + } else { + CompletableFuture> result = + new CompletableFuture<>(); + result.completeExceptionally( + new ApiException(0, String.format("Unstable operation '%s' is disabled", operationId))); + return result; + } + Object localVarPostBody = null; + TemporaryGrantRequestStatus filterStatus = parameters.filterStatus; + Long pageLimit = parameters.pageLimit; + UUID pageCursor = parameters.pageCursor; + // create path and map variables + String localVarPath = "/api/v2/usage/temporary-grant-requests"; + + List localVarQueryParams = new ArrayList(); + Map localVarHeaderParams = new HashMap(); + + localVarQueryParams.addAll(apiClient.parameterToPairs("", "filter[status]", filterStatus)); + localVarQueryParams.addAll(apiClient.parameterToPairs("", "page[limit]", pageLimit)); + localVarQueryParams.addAll(apiClient.parameterToPairs("", "page[cursor]", pageCursor)); + + Invocation.Builder builder; + try { + builder = + apiClient.createBuilder( + "v2.UsageMeteringApi.publicListMyTemporaryGrantRequests", + localVarPath, + localVarQueryParams, + localVarHeaderParams, + new HashMap(), + new String[] {"application/json"}, + new String[] {"apiKeyAuth", "appKeyAuth", "AuthZ"}); + } catch (ApiException ex) { + CompletableFuture> result = + new CompletableFuture<>(); + result.completeExceptionally(ex); + return result; + } + return apiClient.invokeAPIAsync( + "GET", + builder, + localVarHeaderParams, + new String[] {}, + localVarPostBody, + new HashMap(), + false, + new GenericType() {}); + } + + /** Manage optional parameters to publicListTemporaryGrantRequests. */ + public static class PublicListTemporaryGrantRequestsOptionalParameters { + private TemporaryGrantRequestStatus filterStatus; + private Long pageLimit; + private UUID pageCursor; + private UUID filterRequestedByUserId; + + /** + * Set filterStatus. + * + * @param filterStatus Optional status; defaults to all statuses. (optional) + * @return PublicListTemporaryGrantRequestsOptionalParameters + */ + public PublicListTemporaryGrantRequestsOptionalParameters filterStatus( + TemporaryGrantRequestStatus filterStatus) { + this.filterStatus = filterStatus; + return this; + } + + /** + * Set pageLimit. + * + * @param pageLimit Page size, from 1 to 100. (optional, default to 50) + * @return PublicListTemporaryGrantRequestsOptionalParameters + */ + public PublicListTemporaryGrantRequestsOptionalParameters pageLimit(Long pageLimit) { + this.pageLimit = pageLimit; + return this; + } + + /** + * Set pageCursor. + * + * @param pageCursor UUID cursor from meta.page.next_cursor. (optional) + * @return PublicListTemporaryGrantRequestsOptionalParameters + */ + public PublicListTemporaryGrantRequestsOptionalParameters pageCursor(UUID pageCursor) { + this.pageCursor = pageCursor; + return this; + } + + /** + * Set filterRequestedByUserId. + * + * @param filterRequestedByUserId Filter by requester UUID within the authenticated + * organization. (optional) + * @return PublicListTemporaryGrantRequestsOptionalParameters + */ + public PublicListTemporaryGrantRequestsOptionalParameters filterRequestedByUserId( + UUID filterRequestedByUserId) { + this.filterRequestedByUserId = filterRequestedByUserId; + return this; + } + } + + /** + * List organization temporary grant requests. + * + *

See {@link #publicListTemporaryGrantRequestsWithHttpInfo}. + * + * @return TemporaryGrantRequestListResponse + * @throws ApiException if fails to make API call + */ + public TemporaryGrantRequestListResponse publicListTemporaryGrantRequests() throws ApiException { + return publicListTemporaryGrantRequestsWithHttpInfo( + new PublicListTemporaryGrantRequestsOptionalParameters()) + .getData(); + } + + /** + * List organization temporary grant requests. + * + *

See {@link #publicListTemporaryGrantRequestsWithHttpInfoAsync}. + * + * @return CompletableFuture<TemporaryGrantRequestListResponse> + */ + public CompletableFuture + publicListTemporaryGrantRequestsAsync() { + return publicListTemporaryGrantRequestsWithHttpInfoAsync( + new PublicListTemporaryGrantRequestsOptionalParameters()) + .thenApply( + response -> { + return response.getData(); + }); + } + + /** + * List organization temporary grant requests. + * + *

See {@link #publicListTemporaryGrantRequestsWithHttpInfo}. + * + * @param parameters Optional parameters for the request. + * @return TemporaryGrantRequestListResponse + * @throws ApiException if fails to make API call + */ + public TemporaryGrantRequestListResponse publicListTemporaryGrantRequests( + PublicListTemporaryGrantRequestsOptionalParameters parameters) throws ApiException { + return publicListTemporaryGrantRequestsWithHttpInfo(parameters).getData(); + } + + /** + * List organization temporary grant requests. + * + *

See {@link #publicListTemporaryGrantRequestsWithHttpInfoAsync}. + * + * @param parameters Optional parameters for the request. + * @return CompletableFuture<TemporaryGrantRequestListResponse> + */ + public CompletableFuture publicListTemporaryGrantRequestsAsync( + PublicListTemporaryGrantRequestsOptionalParameters parameters) { + return publicListTemporaryGrantRequestsWithHttpInfoAsync(parameters) + .thenApply( + response -> { + return response.getData(); + }); + } + + /** + * List organization temporary grant requests. + * + *

See {@link #publicListTemporaryGrantRequestsWithHttpInfo}. + * + * @return PaginationIterable<TemporaryGrantRequestData> + */ + public PaginationIterable + publicListTemporaryGrantRequestsWithPagination() { + PublicListTemporaryGrantRequestsOptionalParameters parameters = + new PublicListTemporaryGrantRequestsOptionalParameters(); + return publicListTemporaryGrantRequestsWithPagination(parameters); + } + + /** + * List organization temporary grant requests. + * + *

See {@link #publicListTemporaryGrantRequestsWithHttpInfo}. + * + * @return TemporaryGrantRequestListResponse + */ + public PaginationIterable + publicListTemporaryGrantRequestsWithPagination( + PublicListTemporaryGrantRequestsOptionalParameters parameters) { + String resultsPath = "getData"; + String valueGetterPath = "getMeta.getPage.getNextCursor"; + String valueSetterPath = "pageCursor"; + Boolean valueSetterParamOptional = true; + Long limit; + + if (parameters.pageLimit == null) { + limit = 50l; + parameters.pageLimit(limit); + } else { + limit = parameters.pageLimit; + } + + LinkedHashMap args = new LinkedHashMap(); + args.put("optionalParams", parameters); + + PaginationIterable iterator = + new PaginationIterable( + this, + "publicListTemporaryGrantRequests", + resultsPath, + valueGetterPath, + valueSetterPath, + valueSetterParamOptional, + true, + true, + limit, + args, + 0); + + return iterator; + } + + /** + * List all request statuses within the authenticated organization. Filter by pending status for + * the review queue. Requires Billing Edit, including for reads. Requires an authenticated human + * user and the temporary-grants feature enabled for the organization. Service-account credentials + * are unsupported. Request status remains approved after expiry, revocation, or replacement. + * + * @param parameters Optional parameters for the request. + * @return ApiResponse<TemporaryGrantRequestListResponse> + * @throws ApiException if fails to make API call + * @http.response.details + * + * + * + * + * + * + * + * + * + * + *
Response details
Status Code Description Response Headers
200 OK -
400 Bad Request -
401 Unauthorized -
403 Forbidden -
404 Not Found -
409 Conflict -
429 Too many requests -
+ */ + public ApiResponse + publicListTemporaryGrantRequestsWithHttpInfo( + PublicListTemporaryGrantRequestsOptionalParameters parameters) throws ApiException { + // Check if unstable operation is enabled + String operationId = "publicListTemporaryGrantRequests"; + if (apiClient.isUnstableOperationEnabled("v2." + operationId)) { + apiClient.getLogger().warning(String.format("Using unstable operation '%s'", operationId)); + } else { + throw new ApiException(0, String.format("Unstable operation '%s' is disabled", operationId)); + } + Object localVarPostBody = null; + TemporaryGrantRequestStatus filterStatus = parameters.filterStatus; + Long pageLimit = parameters.pageLimit; + UUID pageCursor = parameters.pageCursor; + UUID filterRequestedByUserId = parameters.filterRequestedByUserId; + // create path and map variables + String localVarPath = "/api/v2/usage/admin/temporary-grant-requests"; + + List localVarQueryParams = new ArrayList(); + Map localVarHeaderParams = new HashMap(); + + localVarQueryParams.addAll(apiClient.parameterToPairs("", "filter[status]", filterStatus)); + localVarQueryParams.addAll(apiClient.parameterToPairs("", "page[limit]", pageLimit)); + localVarQueryParams.addAll(apiClient.parameterToPairs("", "page[cursor]", pageCursor)); + localVarQueryParams.addAll( + apiClient.parameterToPairs("", "filter[requested_by_user_id]", filterRequestedByUserId)); + + Invocation.Builder builder = + apiClient.createBuilder( + "v2.UsageMeteringApi.publicListTemporaryGrantRequests", + localVarPath, + localVarQueryParams, + localVarHeaderParams, + new HashMap(), + new String[] {"application/json"}, + new String[] {"apiKeyAuth", "appKeyAuth", "AuthZ"}); + return apiClient.invokeAPI( + "GET", + builder, + localVarHeaderParams, + new String[] {}, + localVarPostBody, + new HashMap(), + false, + new GenericType() {}); + } + + /** + * List organization temporary grant requests. + * + *

See {@link #publicListTemporaryGrantRequestsWithHttpInfo}. + * + * @param parameters Optional parameters for the request. + * @return CompletableFuture<ApiResponse<TemporaryGrantRequestListResponse>> + */ + public CompletableFuture> + publicListTemporaryGrantRequestsWithHttpInfoAsync( + PublicListTemporaryGrantRequestsOptionalParameters parameters) { + // Check if unstable operation is enabled + String operationId = "publicListTemporaryGrantRequests"; + if (apiClient.isUnstableOperationEnabled("v2." + operationId)) { + apiClient.getLogger().warning(String.format("Using unstable operation '%s'", operationId)); + } else { + CompletableFuture> result = + new CompletableFuture<>(); + result.completeExceptionally( + new ApiException(0, String.format("Unstable operation '%s' is disabled", operationId))); + return result; + } + Object localVarPostBody = null; + TemporaryGrantRequestStatus filterStatus = parameters.filterStatus; + Long pageLimit = parameters.pageLimit; + UUID pageCursor = parameters.pageCursor; + UUID filterRequestedByUserId = parameters.filterRequestedByUserId; + // create path and map variables + String localVarPath = "/api/v2/usage/admin/temporary-grant-requests"; + + List localVarQueryParams = new ArrayList(); + Map localVarHeaderParams = new HashMap(); + + localVarQueryParams.addAll(apiClient.parameterToPairs("", "filter[status]", filterStatus)); + localVarQueryParams.addAll(apiClient.parameterToPairs("", "page[limit]", pageLimit)); + localVarQueryParams.addAll(apiClient.parameterToPairs("", "page[cursor]", pageCursor)); + localVarQueryParams.addAll( + apiClient.parameterToPairs("", "filter[requested_by_user_id]", filterRequestedByUserId)); + + Invocation.Builder builder; + try { + builder = + apiClient.createBuilder( + "v2.UsageMeteringApi.publicListTemporaryGrantRequests", + localVarPath, + localVarQueryParams, + localVarHeaderParams, + new HashMap(), + new String[] {"application/json"}, + new String[] {"apiKeyAuth", "appKeyAuth", "AuthZ"}); + } catch (ApiException ex) { + CompletableFuture> result = + new CompletableFuture<>(); + result.completeExceptionally(ex); + return result; + } + return apiClient.invokeAPIAsync( + "GET", + builder, + localVarHeaderParams, + new String[] {}, + localVarPostBody, + new HashMap(), + false, + new GenericType() {}); + } + + /** + * Revoke a requested temporary grant. + * + *

See {@link #publicRevokeRequestedTemporaryGrantWithHttpInfo}. + * + * @param requestId The temporary grant request UUID. (required) + * @throws ApiException if fails to make API call + */ + public void publicRevokeRequestedTemporaryGrant(UUID requestId) throws ApiException { + publicRevokeRequestedTemporaryGrantWithHttpInfo(requestId); + } + + /** + * Revoke a requested temporary grant. + * + *

See {@link #publicRevokeRequestedTemporaryGrantWithHttpInfoAsync}. + * + * @param requestId The temporary grant request UUID. (required) + * @return CompletableFuture + */ + public CompletableFuture publicRevokeRequestedTemporaryGrantAsync(UUID requestId) { + return publicRevokeRequestedTemporaryGrantWithHttpInfoAsync(requestId) + .thenApply( + response -> { + return response.getData(); + }); + } + + /** + * Revoke only the grant still associated with this approved request. Request and audit history + * remain. A stale request cannot revoke a replacement grant. Requires Billing Edit. Requires an + * authenticated human user and the temporary-grants feature enabled for the organization. + * Service-account credentials are unsupported. Request status remains approved after expiry, + * revocation, or replacement. + * + * @param requestId The temporary grant request UUID. (required) + * @return ApiResponse<Void> + * @throws ApiException if fails to make API call + * @http.response.details + * + * + * + * + * + * + * + * + * + * + *
Response details
Status Code Description Response Headers
204 No Content -
400 Bad Request -
401 Unauthorized -
403 Forbidden -
404 Not Found -
409 Conflict -
429 Too many requests -
+ */ + public ApiResponse publicRevokeRequestedTemporaryGrantWithHttpInfo(UUID requestId) + throws ApiException { + // Check if unstable operation is enabled + String operationId = "publicRevokeRequestedTemporaryGrant"; + if (apiClient.isUnstableOperationEnabled("v2." + operationId)) { + apiClient.getLogger().warning(String.format("Using unstable operation '%s'", operationId)); + } else { + throw new ApiException(0, String.format("Unstable operation '%s' is disabled", operationId)); + } + Object localVarPostBody = null; + + // verify the required parameter 'requestId' is set + if (requestId == null) { + throw new ApiException( + 400, + "Missing the required parameter 'requestId' when calling" + + " publicRevokeRequestedTemporaryGrant"); + } + // create path and map variables + String localVarPath = + "/api/v2/usage/admin/temporary-grant-requests/{request_id}/grant" + .replaceAll("\\{" + "request_id" + "\\}", apiClient.escapeString(requestId.toString())); + + Map localVarHeaderParams = new HashMap(); + + Invocation.Builder builder = + apiClient.createBuilder( + "v2.UsageMeteringApi.publicRevokeRequestedTemporaryGrant", + localVarPath, + new ArrayList(), + localVarHeaderParams, + new HashMap(), + new String[] {"*/*"}, + new String[] {"apiKeyAuth", "appKeyAuth", "AuthZ"}); + return apiClient.invokeAPI( + "DELETE", + builder, + localVarHeaderParams, + new String[] {}, + localVarPostBody, + new HashMap(), + false, + null); + } + + /** + * Revoke a requested temporary grant. + * + *

See {@link #publicRevokeRequestedTemporaryGrantWithHttpInfo}. + * + * @param requestId The temporary grant request UUID. (required) + * @return CompletableFuture<ApiResponse<Void>> + */ + public CompletableFuture> publicRevokeRequestedTemporaryGrantWithHttpInfoAsync( + UUID requestId) { + // Check if unstable operation is enabled + String operationId = "publicRevokeRequestedTemporaryGrant"; + if (apiClient.isUnstableOperationEnabled("v2." + operationId)) { + apiClient.getLogger().warning(String.format("Using unstable operation '%s'", operationId)); + } else { + CompletableFuture> result = new CompletableFuture<>(); + result.completeExceptionally( + new ApiException(0, String.format("Unstable operation '%s' is disabled", operationId))); + return result; + } + Object localVarPostBody = null; + + // verify the required parameter 'requestId' is set + if (requestId == null) { + CompletableFuture> result = new CompletableFuture<>(); + result.completeExceptionally( + new ApiException( + 400, + "Missing the required parameter 'requestId' when calling" + + " publicRevokeRequestedTemporaryGrant")); + return result; + } + // create path and map variables + String localVarPath = + "/api/v2/usage/admin/temporary-grant-requests/{request_id}/grant" + .replaceAll("\\{" + "request_id" + "\\}", apiClient.escapeString(requestId.toString())); + + Map localVarHeaderParams = new HashMap(); + + Invocation.Builder builder; + try { + builder = + apiClient.createBuilder( + "v2.UsageMeteringApi.publicRevokeRequestedTemporaryGrant", + localVarPath, + new ArrayList(), + localVarHeaderParams, + new HashMap(), + new String[] {"*/*"}, + new String[] {"apiKeyAuth", "appKeyAuth", "AuthZ"}); + } catch (ApiException ex) { + CompletableFuture> result = new CompletableFuture<>(); + result.completeExceptionally(ex); + return result; + } + return apiClient.invokeAPIAsync( + "DELETE", + builder, + localVarHeaderParams, + new String[] {}, + localVarPostBody, + new HashMap(), + false, + null); + } + /** * Update a usage quota. * diff --git a/src/main/java/com/datadog/api/client/v2/model/TemporaryGrantRequestAttributes.java b/src/main/java/com/datadog/api/client/v2/model/TemporaryGrantRequestAttributes.java new file mode 100644 index 00000000000..a0d95eafb0b --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/TemporaryGrantRequestAttributes.java @@ -0,0 +1,456 @@ +/* + * Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + * This product includes software developed at Datadog (https://www.datadoghq.com/). + * Copyright 2019-Present Datadog, Inc. + */ + +package com.datadog.api.client.v2.model; + +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import java.time.OffsetDateTime; +import java.util.HashMap; +import java.util.Map; +import java.util.Objects; +import java.util.UUID; + +/** + * Request history and the linked grant state. List and detail reads include grant_state for + * approved requests. Decision responses record the decision; read the request for current grant + * state. + */ +@JsonPropertyOrder({ + TemporaryGrantRequestAttributes.JSON_PROPERTY_CREATED_AT, + TemporaryGrantRequestAttributes.JSON_PROPERTY_DECIDED_AT, + TemporaryGrantRequestAttributes.JSON_PROPERTY_DECIDED_BY_USER_ID, + TemporaryGrantRequestAttributes.JSON_PROPERTY_ENTITY_KEY, + TemporaryGrantRequestAttributes.JSON_PROPERTY_EXPIRES_AT, + TemporaryGrantRequestAttributes.JSON_PROPERTY_GRANT_STATE, + TemporaryGrantRequestAttributes.JSON_PROPERTY_JUSTIFICATION, + TemporaryGrantRequestAttributes.JSON_PROPERTY_QUOTA_NAMESPACE, + TemporaryGrantRequestAttributes.JSON_PROPERTY_REQUESTED_BY_USER_ID, + TemporaryGrantRequestAttributes.JSON_PROPERTY_STATUS, + TemporaryGrantRequestAttributes.JSON_PROPERTY_TOTAL +}) +@jakarta.annotation.Generated( + value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator") +public class TemporaryGrantRequestAttributes { + @JsonIgnore public boolean unparsed = false; + public static final String JSON_PROPERTY_CREATED_AT = "created_at"; + private OffsetDateTime createdAt; + + public static final String JSON_PROPERTY_DECIDED_AT = "decided_at"; + private OffsetDateTime decidedAt; + + public static final String JSON_PROPERTY_DECIDED_BY_USER_ID = "decided_by_user_id"; + private UUID decidedByUserId; + + public static final String JSON_PROPERTY_ENTITY_KEY = "entity_key"; + private String entityKey; + + public static final String JSON_PROPERTY_EXPIRES_AT = "expires_at"; + private OffsetDateTime expiresAt; + + public static final String JSON_PROPERTY_GRANT_STATE = "grant_state"; + private TemporaryGrantRequestGrantState grantState; + + public static final String JSON_PROPERTY_JUSTIFICATION = "justification"; + private String justification; + + public static final String JSON_PROPERTY_QUOTA_NAMESPACE = "quota_namespace"; + private String quotaNamespace; + + public static final String JSON_PROPERTY_REQUESTED_BY_USER_ID = "requested_by_user_id"; + private UUID requestedByUserId; + + public static final String JSON_PROPERTY_STATUS = "status"; + private TemporaryGrantRequestStatus status; + + public static final String JSON_PROPERTY_TOTAL = "total"; + private Long total; + + public TemporaryGrantRequestAttributes() {} + + @JsonCreator + public TemporaryGrantRequestAttributes( + @JsonProperty(required = true, value = JSON_PROPERTY_CREATED_AT) OffsetDateTime createdAt, + @JsonProperty(required = true, value = JSON_PROPERTY_ENTITY_KEY) String entityKey, + @JsonProperty(required = true, value = JSON_PROPERTY_EXPIRES_AT) OffsetDateTime expiresAt, + @JsonProperty(required = true, value = JSON_PROPERTY_JUSTIFICATION) String justification, + @JsonProperty(required = true, value = JSON_PROPERTY_QUOTA_NAMESPACE) String quotaNamespace, + @JsonProperty(required = true, value = JSON_PROPERTY_REQUESTED_BY_USER_ID) + UUID requestedByUserId, + @JsonProperty(required = true, value = JSON_PROPERTY_STATUS) + TemporaryGrantRequestStatus status, + @JsonProperty(required = true, value = JSON_PROPERTY_TOTAL) Long total) { + this.createdAt = createdAt; + this.entityKey = entityKey; + this.expiresAt = expiresAt; + this.justification = justification; + this.quotaNamespace = quotaNamespace; + this.requestedByUserId = requestedByUserId; + this.status = status; + this.unparsed |= !status.isValid(); + this.total = total; + } + + public TemporaryGrantRequestAttributes createdAt(OffsetDateTime createdAt) { + this.createdAt = createdAt; + return this; + } + + /** + * When the request was submitted. + * + * @return createdAt + */ + @JsonProperty(JSON_PROPERTY_CREATED_AT) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public OffsetDateTime getCreatedAt() { + return createdAt; + } + + public void setCreatedAt(OffsetDateTime createdAt) { + this.createdAt = createdAt; + } + + public TemporaryGrantRequestAttributes decidedAt(OffsetDateTime decidedAt) { + this.decidedAt = decidedAt; + return this; + } + + /** + * When the decision or cancellation was recorded. + * + * @return decidedAt + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_DECIDED_AT) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public OffsetDateTime getDecidedAt() { + return decidedAt; + } + + public void setDecidedAt(OffsetDateTime decidedAt) { + this.decidedAt = decidedAt; + } + + public TemporaryGrantRequestAttributes decidedByUserId(UUID decidedByUserId) { + this.decidedByUserId = decidedByUserId; + return this; + } + + /** + * UUID of the reviewer, or requester when canceled. + * + * @return decidedByUserId + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_DECIDED_BY_USER_ID) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public UUID getDecidedByUserId() { + return decidedByUserId; + } + + public void setDecidedByUserId(UUID decidedByUserId) { + this.decidedByUserId = decidedByUserId; + } + + public TemporaryGrantRequestAttributes entityKey(String entityKey) { + this.entityKey = entityKey; + return this; + } + + /** + * The requester identity resolved by the server. + * + * @return entityKey + */ + @JsonProperty(JSON_PROPERTY_ENTITY_KEY) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public String getEntityKey() { + return entityKey; + } + + public void setEntityKey(String entityKey) { + this.entityKey = entityKey; + } + + public TemporaryGrantRequestAttributes expiresAt(OffsetDateTime expiresAt) { + this.expiresAt = expiresAt; + return this; + } + + /** + * Immutable exclusive expiry, normalized to UTC microsecond precision. + * + * @return expiresAt + */ + @JsonProperty(JSON_PROPERTY_EXPIRES_AT) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public OffsetDateTime getExpiresAt() { + return expiresAt; + } + + public void setExpiresAt(OffsetDateTime expiresAt) { + this.expiresAt = expiresAt; + } + + public TemporaryGrantRequestAttributes grantState(TemporaryGrantRequestGrantState grantState) { + this.grantState = grantState; + this.unparsed |= !grantState.isValid(); + return this; + } + + /** + * Current state of the grant associated with an approved request. Replaced means a successor + * superseded this grant; the successor need not still be active. Absent for requests that were + * not approved. + * + * @return grantState + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_GRANT_STATE) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public TemporaryGrantRequestGrantState getGrantState() { + return grantState; + } + + public void setGrantState(TemporaryGrantRequestGrantState grantState) { + if (!grantState.isValid()) { + this.unparsed = true; + } + this.grantState = grantState; + } + + public TemporaryGrantRequestAttributes justification(String justification) { + this.justification = justification; + return this; + } + + /** + * Reason for requesting temporary credits. Trimmed and limited to 4096 UTF-8 bytes. + * + * @return justification + */ + @JsonProperty(JSON_PROPERTY_JUSTIFICATION) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public String getJustification() { + return justification; + } + + public void setJustification(String justification) { + this.justification = justification; + } + + public TemporaryGrantRequestAttributes quotaNamespace(String quotaNamespace) { + this.quotaNamespace = quotaNamespace; + return this; + } + + /** + * The quota namespace. Only AI credits are supported. + * + * @return quotaNamespace + */ + @JsonProperty(JSON_PROPERTY_QUOTA_NAMESPACE) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public String getQuotaNamespace() { + return quotaNamespace; + } + + public void setQuotaNamespace(String quotaNamespace) { + this.quotaNamespace = quotaNamespace; + } + + public TemporaryGrantRequestAttributes requestedByUserId(UUID requestedByUserId) { + this.requestedByUserId = requestedByUserId; + return this; + } + + /** + * UUID of the authenticated requester. + * + * @return requestedByUserId + */ + @JsonProperty(JSON_PROPERTY_REQUESTED_BY_USER_ID) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public UUID getRequestedByUserId() { + return requestedByUserId; + } + + public void setRequestedByUserId(UUID requestedByUserId) { + this.requestedByUserId = requestedByUserId; + } + + public TemporaryGrantRequestAttributes status(TemporaryGrantRequestStatus status) { + this.status = status; + this.unparsed |= !status.isValid(); + return this; + } + + /** + * The durable request decision, independent of whether its grant is still active. + * + * @return status + */ + @JsonProperty(JSON_PROPERTY_STATUS) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public TemporaryGrantRequestStatus getStatus() { + return status; + } + + public void setStatus(TemporaryGrantRequestStatus status) { + if (!status.isValid()) { + this.unparsed = true; + } + this.status = status; + } + + public TemporaryGrantRequestAttributes total(Long total) { + this.total = total; + return this; + } + + /** + * Target monthly AI-credit limit in positive whole credits, not additional credits. Fractional + * credits are not accepted. minimum: 1 maximum: 9223372036854 + * + * @return total + */ + @JsonProperty(JSON_PROPERTY_TOTAL) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public Long getTotal() { + return total; + } + + public void setTotal(Long total) { + this.total = total; + } + + /** + * A container for additional, undeclared properties. This is a holder for any undeclared + * properties as specified with the 'additionalProperties' keyword in the OAS document. + */ + private Map additionalProperties; + + /** + * Set the additional (undeclared) property with the specified name and value. If the property + * does not already exist, create it otherwise replace it. + * + * @param key The arbitrary key to set + * @param value The associated value + * @return TemporaryGrantRequestAttributes + */ + @JsonAnySetter + public TemporaryGrantRequestAttributes putAdditionalProperty(String key, Object value) { + if (this.additionalProperties == null) { + this.additionalProperties = new HashMap(); + } + this.additionalProperties.put(key, value); + return this; + } + + /** + * Return the additional (undeclared) property. + * + * @return The additional properties + */ + @JsonAnyGetter + public Map getAdditionalProperties() { + return additionalProperties; + } + + /** + * Return the additional (undeclared) property with the specified name. + * + * @param key The arbitrary key to get + * @return The specific additional property for the given key + */ + public Object getAdditionalProperty(String key) { + if (this.additionalProperties == null) { + return null; + } + return this.additionalProperties.get(key); + } + + /** Return true if this TemporaryGrantRequestAttributes object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + TemporaryGrantRequestAttributes temporaryGrantRequestAttributes = + (TemporaryGrantRequestAttributes) o; + return Objects.equals(this.createdAt, temporaryGrantRequestAttributes.createdAt) + && Objects.equals(this.decidedAt, temporaryGrantRequestAttributes.decidedAt) + && Objects.equals(this.decidedByUserId, temporaryGrantRequestAttributes.decidedByUserId) + && Objects.equals(this.entityKey, temporaryGrantRequestAttributes.entityKey) + && Objects.equals(this.expiresAt, temporaryGrantRequestAttributes.expiresAt) + && Objects.equals(this.grantState, temporaryGrantRequestAttributes.grantState) + && Objects.equals(this.justification, temporaryGrantRequestAttributes.justification) + && Objects.equals(this.quotaNamespace, temporaryGrantRequestAttributes.quotaNamespace) + && Objects.equals(this.requestedByUserId, temporaryGrantRequestAttributes.requestedByUserId) + && Objects.equals(this.status, temporaryGrantRequestAttributes.status) + && Objects.equals(this.total, temporaryGrantRequestAttributes.total) + && Objects.equals( + this.additionalProperties, temporaryGrantRequestAttributes.additionalProperties); + } + + @Override + public int hashCode() { + return Objects.hash( + createdAt, + decidedAt, + decidedByUserId, + entityKey, + expiresAt, + grantState, + justification, + quotaNamespace, + requestedByUserId, + status, + total, + additionalProperties); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class TemporaryGrantRequestAttributes {\n"); + sb.append(" createdAt: ").append(toIndentedString(createdAt)).append("\n"); + sb.append(" decidedAt: ").append(toIndentedString(decidedAt)).append("\n"); + sb.append(" decidedByUserId: ").append(toIndentedString(decidedByUserId)).append("\n"); + sb.append(" entityKey: ").append(toIndentedString(entityKey)).append("\n"); + sb.append(" expiresAt: ").append(toIndentedString(expiresAt)).append("\n"); + sb.append(" grantState: ").append(toIndentedString(grantState)).append("\n"); + sb.append(" justification: ").append(toIndentedString(justification)).append("\n"); + sb.append(" quotaNamespace: ").append(toIndentedString(quotaNamespace)).append("\n"); + sb.append(" requestedByUserId: ").append(toIndentedString(requestedByUserId)).append("\n"); + sb.append(" status: ").append(toIndentedString(status)).append("\n"); + sb.append(" total: ").append(toIndentedString(total)).append("\n"); + sb.append(" additionalProperties: ") + .append(toIndentedString(additionalProperties)) + .append("\n"); + sb.append('}'); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces (except the first line). + */ + private String toIndentedString(Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } +} diff --git a/src/main/java/com/datadog/api/client/v2/model/TemporaryGrantRequestCreateAttributes.java b/src/main/java/com/datadog/api/client/v2/model/TemporaryGrantRequestCreateAttributes.java new file mode 100644 index 00000000000..21c5815891f --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/TemporaryGrantRequestCreateAttributes.java @@ -0,0 +1,162 @@ +/* + * Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + * This product includes software developed at Datadog (https://www.datadoghq.com/). + * Copyright 2019-Present Datadog, Inc. + */ + +package com.datadog.api.client.v2.model; + +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import java.time.OffsetDateTime; +import java.util.Objects; +import org.openapitools.jackson.nullable.JsonNullable; + +/** Immutable terms and justification for a temporary grant request. */ +@JsonPropertyOrder({ + TemporaryGrantRequestCreateAttributes.JSON_PROPERTY_EXPIRES_AT, + TemporaryGrantRequestCreateAttributes.JSON_PROPERTY_JUSTIFICATION, + TemporaryGrantRequestCreateAttributes.JSON_PROPERTY_TOTAL +}) +@jakarta.annotation.Generated( + value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator") +public class TemporaryGrantRequestCreateAttributes { + @JsonIgnore public boolean unparsed = false; + public static final String JSON_PROPERTY_EXPIRES_AT = "expires_at"; + private JsonNullable expiresAt = JsonNullable.undefined(); + + public static final String JSON_PROPERTY_JUSTIFICATION = "justification"; + private String justification; + + public static final String JSON_PROPERTY_TOTAL = "total"; + private Long total; + + public TemporaryGrantRequestCreateAttributes() {} + + @JsonCreator + public TemporaryGrantRequestCreateAttributes( + @JsonProperty(required = true, value = JSON_PROPERTY_JUSTIFICATION) String justification, + @JsonProperty(required = true, value = JSON_PROPERTY_TOTAL) Long total) { + this.justification = justification; + this.total = total; + } + + public TemporaryGrantRequestCreateAttributes expiresAt(OffsetDateTime expiresAt) { + this.expiresAt = JsonNullable.of(expiresAt); + return this; + } + + /** + * Exclusive expiry. Must be a future timestamp with a timezone; date-only values are rejected. + * Omitted or null defaults to the next UTC month boundary. Approval accepts this deadline + * unchanged. + * + * @return expiresAt + */ + @jakarta.annotation.Nullable + @JsonIgnore + public OffsetDateTime getExpiresAt() { + return expiresAt.orElse(null); + } + + @JsonProperty(JSON_PROPERTY_EXPIRES_AT) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public JsonNullable getExpiresAt_JsonNullable() { + return expiresAt; + } + + @JsonProperty(JSON_PROPERTY_EXPIRES_AT) + public void setExpiresAt_JsonNullable(JsonNullable expiresAt) { + this.expiresAt = expiresAt; + } + + public void setExpiresAt(OffsetDateTime expiresAt) { + this.expiresAt = JsonNullable.of(expiresAt); + } + + public TemporaryGrantRequestCreateAttributes justification(String justification) { + this.justification = justification; + return this; + } + + /** + * Reason for requesting temporary credits. Trimmed and limited to 4096 UTF-8 bytes. + * + * @return justification + */ + @JsonProperty(JSON_PROPERTY_JUSTIFICATION) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public String getJustification() { + return justification; + } + + public void setJustification(String justification) { + this.justification = justification; + } + + public TemporaryGrantRequestCreateAttributes total(Long total) { + this.total = total; + return this; + } + + /** + * Target monthly AI-credit limit in positive whole credits, not additional credits. Fractional + * credits are not accepted. minimum: 1 maximum: 9223372036854 + * + * @return total + */ + @JsonProperty(JSON_PROPERTY_TOTAL) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public Long getTotal() { + return total; + } + + public void setTotal(Long total) { + this.total = total; + } + + /** Return true if this TemporaryGrantRequestCreateAttributes object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + TemporaryGrantRequestCreateAttributes temporaryGrantRequestCreateAttributes = + (TemporaryGrantRequestCreateAttributes) o; + return Objects.equals(this.expiresAt, temporaryGrantRequestCreateAttributes.expiresAt) + && Objects.equals(this.justification, temporaryGrantRequestCreateAttributes.justification) + && Objects.equals(this.total, temporaryGrantRequestCreateAttributes.total); + } + + @Override + public int hashCode() { + return Objects.hash(expiresAt, justification, total); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class TemporaryGrantRequestCreateAttributes {\n"); + sb.append(" expiresAt: ").append(toIndentedString(expiresAt)).append("\n"); + sb.append(" justification: ").append(toIndentedString(justification)).append("\n"); + sb.append(" total: ").append(toIndentedString(total)).append("\n"); + sb.append('}'); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces (except the first line). + */ + private String toIndentedString(Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } +} diff --git a/src/main/java/com/datadog/api/client/v2/model/TemporaryGrantRequestCreateData.java b/src/main/java/com/datadog/api/client/v2/model/TemporaryGrantRequestCreateData.java new file mode 100644 index 00000000000..2a5f287e5a6 --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/TemporaryGrantRequestCreateData.java @@ -0,0 +1,187 @@ +/* + * Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + * This product includes software developed at Datadog (https://www.datadoghq.com/). + * Copyright 2019-Present Datadog, Inc. + */ + +package com.datadog.api.client.v2.model; + +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import java.util.HashMap; +import java.util.Map; +import java.util.Objects; + +/** The request resource to create. The server generates its ID. */ +@JsonPropertyOrder({ + TemporaryGrantRequestCreateData.JSON_PROPERTY_ATTRIBUTES, + TemporaryGrantRequestCreateData.JSON_PROPERTY_TYPE +}) +@jakarta.annotation.Generated( + value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator") +public class TemporaryGrantRequestCreateData { + @JsonIgnore public boolean unparsed = false; + public static final String JSON_PROPERTY_ATTRIBUTES = "attributes"; + private TemporaryGrantRequestCreateAttributes attributes; + + public static final String JSON_PROPERTY_TYPE = "type"; + private TemporaryGrantRequestType type = TemporaryGrantRequestType.TEMPORARY_GRANT_REQUESTS; + + public TemporaryGrantRequestCreateData() {} + + @JsonCreator + public TemporaryGrantRequestCreateData( + @JsonProperty(required = true, value = JSON_PROPERTY_ATTRIBUTES) + TemporaryGrantRequestCreateAttributes attributes, + @JsonProperty(required = true, value = JSON_PROPERTY_TYPE) TemporaryGrantRequestType type) { + this.attributes = attributes; + this.unparsed |= attributes.unparsed; + this.type = type; + this.unparsed |= !type.isValid(); + } + + public TemporaryGrantRequestCreateData attributes( + TemporaryGrantRequestCreateAttributes attributes) { + this.attributes = attributes; + this.unparsed |= attributes.unparsed; + return this; + } + + /** + * Immutable terms and justification for a temporary grant request. + * + * @return attributes + */ + @JsonProperty(JSON_PROPERTY_ATTRIBUTES) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public TemporaryGrantRequestCreateAttributes getAttributes() { + return attributes; + } + + public void setAttributes(TemporaryGrantRequestCreateAttributes attributes) { + this.attributes = attributes; + if (attributes != null) { + this.unparsed |= attributes.unparsed; + } + } + + public TemporaryGrantRequestCreateData type(TemporaryGrantRequestType type) { + this.type = type; + this.unparsed |= !type.isValid(); + return this; + } + + /** + * The temporary grant request resource type. + * + * @return type + */ + @JsonProperty(JSON_PROPERTY_TYPE) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public TemporaryGrantRequestType getType() { + return type; + } + + public void setType(TemporaryGrantRequestType type) { + if (!type.isValid()) { + this.unparsed = true; + } + this.type = type; + } + + /** + * A container for additional, undeclared properties. This is a holder for any undeclared + * properties as specified with the 'additionalProperties' keyword in the OAS document. + */ + private Map additionalProperties; + + /** + * Set the additional (undeclared) property with the specified name and value. If the property + * does not already exist, create it otherwise replace it. + * + * @param key The arbitrary key to set + * @param value The associated value + * @return TemporaryGrantRequestCreateData + */ + @JsonAnySetter + public TemporaryGrantRequestCreateData putAdditionalProperty(String key, Object value) { + if (this.additionalProperties == null) { + this.additionalProperties = new HashMap(); + } + this.additionalProperties.put(key, value); + return this; + } + + /** + * Return the additional (undeclared) property. + * + * @return The additional properties + */ + @JsonAnyGetter + public Map getAdditionalProperties() { + return additionalProperties; + } + + /** + * Return the additional (undeclared) property with the specified name. + * + * @param key The arbitrary key to get + * @return The specific additional property for the given key + */ + public Object getAdditionalProperty(String key) { + if (this.additionalProperties == null) { + return null; + } + return this.additionalProperties.get(key); + } + + /** Return true if this TemporaryGrantRequestCreateData object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + TemporaryGrantRequestCreateData temporaryGrantRequestCreateData = + (TemporaryGrantRequestCreateData) o; + return Objects.equals(this.attributes, temporaryGrantRequestCreateData.attributes) + && Objects.equals(this.type, temporaryGrantRequestCreateData.type) + && Objects.equals( + this.additionalProperties, temporaryGrantRequestCreateData.additionalProperties); + } + + @Override + public int hashCode() { + return Objects.hash(attributes, type, additionalProperties); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class TemporaryGrantRequestCreateData {\n"); + sb.append(" attributes: ").append(toIndentedString(attributes)).append("\n"); + sb.append(" type: ").append(toIndentedString(type)).append("\n"); + sb.append(" additionalProperties: ") + .append(toIndentedString(additionalProperties)) + .append("\n"); + sb.append('}'); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces (except the first line). + */ + private String toIndentedString(Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } +} diff --git a/src/main/java/com/datadog/api/client/v2/model/TemporaryGrantRequestCreateRequest.java b/src/main/java/com/datadog/api/client/v2/model/TemporaryGrantRequestCreateRequest.java new file mode 100644 index 00000000000..00ab5e4d6cc --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/TemporaryGrantRequestCreateRequest.java @@ -0,0 +1,151 @@ +/* + * Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + * This product includes software developed at Datadog (https://www.datadoghq.com/). + * Copyright 2019-Present Datadog, Inc. + */ + +package com.datadog.api.client.v2.model; + +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import java.util.HashMap; +import java.util.Map; +import java.util.Objects; + +/** Create a request for the authenticated human user. */ +@JsonPropertyOrder({TemporaryGrantRequestCreateRequest.JSON_PROPERTY_DATA}) +@jakarta.annotation.Generated( + value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator") +public class TemporaryGrantRequestCreateRequest { + @JsonIgnore public boolean unparsed = false; + public static final String JSON_PROPERTY_DATA = "data"; + private TemporaryGrantRequestCreateData data; + + public TemporaryGrantRequestCreateRequest() {} + + @JsonCreator + public TemporaryGrantRequestCreateRequest( + @JsonProperty(required = true, value = JSON_PROPERTY_DATA) + TemporaryGrantRequestCreateData data) { + this.data = data; + this.unparsed |= data.unparsed; + } + + public TemporaryGrantRequestCreateRequest data(TemporaryGrantRequestCreateData data) { + this.data = data; + this.unparsed |= data.unparsed; + return this; + } + + /** + * The request resource to create. The server generates its ID. + * + * @return data + */ + @JsonProperty(JSON_PROPERTY_DATA) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public TemporaryGrantRequestCreateData getData() { + return data; + } + + public void setData(TemporaryGrantRequestCreateData data) { + this.data = data; + if (data != null) { + this.unparsed |= data.unparsed; + } + } + + /** + * A container for additional, undeclared properties. This is a holder for any undeclared + * properties as specified with the 'additionalProperties' keyword in the OAS document. + */ + private Map additionalProperties; + + /** + * Set the additional (undeclared) property with the specified name and value. If the property + * does not already exist, create it otherwise replace it. + * + * @param key The arbitrary key to set + * @param value The associated value + * @return TemporaryGrantRequestCreateRequest + */ + @JsonAnySetter + public TemporaryGrantRequestCreateRequest putAdditionalProperty(String key, Object value) { + if (this.additionalProperties == null) { + this.additionalProperties = new HashMap(); + } + this.additionalProperties.put(key, value); + return this; + } + + /** + * Return the additional (undeclared) property. + * + * @return The additional properties + */ + @JsonAnyGetter + public Map getAdditionalProperties() { + return additionalProperties; + } + + /** + * Return the additional (undeclared) property with the specified name. + * + * @param key The arbitrary key to get + * @return The specific additional property for the given key + */ + public Object getAdditionalProperty(String key) { + if (this.additionalProperties == null) { + return null; + } + return this.additionalProperties.get(key); + } + + /** Return true if this TemporaryGrantRequestCreateRequest object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + TemporaryGrantRequestCreateRequest temporaryGrantRequestCreateRequest = + (TemporaryGrantRequestCreateRequest) o; + return Objects.equals(this.data, temporaryGrantRequestCreateRequest.data) + && Objects.equals( + this.additionalProperties, temporaryGrantRequestCreateRequest.additionalProperties); + } + + @Override + public int hashCode() { + return Objects.hash(data, additionalProperties); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class TemporaryGrantRequestCreateRequest {\n"); + sb.append(" data: ").append(toIndentedString(data)).append("\n"); + sb.append(" additionalProperties: ") + .append(toIndentedString(additionalProperties)) + .append("\n"); + sb.append('}'); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces (except the first line). + */ + private String toIndentedString(Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } +} diff --git a/src/main/java/com/datadog/api/client/v2/model/TemporaryGrantRequestData.java b/src/main/java/com/datadog/api/client/v2/model/TemporaryGrantRequestData.java new file mode 100644 index 00000000000..ca771f18c1b --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/TemporaryGrantRequestData.java @@ -0,0 +1,216 @@ +/* + * Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + * This product includes software developed at Datadog (https://www.datadoghq.com/). + * Copyright 2019-Present Datadog, Inc. + */ + +package com.datadog.api.client.v2.model; + +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import java.util.HashMap; +import java.util.Map; +import java.util.Objects; +import java.util.UUID; + +/** A temporary grant request resource. */ +@JsonPropertyOrder({ + TemporaryGrantRequestData.JSON_PROPERTY_ATTRIBUTES, + TemporaryGrantRequestData.JSON_PROPERTY_ID, + TemporaryGrantRequestData.JSON_PROPERTY_TYPE +}) +@jakarta.annotation.Generated( + value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator") +public class TemporaryGrantRequestData { + @JsonIgnore public boolean unparsed = false; + public static final String JSON_PROPERTY_ATTRIBUTES = "attributes"; + private TemporaryGrantRequestAttributes attributes; + + public static final String JSON_PROPERTY_ID = "id"; + private UUID id; + + public static final String JSON_PROPERTY_TYPE = "type"; + private TemporaryGrantRequestType type = TemporaryGrantRequestType.TEMPORARY_GRANT_REQUESTS; + + public TemporaryGrantRequestData() {} + + @JsonCreator + public TemporaryGrantRequestData( + @JsonProperty(required = true, value = JSON_PROPERTY_ATTRIBUTES) + TemporaryGrantRequestAttributes attributes, + @JsonProperty(required = true, value = JSON_PROPERTY_ID) UUID id, + @JsonProperty(required = true, value = JSON_PROPERTY_TYPE) TemporaryGrantRequestType type) { + this.attributes = attributes; + this.unparsed |= attributes.unparsed; + this.id = id; + this.type = type; + this.unparsed |= !type.isValid(); + } + + public TemporaryGrantRequestData attributes(TemporaryGrantRequestAttributes attributes) { + this.attributes = attributes; + this.unparsed |= attributes.unparsed; + return this; + } + + /** + * Request history and the linked grant state. List and detail reads include grant_state for + * approved requests. Decision responses record the decision; read the request for current grant + * state. + * + * @return attributes + */ + @JsonProperty(JSON_PROPERTY_ATTRIBUTES) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public TemporaryGrantRequestAttributes getAttributes() { + return attributes; + } + + public void setAttributes(TemporaryGrantRequestAttributes attributes) { + this.attributes = attributes; + if (attributes != null) { + this.unparsed |= attributes.unparsed; + } + } + + public TemporaryGrantRequestData id(UUID id) { + this.id = id; + return this; + } + + /** + * Server-generated request UUID. + * + * @return id + */ + @JsonProperty(JSON_PROPERTY_ID) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public UUID getId() { + return id; + } + + public void setId(UUID id) { + this.id = id; + } + + public TemporaryGrantRequestData type(TemporaryGrantRequestType type) { + this.type = type; + this.unparsed |= !type.isValid(); + return this; + } + + /** + * The temporary grant request resource type. + * + * @return type + */ + @JsonProperty(JSON_PROPERTY_TYPE) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public TemporaryGrantRequestType getType() { + return type; + } + + public void setType(TemporaryGrantRequestType type) { + if (!type.isValid()) { + this.unparsed = true; + } + this.type = type; + } + + /** + * A container for additional, undeclared properties. This is a holder for any undeclared + * properties as specified with the 'additionalProperties' keyword in the OAS document. + */ + private Map additionalProperties; + + /** + * Set the additional (undeclared) property with the specified name and value. If the property + * does not already exist, create it otherwise replace it. + * + * @param key The arbitrary key to set + * @param value The associated value + * @return TemporaryGrantRequestData + */ + @JsonAnySetter + public TemporaryGrantRequestData putAdditionalProperty(String key, Object value) { + if (this.additionalProperties == null) { + this.additionalProperties = new HashMap(); + } + this.additionalProperties.put(key, value); + return this; + } + + /** + * Return the additional (undeclared) property. + * + * @return The additional properties + */ + @JsonAnyGetter + public Map getAdditionalProperties() { + return additionalProperties; + } + + /** + * Return the additional (undeclared) property with the specified name. + * + * @param key The arbitrary key to get + * @return The specific additional property for the given key + */ + public Object getAdditionalProperty(String key) { + if (this.additionalProperties == null) { + return null; + } + return this.additionalProperties.get(key); + } + + /** Return true if this TemporaryGrantRequestData object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + TemporaryGrantRequestData temporaryGrantRequestData = (TemporaryGrantRequestData) o; + return Objects.equals(this.attributes, temporaryGrantRequestData.attributes) + && Objects.equals(this.id, temporaryGrantRequestData.id) + && Objects.equals(this.type, temporaryGrantRequestData.type) + && Objects.equals( + this.additionalProperties, temporaryGrantRequestData.additionalProperties); + } + + @Override + public int hashCode() { + return Objects.hash(attributes, id, type, additionalProperties); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class TemporaryGrantRequestData {\n"); + sb.append(" attributes: ").append(toIndentedString(attributes)).append("\n"); + sb.append(" id: ").append(toIndentedString(id)).append("\n"); + sb.append(" type: ").append(toIndentedString(type)).append("\n"); + sb.append(" additionalProperties: ") + .append(toIndentedString(additionalProperties)) + .append("\n"); + sb.append('}'); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces (except the first line). + */ + private String toIndentedString(Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } +} diff --git a/src/main/java/com/datadog/api/client/v2/model/TemporaryGrantRequestDecision.java b/src/main/java/com/datadog/api/client/v2/model/TemporaryGrantRequestDecision.java new file mode 100644 index 00000000000..9c6a0c2ace2 --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/TemporaryGrantRequestDecision.java @@ -0,0 +1,59 @@ +/* + * Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + * This product includes software developed at Datadog (https://www.datadoghq.com/). + * Copyright 2019-Present Datadog, Inc. + */ + +package com.datadog.api.client.v2.model; + +import com.datadog.api.client.ModelEnum; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.SerializerProvider; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.StdSerializer; +import java.io.IOException; +import java.util.Arrays; +import java.util.HashSet; +import java.util.Set; + +/** Approve the exact submitted total and expiry, or deny the request. */ +@JsonSerialize(using = TemporaryGrantRequestDecision.TemporaryGrantRequestDecisionSerializer.class) +public class TemporaryGrantRequestDecision extends ModelEnum { + + private static final Set allowedValues = + new HashSet(Arrays.asList("approved", "denied")); + + public static final TemporaryGrantRequestDecision APPROVED = + new TemporaryGrantRequestDecision("approved"); + public static final TemporaryGrantRequestDecision DENIED = + new TemporaryGrantRequestDecision("denied"); + + TemporaryGrantRequestDecision(String value) { + super(value, allowedValues); + } + + public static class TemporaryGrantRequestDecisionSerializer + extends StdSerializer { + public TemporaryGrantRequestDecisionSerializer(Class t) { + super(t); + } + + public TemporaryGrantRequestDecisionSerializer() { + this(null); + } + + @Override + public void serialize( + TemporaryGrantRequestDecision value, JsonGenerator jgen, SerializerProvider provider) + throws IOException, JsonProcessingException { + jgen.writeObject(value.value); + } + } + + @JsonCreator + public static TemporaryGrantRequestDecision fromValue(String value) { + return new TemporaryGrantRequestDecision(value); + } +} diff --git a/src/main/java/com/datadog/api/client/v2/model/TemporaryGrantRequestDecisionAttributes.java b/src/main/java/com/datadog/api/client/v2/model/TemporaryGrantRequestDecisionAttributes.java new file mode 100644 index 00000000000..8ae671e5054 --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/TemporaryGrantRequestDecisionAttributes.java @@ -0,0 +1,99 @@ +/* + * Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + * This product includes software developed at Datadog (https://www.datadoghq.com/). + * Copyright 2019-Present Datadog, Inc. + */ + +package com.datadog.api.client.v2.model; + +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import java.util.Objects; + +/** + * Binary decision. Overrides, reason fields, and unknown attributes are rejected, including null + * values. + */ +@JsonPropertyOrder({TemporaryGrantRequestDecisionAttributes.JSON_PROPERTY_DECISION}) +@jakarta.annotation.Generated( + value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator") +public class TemporaryGrantRequestDecisionAttributes { + @JsonIgnore public boolean unparsed = false; + public static final String JSON_PROPERTY_DECISION = "decision"; + private TemporaryGrantRequestDecision decision; + + public TemporaryGrantRequestDecisionAttributes() {} + + @JsonCreator + public TemporaryGrantRequestDecisionAttributes( + @JsonProperty(required = true, value = JSON_PROPERTY_DECISION) + TemporaryGrantRequestDecision decision) { + this.decision = decision; + this.unparsed |= !decision.isValid(); + } + + public TemporaryGrantRequestDecisionAttributes decision(TemporaryGrantRequestDecision decision) { + this.decision = decision; + this.unparsed |= !decision.isValid(); + return this; + } + + /** + * Approve the exact submitted total and expiry, or deny the request. + * + * @return decision + */ + @JsonProperty(JSON_PROPERTY_DECISION) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public TemporaryGrantRequestDecision getDecision() { + return decision; + } + + public void setDecision(TemporaryGrantRequestDecision decision) { + if (!decision.isValid()) { + this.unparsed = true; + } + this.decision = decision; + } + + /** Return true if this TemporaryGrantRequestDecisionAttributes object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + TemporaryGrantRequestDecisionAttributes temporaryGrantRequestDecisionAttributes = + (TemporaryGrantRequestDecisionAttributes) o; + return Objects.equals(this.decision, temporaryGrantRequestDecisionAttributes.decision); + } + + @Override + public int hashCode() { + return Objects.hash(decision); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class TemporaryGrantRequestDecisionAttributes {\n"); + sb.append(" decision: ").append(toIndentedString(decision)).append("\n"); + sb.append('}'); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces (except the first line). + */ + private String toIndentedString(Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } +} diff --git a/src/main/java/com/datadog/api/client/v2/model/TemporaryGrantRequestDecisionData.java b/src/main/java/com/datadog/api/client/v2/model/TemporaryGrantRequestDecisionData.java new file mode 100644 index 00000000000..3ed86039fb7 --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/TemporaryGrantRequestDecisionData.java @@ -0,0 +1,216 @@ +/* + * Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + * This product includes software developed at Datadog (https://www.datadoghq.com/). + * Copyright 2019-Present Datadog, Inc. + */ + +package com.datadog.api.client.v2.model; + +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import java.util.HashMap; +import java.util.Map; +import java.util.Objects; +import java.util.UUID; + +/** A decision on a pending request. */ +@JsonPropertyOrder({ + TemporaryGrantRequestDecisionData.JSON_PROPERTY_ATTRIBUTES, + TemporaryGrantRequestDecisionData.JSON_PROPERTY_ID, + TemporaryGrantRequestDecisionData.JSON_PROPERTY_TYPE +}) +@jakarta.annotation.Generated( + value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator") +public class TemporaryGrantRequestDecisionData { + @JsonIgnore public boolean unparsed = false; + public static final String JSON_PROPERTY_ATTRIBUTES = "attributes"; + private TemporaryGrantRequestDecisionAttributes attributes; + + public static final String JSON_PROPERTY_ID = "id"; + private UUID id; + + public static final String JSON_PROPERTY_TYPE = "type"; + private TemporaryGrantRequestType type = TemporaryGrantRequestType.TEMPORARY_GRANT_REQUESTS; + + public TemporaryGrantRequestDecisionData() {} + + @JsonCreator + public TemporaryGrantRequestDecisionData( + @JsonProperty(required = true, value = JSON_PROPERTY_ATTRIBUTES) + TemporaryGrantRequestDecisionAttributes attributes, + @JsonProperty(required = true, value = JSON_PROPERTY_TYPE) TemporaryGrantRequestType type) { + this.attributes = attributes; + this.unparsed |= attributes.unparsed; + this.type = type; + this.unparsed |= !type.isValid(); + } + + public TemporaryGrantRequestDecisionData attributes( + TemporaryGrantRequestDecisionAttributes attributes) { + this.attributes = attributes; + this.unparsed |= attributes.unparsed; + return this; + } + + /** + * Binary decision. Overrides, reason fields, and unknown attributes are rejected, including null + * values. + * + * @return attributes + */ + @JsonProperty(JSON_PROPERTY_ATTRIBUTES) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public TemporaryGrantRequestDecisionAttributes getAttributes() { + return attributes; + } + + public void setAttributes(TemporaryGrantRequestDecisionAttributes attributes) { + this.attributes = attributes; + if (attributes != null) { + this.unparsed |= attributes.unparsed; + } + } + + public TemporaryGrantRequestDecisionData id(UUID id) { + this.id = id; + return this; + } + + /** + * Optional request UUID. If supplied it must match request_id in the path. + * + * @return id + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_ID) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public UUID getId() { + return id; + } + + public void setId(UUID id) { + this.id = id; + } + + public TemporaryGrantRequestDecisionData type(TemporaryGrantRequestType type) { + this.type = type; + this.unparsed |= !type.isValid(); + return this; + } + + /** + * The temporary grant request resource type. + * + * @return type + */ + @JsonProperty(JSON_PROPERTY_TYPE) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public TemporaryGrantRequestType getType() { + return type; + } + + public void setType(TemporaryGrantRequestType type) { + if (!type.isValid()) { + this.unparsed = true; + } + this.type = type; + } + + /** + * A container for additional, undeclared properties. This is a holder for any undeclared + * properties as specified with the 'additionalProperties' keyword in the OAS document. + */ + private Map additionalProperties; + + /** + * Set the additional (undeclared) property with the specified name and value. If the property + * does not already exist, create it otherwise replace it. + * + * @param key The arbitrary key to set + * @param value The associated value + * @return TemporaryGrantRequestDecisionData + */ + @JsonAnySetter + public TemporaryGrantRequestDecisionData putAdditionalProperty(String key, Object value) { + if (this.additionalProperties == null) { + this.additionalProperties = new HashMap(); + } + this.additionalProperties.put(key, value); + return this; + } + + /** + * Return the additional (undeclared) property. + * + * @return The additional properties + */ + @JsonAnyGetter + public Map getAdditionalProperties() { + return additionalProperties; + } + + /** + * Return the additional (undeclared) property with the specified name. + * + * @param key The arbitrary key to get + * @return The specific additional property for the given key + */ + public Object getAdditionalProperty(String key) { + if (this.additionalProperties == null) { + return null; + } + return this.additionalProperties.get(key); + } + + /** Return true if this TemporaryGrantRequestDecisionData object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + TemporaryGrantRequestDecisionData temporaryGrantRequestDecisionData = + (TemporaryGrantRequestDecisionData) o; + return Objects.equals(this.attributes, temporaryGrantRequestDecisionData.attributes) + && Objects.equals(this.id, temporaryGrantRequestDecisionData.id) + && Objects.equals(this.type, temporaryGrantRequestDecisionData.type) + && Objects.equals( + this.additionalProperties, temporaryGrantRequestDecisionData.additionalProperties); + } + + @Override + public int hashCode() { + return Objects.hash(attributes, id, type, additionalProperties); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class TemporaryGrantRequestDecisionData {\n"); + sb.append(" attributes: ").append(toIndentedString(attributes)).append("\n"); + sb.append(" id: ").append(toIndentedString(id)).append("\n"); + sb.append(" type: ").append(toIndentedString(type)).append("\n"); + sb.append(" additionalProperties: ") + .append(toIndentedString(additionalProperties)) + .append("\n"); + sb.append('}'); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces (except the first line). + */ + private String toIndentedString(Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } +} diff --git a/src/main/java/com/datadog/api/client/v2/model/TemporaryGrantRequestDecisionRequest.java b/src/main/java/com/datadog/api/client/v2/model/TemporaryGrantRequestDecisionRequest.java new file mode 100644 index 00000000000..2b61cbcd444 --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/TemporaryGrantRequestDecisionRequest.java @@ -0,0 +1,151 @@ +/* + * Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + * This product includes software developed at Datadog (https://www.datadoghq.com/). + * Copyright 2019-Present Datadog, Inc. + */ + +package com.datadog.api.client.v2.model; + +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import java.util.HashMap; +import java.util.Map; +import java.util.Objects; + +/** Approve or deny a pending request. */ +@JsonPropertyOrder({TemporaryGrantRequestDecisionRequest.JSON_PROPERTY_DATA}) +@jakarta.annotation.Generated( + value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator") +public class TemporaryGrantRequestDecisionRequest { + @JsonIgnore public boolean unparsed = false; + public static final String JSON_PROPERTY_DATA = "data"; + private TemporaryGrantRequestDecisionData data; + + public TemporaryGrantRequestDecisionRequest() {} + + @JsonCreator + public TemporaryGrantRequestDecisionRequest( + @JsonProperty(required = true, value = JSON_PROPERTY_DATA) + TemporaryGrantRequestDecisionData data) { + this.data = data; + this.unparsed |= data.unparsed; + } + + public TemporaryGrantRequestDecisionRequest data(TemporaryGrantRequestDecisionData data) { + this.data = data; + this.unparsed |= data.unparsed; + return this; + } + + /** + * A decision on a pending request. + * + * @return data + */ + @JsonProperty(JSON_PROPERTY_DATA) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public TemporaryGrantRequestDecisionData getData() { + return data; + } + + public void setData(TemporaryGrantRequestDecisionData data) { + this.data = data; + if (data != null) { + this.unparsed |= data.unparsed; + } + } + + /** + * A container for additional, undeclared properties. This is a holder for any undeclared + * properties as specified with the 'additionalProperties' keyword in the OAS document. + */ + private Map additionalProperties; + + /** + * Set the additional (undeclared) property with the specified name and value. If the property + * does not already exist, create it otherwise replace it. + * + * @param key The arbitrary key to set + * @param value The associated value + * @return TemporaryGrantRequestDecisionRequest + */ + @JsonAnySetter + public TemporaryGrantRequestDecisionRequest putAdditionalProperty(String key, Object value) { + if (this.additionalProperties == null) { + this.additionalProperties = new HashMap(); + } + this.additionalProperties.put(key, value); + return this; + } + + /** + * Return the additional (undeclared) property. + * + * @return The additional properties + */ + @JsonAnyGetter + public Map getAdditionalProperties() { + return additionalProperties; + } + + /** + * Return the additional (undeclared) property with the specified name. + * + * @param key The arbitrary key to get + * @return The specific additional property for the given key + */ + public Object getAdditionalProperty(String key) { + if (this.additionalProperties == null) { + return null; + } + return this.additionalProperties.get(key); + } + + /** Return true if this TemporaryGrantRequestDecisionRequest object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + TemporaryGrantRequestDecisionRequest temporaryGrantRequestDecisionRequest = + (TemporaryGrantRequestDecisionRequest) o; + return Objects.equals(this.data, temporaryGrantRequestDecisionRequest.data) + && Objects.equals( + this.additionalProperties, temporaryGrantRequestDecisionRequest.additionalProperties); + } + + @Override + public int hashCode() { + return Objects.hash(data, additionalProperties); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class TemporaryGrantRequestDecisionRequest {\n"); + sb.append(" data: ").append(toIndentedString(data)).append("\n"); + sb.append(" additionalProperties: ") + .append(toIndentedString(additionalProperties)) + .append("\n"); + sb.append('}'); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces (except the first line). + */ + private String toIndentedString(Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } +} diff --git a/src/main/java/com/datadog/api/client/v2/model/TemporaryGrantRequestGrantState.java b/src/main/java/com/datadog/api/client/v2/model/TemporaryGrantRequestGrantState.java new file mode 100644 index 00000000000..0a6ea7ff1aa --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/TemporaryGrantRequestGrantState.java @@ -0,0 +1,68 @@ +/* + * Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + * This product includes software developed at Datadog (https://www.datadoghq.com/). + * Copyright 2019-Present Datadog, Inc. + */ + +package com.datadog.api.client.v2.model; + +import com.datadog.api.client.ModelEnum; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.SerializerProvider; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.StdSerializer; +import java.io.IOException; +import java.util.Arrays; +import java.util.HashSet; +import java.util.Set; + +/** + * Current state of the grant associated with an approved request. Replaced means a successor + * superseded this grant; the successor need not still be active. Absent for requests that were not + * approved. + */ +@JsonSerialize( + using = TemporaryGrantRequestGrantState.TemporaryGrantRequestGrantStateSerializer.class) +public class TemporaryGrantRequestGrantState extends ModelEnum { + + private static final Set allowedValues = + new HashSet(Arrays.asList("active", "expired", "revoked", "replaced")); + + public static final TemporaryGrantRequestGrantState ACTIVE = + new TemporaryGrantRequestGrantState("active"); + public static final TemporaryGrantRequestGrantState EXPIRED = + new TemporaryGrantRequestGrantState("expired"); + public static final TemporaryGrantRequestGrantState REVOKED = + new TemporaryGrantRequestGrantState("revoked"); + public static final TemporaryGrantRequestGrantState REPLACED = + new TemporaryGrantRequestGrantState("replaced"); + + TemporaryGrantRequestGrantState(String value) { + super(value, allowedValues); + } + + public static class TemporaryGrantRequestGrantStateSerializer + extends StdSerializer { + public TemporaryGrantRequestGrantStateSerializer(Class t) { + super(t); + } + + public TemporaryGrantRequestGrantStateSerializer() { + this(null); + } + + @Override + public void serialize( + TemporaryGrantRequestGrantState value, JsonGenerator jgen, SerializerProvider provider) + throws IOException, JsonProcessingException { + jgen.writeObject(value.value); + } + } + + @JsonCreator + public static TemporaryGrantRequestGrantState fromValue(String value) { + return new TemporaryGrantRequestGrantState(value); + } +} diff --git a/src/main/java/com/datadog/api/client/v2/model/TemporaryGrantRequestListMeta.java b/src/main/java/com/datadog/api/client/v2/model/TemporaryGrantRequestListMeta.java new file mode 100644 index 00000000000..df8bcbff12c --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/TemporaryGrantRequestListMeta.java @@ -0,0 +1,149 @@ +/* + * Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + * This product includes software developed at Datadog (https://www.datadoghq.com/). + * Copyright 2019-Present Datadog, Inc. + */ + +package com.datadog.api.client.v2.model; + +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import java.util.HashMap; +import java.util.Map; +import java.util.Objects; + +/** Pagination metadata. */ +@JsonPropertyOrder({TemporaryGrantRequestListMeta.JSON_PROPERTY_PAGE}) +@jakarta.annotation.Generated( + value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator") +public class TemporaryGrantRequestListMeta { + @JsonIgnore public boolean unparsed = false; + public static final String JSON_PROPERTY_PAGE = "page"; + private TemporaryGrantRequestPage page; + + public TemporaryGrantRequestListMeta() {} + + @JsonCreator + public TemporaryGrantRequestListMeta( + @JsonProperty(required = true, value = JSON_PROPERTY_PAGE) TemporaryGrantRequestPage page) { + this.page = page; + this.unparsed |= page.unparsed; + } + + public TemporaryGrantRequestListMeta page(TemporaryGrantRequestPage page) { + this.page = page; + this.unparsed |= page.unparsed; + return this; + } + + /** + * UUID cursor pagination. A full final page can return a cursor followed by an empty page. + * + * @return page + */ + @JsonProperty(JSON_PROPERTY_PAGE) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public TemporaryGrantRequestPage getPage() { + return page; + } + + public void setPage(TemporaryGrantRequestPage page) { + this.page = page; + if (page != null) { + this.unparsed |= page.unparsed; + } + } + + /** + * A container for additional, undeclared properties. This is a holder for any undeclared + * properties as specified with the 'additionalProperties' keyword in the OAS document. + */ + private Map additionalProperties; + + /** + * Set the additional (undeclared) property with the specified name and value. If the property + * does not already exist, create it otherwise replace it. + * + * @param key The arbitrary key to set + * @param value The associated value + * @return TemporaryGrantRequestListMeta + */ + @JsonAnySetter + public TemporaryGrantRequestListMeta putAdditionalProperty(String key, Object value) { + if (this.additionalProperties == null) { + this.additionalProperties = new HashMap(); + } + this.additionalProperties.put(key, value); + return this; + } + + /** + * Return the additional (undeclared) property. + * + * @return The additional properties + */ + @JsonAnyGetter + public Map getAdditionalProperties() { + return additionalProperties; + } + + /** + * Return the additional (undeclared) property with the specified name. + * + * @param key The arbitrary key to get + * @return The specific additional property for the given key + */ + public Object getAdditionalProperty(String key) { + if (this.additionalProperties == null) { + return null; + } + return this.additionalProperties.get(key); + } + + /** Return true if this TemporaryGrantRequestListMeta object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + TemporaryGrantRequestListMeta temporaryGrantRequestListMeta = (TemporaryGrantRequestListMeta) o; + return Objects.equals(this.page, temporaryGrantRequestListMeta.page) + && Objects.equals( + this.additionalProperties, temporaryGrantRequestListMeta.additionalProperties); + } + + @Override + public int hashCode() { + return Objects.hash(page, additionalProperties); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class TemporaryGrantRequestListMeta {\n"); + sb.append(" page: ").append(toIndentedString(page)).append("\n"); + sb.append(" additionalProperties: ") + .append(toIndentedString(additionalProperties)) + .append("\n"); + sb.append('}'); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces (except the first line). + */ + private String toIndentedString(Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } +} diff --git a/src/main/java/com/datadog/api/client/v2/model/TemporaryGrantRequestListResponse.java b/src/main/java/com/datadog/api/client/v2/model/TemporaryGrantRequestListResponse.java new file mode 100644 index 00000000000..a8c30aff9fe --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/TemporaryGrantRequestListResponse.java @@ -0,0 +1,201 @@ +/* + * Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + * This product includes software developed at Datadog (https://www.datadoghq.com/). + * Copyright 2019-Present Datadog, Inc. + */ + +package com.datadog.api.client.v2.model; + +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Objects; + +/** A page of temporary grant requests, ordered by UUID rather than creation time. */ +@JsonPropertyOrder({ + TemporaryGrantRequestListResponse.JSON_PROPERTY_DATA, + TemporaryGrantRequestListResponse.JSON_PROPERTY_META +}) +@jakarta.annotation.Generated( + value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator") +public class TemporaryGrantRequestListResponse { + @JsonIgnore public boolean unparsed = false; + public static final String JSON_PROPERTY_DATA = "data"; + private List data = new ArrayList<>(); + + public static final String JSON_PROPERTY_META = "meta"; + private TemporaryGrantRequestListMeta meta; + + public TemporaryGrantRequestListResponse() {} + + @JsonCreator + public TemporaryGrantRequestListResponse( + @JsonProperty(required = true, value = JSON_PROPERTY_DATA) + List data, + @JsonProperty(required = true, value = JSON_PROPERTY_META) + TemporaryGrantRequestListMeta meta) { + this.data = data; + for (TemporaryGrantRequestData item : data) { + this.unparsed |= item.unparsed; + } + this.meta = meta; + this.unparsed |= meta.unparsed; + } + + public TemporaryGrantRequestListResponse data(List data) { + this.data = data; + for (TemporaryGrantRequestData item : data) { + this.unparsed |= item.unparsed; + } + return this; + } + + public TemporaryGrantRequestListResponse addDataItem(TemporaryGrantRequestData dataItem) { + this.data.add(dataItem); + this.unparsed |= dataItem.unparsed; + return this; + } + + /** + * Requests visible to the authenticated caller. + * + * @return data + */ + @JsonProperty(JSON_PROPERTY_DATA) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + if (data != null) { + for (TemporaryGrantRequestData item : data) { + this.unparsed |= item.unparsed; + } + } + } + + public TemporaryGrantRequestListResponse meta(TemporaryGrantRequestListMeta meta) { + this.meta = meta; + this.unparsed |= meta.unparsed; + return this; + } + + /** + * Pagination metadata. + * + * @return meta + */ + @JsonProperty(JSON_PROPERTY_META) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public TemporaryGrantRequestListMeta getMeta() { + return meta; + } + + public void setMeta(TemporaryGrantRequestListMeta meta) { + this.meta = meta; + if (meta != null) { + this.unparsed |= meta.unparsed; + } + } + + /** + * A container for additional, undeclared properties. This is a holder for any undeclared + * properties as specified with the 'additionalProperties' keyword in the OAS document. + */ + private Map additionalProperties; + + /** + * Set the additional (undeclared) property with the specified name and value. If the property + * does not already exist, create it otherwise replace it. + * + * @param key The arbitrary key to set + * @param value The associated value + * @return TemporaryGrantRequestListResponse + */ + @JsonAnySetter + public TemporaryGrantRequestListResponse putAdditionalProperty(String key, Object value) { + if (this.additionalProperties == null) { + this.additionalProperties = new HashMap(); + } + this.additionalProperties.put(key, value); + return this; + } + + /** + * Return the additional (undeclared) property. + * + * @return The additional properties + */ + @JsonAnyGetter + public Map getAdditionalProperties() { + return additionalProperties; + } + + /** + * Return the additional (undeclared) property with the specified name. + * + * @param key The arbitrary key to get + * @return The specific additional property for the given key + */ + public Object getAdditionalProperty(String key) { + if (this.additionalProperties == null) { + return null; + } + return this.additionalProperties.get(key); + } + + /** Return true if this TemporaryGrantRequestListResponse object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + TemporaryGrantRequestListResponse temporaryGrantRequestListResponse = + (TemporaryGrantRequestListResponse) o; + return Objects.equals(this.data, temporaryGrantRequestListResponse.data) + && Objects.equals(this.meta, temporaryGrantRequestListResponse.meta) + && Objects.equals( + this.additionalProperties, temporaryGrantRequestListResponse.additionalProperties); + } + + @Override + public int hashCode() { + return Objects.hash(data, meta, additionalProperties); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class TemporaryGrantRequestListResponse {\n"); + sb.append(" data: ").append(toIndentedString(data)).append("\n"); + sb.append(" meta: ").append(toIndentedString(meta)).append("\n"); + sb.append(" additionalProperties: ") + .append(toIndentedString(additionalProperties)) + .append("\n"); + sb.append('}'); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces (except the first line). + */ + private String toIndentedString(Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } +} diff --git a/src/main/java/com/datadog/api/client/v2/model/TemporaryGrantRequestPage.java b/src/main/java/com/datadog/api/client/v2/model/TemporaryGrantRequestPage.java new file mode 100644 index 00000000000..20f831e174e --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/TemporaryGrantRequestPage.java @@ -0,0 +1,137 @@ +/* + * Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + * This product includes software developed at Datadog (https://www.datadoghq.com/). + * Copyright 2019-Present Datadog, Inc. + */ + +package com.datadog.api.client.v2.model; + +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import java.util.HashMap; +import java.util.Map; +import java.util.Objects; +import java.util.UUID; + +/** UUID cursor pagination. A full final page can return a cursor followed by an empty page. */ +@JsonPropertyOrder({TemporaryGrantRequestPage.JSON_PROPERTY_NEXT_CURSOR}) +@jakarta.annotation.Generated( + value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator") +public class TemporaryGrantRequestPage { + @JsonIgnore public boolean unparsed = false; + public static final String JSON_PROPERTY_NEXT_CURSOR = "next_cursor"; + private UUID nextCursor; + + public TemporaryGrantRequestPage nextCursor(UUID nextCursor) { + this.nextCursor = nextCursor; + return this; + } + + /** + * Use this UUID as page[cursor] to retrieve the next page. Omitted when the page is not full. + * + * @return nextCursor + */ + @jakarta.annotation.Nullable + @JsonProperty(JSON_PROPERTY_NEXT_CURSOR) + @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS) + public UUID getNextCursor() { + return nextCursor; + } + + public void setNextCursor(UUID nextCursor) { + this.nextCursor = nextCursor; + } + + /** + * A container for additional, undeclared properties. This is a holder for any undeclared + * properties as specified with the 'additionalProperties' keyword in the OAS document. + */ + private Map additionalProperties; + + /** + * Set the additional (undeclared) property with the specified name and value. If the property + * does not already exist, create it otherwise replace it. + * + * @param key The arbitrary key to set + * @param value The associated value + * @return TemporaryGrantRequestPage + */ + @JsonAnySetter + public TemporaryGrantRequestPage putAdditionalProperty(String key, Object value) { + if (this.additionalProperties == null) { + this.additionalProperties = new HashMap(); + } + this.additionalProperties.put(key, value); + return this; + } + + /** + * Return the additional (undeclared) property. + * + * @return The additional properties + */ + @JsonAnyGetter + public Map getAdditionalProperties() { + return additionalProperties; + } + + /** + * Return the additional (undeclared) property with the specified name. + * + * @param key The arbitrary key to get + * @return The specific additional property for the given key + */ + public Object getAdditionalProperty(String key) { + if (this.additionalProperties == null) { + return null; + } + return this.additionalProperties.get(key); + } + + /** Return true if this TemporaryGrantRequestPage object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + TemporaryGrantRequestPage temporaryGrantRequestPage = (TemporaryGrantRequestPage) o; + return Objects.equals(this.nextCursor, temporaryGrantRequestPage.nextCursor) + && Objects.equals( + this.additionalProperties, temporaryGrantRequestPage.additionalProperties); + } + + @Override + public int hashCode() { + return Objects.hash(nextCursor, additionalProperties); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class TemporaryGrantRequestPage {\n"); + sb.append(" nextCursor: ").append(toIndentedString(nextCursor)).append("\n"); + sb.append(" additionalProperties: ") + .append(toIndentedString(additionalProperties)) + .append("\n"); + sb.append('}'); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces (except the first line). + */ + private String toIndentedString(Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } +} diff --git a/src/main/java/com/datadog/api/client/v2/model/TemporaryGrantRequestResponse.java b/src/main/java/com/datadog/api/client/v2/model/TemporaryGrantRequestResponse.java new file mode 100644 index 00000000000..4567ce968a8 --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/TemporaryGrantRequestResponse.java @@ -0,0 +1,149 @@ +/* + * Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + * This product includes software developed at Datadog (https://www.datadoghq.com/). + * Copyright 2019-Present Datadog, Inc. + */ + +package com.datadog.api.client.v2.model; + +import com.fasterxml.jackson.annotation.JsonAnyGetter; +import com.fasterxml.jackson.annotation.JsonAnySetter; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonInclude; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.fasterxml.jackson.annotation.JsonPropertyOrder; +import java.util.HashMap; +import java.util.Map; +import java.util.Objects; + +/** A single temporary grant request. */ +@JsonPropertyOrder({TemporaryGrantRequestResponse.JSON_PROPERTY_DATA}) +@jakarta.annotation.Generated( + value = "https://github.com/DataDog/datadog-api-client-java/blob/master/.generator") +public class TemporaryGrantRequestResponse { + @JsonIgnore public boolean unparsed = false; + public static final String JSON_PROPERTY_DATA = "data"; + private TemporaryGrantRequestData data; + + public TemporaryGrantRequestResponse() {} + + @JsonCreator + public TemporaryGrantRequestResponse( + @JsonProperty(required = true, value = JSON_PROPERTY_DATA) TemporaryGrantRequestData data) { + this.data = data; + this.unparsed |= data.unparsed; + } + + public TemporaryGrantRequestResponse data(TemporaryGrantRequestData data) { + this.data = data; + this.unparsed |= data.unparsed; + return this; + } + + /** + * A temporary grant request resource. + * + * @return data + */ + @JsonProperty(JSON_PROPERTY_DATA) + @JsonInclude(value = JsonInclude.Include.ALWAYS) + public TemporaryGrantRequestData getData() { + return data; + } + + public void setData(TemporaryGrantRequestData data) { + this.data = data; + if (data != null) { + this.unparsed |= data.unparsed; + } + } + + /** + * A container for additional, undeclared properties. This is a holder for any undeclared + * properties as specified with the 'additionalProperties' keyword in the OAS document. + */ + private Map additionalProperties; + + /** + * Set the additional (undeclared) property with the specified name and value. If the property + * does not already exist, create it otherwise replace it. + * + * @param key The arbitrary key to set + * @param value The associated value + * @return TemporaryGrantRequestResponse + */ + @JsonAnySetter + public TemporaryGrantRequestResponse putAdditionalProperty(String key, Object value) { + if (this.additionalProperties == null) { + this.additionalProperties = new HashMap(); + } + this.additionalProperties.put(key, value); + return this; + } + + /** + * Return the additional (undeclared) property. + * + * @return The additional properties + */ + @JsonAnyGetter + public Map getAdditionalProperties() { + return additionalProperties; + } + + /** + * Return the additional (undeclared) property with the specified name. + * + * @param key The arbitrary key to get + * @return The specific additional property for the given key + */ + public Object getAdditionalProperty(String key) { + if (this.additionalProperties == null) { + return null; + } + return this.additionalProperties.get(key); + } + + /** Return true if this TemporaryGrantRequestResponse object is equal to o. */ + @Override + public boolean equals(Object o) { + if (this == o) { + return true; + } + if (o == null || getClass() != o.getClass()) { + return false; + } + TemporaryGrantRequestResponse temporaryGrantRequestResponse = (TemporaryGrantRequestResponse) o; + return Objects.equals(this.data, temporaryGrantRequestResponse.data) + && Objects.equals( + this.additionalProperties, temporaryGrantRequestResponse.additionalProperties); + } + + @Override + public int hashCode() { + return Objects.hash(data, additionalProperties); + } + + @Override + public String toString() { + StringBuilder sb = new StringBuilder(); + sb.append("class TemporaryGrantRequestResponse {\n"); + sb.append(" data: ").append(toIndentedString(data)).append("\n"); + sb.append(" additionalProperties: ") + .append(toIndentedString(additionalProperties)) + .append("\n"); + sb.append('}'); + return sb.toString(); + } + + /** + * Convert the given object to string with each line indented by 4 spaces (except the first line). + */ + private String toIndentedString(Object o) { + if (o == null) { + return "null"; + } + return o.toString().replace("\n", "\n "); + } +} diff --git a/src/main/java/com/datadog/api/client/v2/model/TemporaryGrantRequestStatus.java b/src/main/java/com/datadog/api/client/v2/model/TemporaryGrantRequestStatus.java new file mode 100644 index 00000000000..c2a93950760 --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/TemporaryGrantRequestStatus.java @@ -0,0 +1,63 @@ +/* + * Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + * This product includes software developed at Datadog (https://www.datadoghq.com/). + * Copyright 2019-Present Datadog, Inc. + */ + +package com.datadog.api.client.v2.model; + +import com.datadog.api.client.ModelEnum; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.SerializerProvider; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.StdSerializer; +import java.io.IOException; +import java.util.Arrays; +import java.util.HashSet; +import java.util.Set; + +/** The durable request decision, independent of whether its grant is still active. */ +@JsonSerialize(using = TemporaryGrantRequestStatus.TemporaryGrantRequestStatusSerializer.class) +public class TemporaryGrantRequestStatus extends ModelEnum { + + private static final Set allowedValues = + new HashSet(Arrays.asList("pending", "approved", "denied", "cancelled")); + + public static final TemporaryGrantRequestStatus PENDING = + new TemporaryGrantRequestStatus("pending"); + public static final TemporaryGrantRequestStatus APPROVED = + new TemporaryGrantRequestStatus("approved"); + public static final TemporaryGrantRequestStatus DENIED = + new TemporaryGrantRequestStatus("denied"); + public static final TemporaryGrantRequestStatus CANCELLED = + new TemporaryGrantRequestStatus("cancelled"); + + TemporaryGrantRequestStatus(String value) { + super(value, allowedValues); + } + + public static class TemporaryGrantRequestStatusSerializer + extends StdSerializer { + public TemporaryGrantRequestStatusSerializer(Class t) { + super(t); + } + + public TemporaryGrantRequestStatusSerializer() { + this(null); + } + + @Override + public void serialize( + TemporaryGrantRequestStatus value, JsonGenerator jgen, SerializerProvider provider) + throws IOException, JsonProcessingException { + jgen.writeObject(value.value); + } + } + + @JsonCreator + public static TemporaryGrantRequestStatus fromValue(String value) { + return new TemporaryGrantRequestStatus(value); + } +} diff --git a/src/main/java/com/datadog/api/client/v2/model/TemporaryGrantRequestType.java b/src/main/java/com/datadog/api/client/v2/model/TemporaryGrantRequestType.java new file mode 100644 index 00000000000..672e79b15af --- /dev/null +++ b/src/main/java/com/datadog/api/client/v2/model/TemporaryGrantRequestType.java @@ -0,0 +1,57 @@ +/* + * Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + * This product includes software developed at Datadog (https://www.datadoghq.com/). + * Copyright 2019-Present Datadog, Inc. + */ + +package com.datadog.api.client.v2.model; + +import com.datadog.api.client.ModelEnum; +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.SerializerProvider; +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.StdSerializer; +import java.io.IOException; +import java.util.Arrays; +import java.util.HashSet; +import java.util.Set; + +/** The temporary grant request resource type. */ +@JsonSerialize(using = TemporaryGrantRequestType.TemporaryGrantRequestTypeSerializer.class) +public class TemporaryGrantRequestType extends ModelEnum { + + private static final Set allowedValues = + new HashSet(Arrays.asList("temporary_grant_requests")); + + public static final TemporaryGrantRequestType TEMPORARY_GRANT_REQUESTS = + new TemporaryGrantRequestType("temporary_grant_requests"); + + TemporaryGrantRequestType(String value) { + super(value, allowedValues); + } + + public static class TemporaryGrantRequestTypeSerializer + extends StdSerializer { + public TemporaryGrantRequestTypeSerializer(Class t) { + super(t); + } + + public TemporaryGrantRequestTypeSerializer() { + this(null); + } + + @Override + public void serialize( + TemporaryGrantRequestType value, JsonGenerator jgen, SerializerProvider provider) + throws IOException, JsonProcessingException { + jgen.writeObject(value.value); + } + } + + @JsonCreator + public static TemporaryGrantRequestType fromValue(String value) { + return new TemporaryGrantRequestType(value); + } +} diff --git a/src/test/resources/com/datadog/api/client/v2/api/given.json b/src/test/resources/com/datadog/api/client/v2/api/given.json index 1eecd8ab2df..60c46380677 100644 --- a/src/test/resources/com/datadog/api/client/v2/api/given.json +++ b/src/test/resources/com/datadog/api/client/v2/api/given.json @@ -2030,6 +2030,18 @@ "tag": "Teams", "operationId": "CreateTeamNotificationRule" }, + { + "parameters": [ + { + "name": "body", + "value": "{\"data\":{\"type\":\"temporary_grant_requests\",\"attributes\":{\"total\":200,\"justification\":\"SDK temporary grant request test\"}}}" + } + ], + "step": "there is a valid \"temporary_grant_request\" in the system", + "key": "temporary_grant_request", + "tag": "Usage Metering", + "operationId": "PublicCreateTemporaryGrantRequest" + }, { "parameters": [ { diff --git a/src/test/resources/com/datadog/api/client/v2/api/undo.json b/src/test/resources/com/datadog/api/client/v2/api/undo.json index 5099fc97d12..e12790d9133 100644 --- a/src/test/resources/com/datadog/api/client/v2/api/undo.json +++ b/src/test/resources/com/datadog/api/client/v2/api/undo.json @@ -11080,6 +11080,30 @@ "type": "safe" } }, + "PublicListTemporaryGrantRequests": { + "tag": "Usage Metering", + "undo": { + "type": "safe" + } + }, + "PublicGetTemporaryGrantRequest": { + "tag": "Usage Metering", + "undo": { + "type": "safe" + } + }, + "PublicDecideTemporaryGrantRequest": { + "tag": "Usage Metering", + "undo": { + "type": "idempotent" + } + }, + "PublicRevokeRequestedTemporaryGrant": { + "tag": "Usage Metering", + "undo": { + "type": "idempotent" + } + }, "GetUsageApplicationSecurityMonitoring": { "tag": "Usage Metering", "undo": { @@ -11170,6 +11194,37 @@ "type": "safe" } }, + "PublicListMyTemporaryGrantRequests": { + "tag": "Usage Metering", + "undo": { + "type": "safe" + } + }, + "PublicCreateTemporaryGrantRequest": { + "tag": "Usage Metering", + "undo": { + "operationId": "PublicCancelTemporaryGrantRequest", + "parameters": [ + { + "name": "request_id", + "source": "data.id" + } + ], + "type": "unsafe" + } + }, + "PublicCancelTemporaryGrantRequest": { + "tag": "Usage Metering", + "undo": { + "type": "idempotent" + } + }, + "PublicGetMyTemporaryGrantRequest": { + "tag": "Usage Metering", + "undo": { + "type": "safe" + } + }, "GetUsageAttributionTypes": { "tag": "Usage Metering", "undo": { diff --git a/src/test/resources/com/datadog/api/client/v2/api/usage_metering.feature b/src/test/resources/com/datadog/api/client/v2/api/usage_metering.feature index 9fd783ecd66..42e44ee9168 100644 --- a/src/test/resources/com/datadog/api/client/v2/api/usage_metering.feature +++ b/src/test/resources/com/datadog/api/client/v2/api/usage_metering.feature @@ -41,6 +41,80 @@ Feature: Usage Metering When the request is sent Then the response status is 404 Not Found + @generated @skip @team:ddoghq/billing-hub + Scenario: Cancel your temporary grant request returns "Bad Request" response + Given operation "PublicCancelTemporaryGrantRequest" enabled + And new "PublicCancelTemporaryGrantRequest" request + And request contains "request_id" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 400 Bad Request + + @generated @skip @team:ddoghq/billing-hub + Scenario: Cancel your temporary grant request returns "Conflict" response + Given operation "PublicCancelTemporaryGrantRequest" enabled + And new "PublicCancelTemporaryGrantRequest" request + And request contains "request_id" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 409 Conflict + + @generated @skip @team:ddoghq/billing-hub + Scenario: Cancel your temporary grant request returns "No Content" response + Given operation "PublicCancelTemporaryGrantRequest" enabled + And new "PublicCancelTemporaryGrantRequest" request + And request contains "request_id" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 204 No Content + + @generated @skip @team:ddoghq/billing-hub + Scenario: Cancel your temporary grant request returns "Not Found" response + Given operation "PublicCancelTemporaryGrantRequest" enabled + And new "PublicCancelTemporaryGrantRequest" request + And request contains "request_id" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 404 Not Found + + @generated @skip @team:ddoghq/billing-hub + Scenario: Create a temporary grant request returns "Bad Request" response + Given operation "PublicCreateTemporaryGrantRequest" enabled + And new "PublicCreateTemporaryGrantRequest" request + And body with value {"data": {"attributes": {"expires_at": "2028-02-16T00:00:00Z", "justification": "Credits needed to finish the incident investigation.", "total": 200}, "type": "temporary_grant_requests"}} + When the request is sent + Then the response status is 400 Bad Request + + @generated @skip @team:ddoghq/billing-hub + Scenario: Create a temporary grant request returns "Conflict" response + Given operation "PublicCreateTemporaryGrantRequest" enabled + And new "PublicCreateTemporaryGrantRequest" request + And body with value {"data": {"attributes": {"expires_at": "2028-02-16T00:00:00Z", "justification": "Credits needed to finish the incident investigation.", "total": 200}, "type": "temporary_grant_requests"}} + When the request is sent + Then the response status is 409 Conflict + + @generated @skip @team:ddoghq/billing-hub + Scenario: Create a temporary grant request returns "Created" response + Given operation "PublicCreateTemporaryGrantRequest" enabled + And new "PublicCreateTemporaryGrantRequest" request + And body with value {"data": {"attributes": {"expires_at": "2028-02-16T00:00:00Z", "justification": "Credits needed to finish the incident investigation.", "total": 200}, "type": "temporary_grant_requests"}} + When the request is sent + Then the response status is 201 Created + + @generated @skip @team:ddoghq/billing-hub + Scenario: Create a temporary grant request returns "Not Found" response + Given operation "PublicCreateTemporaryGrantRequest" enabled + And new "PublicCreateTemporaryGrantRequest" request + And body with value {"data": {"attributes": {"expires_at": "2028-02-16T00:00:00Z", "justification": "Credits needed to finish the incident investigation.", "total": 200}, "type": "temporary_grant_requests"}} + When the request is sent + Then the response status is 404 Not Found + + @team:ddoghq/billing-hub + Scenario: Create a temporary grant request with a justification + Given operation "PublicCreateTemporaryGrantRequest" enabled + And new "PublicCreateTemporaryGrantRequest" request + And body with value {"data":{"type":"temporary_grant_requests","attributes":{"total":200,"justification":"SDK temporary grant request test"}}} + When the request is sent + Then the response status is 201 Created + And the response "data.attributes.status" is equal to "pending" + And the response "data.attributes.total" is equal to 200 + @generated @skip @team:ddoghq/billing-hub Scenario: Create or update usage quotas returns "Bad Request. Returned if the request is malformed, including when an item sets `pending_usage_limit` on a scoped quota, provides `enforced` without `usage_limit`, or provides neither limit. A pending-only item for a quota that does not exist is reported in that item's `error`; when only the caller's organization is targeted, this failure returns `400`." response Given operation "CreateQuotas" enabled @@ -59,6 +133,42 @@ Feature: Usage Metering When the request is sent Then the response status is 200 OK. The response includes each item's result; see each item's `error` attribute for any that failed to write. + @generated @skip @team:ddoghq/billing-hub + Scenario: Decide a temporary grant request returns "Bad Request" response + Given operation "PublicDecideTemporaryGrantRequest" enabled + And new "PublicDecideTemporaryGrantRequest" request + And request contains "request_id" parameter from "REPLACE.ME" + And body with value {"data": {"attributes": {"decision": "approved"}, "id": "12345678-1234-1234-1234-123456789012", "type": "temporary_grant_requests"}} + When the request is sent + Then the response status is 400 Bad Request + + @generated @skip @team:ddoghq/billing-hub + Scenario: Decide a temporary grant request returns "Conflict" response + Given operation "PublicDecideTemporaryGrantRequest" enabled + And new "PublicDecideTemporaryGrantRequest" request + And request contains "request_id" parameter from "REPLACE.ME" + And body with value {"data": {"attributes": {"decision": "approved"}, "id": "12345678-1234-1234-1234-123456789012", "type": "temporary_grant_requests"}} + When the request is sent + Then the response status is 409 Conflict + + @generated @skip @team:ddoghq/billing-hub + Scenario: Decide a temporary grant request returns "Not Found" response + Given operation "PublicDecideTemporaryGrantRequest" enabled + And new "PublicDecideTemporaryGrantRequest" request + And request contains "request_id" parameter from "REPLACE.ME" + And body with value {"data": {"attributes": {"decision": "approved"}, "id": "12345678-1234-1234-1234-123456789012", "type": "temporary_grant_requests"}} + When the request is sent + Then the response status is 404 Not Found + + @generated @skip @team:ddoghq/billing-hub + Scenario: Decide a temporary grant request returns "OK" response + Given operation "PublicDecideTemporaryGrantRequest" enabled + And new "PublicDecideTemporaryGrantRequest" request + And request contains "request_id" parameter from "REPLACE.ME" + And body with value {"data": {"attributes": {"decision": "approved"}, "id": "12345678-1234-1234-1234-123456789012", "type": "temporary_grant_requests"}} + When the request is sent + Then the response status is 200 OK + @generated @skip @team:ddoghq/billing-hub Scenario: Delete a usage quota returns "No Content" response Given operation "DeleteQuota" enabled @@ -77,6 +187,15 @@ Feature: Usage Metering When the request is sent Then the response status is 404 Not Found + @team:ddoghq/billing-hub + Scenario: Deny a missing temporary grant request returns Not Found + Given operation "PublicDecideTemporaryGrantRequest" enabled + And new "PublicDecideTemporaryGrantRequest" request + And request contains "request_id" parameter with value "11111111-1111-1111-1111-111111111111" + And body with value {"data":{"type":"temporary_grant_requests","attributes":{"decision":"denied"}}} + When the request is sent + Then the response status is 404 Not Found + @replay-only @team:ddoghq/billing-hub Scenario: Get Monthly Cost Attribution returns "Bad Request" response Given new "GetMonthlyCostAttribution" request @@ -107,6 +226,38 @@ Feature: Usage Metering When the request is sent Then the response status is 200 OK + @generated @skip @team:ddoghq/billing-hub + Scenario: Get an organization temporary grant request returns "Bad Request" response + Given operation "PublicGetTemporaryGrantRequest" enabled + And new "PublicGetTemporaryGrantRequest" request + And request contains "request_id" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 400 Bad Request + + @generated @skip @team:ddoghq/billing-hub + Scenario: Get an organization temporary grant request returns "Conflict" response + Given operation "PublicGetTemporaryGrantRequest" enabled + And new "PublicGetTemporaryGrantRequest" request + And request contains "request_id" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 409 Conflict + + @generated @skip @team:ddoghq/billing-hub + Scenario: Get an organization temporary grant request returns "Not Found" response + Given operation "PublicGetTemporaryGrantRequest" enabled + And new "PublicGetTemporaryGrantRequest" request + And request contains "request_id" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 404 Not Found + + @generated @skip @team:ddoghq/billing-hub + Scenario: Get an organization temporary grant request returns "OK" response + Given operation "PublicGetTemporaryGrantRequest" enabled + And new "PublicGetTemporaryGrantRequest" request + And request contains "request_id" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 200 OK + @team:ddoghq/billing-hub Scenario: Get available fields for usage summary returns "Bad Request" response Given new "GetUsageSummaryAvailableFields" request @@ -289,6 +440,38 @@ Feature: Usage Metering When the request is sent Then the response status is 200 OK + @generated @skip @team:ddoghq/billing-hub + Scenario: Get your temporary grant request returns "Bad Request" response + Given operation "PublicGetMyTemporaryGrantRequest" enabled + And new "PublicGetMyTemporaryGrantRequest" request + And request contains "request_id" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 400 Bad Request + + @generated @skip @team:ddoghq/billing-hub + Scenario: Get your temporary grant request returns "Conflict" response + Given operation "PublicGetMyTemporaryGrantRequest" enabled + And new "PublicGetMyTemporaryGrantRequest" request + And request contains "request_id" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 409 Conflict + + @generated @skip @team:ddoghq/billing-hub + Scenario: Get your temporary grant request returns "Not Found" response + Given operation "PublicGetMyTemporaryGrantRequest" enabled + And new "PublicGetMyTemporaryGrantRequest" request + And request contains "request_id" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 404 Not Found + + @generated @skip @team:ddoghq/billing-hub + Scenario: Get your temporary grant request returns "OK" response + Given operation "PublicGetMyTemporaryGrantRequest" enabled + And new "PublicGetMyTemporaryGrantRequest" request + And request contains "request_id" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 200 OK + @team:ddoghq/billing-hub Scenario: GetEstimatedCostByOrg with both start_month and start_date returns "Bad Request" response Given new "GetEstimatedCostByOrg" request @@ -306,6 +489,41 @@ Feature: Usage Metering When the request is sent Then the response status is 200 OK + @generated @skip @team:ddoghq/billing-hub + Scenario: List organization temporary grant requests returns "Bad Request" response + Given operation "PublicListTemporaryGrantRequests" enabled + And new "PublicListTemporaryGrantRequests" request + When the request is sent + Then the response status is 400 Bad Request + + @generated @skip @team:ddoghq/billing-hub + Scenario: List organization temporary grant requests returns "Conflict" response + Given operation "PublicListTemporaryGrantRequests" enabled + And new "PublicListTemporaryGrantRequests" request + When the request is sent + Then the response status is 409 Conflict + + @generated @skip @team:ddoghq/billing-hub + Scenario: List organization temporary grant requests returns "Not Found" response + Given operation "PublicListTemporaryGrantRequests" enabled + And new "PublicListTemporaryGrantRequests" request + When the request is sent + Then the response status is 404 Not Found + + @generated @skip @team:ddoghq/billing-hub + Scenario: List organization temporary grant requests returns "OK" response + Given operation "PublicListTemporaryGrantRequests" enabled + And new "PublicListTemporaryGrantRequests" request + When the request is sent + Then the response status is 200 OK + + @generated @skip @team:ddoghq/billing-hub @with-pagination + Scenario: List organization temporary grant requests returns "OK" response with pagination + Given operation "PublicListTemporaryGrantRequests" enabled + And new "PublicListTemporaryGrantRequests" request + When the request with pagination is sent + Then the response status is 200 OK + @generated @skip @team:ddoghq/billing-hub Scenario: List usage quotas returns "Bad Request" response Given operation "ListQuotas" enabled @@ -330,6 +548,93 @@ Feature: Usage Metering When the request with pagination is sent Then the response status is 200 OK + @team:ddoghq/billing-hub + Scenario: List your pending temporary grant requests + Given operation "PublicListMyTemporaryGrantRequests" enabled + And new "PublicListMyTemporaryGrantRequests" request + And request contains "filter[status]" parameter with value "pending" + And request contains "page[limit]" parameter with value 1 + When the request is sent + Then the response status is 200 OK + + @generated @skip @team:ddoghq/billing-hub + Scenario: List your temporary grant requests returns "Bad Request" response + Given operation "PublicListMyTemporaryGrantRequests" enabled + And new "PublicListMyTemporaryGrantRequests" request + When the request is sent + Then the response status is 400 Bad Request + + @generated @skip @team:ddoghq/billing-hub + Scenario: List your temporary grant requests returns "Conflict" response + Given operation "PublicListMyTemporaryGrantRequests" enabled + And new "PublicListMyTemporaryGrantRequests" request + When the request is sent + Then the response status is 409 Conflict + + @generated @skip @team:ddoghq/billing-hub + Scenario: List your temporary grant requests returns "Not Found" response + Given operation "PublicListMyTemporaryGrantRequests" enabled + And new "PublicListMyTemporaryGrantRequests" request + When the request is sent + Then the response status is 404 Not Found + + @generated @skip @team:ddoghq/billing-hub + Scenario: List your temporary grant requests returns "OK" response + Given operation "PublicListMyTemporaryGrantRequests" enabled + And new "PublicListMyTemporaryGrantRequests" request + When the request is sent + Then the response status is 200 OK + + @generated @skip @team:ddoghq/billing-hub @with-pagination + Scenario: List your temporary grant requests returns "OK" response with pagination + Given operation "PublicListMyTemporaryGrantRequests" enabled + And new "PublicListMyTemporaryGrantRequests" request + When the request with pagination is sent + Then the response status is 200 OK + + @team:ddoghq/billing-hub + Scenario: Read an owned temporary grant request + Given operation "PublicCreateTemporaryGrantRequest" enabled + And operation "PublicGetMyTemporaryGrantRequest" enabled + And there is a valid "temporary_grant_request" in the system + And new "PublicGetMyTemporaryGrantRequest" request + And request contains "request_id" parameter from "temporary_grant_request.data.id" + When the request is sent + Then the response status is 200 OK + And the response "data.attributes.justification" is equal to "SDK temporary grant request test" + + @generated @skip @team:ddoghq/billing-hub + Scenario: Revoke a requested temporary grant returns "Bad Request" response + Given operation "PublicRevokeRequestedTemporaryGrant" enabled + And new "PublicRevokeRequestedTemporaryGrant" request + And request contains "request_id" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 400 Bad Request + + @generated @skip @team:ddoghq/billing-hub + Scenario: Revoke a requested temporary grant returns "Conflict" response + Given operation "PublicRevokeRequestedTemporaryGrant" enabled + And new "PublicRevokeRequestedTemporaryGrant" request + And request contains "request_id" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 409 Conflict + + @generated @skip @team:ddoghq/billing-hub + Scenario: Revoke a requested temporary grant returns "No Content" response + Given operation "PublicRevokeRequestedTemporaryGrant" enabled + And new "PublicRevokeRequestedTemporaryGrant" request + And request contains "request_id" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 204 No Content + + @generated @skip @team:ddoghq/billing-hub + Scenario: Revoke a requested temporary grant returns "Not Found" response + Given operation "PublicRevokeRequestedTemporaryGrant" enabled + And new "PublicRevokeRequestedTemporaryGrant" request + And request contains "request_id" parameter from "REPLACE.ME" + When the request is sent + Then the response status is 404 Not Found + @generated @skip @team:ddoghq/billing-hub Scenario: Update a usage quota returns "Bad Request. Returned if the request is malformed, if the `id` in the request body does not match the `id` in the request path, if none of `usage_limit`, `enforced`, or `pending_usage_limit` is provided, or if `pending_usage_limit` is set on a scoped quota." response Given operation "UpdateQuota" enabled diff --git a/src/test/resources/generated-test/test-runner-data/manifest.json b/src/test/resources/generated-test/test-runner-data/manifest.json index 976b3017394..228a6a2efd6 100644 --- a/src/test/resources/generated-test/test-runner-data/manifest.json +++ b/src/test/resources/generated-test/test-runner-data/manifest.json @@ -12355,6 +12355,20 @@ "scenario": "Ingest STIX threat intelligence returns \"OK\" response", "version": "v2" }, + { + "feature": "Usage Metering", + "feature_file": "../../com/datadog/api/client/v2/api/usage_metering.feature", + "file": "v2/usage-metering/create-a-temporary-grant-request-with-a-justification.json", + "scenario": "Create a temporary grant request with a justification", + "version": "v2" + }, + { + "feature": "Usage Metering", + "feature_file": "../../com/datadog/api/client/v2/api/usage_metering.feature", + "file": "v2/usage-metering/deny-a-missing-temporary-grant-request-returns-not-found.json", + "scenario": "Deny a missing temporary grant request returns Not Found", + "version": "v2" + }, { "feature": "Usage Metering", "feature_file": "../../com/datadog/api/client/v2/api/usage_metering.feature", @@ -12432,6 +12446,20 @@ "scenario": "GetEstimatedCostByOrg with start_month returns \"OK\" response", "version": "v2" }, + { + "feature": "Usage Metering", + "feature_file": "../../com/datadog/api/client/v2/api/usage_metering.feature", + "file": "v2/usage-metering/list-your-pending-temporary-grant-requests.json", + "scenario": "List your pending temporary grant requests", + "version": "v2" + }, + { + "feature": "Usage Metering", + "feature_file": "../../com/datadog/api/client/v2/api/usage_metering.feature", + "file": "v2/usage-metering/read-an-owned-temporary-grant-request.json", + "scenario": "Read an owned temporary grant request", + "version": "v2" + }, { "feature": "Users", "feature_file": "../../com/datadog/api/client/v2/api/users.feature", diff --git a/src/test/resources/generated-test/test-runner-data/v2/usage-metering/create-a-temporary-grant-request-with-a-justification.json b/src/test/resources/generated-test/test-runner-data/v2/usage-metering/create-a-temporary-grant-request-with-a-justification.json new file mode 100644 index 00000000000..e047cd1a72d --- /dev/null +++ b/src/test/resources/generated-test/test-runner-data/v2/usage-metering/create-a-temporary-grant-request-with-a-justification.json @@ -0,0 +1,34 @@ +{ + "api": "UsageMetering", + "expected_status": 201, + "feature": "Usage Metering", + "id": "v2/Usage Metering/Create a temporary grant request with a justification", + "operation_id": "PublicCreateTemporaryGrantRequest", + "request": { + "body": { + "schema": { + "format": null, + "ref": "TemporaryGrantRequestCreateRequest", + "type": "object" + }, + "source": "inline", + "value": { + "data": { + "attributes": { + "justification": "SDK temporary grant request test", + "total": 200 + }, + "type": "temporary_grant_requests" + } + } + }, + "content_type": "application/json", + "method": "POST", + "pagination": false, + "parameters": [], + "path": "/api/v2/usage/temporary-grant-requests" + }, + "scenario": "Create a temporary grant request with a justification", + "schema_version": 1, + "version": "v2" +} diff --git a/src/test/resources/generated-test/test-runner-data/v2/usage-metering/deny-a-missing-temporary-grant-request-returns-not-found.json b/src/test/resources/generated-test/test-runner-data/v2/usage-metering/deny-a-missing-temporary-grant-request-returns-not-found.json new file mode 100644 index 00000000000..46c5df3bcb3 --- /dev/null +++ b/src/test/resources/generated-test/test-runner-data/v2/usage-metering/deny-a-missing-temporary-grant-request-returns-not-found.json @@ -0,0 +1,50 @@ +{ + "api": "UsageMetering", + "expected_status": 404, + "feature": "Usage Metering", + "id": "v2/Usage Metering/Deny a missing temporary grant request returns Not Found", + "operation_id": "PublicDecideTemporaryGrantRequest", + "request": { + "body": { + "schema": { + "format": null, + "ref": "TemporaryGrantRequestDecisionRequest", + "type": "object" + }, + "source": "inline", + "value": { + "data": { + "attributes": { + "decision": "denied" + }, + "type": "temporary_grant_requests" + } + } + }, + "content_type": "application/json", + "method": "POST", + "pagination": false, + "parameters": [ + { + "explode": null, + "in": "path", + "name": "request_id", + "required": true, + "schema": { + "format": "uuid", + "ref": null, + "type": "string" + }, + "source": { + "type": "literal", + "value": "11111111-1111-1111-1111-111111111111" + }, + "style": null + } + ], + "path": "/api/v2/usage/admin/temporary-grant-requests/{request_id}/decision" + }, + "scenario": "Deny a missing temporary grant request returns Not Found", + "schema_version": 1, + "version": "v2" +} diff --git a/src/test/resources/generated-test/test-runner-data/v2/usage-metering/list-your-pending-temporary-grant-requests.json b/src/test/resources/generated-test/test-runner-data/v2/usage-metering/list-your-pending-temporary-grant-requests.json new file mode 100644 index 00000000000..7c5ae3b1d9d --- /dev/null +++ b/src/test/resources/generated-test/test-runner-data/v2/usage-metering/list-your-pending-temporary-grant-requests.json @@ -0,0 +1,51 @@ +{ + "api": "UsageMetering", + "expected_status": 200, + "feature": "Usage Metering", + "id": "v2/Usage Metering/List your pending temporary grant requests", + "operation_id": "PublicListMyTemporaryGrantRequests", + "request": { + "body": null, + "content_type": null, + "method": "GET", + "pagination": false, + "parameters": [ + { + "explode": null, + "in": "query", + "name": "filter[status]", + "required": false, + "schema": { + "format": null, + "ref": "TemporaryGrantRequestStatus", + "type": "string" + }, + "source": { + "type": "literal", + "value": "pending" + }, + "style": null + }, + { + "explode": null, + "in": "query", + "name": "page[limit]", + "required": false, + "schema": { + "format": "int64", + "ref": null, + "type": "integer" + }, + "source": { + "type": "literal", + "value": 1 + }, + "style": null + } + ], + "path": "/api/v2/usage/temporary-grant-requests" + }, + "scenario": "List your pending temporary grant requests", + "schema_version": 1, + "version": "v2" +} diff --git a/src/test/resources/generated-test/test-runner-data/v2/usage-metering/read-an-owned-temporary-grant-request.json b/src/test/resources/generated-test/test-runner-data/v2/usage-metering/read-an-owned-temporary-grant-request.json new file mode 100644 index 00000000000..9af2757b205 --- /dev/null +++ b/src/test/resources/generated-test/test-runner-data/v2/usage-metering/read-an-owned-temporary-grant-request.json @@ -0,0 +1,35 @@ +{ + "api": "UsageMetering", + "expected_status": 200, + "feature": "Usage Metering", + "id": "v2/Usage Metering/Read an owned temporary grant request", + "operation_id": "PublicGetMyTemporaryGrantRequest", + "request": { + "body": null, + "content_type": null, + "method": "GET", + "pagination": false, + "parameters": [ + { + "explode": null, + "in": "path", + "name": "request_id", + "required": true, + "schema": { + "format": "uuid", + "ref": null, + "type": "string" + }, + "source": { + "path": "temporary_grant_request.data.id", + "type": "fixture" + }, + "style": null + } + ], + "path": "/api/v2/usage/temporary-grant-requests/{request_id}" + }, + "scenario": "Read an owned temporary grant request", + "schema_version": 1, + "version": "v2" +}