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