openapi: 3.0.0
info:
  title: ECS Target EES Discovery API
  description: |
    API for Target EES Discovery.  
    © 2025, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC).  
    All rights reserved.
  version: 1.2.0
externalDocs:
  description: >
    3GPP TS 29.558 V19.5.0 Enabling Edge Applications;
    Application Programming Interface (API) specification; Stage 3
  url: https://www.3gpp.org/ftp/Specs/archive/29_series/29.558/
security:
  - {}
  - oAuth2ClientCredentials: []
servers:
  - url: '{apiRoot}/eecs-targeteesdiscovery/v1'
    variables:
      apiRoot:
        default: https://example.com
        description: apiRoot as defined in clause 7.5 of 3GPP TS 29.558.

paths:
  /ees-profiles:
    get:
      summary: Read all the targeted Enabler Server Profiles
      operationId: GetEESProfiles
      tags:
        - EES Profiles (Collection)
      description: Retrieve the T-EES information.
      parameters:
        - name: ees-id
          in: query
          description: Unique identifier of the source Enabler Server.
          required: true
          schema:
            type: string
        - name: eas-id
          in: query
          description: Unique identifier of the source Application Server.
          required: true
          schema:
            type: string
        - name: target-dnai
          in: query
          description: >
            The DNAI information associated with the potential target Enabler Server(s)
            and/or target Application Server(s).
          required: false
          schema:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnai'
        - name: cand-dnais-info
          in: query
          description: >
            Contains the candidate DNAI(s) related information.
            This query parameter is applicable only for the common EAS case.
            When the "EdgeApp_3" feature is supported, this query parameter and the target-dnai
            Query parameter are mutually exclusive.
          required: false
          style: form
          explode: false
          schema:
            type: array
            items:
              $ref: '#/components/schemas/CandidateDnaisInfo'
            minItems: 1
        - name: ue-id
          in: query
          description: Identifier of the UE.
          required: false
          schema:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi'
        - name: ue-location
          in: query
          description: The location information of the UE.
          required: false
          content:
            application/json:
              schema:
                $ref: 'TS29122_CommonData.yaml#/components/schemas/LocationArea5G'
        - name: eec-srv-cont-supp
          in: query
          description: >
            Indicates whether the EEC supports service continuity or not and the related service
            continuity support information.
          required: false
          schema:
            $ref: 'TS29558_Eees_EECContextRelocation.yaml#/components/schemas/EECSrvContinuitySupport'
        - name: ac-svc-cont-supp
          in: query
          description: >
            Indicates that the AC supports service continuity and contains the related service
            continuity support information (i.e., supported ACR scenarios).
          required: false
          schema:
            type: array
            items:
              $ref: 'TS29558_Eecs_EESRegistration.yaml#/components/schemas/ACRScenario'
            minItems: 1
        - name: bdl-id
          in: query
          description: >
            Contains EAS bundle identifier.
          required: false
          schema:
            type: string
        - name: bdl-type
          in: query
          description: >
            Contains EAS bundle type.
          required: false
          schema:
            $ref: 'TS29558_Eees_EASRegistration.yaml#/components/schemas/BdlType'
        - name: eas-ids-list
          in: query
          description: >
            Contains the list of the identifier(s) of the EAS(s) associated with the EAS bundle.
          required: false
          style: form
          explode: false
          schema:
            type: array
            items:
              type: string
            minItems: 1
        - name: ens-ind
          in: query
          description: indicates whether edge node sharing is requested.
          required: false
          schema:
            type: boolean
            description: >
              Set to true if edge node sharing is requested.
              Set to false if edge node sharing is not requested.
              The default value when omitted is false. 
        - name: app-grp-id
          in: query
          description: >
            Contains the application group identifier.
          required: false
          schema:
            type: string
        - name: supp-feats
          in: query
          description: Contains the list of supported feature(s).
          required: false
          schema:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures'
        - name: serving-mno-info
          in: query
          description: >
            Contains the serving MNO information, i.e., the MNO that is serving the subscriber.
          required: false
          schema:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnIdNid'
        - name: pred-exp-time
          in: query
          description: >
            Contains the prediction expiration time.
          required: false
          schema:
            $ref: 'TS29122_CommonData.yaml#/components/schemas/DateTime'
        - name: tunnel-info
          in: query
          description: >
            Contains the target tunnel information.
          required: false
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TunnelInfo'
      responses:
        '200':
          description: >
            The EDN configuration and the Enabler Server information determined by the ECS.
          content:
            application/json:
              schema:
                $ref: 'TS24558_Eecs_ServiceProvisioning.yaml#/components/schemas/ECSServProvResp'
        '400':
          $ref: 'TS29122_CommonData.yaml#/components/responses/400'
        '401':
          $ref: 'TS29122_CommonData.yaml#/components/responses/401'
        '403':
          $ref: 'TS29122_CommonData.yaml#/components/responses/403'
        '404':
          $ref: 'TS29122_CommonData.yaml#/components/responses/404'
        '406':
          $ref: 'TS29122_CommonData.yaml#/components/responses/406'
        '429':
          $ref: 'TS29122_CommonData.yaml#/components/responses/429'
        '500':
          $ref: 'TS29122_CommonData.yaml#/components/responses/500'
        '503':
          $ref: 'TS29122_CommonData.yaml#/components/responses/503'
        default:
          $ref: 'TS29122_CommonData.yaml#/components/responses/default'
components:
  securitySchemes:
    oAuth2ClientCredentials:
      type: oauth2
      flows:
        clientCredentials:
          tokenUrl: '{tokenUrl}'
          scopes: {}

#
# STRUCTURED DATA TYPES
#

  schemas:
    TunnelInfo:
      description: >
        Represents the tunnel information.
      type: object
      properties:
        servProvId:
          type: string
        endPoint:
          $ref: 'TS29571_CommonData.yaml#/components/schemas/TunnelAddress'
      required:
        - servProvId
        - endPoint

    CandidateDnaisInfo:
      description: >
        Represents the candidate DNAI(s) related information.
      type: object
      properties:
        candidateDnais:
          type: array
          items:
            $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnai'
          minItems: 1
        candDnaisPrioInd:
          type: boolean
          description: >
            Indicates whether the candidate DNAI(s) provided within the candidateDnais attribute are
            in descending priority order, i.e., the lower the array index of the candidateDnais
            attribute the higher the priority of the respective DNAI.
            true indicates that the candidate DNAI(s) provided within the candidateDnais attribute
            are in descending priority order.
            false indicates that the candidate DNAI(s) provided within the candidateDnais attribute
            are not in descending priority order.
            The default value is false if this attribute is omitted.
      required:
        - candidateDnais
