openapi: 3.1.0 info: title: emnify REST subpackage_applicationTokens subpackage_cloudConnect API version: 1.0.0 description: 'The emnify REST API gives programmatic access to the emnify IoT SuperNetwork — global cellular connectivity for IoT devices. Manage SIMs, endpoints (devices), service and tariff profiles, events, SMS, eSIM (SGP.32) profiles, organizations, users, API callbacks, and the Data Streamer. Authenticate with application tokens or user credentials; tokens are short-lived JWTs. Source: emnify developer documentation (https://docs.emnify.com/developers/api). This spec is assembled from the per-operation OpenAPI fragments published in the emnify llms-full.txt feed.' contact: name: emnify Developer Support url: https://docs.emnify.com/developers license: name: Proprietary url: https://www.emnify.com/legal servers: - url: https://cdn.emnify.net description: emnify REST API base host security: - BearerAuth: [] tags: - name: subpackage_cloudConnect x-display-name: Cloudconnect paths: /api/v1/cnc/breakout: get: operationId: get-cloud-connect-attachments summary: List all Cloud Connect attachments of an organization description: 'Lists all Cloud Connect attachments of the logged in organisation if it is an Enterprise. For Master organisations it lists all attachments of the direct child organisations. Deleted attachments are left out by default. Additionally the attachments can be filtered by status and type. Master organisations can also filter by organisation ID of their direct child organisations. ' tags: - subpackage_cloudConnect parameters: - name: status in: query description: 'Numerical ID of the Cloud Connect attachment status * `1` - Pending Customer Action * `2` - Pending AWS Activation * `3` - Pending EGN Activation * `4` - Pending CRG Activation * `5` - Active * `6` - Deactivation Pending * `7` - Deactivated * `8` - Rolling Back ' required: false schema: $ref: '#/components/schemas/ApiV1CncBreakoutGetParametersStatus' - name: type in: query description: 'Numerical ID of the Cloud Connect attachment type * `1` - Transit Gateway * `2` - IPSec VPN * `3` - IPSec VPN BGP * `4` - IPSec VPN BGP High Availability * `5` - Direct Connect * `6` - Shared * `7` - Transit Gateway (Classic) * `8` - IPSec VPN (Classic) ' required: false schema: $ref: '#/components/schemas/ApiV1CncBreakoutGetParametersType' - name: organisation in: query description: Numerical ID of an Organization required: false schema: type: number format: double - name: Authorization in: header description: 'An `auth_token` should be provided to authenticate a session. To obtain an `auth_token`, see the [`/api/v1/authenticate` **POST** request](/developers/api/authentication/authenticate). ' required: true schema: type: string responses: '200': description: OK content: application/json: schema: type: array items: $ref: '#/components/schemas/ApiV1CncBreakoutGetResponsesContentApplicationJsonSchemaItems' '403': description: Authentication token is valid, but user has no access permissions to the request resource content: application/json: schema: description: Any type /api/v1/cnc/breakout/tgw: post: operationId: create-cloud-connect-attachment-tgw summary: Create a Cloud Connect attachment via Transit Gateway description: 'Creates a Transit Gateway breakout towards the customer AWS account. After the creation the following steps have to be made from the customer''s AWS account: 1. Accept the resource share about the ''CloudConnect'' TransitGateway 2. Create a Transit Gateway Attachment to the own VPC with the services to connect to More Information about this can be found on the Cloud Connect Knowledge Base article. ' tags: - subpackage_cloudConnect parameters: - name: Authorization in: header description: 'An `auth_token` should be provided to authenticate a session. To obtain an `auth_token`, see the [`/api/v1/authenticate` **POST** request](/developers/api/authentication/authenticate). ' required: true schema: type: string responses: '201': description: Response to a POST that results in a creation, usually will return a Location header pointing to the location of the new resource content: application/json: schema: $ref: '#/components/schemas/Cloud Connect_CreateCloudConnectAttachmentTGW_Response_201' '400': description: The request is malformed, e.g. the body cannot be parsed content: application/json: schema: description: Any type '403': description: Authentication token is valid, but user has no access permissions to the request resource content: application/json: schema: description: Any type requestBody: content: application/json: schema: type: object properties: type: $ref: '#/components/schemas/ApiV1CncBreakoutTgwPostRequestBodyContentApplicationJsonSchemaType' name: type: string description: type: string vpc_cidr: type: array items: type: string region: type: string description: the region that this attachment should be established to aws_account_id: type: string description: 12-digit identifier of the own AWS Account required: - type - name - vpc_cidr - region - aws_account_id /api/v1/cnc/breakout/vpn: post: operationId: create-cloud-connect-attachment-vpn summary: Create a Cloud Connect attachment via IPSec VPN description: "Creates a Cloud Connect attachment via a specified VPN server.\nCurrently two attachment types are available:\n\n- **Static VPN** (type `2`): Basic IPSec VPN connection\n- **Dynamic VPN with BGP** (type `3`): IPSec VPN with BGP routing.\n Requires `asn` (Autonomous System Number), otherwise dynamic routing is disabled.\n Optionally accepts `inside_cidr` for BGP tunnel interfaces.\n\nThe `on_prem_cidr` parameter specifies the CIDR ranges of your backend network (up to 3).\nThe `public_ip` is the public IP address of your VPN server.\n\nA `psk` (Pre-Shared Key) can be configured with 8-64 alphanumeric characters, periods (`.`), and underscores (`_`).\nIt must not begin with `0`.\nIf left empty, it generates automatically and can be retrieved via [`GET /api/v1/cnc/breakout/{cloudconnect_attachment_id}`](/developers/api/cloud-connect/get-cloud-connect-attachment-by-id).\n\n\n The created connection is available within 3-5 minutes.\n\n" tags: - subpackage_cloudConnect parameters: - name: Authorization in: header description: 'An `auth_token` should be provided to authenticate a session. To obtain an `auth_token`, see the [`/api/v1/authenticate` **POST** request](/developers/api/authentication/authenticate). ' required: true schema: type: string responses: '201': description: 'Attachment created successfully. The `Location` header contains the URL of the new resource. ' content: application/json: schema: $ref: '#/components/schemas/Cloud Connect_CreateCloudConnectAttachmentVPN_Response_201' '400': description: 'The request body is malformed or missing required fields. ' content: application/json: schema: description: Any type '403': description: 'Your authentication token is valid, but you don''t have permission to access the requested resource. ' content: application/json: schema: description: Any type requestBody: content: application/json: schema: type: object properties: type: $ref: '#/components/schemas/ApiV1CncBreakoutVpnPostRequestBodyContentApplicationJsonSchemaType' description: 'Breakout type. Use `2` for Static VPN or `3` for Dynamic VPN with BGP. ' name: type: string description: Display name for the Cloud Connect attachment. description: type: string description: Optional description for the attachment. region: type: string description: AWS region for the attachment (for example, `eu-west-1`). public_ip: type: string description: Public IP address of your VPN server. psk: type: string description: 'Pre-shared key (PSK) for the VPN connection. If empty, AWS generates one automatically. ' asn: type: integer description: "Autonomous System Number (ASN) for BGP routing.\n\n\n Required for Dynamic VPN (type `3`).\"\n\n" on_prem_cidr: type: array items: type: string description: 'CIDR ranges of your backend network. You can configure up to 3 ranges. ' inside_cidr: type: array items: type: string description: 'For Dynamic VPN only: /30 CIDR ranges for BGP tunnel interfaces (up to 3). If empty, AWS generates them automatically. ' required: - type - name - public_ip - on_prem_cidr /api/v1/cnc/breakout/{cloudconnect_attachment_id}: get: operationId: get-cloud-connect-attachment-by-id summary: View details of a Cloud Connect attachment description: 'Displays the details including configured CIDR blocks of a Cloud Connect Attachment. For active IPSec VPN attachments, the tunnel information (public IP, outisde address, inside CIDR, PSK, ASN) including metrics over the last hour (tunnel state, bytes in/out) will be displayed as well. ' tags: - subpackage_cloudConnect parameters: - name: cloudconnect_attachment_id in: path required: true schema: type: string - name: Authorization in: header description: 'An `auth_token` should be provided to authenticate a session. To obtain an `auth_token`, see the [`/api/v1/authenticate` **POST** request](/developers/api/authentication/authenticate). ' required: true schema: type: string responses: '200': description: OK content: application/json: schema: type: array items: $ref: '#/components/schemas/ApiV1CncBreakoutCloudconnectAttachmentIdGetResponsesContentApplicationJsonSchemaItems' delete: operationId: delete-cloud-connect-attachment summary: Delete a specific Cloud Connect attachment description: 'Deletes the specified Cloud Connect attachment. Attachments cannot be deleted if they are in the state `7 (Deactivated)` or `8 (Rolling Back)` or if they are Classic attachments. ' tags: - subpackage_cloudConnect parameters: - name: cloudconnect_attachment_id in: path required: true schema: type: string - name: Authorization in: header description: 'An `auth_token` should be provided to authenticate a session. To obtain an `auth_token`, see the [`/api/v1/authenticate` **POST** request](/developers/api/authentication/authenticate). ' required: true schema: type: string responses: '200': description: Response to a successful GET, also used for a POST if it does not result in a creation content: application/json: schema: $ref: '#/components/schemas/Cloud Connect_DeleteCloudConnectAttachment_Response_200' '400': description: The request is malformed, e.g. the body cannot be parsed content: application/json: schema: description: Any type '403': description: Authentication token is valid, but user has no access permissions to the request resource content: application/json: schema: description: Any type patch: operationId: retry-cloud-connect-attachment summary: Retry creation of an expired TGW breakout description: 'Retries the creation of a Transit Gateway breakout where the accept attachment state has expired, meaning the attachment on the customer''s side has not been created in time. Retry is only allowed if: - The breakout is of type `Transit Gateway (type_id: 1)` - The breakout is in status `Pending AWS Activation (status_id: 2)` - The accept attachment state has expired (7 days after creation) ' tags: - subpackage_cloudConnect parameters: - name: cloudconnect_attachment_id in: path required: true schema: type: string - name: Authorization in: header description: 'An `auth_token` should be provided to authenticate a session. To obtain an `auth_token`, see the [`/api/v1/authenticate` **POST** request](/developers/api/authentication/authenticate). ' required: true schema: type: string responses: '200': description: Response to a successful GET, also used for a POST if it does not result in a creation content: application/json: schema: $ref: '#/components/schemas/Cloud Connect_RetryCloudConnectAttachment_Response_200' '404': description: A non-existent resource is requested content: application/json: schema: description: Any type /api/v1/cnc/breakout_type: get: operationId: get-cloud-connect-breakout-types summary: List Cloud Connect breakout types description: 'Lists all Cloud Connect breakout types. ' tags: - subpackage_cloudConnect parameters: - name: Authorization in: header description: 'An `auth_token` should be provided to authenticate a session. To obtain an `auth_token`, see the [`/api/v1/authenticate` **POST** request](/developers/api/authentication/authenticate). ' required: true schema: type: string responses: '200': description: OK content: application/json: schema: type: array items: $ref: '#/components/schemas/ApiV1CncBreakoutTypeGetResponsesContentApplicationJsonSchemaItems' /api/v1/cnc/breakout_type/{breakout_type_id}/available_region: get: operationId: get-cloud-connect-available-regions-by-breakout-type summary: Get list of available Cloud Connect regions by breakout type description: 'Returns a list of regions available for use when creating new Cloud Connect breakouts of the selected breakout type. If the attachment region is peered to another one, the device breakout region will also be returned. ' tags: - subpackage_cloudConnect parameters: - name: breakout_type_id in: path description: 'ID of a Cloud Connect breakout type. Possible values can be retrieved with `GET /api/v1/cnc/breakout_type`. ' required: true schema: type: integer - name: Authorization in: header description: 'An `auth_token` should be provided to authenticate a session. To obtain an `auth_token`, see the [`/api/v1/authenticate` **POST** request](/developers/api/authentication/authenticate). ' required: true schema: type: string responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/ApiV1CncBreakoutTypeBreakoutTypeIdAvailableRegionGetResponsesContentApplicationJsonSchemaItems' /api/v1/cnc/pricing: get: operationId: list-cloud-connect-custom-prices summary: List Cloud Connect prices description: 'Returns a list of the configured monthly prices for Cloud Connect breakouts. Master organisation, Mobile Network Operators and Resellers will get the list of prices they have configured for their child organisations. Enterprise organisations will get the list of prices that apply for them. ' tags: - subpackage_cloudConnect parameters: - name: Authorization in: header description: 'An `auth_token` should be provided to authenticate a session. To obtain an `auth_token`, see the [`/api/v1/authenticate` **POST** request](/developers/api/authentication/authenticate). ' required: true schema: type: string responses: '200': description: OK content: application/json: schema: type: array items: $ref: '#/components/schemas/ApiV1CncPricingGetResponsesContentApplicationJsonSchemaItems' components: schemas: ApiV1CncBreakoutGetParametersStatus: type: string enum: - '1' - '2' - '3' - '4' - '5' - '6' - '7' - '8' title: ApiV1CncBreakoutGetParametersStatus ApiV1CncBreakoutGetResponsesContentApplicationJsonSchemaItems: type: object properties: id: type: integer name: type: string description: type: string user_id: type: integer creation_date: type: string description: The date this attachment was created in UTC accept_attachment_expiry_date: type: string description: 'The expiry date of the accept attachment state in UTC. This will only be returned if the breakout is of type `Transit Gateway (type_id: 1)` and in Status `Pending AWS Actvation (status_id: 2)` ' termination_date: type: string aws_transit_gateway_attachment_id: type: string aws_vpn_connection_id: type: string description: This is only set when the breakout is a VPN attachment status: $ref: '#/components/schemas/ApiV1CncBreakoutGetResponsesContentApplicationJsonSchemaItemsStatus' type: $ref: '#/components/schemas/ApiV1CncBreakoutGetResponsesContentApplicationJsonSchemaItemsType' region: type: string description: The customer region that this attachment belongs to title: ApiV1CncBreakoutGetResponsesContentApplicationJsonSchemaItems ApiV1CncPricingGetResponsesContentApplicationJsonSchemaItemsCurrency: type: object properties: id: type: integer title: ApiV1CncPricingGetResponsesContentApplicationJsonSchemaItemsCurrency ApiV1CncBreakoutGetParametersType: type: string enum: - '1' - '2' - '3' - '4' - '5' - '6' - '7' - '8' title: ApiV1CncBreakoutGetParametersType ApiV1CncBreakoutCloudconnectAttachmentIdGetResponsesContentApplicationJsonSchemaItemsStatus: type: object properties: id: type: number format: double description: type: string title: ApiV1CncBreakoutCloudconnectAttachmentIdGetResponsesContentApplicationJsonSchemaItemsStatus ApiV1CncBreakoutGetResponsesContentApplicationJsonSchemaItemsType: type: object properties: id: type: number format: double description: type: string title: ApiV1CncBreakoutGetResponsesContentApplicationJsonSchemaItemsType ApiV1CncBreakoutVpnPostRequestBodyContentApplicationJsonSchemaTypeId: type: string enum: - '2' - '3' description: Attachment type identifier. title: ApiV1CncBreakoutVpnPostRequestBodyContentApplicationJsonSchemaTypeId Cloud Connect_DeleteCloudConnectAttachment_Response_200: type: object properties: {} description: Empty response body title: Cloud Connect_DeleteCloudConnectAttachment_Response_200 Cloud Connect_RetryCloudConnectAttachment_Response_200: type: object properties: {} description: Empty response body title: Cloud Connect_RetryCloudConnectAttachment_Response_200 Cloud Connect_CreateCloudConnectAttachmentTGW_Response_201: type: object properties: {} description: Empty response body title: Cloud Connect_CreateCloudConnectAttachmentTGW_Response_201 ApiV1CncPricingGetResponsesContentApplicationJsonSchemaItems: type: object properties: id: type: integer breakout_type_id: type: integer amount: type: number format: double currency: $ref: '#/components/schemas/ApiV1CncPricingGetResponsesContentApplicationJsonSchemaItemsCurrency' title: ApiV1CncPricingGetResponsesContentApplicationJsonSchemaItems ApiV1CncBreakoutTypeGetResponsesContentApplicationJsonSchemaItems: type: object properties: id: type: number format: double description: type: string title: ApiV1CncBreakoutTypeGetResponsesContentApplicationJsonSchemaItems ApiV1CncBreakoutTgwPostRequestBodyContentApplicationJsonSchemaType: type: string enum: - '1' title: ApiV1CncBreakoutTgwPostRequestBodyContentApplicationJsonSchemaType ApiV1CncBreakoutCloudconnectAttachmentIdGetResponsesContentApplicationJsonSchemaItems: type: object properties: id: type: integer name: type: string description: type: string user_id: type: integer creation_date: type: string description: The date this attachment was created in UTC accept_attachment_expiry_date: type: string description: 'The expiry date of the accept attachment state in UTC. This will only be returned if the breakout is of type `Transit Gateway (type_id: 1)` and in Status `Pending AWS Actvation (status_id: 2)` ' termination_date: type: string aws_transit_gateway_attachment_id: type: string aws_vpn_connection_id: type: string description: This is only set when the breakout is a VPN attachment status: $ref: '#/components/schemas/ApiV1CncBreakoutCloudconnectAttachmentIdGetResponsesContentApplicationJsonSchemaItemsStatus' type: $ref: '#/components/schemas/ApiV1CncBreakoutCloudconnectAttachmentIdGetResponsesContentApplicationJsonSchemaItemsType' region: type: string description: The customer region that this attachment belongs to tunnel_information: $ref: '#/components/schemas/ApiV1CncBreakoutCloudconnectAttachmentIdGetResponsesContentApplicationJsonSchemaItemsTunnelInformation' title: ApiV1CncBreakoutCloudconnectAttachmentIdGetResponsesContentApplicationJsonSchemaItems ApiV1CncBreakoutCloudconnectAttachmentIdGetResponsesContentApplicationJsonSchemaItemsTunnelInformationMetrics: type: object properties: tunnel_state: type: string bytes_in: type: object additionalProperties: type: number format: double bytes_out: type: object additionalProperties: type: number format: double title: ApiV1CncBreakoutCloudconnectAttachmentIdGetResponsesContentApplicationJsonSchemaItemsTunnelInformationMetrics ApiV1CncBreakoutTypeBreakoutTypeIdAvailableRegionGetResponsesContentApplicationJsonSchemaItems: type: object properties: attachment_region: type: string description: The region the customer's attachment will reside in device_breakout_region: type: string description: The region the traffic will be peered to title: ApiV1CncBreakoutTypeBreakoutTypeIdAvailableRegionGetResponsesContentApplicationJsonSchemaItems ApiV1CncBreakoutGetResponsesContentApplicationJsonSchemaItemsStatus: type: object properties: id: type: number format: double description: type: string title: ApiV1CncBreakoutGetResponsesContentApplicationJsonSchemaItemsStatus ApiV1CncBreakoutCloudconnectAttachmentIdGetResponsesContentApplicationJsonSchemaItemsType: type: object properties: id: type: number format: double description: type: string title: ApiV1CncBreakoutCloudconnectAttachmentIdGetResponsesContentApplicationJsonSchemaItemsType Cloud Connect_CreateCloudConnectAttachmentVPN_Response_201: type: object properties: {} description: Empty response body title: Cloud Connect_CreateCloudConnectAttachmentVPN_Response_201 ApiV1CncBreakoutCloudconnectAttachmentIdGetResponsesContentApplicationJsonSchemaItemsTunnelInformation: type: object properties: outside_address: type: string inside_cidr: type: string metrics: $ref: '#/components/schemas/ApiV1CncBreakoutCloudconnectAttachmentIdGetResponsesContentApplicationJsonSchemaItemsTunnelInformationMetrics' asn: type: number format: double public_ip: type: string title: ApiV1CncBreakoutCloudconnectAttachmentIdGetResponsesContentApplicationJsonSchemaItemsTunnelInformation ApiV1CncBreakoutVpnPostRequestBodyContentApplicationJsonSchemaType: type: object properties: id: $ref: '#/components/schemas/ApiV1CncBreakoutVpnPostRequestBodyContentApplicationJsonSchemaTypeId' description: Attachment type identifier. required: - id description: 'Breakout type. Use `2` for Static VPN or `3` for Dynamic VPN with BGP. ' title: ApiV1CncBreakoutVpnPostRequestBodyContentApplicationJsonSchemaType securitySchemes: BearerAuth: type: http scheme: bearer bearerFormat: JWT description: 'Retrieve a JWT via POST /api/v1/authenticate using an application_token or user credentials, then send it as `Authorization: Bearer `.'