groups:
  - id: span.aws.client
    type: span
    stability: development
    span_kind: client
    brief: >
        This span describes an AWS SDK client call.
    note: |
        **Span name** MUST be of the format `Service.Operation` as per the
        AWS HTTP API, e.g., `DynamoDB.GetItem`, `S3.ListBuckets`. This is
        equivalent to concatenating `rpc.service` and `rpc.method` with `.` and
        consistent with the naming guidelines for RPC client spans.

        AWS SDK span attributes are based on the request or response parameters
        in AWS SDK API calls. The conventions have been collected over time based
        on feedback from AWS users of tracing and will continue to increase as new
        interesting conventions are found.
    attributes:
      - ref: rpc.system
        brief: "The value `aws-api`."
        requirement_level: required
        examples:
          - aws-api
      - ref: rpc.service
        brief: "The name of the service to which a request is made, as returned by the AWS SDK."
        examples:
          - DynamoDB
          - S3
      - ref: rpc.method
        brief: "The name of the operation corresponding to the request, as returned by the AWS SDK"
        examples:
          - GetItem
          - PutItem
      - ref: aws.request_id
        requirement_level: recommended
      - ref: aws.extended_request_id
        requirement_level:
          conditionally_required: If available.
      - ref: cloud.region
        brief: >
          The AWS Region where the requested service is being accessed.
        requirement_level: recommended
        examples:
          - us-east-1
          - us-west-2
        note: >
          Specifies the AWS Region that the SDK client targets for a given AWS service call.
          The attribute's value should adhere to the AWS Region codes outlined in the
          [AWS documentation](https://docs.aws.amazon.com/global-infrastructure/latest/regions/aws-regions.html#available-regions).

  - id: span.dynamodb.batchgetitem.client
    brief: >
      This span represents a `DynamoDB.BatchGetItem` call.
    note: >
      `db.system.name` MUST be set to `"aws.dynamodb"` and SHOULD be provided **at span creation time**.
    extends: span.aws.client
    stability: development
    type: span
    span_kind: client
    attributes:
      - ref: aws.dynamodb.table_names
        requirement_level: recommended
      - ref: aws.dynamodb.consumed_capacity
        requirement_level: recommended

  - id: span.dynamodb.batchwriteitem.client
    brief: >
      This span represents a `DynamoDB.BatchWriteItem` call.
    note: >
      `db.system.name` MUST be set to `"aws.dynamodb"` and SHOULD be provided **at span creation time**.
    extends: span.aws.client
    type: span
    stability: development
    span_kind: client
    attributes:
      - ref: aws.dynamodb.table_names
        requirement_level: recommended
      - ref: aws.dynamodb.consumed_capacity
        requirement_level: recommended
      - ref: aws.dynamodb.item_collection_metrics
        requirement_level: recommended

  - id: span.dynamodb.createtable.client
    brief: >
      This span represents a `DynamoDB.CreateTable` call.
    note: >
      `db.system.name` MUST be set to `"aws.dynamodb"` and SHOULD be provided **at span creation time**.
    extends: span.aws.client
    type: span
    stability: development
    span_kind: client
    attributes:
      - ref: aws.dynamodb.global_secondary_indexes
        requirement_level: recommended
      - ref: aws.dynamodb.local_secondary_indexes
        requirement_level: recommended
      - ref: aws.dynamodb.table_names
        requirement_level: recommended
        brief: "A single-element array with the value of the TableName request parameter."
        examples:
          - Users
      - ref: aws.dynamodb.consumed_capacity
        requirement_level: recommended
      - ref: aws.dynamodb.item_collection_metrics
        requirement_level: recommended
      - ref: aws.dynamodb.provisioned_read_capacity
        requirement_level: recommended
      - ref: aws.dynamodb.provisioned_write_capacity
        requirement_level: recommended

  - id: span.dynamodb.deleteitem.client
    brief: >
      This span represents a `DynamoDB.DeleteItem` call.
    note: >
      `db.system.name` MUST be set to `"aws.dynamodb"` and SHOULD be provided **at span creation time**.
    extends: span.aws.client
    type: span
    stability: development
    span_kind: client
    attributes:
      - ref: aws.dynamodb.table_names
        requirement_level: recommended
        brief: "A single-element array with the value of the TableName request parameter."
        examples:
          - Users
      - ref: aws.dynamodb.consumed_capacity
        requirement_level: recommended
      - ref: aws.dynamodb.item_collection_metrics
        requirement_level: recommended

  - id: span.dynamodb.deletetable.client
    brief: >
      This span represents a `DynamoDB.DeleteTable` call.
    note: >
      `db.system.name` MUST be set to `"aws.dynamodb"` and SHOULD be provided **at span creation time**.
    extends: span.aws.client
    type: span
    stability: development
    span_kind: client
    attributes:
      - ref: aws.dynamodb.table_names
        requirement_level: recommended
        brief: "A single-element array with the value of the TableName request parameter."
        examples:
          - Users

  - id: span.dynamodb.describetable.client
    brief: >
      This span represents a `DynamoDB.DescribeTable` call.
    note: >
      `db.system.name` MUST be set to `"aws.dynamodb"` and SHOULD be provided **at span creation time**.
    extends: span.aws.client
    type: span
    stability: development
    span_kind: client
    attributes:
      - ref: aws.dynamodb.table_names
        requirement_level: recommended
        brief: "A single-element array with the value of the TableName request parameter."
        examples:
          - Users

  - id: span.dynamodb.getitem.client
    brief: >
      This span represents a `DynamoDB.GetItem` call.
    note: >
      `db.system.name` MUST be set to `"aws.dynamodb"` and SHOULD be provided **at span creation time**.
    extends: span.aws.client
    type: span
    stability: development
    span_kind: client
    attributes:
      - ref: aws.dynamodb.table_names
        requirement_level: recommended
        brief: "A single-element array with the value of the TableName request parameter."
        examples:
          - Users
      - ref: aws.dynamodb.consumed_capacity
        requirement_level: recommended
      - ref: aws.dynamodb.consistent_read
        requirement_level: recommended
      - ref: aws.dynamodb.projection
        requirement_level: recommended

  - id: span.dynamodb.listtables.client
    brief: >
      This span represents a `DynamoDB.ListTables` call.
    note: >
      `db.system.name` MUST be set to `"aws.dynamodb"` and SHOULD be provided **at span creation time**.
    extends: span.aws.client
    type: span
    stability: development
    span_kind: client
    attributes:
      - ref: aws.dynamodb.exclusive_start_table
        requirement_level: recommended
      - ref: aws.dynamodb.table_count
        requirement_level: recommended
      - ref: aws.dynamodb.limit
        requirement_level: recommended

  - id: span.dynamodb.putitem.client
    brief: >
      This span represents a `DynamoDB.PutItem` call.
    note: >
      `db.system.name` MUST be set to `"aws.dynamodb"` and SHOULD be provided **at span creation time**.
    extends: span.aws.client
    type: span
    stability: development
    span_kind: client
    attributes:
      - ref: aws.dynamodb.table_names
        requirement_level: recommended
      - ref: aws.dynamodb.consumed_capacity
        requirement_level: recommended
      - ref: aws.dynamodb.item_collection_metrics
        requirement_level: recommended

  - id: span.dynamodb.query.client
    brief: >
      This span represents a `DynamoDB.Query` call.
    note: >
      `db.system.name` MUST be set to `"aws.dynamodb"` and SHOULD be provided **at span creation time**.
    extends: span.aws.client
    type: span
    stability: development
    span_kind: client
    attributes:
      - ref: aws.dynamodb.scan_forward
        requirement_level: recommended
      - ref: aws.dynamodb.table_names
        requirement_level: recommended
        brief: "A single-element array with the value of the TableName request parameter."
        examples:
          - Users
      - ref: aws.dynamodb.consumed_capacity
        requirement_level: recommended
      - ref: aws.dynamodb.consistent_read
        requirement_level: recommended
      - ref: aws.dynamodb.limit
        requirement_level: recommended
      - ref: aws.dynamodb.projection
        requirement_level: recommended
      - ref: aws.dynamodb.attributes_to_get
        requirement_level: recommended
      - ref: aws.dynamodb.index_name
        requirement_level: recommended
      - ref: aws.dynamodb.select
        requirement_level: recommended

  - id: span.dynamodb.scan.client
    brief: >
      This span represents a `DynamoDB.Scan` call.
    note: >
      `db.system.name` MUST be set to `"aws.dynamodb"` and SHOULD be provided **at span creation time**.
    extends: span.aws.client
    type: span
    stability: development
    span_kind: client
    attributes:
      - ref: aws.dynamodb.segment
        requirement_level: recommended
      - ref: aws.dynamodb.total_segments
        requirement_level: recommended
      - ref: aws.dynamodb.count
        requirement_level: recommended
      - ref: aws.dynamodb.scanned_count
        requirement_level: recommended
      - ref: aws.dynamodb.table_names
        requirement_level: recommended
        brief: "A single-element array with the value of the TableName request parameter."
        examples:
          - Users
      - ref: aws.dynamodb.consumed_capacity
        requirement_level: recommended
      - ref: aws.dynamodb.consistent_read
        requirement_level: recommended
      - ref: aws.dynamodb.limit
        requirement_level: recommended
      - ref: aws.dynamodb.projection
        requirement_level: recommended
      - ref: aws.dynamodb.attributes_to_get
        requirement_level: recommended
      - ref: aws.dynamodb.index_name
        requirement_level: recommended
      - ref: aws.dynamodb.select
        requirement_level: recommended

  - id: span.dynamodb.updateitem.client
    brief: >
      This span represents a `DynamoDB.UpdateItem` call.
    note: >
      `db.system.name` MUST be set to `"aws.dynamodb"` and SHOULD be provided **at span creation time**.
    extends: span.aws.client
    type: span
    span_kind: client
    stability: development
    attributes:
      - ref: aws.dynamodb.table_names
        requirement_level: recommended
        brief: "A single-element array with the value of the TableName request parameter."
        examples:
          - Users
      - ref: aws.dynamodb.consumed_capacity
        requirement_level: recommended
      - ref: aws.dynamodb.item_collection_metrics
        requirement_level: recommended

  - id: span.dynamodb.updatetable.client
    brief: >
      This span represents a `DynamoDB.UpdateTable` call.
    note: >
      `db.system.name` MUST be set to `"aws.dynamodb"` and SHOULD be provided **at span creation time**.
    extends: span.aws.client
    type: span
    stability: development
    span_kind: client
    attributes:
      - ref: aws.dynamodb.attribute_definitions
        requirement_level: recommended
      - ref: aws.dynamodb.global_secondary_index_updates
        requirement_level: recommended
      - ref: aws.dynamodb.table_names
        requirement_level: recommended
        brief: "A single-element array with the value of the TableName request parameter."
        examples:
          - Users
      - ref: aws.dynamodb.consumed_capacity
        requirement_level: recommended
      - ref: aws.dynamodb.provisioned_read_capacity
        requirement_level: recommended
      - ref: aws.dynamodb.provisioned_write_capacity
        requirement_level: recommended

  - id: span.aws.s3.client
    extends: span.aws.client
    type: span
    stability: development
    span_kind: client
    brief: >
      Semantic Conventions for AWS S3 client spans extend the general
      [AWS SDK Semantic Conventions](/docs/cloud-providers/aws-sdk.md)
    attributes:
      - ref: aws.s3.bucket
        requirement_level: recommended
      - ref: aws.s3.key
        requirement_level: recommended
      - ref: aws.s3.copy_source
        requirement_level: recommended
      - ref: aws.s3.upload_id
        requirement_level: recommended
      - ref: aws.s3.delete
        requirement_level: recommended
      - ref: aws.s3.part_number
        requirement_level: recommended
