openapi: 3.0.0
info:
  version: 2.3.2
  title: eUICC Setup API
  description: |

    #### Copyright
    © Aeris Communications, Inc. 2026. All rights reserved. No part of this document may be reproduced in any form without the written permission of the copyright owner.

    #### Disclaimer

    The contents of this document are subject to revision without notice due to continued progress in methodology, design and manufacturing.
    Aeris shall have no liability for any error or damage of any kind resulting from the use of this document.

    #### Trademark List

    All trademarks mentioned herein are the property of their respective owners.
    These are shown in the document Trademark Information.

    # Introduction

    This document describes the IoT Accelerator eUICC Setup API. that provides access and
    management of eUICC-related resources such as eUICC Agreements and Localization Tables.
    The eUICC Setup API is based on the Representational State Transfer (REST) interface.
    From this point on, the eUICC Setup API is referred to as API in this document. 
    
    Note: The term service request in this document and the term subscription request in the Service Portal refer to the same concept.

    ## Scope

    This document covers the following topics:

    — An overview of the API

    — A detailed description of all operations offered by the API

    ## Prerequisites
    In this document, it is assumed that the user is familiar with the following:

    — Java Script Object Notation (JSON)

    — Basic understanding of REST web services

    — The [OpenAPI Initiative](https://www.openapis.org/) for the standardized format used in this document.

    ## Related Information
    The definition and explanation of acronyms and terminology and typographic conventions can be found in the following documents:

    — IoTA Glossary of Terms and Acronyms

    — Typographic Conventions

    # General API Guidelines

    ## Compatibility

    API audience must be prepared for compatible API extensions:

    - Be tolerant with unknown fields in the payload (see also Fowler’s "TolerantReader" post), i.e. ignore new fields but do not eliminate them from payload if needed for subsequent PUT requests.
    - Be prepared that "x-extensible-enum" return parameter may deliver new values. Either be agnostic or provide default behavior for unknown values.
    - Be prepared to handle HTTP status codes not explicitly specified in endpoint definitions.
    - Follow the redirect when the server returns HTTP status 301 Moved Permanently.

    ## Security

    This section describes the security measures in the API. Security measures include authentication, authorization, and encryption.

    ### Authentication and Authorization

    The API uses OAuth2 and OpenID Connect (OIDC) for authentication and authorization.

    All API endpoints require authentication, which is performed by passing a token in the Authorization header in each request, preceded by the word Bearer and a space. See the following example:
    ```
    curl -i -X GET "http://<baseURL>/iot/api/x-entities" -H "Content-Type: application/json" -H "Authorization: Bearer <TOKEN_GOES_HERE>"
    ```
    To fetch the token using e.g. curl, submit the following:
    ```
    curl -X POST "https://<baseURL>/iot/api/auth/token" -H "Accept: application/vnd.dcp-v1+json" -H "Content-Type: application/x-www-form-urlencoded" -d "grant_type=password&client_id=<client_id>&username=<username>&password=<password>"
    ```
    ### Encryption

    All API requests are encrypted using the HTTPS protocol to grant secure data transfer.

    
    ## Deprecation

    API deprecation will be reflected in the OpenAPI definition. If a method on a path, a whole path or even a whole API endpoint (multiple paths) should be deprecated, they will be marked as deprecated.
    During deprecation phase, a Deprecation header and a Sunset header fields will be added in the response.

    Example:
    ```
    Deprecation: Tue, 31 Dec 2024 23:59:59 GMT
    Sunset: Wed, 31 Dec 2025 23:59:59 GMT
    ```

    API audience should not start using a deprecated API.

    API audience is encouraged to monitor for Deprecation and Sunset header.

  x-audience: external-public
  x-api-id: 8cd4dc59-bfa5-45f1-9567-460c15b817b1
servers:
  - url: 'https://iot-api.aeris.com/iot/api'
    description: API server
tags:
  - name: 'EuiccAgreement'
    description: eUICC Agreement
  - name: 'LocalizationTable'
    description: Localization table
  - name: 'Locale'
    description: Locale
  - name: 'Activation codes'
    description: Consumer and IoT profile activation code management
paths:
  /activation-codes:
    post:
      tags:
        - 'Activation codes'
      summary: Store activation codes
      operationId: storeActivationCodes
      description: |
        Stores activation codes for a specific locale.  
        **Note:** IMSI is optional for EXTERNAL activation codes, but required for INTERNAL. For INTERNAL, euiccId should not be provided.

        **Note:** For **INTERNAL** activation code type, the `localeId` provided is used solely to import the activation code into the system. Once imported, the activation code may be utilized by any locale that is configured with the same profile specification as the locale used during import.
      parameters:
        - $ref: '#/components/parameters/Header-Content-Type'
        - $ref: '#/components/parameters/Header-Accept-Version'
        - name: Accept
          in: header
          description: Accept content-type and schemas by the client
          content:
            application/json:
              schema:
                type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/StoreActivationCodeRequest'
        required: true
      responses:
        '201':
          description: Created
          allOf:
            - $ref: '#/components/responses/RateLimitedResponse'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ActivationCodeList'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '405':
          $ref: '#/components/responses/405'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
        default:
          description: Internal Server Error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
      security:
        - OAuth2:
            - 'cnx_ss_euicc_activationcode_man'
    get:
      tags:
        - 'Activation codes'
      summary: List activation codes
      operationId: listActivationCodes
      description: Retrieves stored activation codes
      parameters:
        - $ref: '#/components/parameters/Header-Content-Type'
        - $ref: '#/components/parameters/Header-Accept-Version'
        - name: Accept
          in: header
          description: Accept content-type and schemas by the client
          content:
            application/json:
              schema:
                type: string
        - name: organizationId
          in: query
          description: A list of organizations ids for which activation codes should be listed.
          required: true
          style: form
          explode: true
          schema:
            type: array
            items:
              type: string
            maxItems: 1000
        - name: euiccId
          in: query
          description: A list of euicc ids (EIDs) for which activation codes should be listed.
          style: form
          explode: true
          schema:
            type: array
            items:
              type: string
        - name: iccId
          in: query
          description: A list of ICC ids for which activation codes should be listed.
          style: form
          explode: true
          schema:
            type: array
            items:
              type: string
        - name: profileType
          in: query
          description: profile type
          schema:
            type: string
        - name: state
          in: query
          schema:
            $ref: '#/components/schemas/ActivationCodeStateParam'
          description: Filter activation codes by state            
        - name: page
          in: query
          description: Page number
          schema:
            type: integer
            minimum: 0
            default: 0
        - name: limit
          in: query
          description: Number of items per page
          schema:
            type: integer
            minimum: 1
            maximum: 1000
            default: 10
      responses:
        '200':
          description: OK
          allOf:
            - $ref: '#/components/responses/RateLimitedResponse'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ActivationCodeList'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '405':
          $ref: '#/components/responses/405'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
        default:
          description: Internal Server Error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
      security:
        - OAuth2:
            - 'cnx_ss_euicc_activationcode_ro'
  /activation-codes/{id}:
    get:
      tags:
        - 'Activation codes'
      summary: Get Activation code by assigned entity id
      operationId: getActivationCode
      description: Retrieves activation code entity. The entity is referred to using the unique entity id which is assigned to the entry when the activation code is stored.
      parameters:
        - $ref: '#/components/parameters/Header-Content-Type'
        - $ref: '#/components/parameters/Header-Accept-Version'
        - name: Accept
          in: header
          description: Accept content-type and schemas by the client
          content:
            application/json:
              schema:
                type: string
        - name: id
          in: path
          description: Activation code assigned entity id.
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          allOf:
            - $ref: '#/components/responses/RateLimitedResponse'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ActivationCodeItem'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '405':
          $ref: '#/components/responses/405'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
        default:
          description: Internal Server Error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
      security:
        - OAuth2:
            - 'cnx_ss_euicc_activationcode_ro'
    delete:
      tags:
        - 'Activation codes'
      summary: Delete activation code by assigned entity id
      operationId: deleteActivationCode
      description: Delete activation code entity. The entity is referred to using the unique entity id which is assigned to the entry when the activation code is stored.
      parameters:
        - $ref: '#/components/parameters/Header-Content-Type'
        - $ref: '#/components/parameters/Header-Accept-Version'
        - name: Accept
          in: header
          description: Accept content-type and schemas by the client
          content:
            application/json:
              schema:
                type: string
        - name: id
          in: path
          description: Activation code assigned entry id
          required: true
          schema:
            type: string
      responses:
        '204':
          description: Deleted
          allOf:
            - $ref: '#/components/responses/RateLimitedResponse'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '405':
          $ref: '#/components/responses/405'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
        default:
          description: Internal Server Error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
      security:
        - OAuth2:
            - 'cnx_ss_euicc_activationcode_man'
    put:
      tags:
        - 'Activation codes'
      summary: Update activation code by assigned entity id
      operationId: updateActivationCode
      description: Update activation code entry. The entity is referred to using the unique entity id which is assigned to the entry when the activation code is stored.
      parameters:
        - $ref: '#/components/parameters/Header-Content-Type'
        - $ref: '#/components/parameters/Header-Accept-Version'
        - name: Accept
          in: header
          description: Accept content-type and schemas by the client
          content:
            application/json:
              schema:
                type: string
        - name: id
          in: path
          description: Activation code assigned entry id
          required: true
          schema:
            type: string
      requestBody:
        description: ActivationCodeUpdate
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ActivationCodeUpdate'
        required: true
      responses:
        '200':
          description: Updated
          allOf:
            - $ref: '#/components/responses/RateLimitedResponse'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ActivationCodeItem'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '405':
          $ref: '#/components/responses/405'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
        default:
          description: Internal Server Error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
      security:
        - OAuth2:
            - 'cnx_ss_euicc_activationcode_man'
  /activation-codes/request-id/{id}:
    get:
      tags:
        - 'Activation codes'
      summary: Get Activation codes by subscription request id
      operationId: listActivationCodesByJobId
      description: Retrieves activation codes by id of a subscription request where the codes have either been created or used.
      parameters:
        - $ref: '#/components/parameters/Header-Content-Type'
        - $ref: '#/components/parameters/Header-Accept-Version'
        - name: Accept
          in: header
          description: Accept content-type and schemas by the client
          content:
            application/json:
              schema:
                type: string
        - name: id
          in: path
          description: Subscription request id
          required: true
          schema:
            type: string
        - name: page
          in: query
          description: Page number
          schema:
            type: integer
            minimum: 0
            default: 0
        - name: limit
          in: query
          description: Number of items per page
          schema:
            type: integer
            minimum: 1
            maximum: 1000
            default: 10
      responses:
        '200':
          description: OK
          allOf:
            - $ref: '#/components/responses/RateLimitedResponse'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ActivationCodeList'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '405':
          $ref: '#/components/responses/405'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
        default:
          description: Internal Server Error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
      security:
        - OAuth2:
            - 'cnx_ss_euicc_activationcode_ro'
  /activation-codes/export:
    post:
      tags:
        - 'Activation codes'
      summary: Export activation codes (POST)
      operationId: exportActivationCodes
      description: Retrieves stored activation codes using request body filters.
      parameters:
        - $ref: '#/components/parameters/Header-Content-Type'
        - $ref: '#/components/parameters/Header-Accept-Version'
        - name: Accept
          in: header
          description: Accept content-type and schemas by the client
          content:
            application/json:
              schema:
                type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ExportActivationCodeRequest'
      responses:
        '200':
          description: OK
          allOf:
            - $ref: '#/components/responses/RateLimitedResponse'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ActivationCodeList'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '405':
          $ref: '#/components/responses/405'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
        default:
          description: Internal Server Error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
      security:
        - OAuth2:
            - 'cnx_ss_euicc_activationcode_ro'
  /activation-codes/import:
    post:
      tags:
        - 'Activation codes'
      summary: Import activation codes from CSV
      operationId: importActivationCodes
      description: |
        Imports activation codes from a CSV file. The CSV must contain at minimum the columns ICCID and ACTIVATION_CODE. The import is processed asynchronously; a jobId is returned to poll progress via the job status endpoint.
        
        **Note:** eID is optional for EXTERNAL but should not be provided for INTERNAL. State by default will be considered as AVAILABLE for both activation code type i.e EXTERNAL and INTERNAL.

        **Note:** For **INTERNAL** activation code type, the `localeId` provided is used solely to import the activation code into the system. Once imported, the activation code may be utilized by any locale that is configured with the same profile specification as the locale used during import.

      parameters:
        - $ref: '#/components/parameters/Header-Content-Type'
        - $ref: '#/components/parameters/Header-Accept-Version'
        - name: Accept
          in: header
          description: Accept content-type and schemas by the client
          content:
            application/json:
              schema:
                type: string
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/ActivationCodeImportRequest'
      responses:
        '202':
          description: Accepted
          allOf:
            - $ref: '#/components/responses/RateLimitedResponse'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ActivationCodeImportAcceptedResponse'
              examples:
                "Import accepted":
                  value:
                    jobId: "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
                    status: "ACCEPTED"
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '405':
          $ref: '#/components/responses/405'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
        default:
          description: Internal Server Error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
      security:
        - OAuth2:
            - 'cnx_ss_euicc_activationcode_man'
  /activation-codes/import/jobstatus/{jobId}:
    get:
      tags:
        - 'Activation codes'
      summary: Get activation code import job status
      operationId: getActivationCodeImportJobStatus
      description: Retrieves the status and paginated failure details of an activation code import job. When the job is still in progress, only jobId and status are returned. When the job is complete or failed, full statistics and failure row details are included.
      parameters:
        - $ref: '#/components/parameters/Header-Content-Type'
        - $ref: '#/components/parameters/Header-Accept-Version'
        - name: Accept
          in: header
          description: Accept content-type and schemas by the client
          content:
            application/json:
              schema:
                type: string
        - name: jobId
          in: path
          description: Import job ID returned from the import activation codes request
          required: true
          schema:
            type: string
        - name: iccid
          in: query
          description: Filter failure rows by ICCID
          schema:
            type: string
        - name: page
          in: query
          description: Page number for failure rows (0-based)
          schema:
            type: integer
            minimum: 0
            default: 0
        - name: size
          in: query
          description: Number of failure rows per page
          schema:
            type: integer
            minimum: 1
            maximum: 100
            default: 10
      responses:
        '200':
          description: OK
          allOf:
            - $ref: '#/components/responses/RateLimitedResponse'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ImportJobStatusResponse'
              examples:
                "Job in progress":
                  value:
                    jobId: "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
                    status: "IN_PROGRESS"
                "Job completed":
                  value:
                    jobId: "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
                    status: "COMPLETED"
                    totalFailures: 2
                    totalSuccess: 98
                    page: 0
                    pageSize: 10
                    failedRows:
                      - failureId: 1001
                        rowNumber: 5
                        iccid: "8901234567890123456"
                        failureCode: "DUPLICATE_ICCID_IN_DB"
                        description: "ICCID already exists in database"
                        createdDate: "2026-05-15T10:30:00Z"
                      - failureId: 1002
                        rowNumber: 12
                        iccid: "8901234567890123457"
                        failureCode: "INVALID_ACTIVATION_CODE_FORMAT"
                        description: "Activation code does not match the required LPA format"
                        createdDate: "2026-05-15T10:30:01Z"
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '405':
          $ref: '#/components/responses/405'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
        default:
          description: Internal Server Error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
      security:
        - OAuth2:
            - 'cnx_ss_euicc_activationcode_ro'
        - OAuth2:
            - 'cnx_ss_euicc_activationcode_man'
  /activation-codes/upload-status/{ehubJobId}:
    get:
      tags:
        - 'Activation codes'
      summary: Get upload status for an activation code import job
      operationId: getActivationCodeUploadStatus
      description: Retrieves the upload status of an activation code import job from the UIS service. Returns processing statistics and any failed records.
      parameters:
        - $ref: '#/components/parameters/Header-Content-Type'
        - $ref: '#/components/parameters/Header-Accept-Version'
        - name: Accept
          in: header
          description: Accept content-type and schemas by the client
          content:
            application/json:
              schema:
                type: string
        - name: ehubJobId
          in: path
          description: The eHub job ID returned from the import activation codes request.
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          allOf:
            - $ref: '#/components/responses/RateLimitedResponse'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UploadStatusResponse'
              examples:
                "Upload status completed":
                  value:
                    uisJobId: "uis-job-abc123"
                    ehubJobId: "ehub-job-xyz789"
                    status: "COMPLETED"
                    totalRecords: 100
                    successCount: 98
                    failureCount: 2
                    createdAt: "2026-06-08T09:00:00Z"
                    updatedAt: "2026-06-08T09:05:00Z"
                    failedRecords:
                      - iccid: "8901234567890123456"
                        imsi: "310260123456789"
                        errorCode: "DUPLICATE_ICCID"
                        errorMessage: "ICCID already exists"
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '405':
          $ref: '#/components/responses/405'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
        default:
          description: Internal Server Error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
      security:
        - OAuth2:
            - 'cnx_ss_euicc_activationcode_ro'
        - OAuth2:
            - 'cnx_ss_euicc_activationcode_man'
  /activation-codes/retry/{ehubJobId}:
    post:
      tags:
        - 'Activation codes'
      summary: Retry a failed activation code upload job
      operationId: retryActivationCodeUpload
      description: Retries a previously failed activation code upload job via the UIS service. Returns 200 if the job was already completed, or 202 if a new retry has been accepted.
      parameters:
        - $ref: '#/components/parameters/Header-Content-Type'
        - $ref: '#/components/parameters/Header-Accept-Version'
        - name: Accept
          in: header
          description: Accept content-type and schemas by the client
          content:
            application/json:
              schema:
                type: string
        - name: ehubJobId
          in: path
          description: The eHub job ID of the upload to retry.
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK — upload was already completed, no retry needed
          allOf:
            - $ref: '#/components/responses/RateLimitedResponse'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RetryUploadResponse'
              examples:
                "Already completed":
                  value:
                    status: "ALREADY_COMPLETED"
                    retryJobId: null
        '202':
          description: Accepted — retry job has been queued
          allOf:
            - $ref: '#/components/responses/RateLimitedResponse'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RetryUploadResponse'
              examples:
                "Retry accepted":
                  value:
                    status: "RETRYING"
                    retryJobId: "uis-retry-job-def456"
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '405':
          $ref: '#/components/responses/405'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
        default:
          description: Internal Server Error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
      security:
        - OAuth2:
            - 'cnx_ss_euicc_activationcode_man'
  /euicc-agreements:
    post:
      tags:
        - 'EuiccAgreement'
      summary: Store eUICC Agreement
      operationId: storeEuiccAgreement_2
      description: Create new eUICC agreement
      parameters:
        - $ref: '#/components/parameters/Header-Content-Type'
        - $ref: '#/components/parameters/Header-Accept-Version'
        - name: Accept
          in: header
          description: Accept content-type and schemas by the client
          content:
            application/json:
              schema:
                type: string
                oneOf:
                  - $ref: '#/components/schemas/EuiccAgreement.0.0.1'
                  - $ref: '#/components/schemas/EuiccAgreement.0.1.1'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EuiccAgreementInfo.0.1.1'
            examples:
              "Create M2M eUICC Agreement":
                $ref: '#/components/examples/EuiccAgreementInfoM2MExample'
              "Create Consumer eUICC Agreement":
                $ref: '#/components/examples/EuiccAgreementInfoConsumerExample'
        required: true
      responses:
        '201':
          description: Created
          allOf:
            - $ref: '#/components/responses/RateLimitedResponse'
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/EuiccAgreement.0.0.1'
                  - $ref: '#/components/schemas/EuiccAgreement.0.1.1'
              examples:
                "M2M Agreement Info":
                  $ref: '#/components/examples/EuiccAgreementM2MExample'
                "Consumer Agreement Info":
                  $ref: '#/components/examples/EuiccAgreementConsumerExample'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '405':
          $ref: '#/components/responses/405'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
        default:
          description: Internal Server Error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
      security:
        - OAuth2:
            - 'euicc-mgt.agreement.write'
    get:
      tags:
        - 'EuiccAgreement'
      summary: List eUICC Agreements
      operationId: listEuiccAgreements_2
      description: Retrieves eUICC agreements
      parameters:
        - $ref: '#/components/parameters/Header-Content-Type'
        - $ref: '#/components/parameters/Header-Accept-Version'
        - name: Accept
          in: header
          description: Accept content-type and schemas by the client
          content:
            application/json:
              schema:
                type: string
                oneOf:
                  - $ref: '#/components/schemas/EuiccAgreementList.0.0.1'
                  - $ref: '#/components/schemas/EuiccAgreementList.0.1.1'
        - name: organizationId
          in: query
          description: Organization Ids
          style: form
          explode: true
          schema:
            type: array
            items:
              type: string
      responses:
        '200':
          description: OK
          allOf:
            - $ref: '#/components/responses/RateLimitedResponse'
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/EuiccAgreementList.0.0.1'
                  - $ref: '#/components/schemas/EuiccAgreementList.0.1.1'
              examples:
                "List eUICC Agreements":
                  $ref: '#/components/examples/EuiccAgreementListExample'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '405':
          $ref: '#/components/responses/405'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
        default:
          description: Internal Server Error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
      security:
        - OAuth2:
            - 'euicc-mgt.agreement.read'
  /euicc-agreements/{euiccAgreementId}:
    put:
      tags:
        - 'EuiccAgreement'
      summary: Update eUICC Agreement
      operationId: updateEuiccAgreement_2
      description: Updates an eUICC Agreement
      parameters:
        - $ref: '#/components/parameters/Header-Content-Type'
        - $ref: '#/components/parameters/Header-Accept-Version'
        - name: Accept
          in: header
          description: Accept content-type and schemas by the client
          content:
            application/json:
              schema:
                type: string
                oneOf:
                  - $ref: '#/components/schemas/EuiccAgreement.0.0.1'
                  - $ref: '#/components/schemas/EuiccAgreement.0.1.1'
        - name: euiccAgreementId
          in: path
          description: EuiccAgreement id
          required: true
          schema:
            type: integer
            format: int64
      requestBody:
        description: EuiccAgreementInfo.0.1.1
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EuiccAgreementInfo.0.1.1'
            examples:
              "Update M2M eUICC Agreement":
                $ref: '#/components/examples/EuiccAgreementInfoM2MExample'
              "Update Consumer eUICC Agreement":
                $ref: '#/components/examples/EuiccAgreementInfoConsumerExample'
        required: true
      responses:
        '200':
          description: OK
          allOf:
            - $ref: '#/components/responses/RateLimitedResponse'
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/EuiccAgreement.0.0.1'
                  - $ref: '#/components/schemas/EuiccAgreement.0.1.1'
              examples:
                "M2M Agreement Info":
                  $ref: '#/components/examples/EuiccAgreementM2MExample'
                "Consumer Agreement Info":
                  $ref: '#/components/examples/EuiccAgreementConsumerExample'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '405':
          $ref: '#/components/responses/405'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
        default:
          description: Internal Server Error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
      security:
        - OAuth2:
            - 'euicc-mgt.agreement.write'
    delete:
      tags:
        - 'EuiccAgreement'
      summary: Delete eUICC Agreement
      operationId: deleteEuiccAgreement_1
      description: Deletes an eUICC Agreement
      parameters:
        - $ref: '#/components/parameters/Header-Content-Type'
        - $ref: '#/components/parameters/Header-Accept-Version'
        - name: Accept
          in: header
          description: Accept content-type and schemas by client
          content:
            application/json:
              schema:
                type: string
                allOf:
                  - $ref: '#/components/responses/204'
        - name: euiccAgreementId
          in: path
          description: EuiccAgreement id
          required: true
          schema:
            type: integer
            format: int64
      responses:
        '204':
          description: Deleted
          allOf:
            - $ref: '#/components/responses/RateLimitedResponse'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '405':
          $ref: '#/components/responses/405'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
        default:
          description: Internal Server Error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
      security:
        - OAuth2:
            - 'euicc-mgt.agreement.write'
    get:
      tags:
        - 'EuiccAgreement'
      summary: Get eUICC Agreement
      operationId: agreementWithDetails_2
      description: Retrieves an eUICC Agreement
      parameters:
        - $ref: '#/components/parameters/Header-Content-Type'
        - $ref: '#/components/parameters/Header-Accept-Version'
        - name: Accept
          in: header
          description: Accept content-type and schemas by the client
          content:
            application/json:
              schema:
                type: string
                oneOf:
                  - $ref: '#/components/schemas/EuiccAgreementDetailsResponse.0.0.1'
                  - $ref: '#/components/schemas/EuiccAgreementDetailsResponse.0.1.1'
        - name: euiccAgreementId
          in: path
          description: EuiccAgreement id
          required: true
          schema:
            type: integer
            format: int64
        - name: details
          in: query
          description: details
          required: false
          schema:
            type: boolean
      responses:
        '200':
          description: OK
          allOf:
            - $ref: '#/components/responses/RateLimitedResponse'
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/EuiccAgreementDetailsResponse.0.0.1'
                  - $ref: '#/components/schemas/EuiccAgreementDetailsResponse.0.1.1'
              examples:
                "M2M Agreement with Details":
                  $ref: '#/components/examples/EuiccAgreementDetailsResponseM2MExample'
                "Consumer Agreement with Details":
                  $ref: '#/components/examples/EuiccAgreementDetailsResponseConsumerExample'
                "eUICC Agreement without Details":
                  $ref: '#/components/examples/EuiccAgreementDetailsResponseNoDetailsExample'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '405':
          $ref: '#/components/responses/405'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
        default:
          description: Internal Server Error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
      security:
        - OAuth2:
            - 'euicc-mgt.agreement.read'
  /localization-tables:
    post:
      tags:
        - 'LocalizationTable'
      summary: Store localization table
      operationId: storeLocalizationTable_1
      description: Stores a localization table
      parameters:
        - $ref: '#/components/parameters/Header-Content-Type'
        - $ref: '#/components/parameters/Header-Accept-Version'
        - $ref: '#/components/parameters/Header-Accept'
      requestBody:
        description: LocalizationTableInfo.0.0.1
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LocalizationTableInfo.0.0.1'
            examples:
              "Store localization table request":
                $ref: '#/components/examples/LocalizationTableInfoExample'
        required: true
      responses:
        '201':
          description: Created
          allOf:
            - $ref: '#/components/responses/RateLimitedResponse'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LocalizationTable.0.0.1'
              examples:
                "Store localization table response":
                  $ref: '#/components/examples/LocalizationTableExample'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '405':
          $ref: '#/components/responses/405'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
        default:
          description: Internal Server Error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
      security:
        - OAuth2:
            - 'euicc-mgt.agreement.write'
    get:
      tags:
        - 'LocalizationTable'
      summary: List localization tables
      operationId: listLocalizationTables_1
      description: Lists localization tables by organization id
      parameters:
        - $ref: '#/components/parameters/Header-Content-Type'
        - $ref: '#/components/parameters/Header-Accept-Version'
        - $ref: '#/components/parameters/Header-Accept'
        - name: organizationId
          in: query
          description: Organization Id
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          allOf:
            - $ref: '#/components/responses/RateLimitedResponse'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LocalizationTableList.0.0.1'
              examples:
                "List localization tables response":
                  $ref: '#/components/examples/LocalizationTableListExample'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '405':
          $ref: '#/components/responses/405'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
        default:
          description: Internal Server Error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
      security:
        - OAuth2:
            - 'euicc-mgt.agreement.read'
  /localization-tables/{localizationTableId}:
    delete:
      tags:
        - 'LocalizationTable'
      summary: Delete localization table
      operationId: deleteLocalizationTable_1
      description: Deletes a localization table
      parameters:
        - $ref: '#/components/parameters/Header-Content-Type'
        - $ref: '#/components/parameters/Header-Accept-Version'
        - name: Accept
          in: header
          description: Accept content-type and schemas by client
          content:
            application/json:
              schema:
                type: string
                allOf:
                  - $ref: '#/components/responses/204'
        - name: localizationTableId
          in: path
          description: Localization table Id
          required: true
          schema:
            type: integer
            format: int64
      responses:
        '204':
          description: Deleted
          allOf:
            - $ref: '#/components/responses/RateLimitedResponse'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '405':
          $ref: '#/components/responses/405'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
        default:
          description: Internal Server Error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
      security:
        - OAuth2:
            - 'euicc-mgt.agreement.write'
    get:
      tags:
        - 'LocalizationTable'
      summary: Get localization table
      operationId: getLocalizationTable_1
      description: Retrieves a localization table
      parameters:
        - $ref: '#/components/parameters/Header-Content-Type'
        - $ref: '#/components/parameters/Header-Accept-Version'
        - $ref: '#/components/parameters/Header-Accept'
        - name: localizationTableId
          in: path
          description: Localization table Id
          required: true
          schema:
            type: integer
            format: int64
      responses:
        '200':
          description: OK
          allOf:
            - $ref: '#/components/responses/RateLimitedResponse'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LocalizationTable.0.0.1'
              examples:
                "Get localization table response":
                  $ref: '#/components/examples/LocalizationTableExample'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '405':
          $ref: '#/components/responses/405'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
        default:
          description: Internal Server Error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
      security:
        - OAuth2:
            - 'euicc-mgt.agreement.read'
    put:
      tags:
        - 'LocalizationTable'
      summary: Update localization table parameters
      operationId: updateLocalizationTable_1
      description: Updates the details of a localization table
      parameters:
        - $ref: '#/components/parameters/Header-Content-Type'
        - $ref: '#/components/parameters/Header-Accept-Version'
        - $ref: '#/components/parameters/Header-Accept'
        - name: localizationTableId
          in: path
          description: Localization table Id
          required: true
          schema:
            type: integer
            format: int64
      requestBody:
        description: LocalizationTableInfoUpdate.0.0.1
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LocalizationTableInfoUpdate.0.0.1'
            examples:
              "Update localization table parameters":
                $ref: '#/components/examples/LocalizationTableInfoUpdateExample'
        required: true
      responses:
        '200':
          description: OK
          allOf:
            - $ref: '#/components/responses/RateLimitedResponse'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LocalizationTable.0.0.1'
              examples:
                "Update localization table parameters response":
                  $ref: '#/components/examples/UpdatedLocalizationTableExample'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '405':
          $ref: '#/components/responses/405'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
        default:
          description: Internal Server Error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
      security:
        - OAuth2:
            - 'euicc-mgt.agreement.write'
  /localization-tables/{localizationTableId}/locales/{localeId}:
    get:
      tags:
        - 'Locale'
      summary: Get locale
      operationId: getLocale
      description: Retrieves a single locale
      parameters:
        - $ref: '#/components/parameters/Header-Content-Type'
        - $ref: '#/components/parameters/Header-Accept-Version'
        - $ref: '#/components/parameters/Header-Accept'
        - name: localizationTableId
          in: path
          description: Localization table Id
          required: true
          schema:
            type: integer
            format: int64
        - name: localeId
          in: path
          description: Locale Id
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          allOf:
            - $ref: '#/components/responses/RateLimitedResponse'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LocaleResponse.0.0.1'
              examples:
                "Get locale response":
                  $ref: '#/components/examples/LocaleExample'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '405':
          $ref: '#/components/responses/405'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
        default:
          description: Internal Server Error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
      security:
        - OAuth2:
            - 'euicc-mgt.agreement.read'
    delete:
      tags:
        - 'Locale'
      summary: Delete single locale
      operationId: deleteLocalizationTableItem_1
      description: Deletes a single locale
      parameters:
        - $ref: '#/components/parameters/Header-Content-Type'
        - $ref: '#/components/parameters/Header-Accept-Version'
        - name: Accept
          in: header
          description: Accept content-type and schemas by client
          content:
            application/json:
              schema:
                type: string
                allOf:
                  - $ref: '#/components/responses/204'
        - name: localizationTableId
          in: path
          description: Localization table Id
          required: true
          schema:
            type: integer
            format: int64
        - name: localeId
          in: path
          description: Locale Id
          required: true
          schema:
            type: string
      responses:
        '204':
          description: Deleted
          allOf:
            - $ref: '#/components/responses/RateLimitedResponse'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '405':
          $ref: '#/components/responses/405'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
        default:
          description: Internal Server Error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
      security:
        - OAuth2:
            - 'euicc-mgt.agreement.write'
    put:
      tags:
        - 'Locale'
      summary: Update locale
      description: Updates a locale
      operationId: updateLocalizationTableItem_1
      parameters:
        - $ref: '#/components/parameters/Header-Content-Type'
        - $ref: '#/components/parameters/Header-Accept-Version'
        - $ref: '#/components/parameters/Header-Accept'
        - name: localizationTableId
          in: path
          description: Localization table Id
          required: true
          schema:
            type: integer
            format: int64
        - name: localeId
          in: path
          description: Locale Id
          required: true
          schema:
            type: string
      requestBody:
        description: LocaleInfo.0.0.1
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LocaleInfo.0.0.1'
            examples:
              "Update locale request":
                $ref: '#/components/examples/LocaleInfoExample'
        required: true
      responses:
        '200':
          description: OK
          allOf:
            - $ref: '#/components/responses/RateLimitedResponse'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LocaleResponse.0.0.1'
              examples:
                "Update locale response":
                  $ref: '#/components/examples/UpdatedLocaleExample'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '405':
          $ref: '#/components/responses/405'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
        default:
          description: Internal Server Error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
      security:
        - OAuth2:
            - 'euicc-mgt.agreement.write'
  /localization-tables/{localizationTableId}/locales:
    post:
      tags:
        - 'Locale'
      summary: Add locales into localization table
      operationId: addLocalizationTableItems_1
      description: Adds locales to a localization table
      parameters:
        - $ref: '#/components/parameters/Header-Content-Type'
        - $ref: '#/components/parameters/Header-Accept-Version'
        - $ref: '#/components/parameters/Header-Accept'
        - name: localizationTableId
          in: path
          description: Localization table Id
          required: true
          schema:
            type: integer
            format: int64
      requestBody:
        description: Locale.0.0.1
        content:
          application/json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/Locale.0.0.1'
            examples:
              "Add locales into localization table request":
                $ref: '#/components/examples/LocaleArrayExample'
        required: true
      responses:
        '200':
          description: OK
          allOf:
            - $ref: '#/components/responses/RateLimitedResponse'
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/LocaleResponse.0.0.1'
              examples:
                "Add locales into localization table response":
                  $ref: '#/components/examples/LocaleArrayExample'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '405':
          $ref: '#/components/responses/405'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
        default:
          description: Internal Server Error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
      security:
        - OAuth2:
            - 'euicc-mgt.agreement.write'
    get:
      tags:
        - 'Locale'
      summary: List locales for a localization table
      operationId: listLocalizationTableItem
      description: Retrieves the locales of a localization table
      parameters:
        - $ref: '#/components/parameters/Header-Content-Type'
        - $ref: '#/components/parameters/Header-Accept-Version'
        - $ref: '#/components/parameters/Header-Accept'
        - name: localizationTableId
          in: path
          description: Localization table Id
          required: true
          schema:
            type: integer
            format: int64
      responses:
        '200':
          description: OK
          allOf:
            - $ref: '#/components/responses/RateLimitedResponse'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LocaleList.0.0.1'
              examples:
                "List locales for a localization table response":
                  $ref: '#/components/examples/LocaleListExample'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '405':
          $ref: '#/components/responses/405'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
        default:
          description: Internal Server Error
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Problem'
      security:
        - OAuth2:
            - 'euicc-mgt.agreement.read'
components:
  schemas:
    Problem:
      type: object
      properties:
        type:
          type: string
          format: uri
          description: |
            An absolute URI that identifies the problem type. When dereferenced,
            it SHOULD provide human-readable documentation for the problem type
            (e.g., using HTML).
          default: about:blank
          example: https://your.api.documentation.url
        title:
          type: string
          description: |
            A short, summary of the problem type. Written in english and readable
            for engineers (usually not suited for non technical stakeholders and
            not localized)
          example: 'Service Unavailable'
        status:
          type: integer
          format: int32
          description: |
            The HTTP status code generated by the origin server for this occurrence
            of the problem.
          minimum: 100
          maximum: 600
          exclusiveMaximum: true
          example: 503
        detail:
          type: string
          description: |
            A human readable explanation specific to this occurrence of the
            problem.
          example: Connection to database timed out
        instance:
          type: string
          description: |
            An absolute URI that identifies the specific occurrence of the problem.
            It may or may not yield further information if dereferenced.
          example: 'https://api.documentation.url/request-id'
    ActivationCodeList:
      required:
        - name
        - organizationId
      type: array
      items:
        $ref: '#/components/schemas/ActivationCodeItem'
    ActivationCodeStateParam:
      type: string
      description: The state in which the activation code should be stored. In DRAFT state, the entity is still modifiable and will not be issued to any eUICCs. When AVAILABLE, the code entity can not be modified and may be assigned and issued to an eUICC. When RESERVED, the code has been assigned to an eUICC. When REMOVED, the profile referred to by the activation code has been deleted, and the code cannot be used anymore.
      enum:
        - DRAFT
        - AVAILABLE
        - RESERVED
        - REMOVED        
    ActivationCodeItem:
      required:
        - id
        - code
        - organizationId
        - state
        - localizationTableId
        - localeId
        - added
      type: object
      properties:
        id:
          type: string
          description: The assigned unique entity id.
        code:
          type: string
          description: The activation code.
        organizationId:
          type: string
          description: The owner of the profile referred to by the activation code.
        euiccId:
          type: string
          description: The EID of the eUICC the code is assigned to, or planned for.
        iccId:
          type: string
          description: The ICC of the profile referred to by the activation code.
        state:
          type: string
          description: The state in which the activation code should be stored. In DRAFT state, the entity is still modifiable and will not be issued to any eUICCs. When AVAILABLE, the code entity can not be modified and may be assigned and issued to an eUICC. When RESERVED, the code has been assigned to an eUICC. When DELETED, the profile referred to by the activation code has been deleted, and the code cannot be used anymore.
          enum:
            - DRAFT
            - AVAILABLE
            - RESERVED
            - REMOVED
        localizationTableId:
          type: integer
          format: int64
        localeId:
          type: string
        added:
          type: string
          format: date-time
        addedRequestId:
          type: string
        issued:
          type: string
          format: date-time
          description: The date when the activation code was issued to an eUICC.
        issuedRequestId:
          type: string
    ActivationCodeUpdate:
      type: object
      properties:
        code:
          type: string
          description: The activation code.
        euiccId:
          type: string
          description: The EID of the eUICC the code is assigned to, or planned for.
        iccId:
          type: string
          description: The ICC of the profile referred to by the activation code.
        state:
          type: string
          description: The state in which the activation code should be stored. In DRAFT state, the entity is still modifiable and will not be issued to any eUICCs. When AVAILABLE, the code entity can not be modified and may be assigned and issued to an eUICC.
          enum:
            - DRAFT
            - AVAILABLE
        localizationTableId:
          type: integer
          format: int64
        localeId:
          type: string
    StoreActivationCodeRequest:
      required:
        - localizationTableId
        - localeId
        - codes
      type: object
      properties:
        localizationTableId:
          type: integer
          format: int64
        localeId:
          type: string
        activationCodeType:
          type: string
          description: |
            Type of activation code to apply uniformly to all rows
            
            **Note:** For EXTERNAL, both states i.e. DRAFT and AVAILABLE can be provided, for INTERNAL, only AVAILABLE state is allowed.
          enum:
            - INTERNAL
            - EXTERNAL
          default: EXTERNAL
        codes:
          type: array
          items:
            $ref: '#/components/schemas/ActivationCodeInsert'
    ActivationCodeInsert:
      required:
        - code
        - state
      type: object
      properties:
        code:
          type: string
          description: The activation code.
        euiccId:
          type: string
          description: The EID of the eUICC the code is assigned to, or planned for.
        iccId:
          type: string
          description: The ICC of the profile referred to by the activation code.
        imsi:
          type: string
          description: The IMSI associated with the activation code. Required when activationCodeType is INTERNAL. Must be 14 or 15 numeric digits.
        state:
          type: string
          description: The state in which the activation code should be stored. In DRAFT state, the entity is still modifiable and will not be issued to any eUICCs. When AVAILABLE, the code entity can not be modified and may be assigned and issued to an eUICC.
          enum:
            - DRAFT
            - AVAILABLE
    ExportActivationCodeRequest:
      type: object
      required:
        - organizationId
      properties:
        organizationId:
          type: array
          description: A list of organizations ids for which activation codes should be listed.
          items:
            type: string
          maxItems: 1000
        euiccId:
          type: array
          description: A list of euicc ids (EIDs) for which activation codes should be listed.
          items:
            type: string
        iccId:
          type: array
          description: A list of ICC ids for which activation codes should be listed.
          items:
            type: string
        profileType:
          type: string
          description: profile type
        state:
          $ref: '#/components/schemas/ActivationCodeStateParam'
          description: Filter activation codes by state
        page:
          type: integer
          minimum: 0
          default: 0
          description: Page number
        limit:
          type: integer
          minimum: 1
          maximum: 10000
          default: 10
          description: Number of items per page
    ActivationCodeImportRequest:
      required:
        - file
        - localizationTableId
        - localeId
      type: object
      properties:
        file:
          type: string
          format: binary
          description: CSV file containing activation code data. Mandatory columns are ICCID and ACTIVATION CODE.
        activationCodeType:
          type: string
          description: Type of activation code to import.
          enum:
            - INTERNAL
            - EXTERNAL
          default: EXTERNAL
        localizationTableId:
          type: integer
          format: int64
          description: Localization table ID to associate the imported codes with.
        localeId:
          type: string
          description: Locale ID within the localization table.
    ActivationCodeImportAcceptedResponse:
      required:
        - jobId
        - status
      type: object
      properties:
        jobId:
          type: string
          description: Unique identifier for the asynchronous import job.
        status:
          type: string
          description: Acceptance status of the import request.
          enum:
            - ACCEPTED
    ImportJobStatusResponse:
      required:
        - jobId
        - status
      type: object
      properties:
        jobId:
          type: string
          description: The import job ID.
        status:
          type: string
          description: The current status of the import job.
          enum:
            - IN_PROGRESS
            - COMPLETED
            - FAILED
        totalFailures:
          type: integer
          format: int64
          description: Total number of rows that failed to import. Only present when the job is not IN_PROGRESS.
        totalSuccess:
          type: integer
          format: int64
          description: Total number of rows successfully imported. Only present when the job is not IN_PROGRESS.
        page:
          type: integer
          description: The requested page of failure rows (0-based). Only present when the job is not IN_PROGRESS.
        pageSize:
          type: integer
          description: The number of failure rows per page. Only present when the job is not IN_PROGRESS.
        failedRows:
          type: array
          description: Paginated list of failed import rows. Only present when the job is not IN_PROGRESS.
          items:
            $ref: '#/components/schemas/ImportFailureRow'
    ImportFailureRow:
      type: object
      properties:
        failureId:
          type: integer
          format: int64
          description: Unique identifier for the failure record.
        rowNumber:
          type: integer
          description: The 1-based row number in the CSV file (excluding the header row).
        iccid:
          type: string
          description: The ICCID from the failed CSV row.
        failureCode:
          type: string
          description: Machine-readable failure reason code.
          enum:
            - EMPTY_ICCID
            - EMPTY_ACTIVATION_CODE
            - DUPLICATE_ICCID_IN_FILE
            - DUPLICATE_ACTIVATION_CODE_IN_FILE
            - DUPLICATE_IMSI_IN_FILE
            - DUPLICATE_MSISDN_IN_FILE
            - DUPLICATE_ICCID_IN_DB
            - DUPLICATE_ACTIVATION_CODE_IN_DB
            - DUPLICATE_IMSI_IN_DB
            - DUPLICATE_MSISDN_IN_DB
            - INVALID_ACTIVATION_CODE_FORMAT
            - INVALID_ICCID_FORMAT
            - DB_INSERT_FAILED
            - BATCH_ROLLBACK
        description:
          type: string
          description: Human-readable description of the failure reason.
        createdDate:
          type: string
          format: date-time
          description: The timestamp when the failure record was created.
    UploadStatusResponse:
      type: object
      properties:
        uisJobId:
          type: string
          description: The job ID assigned by the UIS service.
        ehubJobId:
          type: string
          description: The eHub job ID that was queried.
        status:
          type: string
          description: Current status of the upload job as reported by UIS.
        totalRecords:
          type: integer
          description: Total number of records in the uploaded file.
        successCount:
          type: integer
          description: Number of records successfully processed.
        failureCount:
          type: integer
          description: Number of records that failed processing.
        createdAt:
          type: string
          format: date-time
          description: Timestamp when the upload job was created.
        updatedAt:
          type: string
          format: date-time
          description: Timestamp when the upload job was last updated.
        failedRecords:
          type: array
          description: List of individual records that failed, if any.
          items:
            $ref: '#/components/schemas/UploadFailedRecord'
    UploadFailedRecord:
      type: object
      properties:
        iccid:
          type: string
          description: The ICCID of the failed record.
        imsi:
          type: string
          description: The IMSI of the failed record.
        errorCode:
          type: string
          description: Machine-readable error code from UIS.
        errorMessage:
          type: string
          description: Human-readable error message from UIS.
    RetryUploadResponse:
      required:
        - status
      type: object
      properties:
        status:
          type: string
          description: Status of the retry request.
          enum:
            - ALREADY_COMPLETED
            - RETRYING
        retryJobId:
          type: string
          nullable: true
          description: The UIS job ID assigned to the new retry job. Present when status is RETRYING; null when ALREADY_COMPLETED.
    EuiccAgreement.0.0.1:
      required:
        - localizationTableId
        - name
        - organizationId
        - state
      type: object
      properties:
        name:
          type: string
        organizationId:
          type: string
        localizationTableId:
          type: integer
          format: int64
        state:
          type: string
          enum:
            - ACTIVE
            - TERMINATED
        enableLimit:
          type: integer
          format: int64
        delocalizeLimit:
          type: integer
          format: int64
        allowRelocalization:
          type: boolean
        id:
          type: integer
          format: int64
        formSpecificationId:
          type: string
        operatorId:
          type: string
        operatorName:
          type: string
        organizationName:
          type: string
        localizationTableName:
          type: string
        numberOfLocales:
          type: integer
          format: int32
        createdBy:
          type: string
        modifiedBy:
          type: string
        createdAt:
          type: string
          format: date-time
        modifiedAt:
          type: string
          format: date-time
    EuiccAgreement.0.1.1:
      required:
        - localizationTableId
        - name
        - organizationId
        - state
      type: object
      properties:
        name:
          type: string
        organizationId:
          type: string
        localizationTableId:
          type: integer
          format: int64
        state:
          type: string
          enum:
            - ACTIVE
            - TERMINATED
        enableLimit:
          type: integer
          format: int64
        delocalizeLimit:
          type: integer
          format: int64
        allowRelocalization:
          type: boolean
        id:
          type: integer
          format: int64
        formSpecificationId:
          type: string
        operatorId:
          type: string
        operatorName:
          type: string
        organizationName:
          type: string
        localizationTableName:
          type: string
        numberOfLocales:
          type: integer
          format: int32
        createdBy:
          type: string
        modifiedBy:
          type: string
        createdAt:
          type: string
          format: date-time
        modifiedAt:
          type: string
          format: date-time
        agreementType:
          type: string
          enum:
            - M2M
            - CONSUMER
            - IOT
    EuiccAgreementList.0.0.1:
      required:
        - euiccAgreements
      type: object
      properties:
        euiccAgreements:
          type: array
          items:
            $ref: '#/components/schemas/EuiccAgreement.0.0.1'
    EuiccAgreementList.0.1.1:
      required:
        - euiccAgreements
      type: object
      properties:
        euiccAgreements:
          type: array
          items:
            $ref: '#/components/schemas/EuiccAgreement.0.1.1'
    EuiccAgreementInfo.0.1.1:
      required:
        - localizationTableId
        - name
        - organizationId
        - state
      type: object
      properties:
        name:
          type: string
        organizationId:
          type: string
        formSpecificationId:
          type: string
        localizationTableId:
          type: integer
          format: int64
        state:
          type: string
          enum:
            - ACTIVE
            - TERMINATED
        enableLimit:
          type: integer
          format: int64
        delocalizeLimit:
          type: integer
          format: int64
        allowRelocalization:
          type: boolean
        agreementType:
          type: string
          enum:
            - M2M
            - CONSUMER
            - IOT
    EuiccAgreementDetailsResponse.0.0.1:
      required:
        - euiccAgreement
        - locales
      type: object
      properties:
        euiccAgreement:
          $ref: '#/components/schemas/EuiccAgreement.0.0.1'
        formSpecification:
          nullable: true
          allOf:
            - $ref: '#/components/schemas/FormSpecification.0.0.1'
        locales:
          type: array
          items:
            $ref: '#/components/schemas/LocaleDetails.0.0.1'
        unlocalizedEuiccCount:
          type: integer
          format: int64
    EuiccAgreementDetailsResponse.0.1.1:
      required:
        - euiccAgreement
        - locales
      type: object
      properties:
        euiccAgreement:
          $ref: '#/components/schemas/EuiccAgreement.0.1.1'
        formSpecification:
          nullable: true
          allOf:
            - $ref: '#/components/schemas/FormSpecification.0.0.1'
        locales:
          type: array
          items:
            $ref: '#/components/schemas/LocaleDetails.0.0.1'
        unlocalizedEuiccCount:
          type: integer
          format: int64
    LocaleDetails.0.0.1:
      required:
        - id
        - name
        - organizationId
        - operatorId
        - profileSpecificationId
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        organizationId:
          type: string
        organizationName:
          type: string
        operatorId:
          type: string
        operatorName:
          type: string
        profileSpecificationId:
          type: string
        subscriptionPackageId:
          type: string
        euiccCount:
          type: integer
          format: int64
        localeType:
          type: string
          enum:
            - STANDARD_INBOUND
            - EXTENDED_IOTA_IOTA
            - EXTENDED_IOTA_NON_IOTA
            - CUSTOM
            - CONSUMER
            - IOT
    FormSpecification.0.0.1:
      required:
        - active
        - description
        - earliestDeliveryDate
        - lowOrderThreshold
        - minimumOrderVolume
        - operatorId
        - orderIncrement
        - orderThreshold
        - smsrId
        - specificationId
      type: object
      properties:
        specificationId:
          type: string
        description:
          type: string
        operatorId:
          type: string
        active:
          type: boolean
        smsrId:
          type: string
        orderThreshold:
          type: integer
          format: int32
        earliestDeliveryDate:
          type: integer
          format: int32
        minimumOrderVolume:
          type: integer
          format: int32
        lowOrderThreshold:
          type: integer
          format: int32
        orderIncrement:
          type: integer
          format: int32
    LocaleParameter.0.0.1:
      required:
        - name
        - value
      type: object
      properties:
        name:
          type: string
          enum:
            - TARGET_SMSR
            - ES2_NOTIFICATION_ENDPOINT
            - ES4_NOTIFICATION_ENDPOINT
        value:
          type: string
    Locale.0.0.1:
      required:
        - localeId
        - localeName
        - organizationId
        - profileSpecificationId
        - subscriptionPackageId
      type: object
      properties:
        localeName:
          type: string
        organizationId:
          type: string
        profileSpecificationId:
          type: string
        subscriptionPackageId:
          type: string
        localeId:
          type: string
        features:
          uniqueItems: true
          type: array
          items:
            $ref: '#/components/schemas/LocaleFeature.0.0.1'
        localeParameters:
          uniqueItems: true
          type: array
          items:
            $ref: '#/components/schemas/LocaleParameter.0.0.1'
        localeType:
          type: string
          enum:
            - STANDARD_INBOUND
            - EXTENDED_IOTA_IOTA
            - EXTENDED_IOTA_NON_IOTA
            - CUSTOM
            - CONSUMER
            - IOT
    LocaleResponse.0.0.1:
      description: Locale response schema for read operations. All fields are optional to accommodate locale records where some properties may be null (e.g. CONSUMER, IOT, CUSTOM locale types).
      type: object
      properties:
        localeId:
          type: string
        localeName:
          type: string
        organizationId:
          type: string
        profileSpecificationId:
          type: string
        subscriptionPackageId:
          type: string
        features:
          uniqueItems: true
          type: array
          items:
            $ref: '#/components/schemas/LocaleFeature.0.0.1'
        localeParameters:
          uniqueItems: true
          type: array
          items:
            $ref: '#/components/schemas/LocaleParameter.0.0.1'
        localeType:
          type: string
          enum:
            - STANDARD_INBOUND
            - EXTENDED_IOTA_IOTA
            - EXTENDED_IOTA_NON_IOTA
            - CUSTOM
            - CONSUMER
            - IOT
    LocalizationTable.0.0.1:
      required:
        - euiccChargingType
        - id
        - localizationTableName
        - organizationId
      type: object
      properties:
        localizationTableName:
          type: string
        euiccChargingType:
          type: string
          enum:
            - CHARGE_ACTIVE
            - CHARGE_BOOTSTRAP
        organizationId:
          type: string
        items:
          uniqueItems: true
          type: array
          items:
            $ref: '#/components/schemas/LocaleResponse.0.0.1'
        id:
          type: integer
          format: int64
        readOnly:
          type: boolean
    LocalizationTableList.0.0.1:
      required:
        - localizationTables
      type: object
      properties:
        localizationTables:
          type: array
          items:
            $ref: '#/components/schemas/LocalizationTable.0.0.1'
    LocalizationTableInfo.0.0.1:
      required:
        - euiccChargingType
        - localizationTableName
        - organizationId
      type: object
      properties:
        localizationTableName:
          type: string
        euiccChargingType:
          type: string
          enum:
            - CHARGE_ACTIVE
            - CHARGE_BOOTSTRAP
        organizationId:
          type: string
        items:
          uniqueItems: true
          type: array
          items:
            $ref: '#/components/schemas/Locale.0.0.1'
    LocaleList.0.0.1:
      required:
        - localizationTableItems
      type: object
      properties:
        localizationTableItems:
          type: array
          items:
            $ref: '#/components/schemas/LocaleResponse.0.0.1'
    LocalizationTableInfoUpdate.0.0.1:
      required:
        - euiccChargingType
        - localizationTableName
      type: object
      properties:
        localizationTableName:
          type: string
        euiccChargingType:
          type: string
          enum:
            - CHARGE_ACTIVE
            - CHARGE_BOOTSTRAP
    LocaleInfo.0.0.1:
      required:
        - localeName
        - organizationId
        - profileSpecificationId
        - subscriptionPackageId
      type: object
      properties:
        localeName:
          type: string
        organizationId:
          type: string
        profileSpecificationId:
          type: string
        subscriptionPackageId:
          type: string
        features:
          uniqueItems: true
          type: array
          items:
            $ref: '#/components/schemas/LocaleFeature.0.0.1'
        localeParameters:
          uniqueItems: true
          type: array
          items:
            $ref: '#/components/schemas/LocaleParameter.0.0.1'
    LocaleFeature.0.0.1:
      type: string
      enum:
        - SMSR_CHANGE
        - SMDP_ONLY
        - ONE_STEP
        - NO_RETRY
  examples:
    EuiccAgreementInfoM2MExample:
      value:
        name: "Enterprise X eUICC Agreement"
        organizationId: "3.97.2"
        formSpecificationId: "Acme_2FF"
        localizationTableId: 10030
        state: ACTIVE
        enableLimit: 100
        delocalizeLimit: 100
        allowRelocalization: true
        agreementType: "M2M"
    EuiccAgreementInfoConsumerExample:
      value:
        name: "Enterprise X Consumer eSIM Agreement"
        organizationId: "3.97.2"
        localizationTableId: 10032
        state: ACTIVE
        agreementType: "CONSUMER"
    EuiccAgreementM2MExample:
      value:
        id: 10052
        name: "Enterprise X eUICC Agreement"
        organizationId: "3.97.2"
        formSpecificationId: "Acme_2FF"
        localizationTableId: 10030
        state: ACTIVE
        enableLimit: 100
        delocalizeLimit: 100
        allowRelocalization: true
        agreementType: "M2M"
        operatorId: "3.97"
        operatorName: "Smooth IoT"
        organizationName: "Enterprise X"
        localizationTableName: "Enterprise X M2M Localization Table"
        numberOfLocales: 0
        createdBy: "operator@smooth.iot"
        modifiedBy: "operator@smooth.iot"
        createdAt: "2022-08-01T17:25:20.219074Z"
        modifiedAt: "2022-08-01T17:25:20.219074Z"
    EuiccAgreementConsumerExample:
      value:
        id: 10054
        name: "Enterprise X Consumer eSIM Agreement"
        organizationId: "3.97.2"
        localizationTableId: 10032
        state: ACTIVE
        agreementType: "CONSUMER"
        operatorId: "3.97"
        operatorName: "Smooth IoT"
        organizationName: "Enterprise X"
        localizationTableName: "Enterprise X Consumer Localization Table"
        numberOfLocales: 0
        createdBy: "operator@smooth.iot"
        modifiedBy: "operator@smooth.iot"
        createdAt: "2022-08-01T17:25:20.219074Z"
        modifiedAt: "2022-08-01T17:25:20.219074Z"
    EuiccAgreementListExample:
      value:
        euiccAgreements:
          - id: 10052
            name: "Enterprise X eUICC Agreement"
            organizationId: "3.97.2"
            formSpecificationId: "Acme_2FF"
            localizationTableId: 10030
            state: ACTIVE
            enableLimit: 100
            delocalizeLimit: 100
            allowRelocalization: true
            agreementType: "M2M"
            operatorId: "3.97"
            operatorName: "Smooth IoT"
            organizationName: "Enterprise X"
            localizationTableName: "Enterprise X M2M Localization Table"
            numberOfLocales: 0
            createdBy: "operator@smooth.iot"
            modifiedBy: "operator@smooth.iot"
            createdAt: "2022-08-01T17:25:20.219074Z"
            modifiedAt: "2022-08-01T17:25:20.219074Z"
          - id: 10054
            name: "Enterprise X Consumer eSIM Agreement"
            organizationId: "3.97.2"
            localizationTableId: 10032
            state: ACTIVE
            agreementType: "CONSUMER"
            operatorId: "3.97"
            operatorName: "Smooth IoT"
            organizationName: "Enterprise X"
            localizationTableName: "Enterprise X Consumer Localization Table"
            numberOfLocales: 0
            createdBy: "operator@smooth.iot"
            modifiedBy: "operator@smooth.iot"
            createdAt: "2022-08-01T17:25:20.219074Z"
            modifiedAt: "2022-08-01T17:25:20.219074Z"
    EuiccAgreementDetailsResponseM2MExample:
      value:
        euiccAgreement:
          id: 10052
          name: "Enterprise X eUICC Agreement"
          organizationId: "3.97.2"
          formSpecificationId: "Acme_2FF"
          localizationTableId: 10030
          state: ACTIVE
          enableLimit: 100
          delocalizeLimit: 100
          allowRelocalization: true
          agreementType: "M2M"
          operatorId: "3.97"
          operatorName: "Smooth IoT"
          organizationName: "Enterprise X"
          localizationTableName: "Enterprise X M2M Localization Table"
          numberOfLocales: 2
          createdBy: "operator@smooth.iot"
          modifiedBy: "operator@smooth.iot"
          createdAt: "2022-08-01T17:25:20.219074Z"
          modifiedAt: "2022-08-01T17:25:20.219074Z"
        formSpecification:
          specificationId: "Acme_2FF"
          description: "Micro eUICC"
          operatorId: "3.97"
          active: true
          smsrId: "1.2.3.4"
          orderThreshold: 0
          earliestDeliveryDate: 14
          minimumOrderVolume: 0
          lowOrderThreshold: 10
          orderIncrement: 0
        locales:
          - id: "ENH-01"
            name: "Enhanced Service Locale"
            organizationId: "3.97.2"
            organizationName: "Enterprise X"
            operatorId: "3.97"
            operatorName: "Smooth IoT"
            profileSpecificationId: "Smooth_2nd_step_profile"
            subscriptionPackageId: "97000001_001_SP_02"
            euiccCount: 2
            localeType: "STANDARD_INBOUND"
          - id: "ENH-02"
            name: "Enhanced Service Locale 2"
            organizationId: "3.97.2"
            organizationName: "Enterprise X"
            operatorId: "3.97"
            operatorName: "Smooth IoT"
            profileSpecificationId: "Smooth_2nd_step_profile"
            subscriptionPackageId: "97000001_002_SP_30"
            euiccCount: 0
            localeType: "STANDARD_INBOUND"
        unlocalizedEuiccCount: 18
    EuiccAgreementDetailsResponseConsumerExample:
      value:
        euiccAgreement:
          id: 10054
          name: "Enterprise X Consumer eSIM Agreement"
          organizationId: "3.97.2"
          localizationTableId: 10032
          state: ACTIVE
          agreementType: "CONSUMER"
          operatorId: "3.97"
          operatorName: "Smooth IoT"
          organizationName: "Enterprise X"
          localizationTableName: "Enterprise X Consumer Localization Table"
          numberOfLocales: 1
          createdBy: "operator@smooth.iot"
          modifiedBy: "operator@smooth.iot"
          createdAt: "2022-08-01T17:25:20.219074Z"
          modifiedAt: "2022-08-01T17:25:20.219074Z"
        locales:
          - id: "Consumer-01"
            name: "Consumer eSIM Service Locale"
            organizationId: "3.97.2"
            organizationName: "Enterprise X"
            operatorId: "3.97"
            operatorName: "Smooth IoT"
            profileSpecificationId: "Smooth_consumer_profile"
            subscriptionPackageId: "97000001_001_SPC_01"
            euiccCount: 5
            localeType: "CONSUMER"
        unlocalizedEuiccCount: 35
    EuiccAgreementDetailsResponseNoDetailsExample:
      value:
        euiccAgreement:
          id: 10052
          name: "Enterprise X eUICC Agreement"
          organizationId: "3.97.2"
          formSpecificationId: "Acme_2FF"
          localizationTableId: 10030
          state: ACTIVE
          enableLimit: 100
          delocalizeLimit: 100
          allowRelocalization: true
          agreementType: "M2M"
          operatorId: "3.97"
          operatorName: "Smooth IoT"
          organizationName: "Enterprise X"
          localizationTableName: "Enterprise X M2M Localization Table"
          createdBy: "operator@smooth.iot"
          modifiedBy: "operator@smooth.iot"
          createdAt: "2022-08-01T17:25:20.219074Z"
          modifiedAt: "2022-08-01T17:25:20.219074Z"
        locales: [ ]
    LocalizationTableInfoExample:
      value:
        localizationTableName: "Enterprise X M2M Localization Table"
        euiccChargingType: "CHARGE_ACTIVE"
        organizationId: "3.97.2"
        items:
          - localeId: "ENH-01"
            localeName: "Enhanced Service Locale"
            organizationId: "3.97.2"
            profileSpecificationId: "Smooth_2nd_step_profile"
            subscriptionPackageId: "97000001_001_SP_02"
            features: [ ]
            localeParameters: [ ]
            localeType: "STANDARD_INBOUND"
          - localeId: "ENH-02"
            localeName: "Enhanced Service Locale 2"
            organizationId: "3.97.2"
            profileSpecificationId: "Smooth_2nd_step_profile"
            subscriptionPackageId: "97000001_002_SP_30"
            features: [ ]
            localeParameters: [ ]
            localeType: "STANDARD_INBOUND"
    LocalizationTableInfoUpdateExample:
      value:
        localizationTableName: "Updated Localization table Name"
        euiccChargingType: "CHARGE_ACTIVE"
    LocalizationTableListExample:
      value:
        localizationTables:
          - id: 10030
            localizationTableName: "Enterprise X M2M Localization Table"
            euiccChargingType: "CHARGE_ACTIVE"
            organizationId: "3.97.2"
            readOnly: false
            items:
              - localeId: "ENH-01"
                localeName: "Enhanced Service Locale"
                organizationId: "3.97.2"
                profileSpecificationId: "Smooth_2nd_step_profile"
                subscriptionPackageId: "97000001_001_SP_02"
                features: [ ]
                localeParameters: [ ]
                localeType: "STANDARD_INBOUND"
              - localeId: "ENH-02"
                localeName: "Enhanced Service Locale 2"
                organizationId: "3.97.2"
                profileSpecificationId: "Smooth_2nd_step_profile"
                subscriptionPackageId: "97000001_002_SP_30"
                features: [ ]
                localeParameters: [ ]
                localeType: "STANDARD_INBOUND"
          - id: 10032
            localizationTableName: "Enterprise X Consumer Localization Table"
            euiccChargingType: "CHARGE_ACTIVE"
            organizationId: "3.97.2"
            readOnly: false
            items:
              - localeId: "Consumer-01"
                localeName: "Enhanced Service Locale"
                organizationId: "3.97.2"
                profileSpecificationId: "Smooth_consumer_profile"
                subscriptionPackageId: "97000001_001_SPC_01"
                features: [ ]
                localeParameters: [ ]
                localeType: "CONSUMER"
    LocalizationTableExample:
      value:
        id: 10030
        localizationTableName: "Enterprise X M2M Localization Table"
        euiccChargingType: "CHARGE_ACTIVE"
        organizationId: "3.97.2"
        readOnly: false
        items:
          - localeId: "ENH-01"
            localeName: "Enhanced Service Locale"
            organizationId: "3.97.2"
            profileSpecificationId: "Smooth_2nd_step_profile"
            subscriptionPackageId: "97000001_001_SP_02"
            features: [ ]
            localeParameters: [ ]
            localeType: "STANDARD_INBOUND"
          - localeId: "ENH-02"
            localeName: "Enhanced Service Locale 2"
            organizationId: "3.97.2"
            profileSpecificationId: "Smooth_2nd_step_profile"
            subscriptionPackageId: "97000001_002_SP_30"
            features: [ ]
            localeParameters: [ ]
            localeType: "STANDARD_INBOUND"
    UpdatedLocalizationTableExample:
      value:
        id: 10030
        localizationTableName: "Updated Localization table Name"
        euiccChargingType: "CHARGE_ACTIVE"
        organizationId: "3.97.2"
        readOnly: false
        items:
          - localeId: "ENH-01"
            localeName: "Enhanced Service Locale"
            organizationId: "3.97.2"
            profileSpecificationId: "Smooth_2nd_step_profile"
            subscriptionPackageId: "97000001_001_SP_02"
            features: [ ]
            localeParameters: [ ]
            localeType: "STANDARD_INBOUND"
          - localeId: "ENH-02"
            localeName: "Enhanced Service Locale 2"
            organizationId: "3.97.2"
            profileSpecificationId: "Smooth_2nd_step_profile"
            subscriptionPackageId: "97000001_002_SP_30"
            features: [ ]
            localeParameters: [ ]
            localeType: "STANDARD_INBOUND"
    LocaleExample:
      value:
        localeId: "ENH-01"
        localeName: "Enhanced Service Locale"
        organizationId: "3.97.2"
        profileSpecificationId: "Smooth_2nd_step_profile"
        subscriptionPackageId: "97000001_001_SP_02"
        features: [ ]
        localeParameters: [ ]
        localeType: "STANDARD_INBOUND"
    LocaleInfoExample:
      value:
        localeName: "Updated Enhanced Service Locale"
        organizationId: "3.97.2"
        profileSpecificationId: "Smooth_2nd_step_profile"
        subscriptionPackageId: "97000001_001_SP_02"
        features:
          - "SMDP_ONLY"
          - "ONE_STEP"
        localeParameters: [ ]
    UpdatedLocaleExample:
      value:
        localeId: "ENH-01"
        localeName: "Updated Enhanced Service Locale"
        organizationId: "3.97.2"
        profileSpecificationId: "Smooth_2nd_step_profile"
        subscriptionPackageId: "97000001_001_SP_02"
        features:
          - "SMDP_ONLY"
          - "ONE_STEP"
        localeParameters: [ ]
        localeType: "STANDARD_INBOUND"
    LocaleArrayExample:
      value:
        - localeId: "ENH-01"
          localeName: "Enhanced Service Locale"
          organizationId: "3.97.2"
          profileSpecificationId: "Smooth_2nd_step_profile"
          subscriptionPackageId: "97000001_001_SP_02"
          features: [ ]
          localeParameters: [ ]
          localeType: "STANDARD_INBOUND"
        - localeId: "ENH-02"
          localeName: "Enhanced Service Locale 2"
          organizationId: "3.97.2"
          profileSpecificationId: "Smooth_2nd_step_profile"
          subscriptionPackageId: "97000001_002_SP_30"
          features: [ ]
          localeParameters: [ ]
          localeType: "STANDARD_INBOUND"
    LocaleListExample:
      value:
        localizationTableItems:
          - localeId: "ENH-01"
            localeName: "Enhanced Service Locale"
            organizationId: "3.97.2"
            profileSpecificationId: "Smooth_2nd_step_profile"
            subscriptionPackageId: "97000001_001_SP_02"
            features: [ ]
            localeParameters: [ ]
            localeType: "STANDARD_INBOUND"
          - localeId: "ENH-02"
            localeName: "Enhanced Service Locale 2"
            organizationId: "3.97.2"
            profileSpecificationId: "Smooth_2nd_step_profile"
            subscriptionPackageId: "97000001_002_SP_30"
            features: [ ]
            localeParameters: [ ]
            localeType: "STANDARD_INBOUND"
  responses:
    RateLimitedResponse:
      headers:
        X-RateLimit-Limit-Second:
          $ref: '#/components/headers/X-RateLimit-Limit-Second'
        X-RateLimit-Limit-Minute:
          $ref: '#/components/headers/X-RateLimit-Limit-Minute'
        X-RateLimit-Remaining-Second:
          $ref: '#/components/headers/X-RateLimit-Remaining-Second'
        X-RateLimit-Remaining-Minute:
          $ref: '#/components/headers/X-RateLimit-Remaining-Minute'
        Content-Type:
          $ref: '#/components/headers/Content-Type'
    '204':
      description: No Content
      allOf:
        - $ref: '#/components/responses/RateLimitedResponse'
    '400':
      description: Bad Request
      headers:
        Content-Type:
          $ref: '#/components/headers/Content-Type'
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/Problem'
          example:
            type: "https://your.api.documentation.url/bad-request"
            title: "Bad Request"
            status: 400
            detail: "The request could not be understood by the server due to malformed syntax"
            instance: "https://api.documentation.url/request-id"
    '401':
      description: Unauthorized
      headers:
        Content-Type:
          $ref: '#/components/headers/Content-Type'
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/Problem'
          example:
            type: "https://your.api.documentation.url/unauthorized"
            title: "Unauthorized"
            status: 401
            detail: "Authentication credentials were missing or incorrect"
            instance: "https://api.documentation.url/request-id"
    '403':
      description: Forbidden
      headers:
        Content-Type:
          $ref: '#/components/headers/Content-Type'
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/Problem'
          example:
            type: "https://your.api.documentation.url/forbidden"
            title: "Forbidden"
            status: 403
            detail: "The server understood the request but refuses to authorize it"
            instance: "https://api.documentation.url/request-id"
    '404':
      description: Not Found
      headers:
        Content-Type:
          $ref: '#/components/headers/Content-Type'
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/Problem'
          example:
            type: "https://your.api.documentation.url/not-found"
            title: "Not Found"
            status: 404
            detail: "The requested resource could not be found"
            instance: "https://api.documentation.url/request-id"
    '405':
      description: Method Not Allowed
      headers:
        Content-Type:
          $ref: '#/components/headers/Content-Type'
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/Problem'
          example:
            type: "https://your.api.documentation.url/method-not-allowed"
            title: "Method Not Allowed"
            status: 405
            detail: "The request method is not supported for this resource"
            instance: "https://api.documentation.url/request-id"
    '429':
      description: Too Many Requests
      allOf:
        - $ref: '#/components/responses/RateLimitedResponse'
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/Problem'
          example:
            type: "https://your.api.documentation.url/too-many-requests"
            title: "Too Many Requests"
            status: 429
            detail: "The user has sent too many requests in a given amount of time"
            instance: "https://api.documentation.url/request-id"
    '500':
      description: Internal Server Error
      headers:
        Content-Type:
          $ref: '#/components/headers/Content-Type'
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/Problem'
          example:
            type: "https://your.api.documentation.url/internal-server-error"
            title: "Internal Server Error"
            status: 500
            detail: "The server encountered an unexpected condition that prevented it from fulfilling the request"
            instance: "https://api.documentation.url/request-id"
  parameters:
    Header-Accept:
      name: Accept
      in: header
      description: Accept content-type by the client
      schema:
        type: string
    Header-Accept-Version:
      name: Accept-Version
      in: header
      description: Accept version of the response
      schema:
        type: string
    Header-Content-Type:
      name: Content-Type
      in: header
      description: Content-Type
      schema:
        type: string
  headers:
    Content-Type:
      description: Handle Content-Type
      schema:
        type: string
    X-RateLimit-Limit-Second:
      description: The maximum number of requests allowed in a second.
      schema:
        type: integer
        format: int32
    X-RateLimit-Limit-Minute:
      description: The maximum number of requests allowed in a minute.
      schema:
        type: integer
        format: int32
    X-RateLimit-Remaining-Second:
      description: The number of requests remaining in a second.
      schema:
        type: integer
        format: int32
    X-RateLimit-Remaining-Minute:
      description: The number of requests remaining in a minute.
      schema:
        type: integer
        format: int32
  securitySchemes:
    OAuth2:
      type: oauth2
      description: The resources in the API are protected using the OAuth 2.0 protocol
      flows:
        clientCredentials:
          tokenUrl: https://iot-api.aeris.com/iot/api/auth/token
          scopes:
            euicc-mgt.agreement.read: Grant client read access to eUICC agreement resources
            euicc-mgt.agreement.write: Grant client write access to eUICC agreement resources
