Equinix EIA Service API

Equinix Internet Access Service API

OpenAPI Specification

equinix-eia-service-api-openapi.yml Raw ↑
openapi: 3.0.1
info:
  title: Equinix API Authentication EIA Service API
  description: 'Equinix APIs use the OAuth 2.0 for authentication and authorization. Equinix supports the resource owner password and the client credentials flow.

    To begin, obtain OAuth 2.0 client credentials from the Equinix Developer Console under "My Apps". Then your client application  requests an access token from the Equinix API Authorization endpoint, extracts the access_token from the response, and sends the Bearer token to the API that you want to access'
  termsOfService: https://www.equinix.com/about/legal/terms
  contact:
    name: Equinix API Support
    url: https://docs.equinix.com/api-support.htm
  version: '1.2'
servers:
- url: https://api.equinix.com
tags:
- name: EIA Service
  description: Equinix Internet Access Service API
paths:
  /internetAccess/v2/services:
    post:
      tags:
      - EIA Service
      summary: Creates Equinix Internet Access Service
      description: 'By passing in the appropriate options, you can create Equinix Internet Access Service product. The entire request either succeeds or fails. In case of failure all the changes in the system are rolled back, so the system gets back to its stated before submitting the request

        '
      operationId: createEquinixInternetAccessv2
      requestBody:
        description: 'Options for creating Equinix Internet Access Service product

          '
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ServiceRequest'
        required: true
      responses:
        '201':
          description: 'Equinix Internet Access Service Response

            '
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ServiceV2'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorList'
              examples:
                invalidProperty:
                  value:
                  - errorCode: EQ-7100010
                    errorMessage: Validation Failure
                    correlationId: sampleCorrelationId
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorList'
              examples:
                invalidProperty:
                  value:
                  - errorCode: EQ-7100001
                    errorMessage: Unauthorized
                    correlationId: sampleCorrelationId
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorList'
              examples:
                invalidProperty:
                  value:
                  - errorCode: EQ-7100002
                    errorMessage: Forbidden
                    correlationId: sampleCorrelationId
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorList'
              examples:
                internalServerError:
                  value:
                  - errorCode: EQ-7100030
                    errorMessage: Internal Server Error
                    correlationId: sampleCorrelationId
components:
  schemas:
    CustomerRouteIpv4Request:
      type: object
      properties:
        ipBlock:
          $ref: '#/components/schemas/IpBlockIpv4Request'
        prefix:
          pattern: ^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(?:/[0-2]*\d{1}|/3[0-2]){1}$
          type: string
          description: 'Subnet prefix

            '
          example: 198.51.100.0/24
    RoutingProtocolRequest:
      allOf:
      - $ref: '#/components/schemas/Taggable'
      - required:
        - type
        type: object
        properties:
          type:
            $ref: '#/components/schemas/RoutingProtocolType'
          name:
            type: string
            description: 'Name of the routing protocol instance.

              '
            example: WebServers Routes
          description:
            type: string
            description: 'Description of the routing protocol instance

              '
            example: 'Routes to customer facing web servers

              '
    OrderSignatureRequest:
      required:
      - signatory
      type: object
      properties:
        signatory:
          type: string
          example: SELF
          enum:
          - SELF
          - DELEGATE
          - SUPPORT
        delegate:
          $ref: '#/components/schemas/OrderSignatureDelegateRequest'
    Taggable:
      type: object
      properties:
        tags:
          type: array
          items:
            type: string
    RoutingProtocolIpv4Request:
      required:
      - customerRoutes
      type: object
      properties:
        customerRoutes:
          minItems: 1
          type: array
          description: Collection of customer routes of IP Version 4 (IPv4)
          items:
            $ref: '#/components/schemas/CustomerRouteIpv4Request'
    DirectPeeringIpv6Request:
      type: object
      properties:
        connection:
          $ref: '#/components/schemas/DirectPeeringIpv4Request_connection'
        equinixPeerIps:
          type: array
          description: 'Peering IP addresses in Version 6 (IPv6)

            '
          items:
            pattern: ^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))(\/(?:[6-9]|[1-5][0-9]|6[0-4]))?$
            type: string
        equinixVRRPIp:
          pattern: ^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))(\/(?:[6-9]|[1-5][0-9]|6[0-4]))?$
          type: string
          description: 'Virtual router group IP addresses in Version 6 (IPv6)

            '
          example: 1002:0db8:85a3:0000:0000:8a2e:0370:6223
    CustomerBillingAccount:
      required:
      - accountNumber
      type: object
      properties:
        accountNumber:
          type: string
          description: 'Billing account number

            '
          example: 2-57689234
    ServicePurchaseOrderAttachment:
      type: object
      properties:
        attachmentId:
          type: string
          format: uuid
    DirectPeeringIpv4Request_connection:
      type: object
      properties:
        uuid:
          type: string
          format: uuid
    Link:
      type: object
      allOf:
      - $ref: '#/components/schemas/EntityReference'
      - properties:
          rel:
            type: string
            description: self, info, update, delete, statistics, events
          method:
            type: string
          authenticate:
            type: boolean
            default: false
          contentType:
            type: string
            example: application/json
    ContactRequest_details:
      type: object
      properties:
        type:
          type: string
          enum:
          - EMAIL
          - PHONE
          - MOBILE
          - SECONDARY_EMAIL
        value:
          type: string
        notes:
          type: string
    IpBlock:
      type: object
      properties:
        uuid:
          type: string
          format: uuid
        addressingPlans:
          type: array
          description: 'Collection of addressing plans

            '
          items:
            $ref: '#/components/schemas/IpBlockAddressingPlans'
        questions:
          type: array
          description: 'Connection of questions

            '
          items:
            $ref: '#/components/schemas/IpBlockQuestions'
    UniqueEntityReference:
      allOf:
      - $ref: '#/components/schemas/EntityReference'
      - required:
        - uuid
        type: object
        properties:
          uuid:
            type: string
            format: uuid
    OrderSignatureDelegateRequest:
      required:
      - email
      type: object
      properties:
        firstName:
          type: string
        lastName:
          type: string
        email:
          type: string
          description: 'Email address that the signature request should be sent to in case of DELEGATE signature

            '
          format: email
          example: cto@business.com
    ErrorList:
      type: array
      description: List of Error Message
      items:
        $ref: '#/components/schemas/Error'
    ServiceState:
      type: string
      enum:
      - DRAFT
      - PENDING
      - PROVISIONING
      - ACTIVE
      - INACTIVE
      - DEPROVISIONING
      - DEPROVISIONED
      - FAILED
    ServiceOrderType:
      type: string
      enum:
      - NEW
      - AMENDMENT
    BgpRoutingProtocolRequest:
      allOf:
      - $ref: '#/components/schemas/RoutingProtocolRequest'
      - required:
        - exportPolicy
        type: object
        properties:
          customerAsnRange:
            type: string
            description: Customer Autonomous System Number range
            enum:
            - BITS_16
            - BITS_32
          customerAsn:
            maximum: 4294967295
            minimum: 1
            type: integer
            description: 'Customer Autonomous System Number

              '
            format: int64
            example: 16220
          bgpAuthKey:
            type: string
            description: 'BGP authentication key

              '
            example: SecretKey
          exportPolicy:
            type: string
            description: 'Denotes which routes should be advertised to the internet

              '
            example: FULL
            enum:
            - FULL
            - DEFAULT
            - FULL_DEFAULT
            - PARTIAL
          ipv4:
            $ref: '#/components/schemas/RoutingProtocolIpv4Request'
          ipv6:
            $ref: '#/components/schemas/RoutingProtocolIpv6Request'
        description: BGP routing protocol
    StaticRoutingProtocolRequest:
      allOf:
      - $ref: '#/components/schemas/RoutingProtocolRequest'
      - type: object
        properties:
          ipv4:
            $ref: '#/components/schemas/RoutingProtocolIpv4Request'
          ipv6:
            $ref: '#/components/schemas/RoutingProtocolIpv6Request'
        description: Static routing protocol
    ServiceV2:
      required:
      - state
      - uuid
      type: object
      properties:
        uuid:
          type: string
          format: uuid
        type:
          $ref: '#/components/schemas/ServiceTypeV2'
        bandwidth:
          type: integer
          description: Service bandwidth in Mbps
          example: 1000
        account:
          $ref: '#/components/schemas/CustomerAccountReference'
        changeLog:
          $ref: '#/components/schemas/ServiceChangeLog'
        links:
          type: array
          items:
            $ref: '#/components/schemas/Link'
        order:
          $ref: '#/components/schemas/ServiceOrderReference'
        project:
          $ref: '#/components/schemas/ProjectReference'
        state:
          $ref: '#/components/schemas/ServiceState'
    ServiceOrderContact:
      allOf:
      - $ref: '#/components/schemas/ContactRequest'
      - type: object
        properties:
          registeredUser:
            type: string
            description: 'Identifies (e.g., userName) a registered user. If a registered user is specified, then firstName/lastName need not be provided

              '
            example: '123232'
    RoutingProtocolType:
      type: string
      enum:
      - DIRECT
      - STATIC
      - BGP
    ServiceTypeV2:
      type: string
      example: SINGLE
      enum:
      - SINGLE
      - DUAL
    CustomerRouteIpv6Request:
      type: object
      properties:
        ipBlock:
          $ref: '#/components/schemas/IpBlockIpv6Request'
        prefix:
          pattern: ^s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]d|1dd|[1-9]?d)(.(25[0-5]|2[0-4]d|1dd|[1-9]?d)){3}))|:)))(%.+)?s*(\/([0-9]|[1-9][0-9]|1[0-1][0-9]|12[0-8]))?$
          type: string
          description: 'Subnet prefix

            '
          example: 2001:db8::/64
    ServiceOrderReference:
      required:
      - type
      allOf:
      - $ref: '#/components/schemas/UniqueEntityReference'
      - properties:
          type:
            $ref: '#/components/schemas/ServiceOrderType'
    PurchaseOrderType:
      type: string
      description: Purchase order type
      enum:
      - STANDARD_PURCHASE_ORDER
      - BLANKET_PURCHASE_ORDER
    Project:
      required:
      - projectId
      type: object
      properties:
        projectId:
          type: string
          description: 'Customer Resource Hierarchy Project identifier

            '
          example: '7348'
    ServiceOrderRequest:
      allOf:
      - $ref: '#/components/schemas/Taggable'
      - type: object
        properties:
          contacts:
            type: array
            items:
              $ref: '#/components/schemas/ServiceOrderContact'
          draft:
            type: boolean
            default: false
          purchaseOrder:
            $ref: '#/components/schemas/ServicePurchaseOrder'
          referenceNumber:
            type: string
            example: '239384723943'
          signature:
            $ref: '#/components/schemas/OrderSignatureRequest'
    IpBlockIpv6Request:
      allOf:
      - $ref: '#/components/schemas/IpBlock'
      - required:
        - prefixLength
        type: object
        properties:
          prefixLength:
            maximum: 126
            minimum: 48
            type: integer
            description: 'Length of the IP block, number after the / (slash)

              '
    ServiceChangeLog:
      required:
      - createdBy
      - createdByEmail
      - createdByFullName
      - createdDateTime
      - updatedBy
      - updatedByEmail
      - updatedByFullName
      - updatedDateTime
      type: object
      properties:
        createdBy:
          type: string
        createdByFullName:
          type: string
        createdByEmail:
          type: string
          format: email
        createdDateTime:
          type: string
          format: date-time
        updatedBy:
          type: string
        updatedByFullName:
          type: string
        updatedByEmail:
          type: string
          format: email
        updatedDateTime:
          type: string
          format: date-time
        deletedBy:
          type: string
        deletedByFullName:
          type: string
        deletedByEmail:
          type: string
          format: email
        deletedDateTime:
          type: string
          format: date-time
    ContactType:
      type: string
      enum:
      - NOTIFICATION
      - TECHNICAL
      - ORDERING
      - RESELLING
      - BILLING
    DirectRoutingProtocolIpv6Request:
      allOf:
      - $ref: '#/components/schemas/RoutingProtocolIpv6Request'
      - type: object
        properties:
          peerings:
            maxItems: 2
            minItems: 0
            type: array
            items:
              $ref: '#/components/schemas/DirectPeeringIpv6Request'
    ErrorAdditionalInfo:
      type: object
      properties:
        reason:
          type: string
          description: 'Reason of the error

            '
          example: 'Unsupported request parameter value

            '
        property:
          type: string
          description: 'Request property that caused the error

            '
          example: work.emailId
      description: Additional info for error
    ProjectReference:
      allOf:
      - $ref: '#/components/schemas/EntityReference'
      - $ref: '#/components/schemas/Project'
    DirectRoutingProtocolIpv4Request:
      allOf:
      - $ref: '#/components/schemas/RoutingProtocolIpv4Request'
      - type: object
        properties:
          peerings:
            maxItems: 2
            minItems: 0
            type: array
            items:
              $ref: '#/components/schemas/DirectPeeringIpv4Request'
    RoutingProtocolIpv6Request:
      required:
      - customerRoutes
      type: object
      properties:
        customerRoutes:
          minItems: 1
          type: array
          description: Collection of customer routes of IP Version 6 (IPv6)
          items:
            $ref: '#/components/schemas/CustomerRouteIpv6Request'
    Error:
      required:
      - errorCode
      - errorMessage
      type: object
      properties:
        errorCode:
          pattern: ^EQ-\d{7}$
          type: string
          description: 'Error code

            '
          readOnly: true
          example: EQ-7100100
        errorMessage:
          type: string
          description: Error message
          readOnly: true
          example: 'Unknown error occurred in Internet Access

            '
        correlationId:
          type: string
          description: 'Correlation ID identifying the request

            '
          readOnly: true
          example: 4e7b5042-b553-4d5e-a2ac-c73bf6d4ee27
        details:
          type: string
          description: 'Error details

            '
          readOnly: true
          example: 'Unknown error occurred in Internet Access

            '
        help:
          type: string
          description: 'Link to the help information

            '
          format: uri
          readOnly: true
          example: https://developer.equinix.com/faq
        additionalInfo:
          type: array
          description: 'Collection of additional information

            '
          readOnly: true
          items:
            $ref: '#/components/schemas/ErrorAdditionalInfo'
      description: Error Response with details
      readOnly: true
    CustomerAccountReference:
      $ref: '#/components/schemas/CustomerBillingAccount'
    ServicePurchaseOrder:
      required:
      - number
      type: object
      properties:
        type:
          $ref: '#/components/schemas/PurchaseOrderType'
        number:
          type: string
          description: 'Purchase order number

            '
          example: '129105284100'
        amount:
          minimum: 1
          type: number
          description: Amount
          example: 100.5
        startDate:
          type: string
          description: Start date in YYYY-MM-DD format
          format: date
        endDate:
          type: string
          description: End date in YYYY-MM-DD format
          format: date
        description:
          maxLength: 4096
          type: string
          description: Purchase order description
          example: example purchase order description
        attachment:
          $ref: '#/components/schemas/ServicePurchaseOrderAttachment'
    IpBlockQuestions:
      required:
      - answer
      - type
      type: object
      properties:
        type:
          type: string
          description: 'Type of question relevant to requesting public IP Subnet

            '
          example: PRIVATE_SPACE_CONSIDERED
          enum:
          - PRIVATE_SPACE_CONSIDERED
          - REFUSED_PREVIOUSLY
          - RETURNING_ADDRESS_SPACE
        answer:
          type: string
          enum:
          - true
          - false
    ServiceRequest:
      allOf:
      - $ref: '#/components/schemas/Taggable'
      - required:
        - connections
        - routingProtocol
        - type
        type: object
        properties:
          name:
            type: string
          description:
            type: string
          type:
            $ref: '#/components/schemas/ServiceTypeV2'
          tags:
            type: array
            items:
              type: string
          connections:
            maxItems: 2
            minItems: 1
            type: array
            description: Collection of service connections uuids
            items:
              type: string
              format: uuid
          routingProtocol:
            oneOf:
            - $ref: '#/components/schemas/DirectRoutingProtocolRequest'
            - $ref: '#/components/schemas/StaticRoutingProtocolRequest'
            - $ref: '#/components/schemas/BgpRoutingProtocolRequest'
            discriminator:
              propertyName: type
              mapping:
                DIRECT: '#/components/schemas/DirectRoutingProtocolRequest'
                STATIC: '#/components/schemas/StaticRoutingProtocolRequest'
                BGP: '#/components/schemas/BgpRoutingProtocolRequest'
          order:
            $ref: '#/components/schemas/ServiceOrderRequest'
    IpBlockIpv4Request:
      allOf:
      - $ref: '#/components/schemas/IpBlock'
      - required:
        - prefixLength
        type: object
        properties:
          prefixLength:
            maximum: 30
            minimum: 24
            type: integer
            description: Length of the IP block, number after the / (slash)
    IpBlockAddressingPlans:
      required:
      - afterThreeMonths
      - immediate
      - purpose
      - size
      type: object
      properties:
        size:
          minimum: 1
          type: integer
        purpose:
          type: string
          description: 'The purpose of IP Subnet

            '
          example: 'Provide internet services to the customers

            '
        immediate:
          type: integer
          description: 'Number of ip addresses to be used immediatelly

            '
          example: 1
        afterThreeMonths:
          minimum: 0
          type: integer
          description: 'Number of ip addresses to be used after 3 months

            '
          example: 1
    DirectRoutingProtocolRequest:
      allOf:
      - $ref: '#/components/schemas/RoutingProtocolRequest'
      - type: object
        properties:
          ipv4:
            $ref: '#/components/schemas/DirectRoutingProtocolIpv4Request'
          ipv6:
            $ref: '#/components/schemas/DirectRoutingProtocolIpv6Request'
        description: Direct routing protocol
    DirectPeeringIpv4Request:
      type: object
      properties:
        connection:
          $ref: '#/components/schemas/DirectPeeringIpv4Request_connection'
        equinixPeerIps:
          type: array
          description: 'Peering IP addresses in Version 4 (IPv4)

            '
          items:
            pattern: ^(?:\d{1,3}\.){3}\d{1,3}(?:\/(?:[0-2]?[0-9]|3[0-2]))?$
            type: string
        equinixVRRPIp:
          pattern: ^(?:\d{1,3}\.){3}\d{1,3}(?:\/(?:[0-2]?[0-9]|3[0-2]))?$
          type: string
          description: 'Virtual router group IP addresses in Version 4 (IPv4)

            '
          example: 18.15.15.18
    EntityReference:
      required:
      - href
      type: object
      properties:
        href:
          type: string
    ContactRequest:
      required:
      - type
      type: object
      properties:
        type:
          $ref: '#/components/schemas/ContactType'
        firstName:
          type: string
        lastName:
          type: string
        timezone:
          type: string
        notes:
          type: string
        availability:
          type: string
          enum:
          - WORK_HOURS
          - ANYTIME
          - CUSTOMER_BUSINESS_HOURS
          - NOT_AVAILABLE
        details:
          type: array
          items:
            $ref: '#/components/schemas/ContactRequest_details'
x-eqx-api-linter-skip-rules:
- 3
- 38