openapi: 3.2.0 info: version: 2.3.2 title: eUICC Setup Euicc Agreement API description: '#### Copyright © Aeris Communications, Inc.' 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 paths: /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 components: schemas: EuiccAgreementDetailsResponse.0.1.1: required: - euiccAgreement - locales type: object properties: euiccAgreement: $ref: '#/components/schemas/EuiccAgreement.0.1.1' formSpecification: allOf: - $ref: '#/components/schemas/FormSpecification.0.0.1' locales: type: array items: $ref: '#/components/schemas/LocaleDetails.0.0.1' unlocalizedEuiccCount: type: integer format: int64 EuiccAgreementList.0.1.1: required: - euiccAgreements type: object properties: euiccAgreements: type: array items: $ref: '#/components/schemas/EuiccAgreement.0.1.1' 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 EuiccAgreementList.0.0.1: required: - euiccAgreements type: object properties: euiccAgreements: type: array items: $ref: '#/components/schemas/EuiccAgreement.0.0.1' EuiccAgreementDetailsResponse.0.0.1: required: - euiccAgreement - locales type: object properties: euiccAgreement: $ref: '#/components/schemas/EuiccAgreement.0.0.1' formSpecification: allOf: - $ref: '#/components/schemas/FormSpecification.0.0.1' locales: type: array items: $ref: '#/components/schemas/LocaleDetails.0.0.1' unlocalizedEuiccCount: type: integer format: int64 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 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 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 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 example: 503 exclusiveMaximum: 600 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 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 headers: Content-Type: description: Handle Content-Type schema: type: string X-RateLimit-Remaining-Second: description: The number of requests remaining in a second. schema: type: integer format: int32 X-RateLimit-Limit-Second: description: The maximum number of requests allowed 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 X-RateLimit-Limit-Minute: description: The maximum number of requests allowed in a minute. schema: type: integer format: int32 responses: '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 '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 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' '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 '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 '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 '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 '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 examples: EuiccAgreementInfoConsumerExample: value: name: Enterprise X Consumer eSIM Agreement organizationId: 3.97.2 localizationTableId: 10032 state: ACTIVE agreementType: CONSUMER 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' 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: [] 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' 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' 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 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 parameters: Header-Content-Type: name: Content-Type in: header description: Content-Type schema: type: string Header-Accept-Version: name: Accept-Version in: header description: Accept version of the response schema: type: string 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