openapi: 3.1.0 info: description: '### Welcome to the Archera.ai API documentation. Archera.ai empowers organizations to optimize cloud costs and automate cloud financial operations. Our API enables seamless integration with your internal tools, workflows, and reporting systems. With this API, you can programmatically access commitment plans, metrics, and more, unlocking the full potential of your cloud data. Whether you''re building custom dashboards, automating cost management, or integrating with third-party platforms, the Archera.ai API provides secure and reliable endpoints to help you achieve your goals. If you have questions or need support, please contact our team at support@archera.ai. ## API Key Access To use this API, you need an API key. ### How to Create an API Key 1. Log in to the Archera.ai web application. 2. Navigate to **User Settings > API Access**. Open Settings 3. Click **Create New API Key**. 4. Copy and securely store your new API key. ### How to Use Your API Key Use the `x-api-key` header: ```bash curl -H ''x-api-key: YOUR_API_KEY'' https://api.archera.ai/v1/org/{org_id}/metrics?provider=aws ``` Keep your API key secure. If you believe your key has been compromised, deactivate it in the web application and generate a new one. ### How to find your Organization ID 1. Log in to the Archera.ai web application. 2. Navigate to **User Settings > Organization**. 3. Your Organization ID is displayed at the top of the page. You can also find it in the URL when visiting the Archera app `&orgId=` ' title: Archera.ai Commitment Plans Resources API version: v1.0.0 tags: - name: Resources description: API for retrieving and analyzing infrastructure resources paths: /v1/org/{org_id}/resources: parameters: - in: path name: org_id required: true schema: type: string format: uuid get: parameters: - in: query name: provider description: Filter by provider schema: type: string enum: - aws - azure - gcp example: aws required: false - in: query name: segment_id description: Filter by segment ID schema: type: string format: uuid example: 550e8400-e29b-41d4-a716-446655440000 required: false - in: query name: search description: Text to search across multiple columns (case-insensitive partial match) schema: type: string example: us-east-1 required: false - in: query name: desc description: Sort in descending order if true schema: type: - boolean - 'null' default: null example: 'true' required: false - in: query name: order_by description: Field to order results by schema: type: - string - 'null' default: id enum: - id - usage_start - null example: id required: false - in: query name: page schema: type: integer default: 1 minimum: 1 required: false - in: query name: page_size schema: type: integer default: 20 minimum: 1 maximum: 100 required: false responses: '422': $ref: '#/components/responses/UNPROCESSABLE_CONTENT' '200': description: OK content: application/json: schema: type: array items: $ref: '#/components/schemas/ResourceSKU' headers: X-Pagination: $ref: '#/components/headers/PAGINATION' default: $ref: '#/components/responses/DEFAULT_ERROR' '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/ApiErrorResponse' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/ApiErrorResponse' '403': description: Forbidden content: application/json: schema: $ref: '#/components/schemas/ApiErrorResponse' '404': description: Not found content: application/json: schema: $ref: '#/components/schemas/ApiErrorResponse' '409': description: Conflict content: application/json: schema: $ref: '#/components/schemas/ApiErrorResponse' '405': description: Method not allowed content: application/json: schema: $ref: '#/components/schemas/ApiErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ApiErrorResponse' tags: - Resources summary: /resources description: Retrieves a list of infrastructure resources for the organization, including compute instances, databases, and other services with their current status and costs. /v1/org/{org_id}/resources/{resource_id}/daily-usage: parameters: - in: path name: org_id required: true schema: type: string format: uuid - in: path name: resource_id required: true schema: type: string format: uuid get: parameters: - in: query name: start_date description: Start date for the date range filter (inclusive) schema: type: string format: date example: '2024-01-01' required: true - in: query name: end_date description: End date for the date range filter (inclusive) schema: type: string format: date example: '2024-01-31' required: true - in: query name: catalog_sku_id description: Optional catalog SKU ID to filter daily usage records for a specific SKU schema: type: - string - 'null' format: uuid example: 550e8400-e29b-41d4-a716-446655440000 required: false - in: query name: page schema: type: integer default: 1 minimum: 1 required: false - in: query name: page_size schema: type: integer default: 100 minimum: 1 maximum: 10000 required: false responses: '422': $ref: '#/components/responses/UNPROCESSABLE_CONTENT' '200': description: OK content: application/json: schema: type: array items: $ref: '#/components/schemas/SKUUsageDaily' headers: X-Pagination: $ref: '#/components/headers/PAGINATION' default: $ref: '#/components/responses/DEFAULT_ERROR' '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/ApiErrorResponse' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/ApiErrorResponse' '403': description: Forbidden content: application/json: schema: $ref: '#/components/schemas/ApiErrorResponse' '404': description: Not found content: application/json: schema: $ref: '#/components/schemas/ApiErrorResponse' '409': description: Conflict content: application/json: schema: $ref: '#/components/schemas/ApiErrorResponse' '405': description: Method not allowed content: application/json: schema: $ref: '#/components/schemas/ApiErrorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ApiErrorResponse' tags: - Resources summary: /resources/{resource_id}/daily-usage description: Retrieves daily usage data for a specific resource within the specified date range. Optionally filter by catalog_sku_id to get usage for a specific SKU. Including usage metrics, costs, and coverage information. components: schemas: ApiErrorResponse: type: object properties: message: type: string detail: {} code: type: - string - 'null' url: type: - string - 'null' timestamp: type: string type: type: string required: - message - timestamp - type ResourceSKU: type: object properties: id: type: string resource_id: type: string format: uuid description: Unique identifier for the underlying resource provider: type: string enum: - aws - azure - gcp provider_resource_id: type: string description: Provider's unique identifier (e.g., ARN for AWS) example: arn:aws:ec2:us-west-2:123456789012:instance/i-1234567890abcdef0 is_spot: type: boolean description: Whether this is a spot instance (a way to utilize unused instances) name: type: - string - 'null' resource_group: type: - string - 'null' description: Azure resource group usage_end: type: string format: date description: Last date this resource had usage usage_start: type: string format: date description: First date this resource had usage tags: type: object additionalProperties: type: string created_at: type: string format: date updated_at: type: string format: date instance_id: readOnly: true type: string billing_account_id: type: string description: Management account ID (AWS) or billing account ID (Azure/GCP) sub_account_id: type: string description: Account ID where the resource is running management_account_id: readOnly: true description: Management account ID (AWS) or billing account ID (Azure/GCP) deprecated: true type: string owner_account_id: readOnly: true description: Account ID where the resource is running deprecated: true type: string sku_title: readOnly: true type: string sku_name: type: - string - 'null' availability_zone: type: - string - 'null' cache_engine: type: - string - 'null' description: Cache engine type (e.g., Redis, Memcached) database_engine: type: - string - 'null' description: Database engine type (e.g., MySQL, PostgreSQL) description: type: - string - 'null' family: type: - string - 'null' description: Service or product family (e.g., 'Compute', 'Storage') full_region_name: type: - string - 'null' has_ondemand_terms: type: - boolean - 'null' description: Whether on-demand pricing is available for this SKU instance_type: type: - string - 'null' description: Instance type (e.g., 'm5.large', 'Standard_D4s_v3') instance_type_family: type: - string - 'null' description: Instance family (e.g., 'm5', 'Standard_D') is_reservable: type: - boolean - 'null' description: Whether this resource type supports reservations/commitments license_model: type: - string - 'null' location_type: type: - string - 'null' normalization_size_factor: type: - string - 'null' operating_system: type: - string - 'null' pre_installed_sw: type: - string - 'null' price_currency: type: - string - 'null' provider_service: type: - string - 'null' provider_sku_id: type: - string - 'null' publication_date: type: - string - 'null' region: type: - string - 'null' service: type: - string - 'null' description: Service name (e.g., 'Amazon Elastic Compute Cloud') tenancy: type: - string - 'null' usage_type: type: - string - 'null' version: type: - string - 'null' vpc_networking_support: type: - boolean - 'null' ondemand_usage_unit: type: - string - 'null' required: - billing_account_id - created_at - id - is_spot - management_account_id - owner_account_id - provider - provider_resource_id - resource_id - sub_account_id - tags - updated_at - usage_end - usage_start additionalProperties: false PaginationMetadata: type: object properties: total: type: integer description: Total number of items. total_pages: type: integer description: Total number of pages. first_page: type: integer description: First available page number. last_page: type: integer description: Last available page number. page: type: integer description: Current page number. previous_page: type: integer description: Previous page number. next_page: type: integer description: Next page number. additionalProperties: false SKUUsageDaily: type: object properties: date: type: string format: date usage_account_id: readOnly: true deprecated: true type: string sub_account_id: type: string usage: type: number reservation_usage: type: number free_tier_usage: type: number ondemand_cost: type: number reserved_cost: type: number if_all_ondemand_cost: type: number spot_cost: type: number free_tier_savings: type: number usage_type: type: - string - 'null' common_usage_type: type: - string - 'null' covered_usage: type: number uptime: type: number required: - common_usage_type - covered_usage - date - free_tier_savings - free_tier_usage - if_all_ondemand_cost - ondemand_cost - reservation_usage - reserved_cost - spot_cost - sub_account_id - uptime - usage - usage_account_id - usage_type additionalProperties: false Error: type: object properties: code: type: integer description: Error code status: type: string description: Error name message: type: string description: Error message errors: type: object description: Errors additionalProperties: {} additionalProperties: false responses: UNPROCESSABLE_CONTENT: description: Unprocessable Content content: application/json: schema: $ref: '#/components/schemas/Error' DEFAULT_ERROR: description: Default error response content: application/json: schema: $ref: '#/components/schemas/Error' headers: PAGINATION: description: Pagination metadata schema: $ref: '#/components/schemas/PaginationMetadata'