--- openapi: 3.0.0 info: title: Secure Cabinet API description: Secure Cabinet API termsOfService: https://www.equinix.com/about/legal/terms contact: name: Equinix API Support url: https://docs.equinix.com/api-support.htm version: 1.0.0 servers: - url: https://api.equinix.com description: Equinix API tags: - name: orders description: Order Secure Cabinets - name: availability description: Secure Cabinet availability security: - BearerAuth: [ ] paths: /securecabinet/v1/orders: post: tags: - orders summary: Order a new Secure Cabinet deployment description: | Order a new Secure Cabinet deployment and recommended additional products at IBX data centers worldwide. operationId: createOrder requestBody: content: application/json: schema: $ref: '#/components/schemas/OrderCreateRequest' required: true responses: "202": description: Generated Order Number content: application/json: schema: $ref: '#/components/schemas/OrderCreateResponse' "401": description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Errors' example: - errorCode: EQ-7000401 errorMessage: Unauthorized correlationId: dd270016-e866-4146-9a53-84e5ea65ec06 "403": description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Errors' example: - errorCode: EQ-7000403 errorMessage: Forbidden correlationId: dd270016-e866-4146-9a53-84e5ea65ec06 "422": description: Input validation error content: application/json: schema: $ref: '#/components/schemas/ValidationErrors' "500": description: Internal server error content: application/json: schema: $ref: '#/components/schemas/Errors' /securecabinet/v1/availability/{accountNumber}: get: tags: - availability summary: Secure Cabinet availability. description: | Returns the availability of Secure Cabinets and recommended additional products for provided billing account. operationId: getProductsAvailability parameters: - name: accountNumber in: path description: Billing Account Number. required: true style: simple explode: false schema: $ref: '#/components/schemas/AccountNumber' responses: "200": description: Products availability details. content: application/json: schema: $ref: '#/components/schemas/ProductsAvailabilities' "401": description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/Errors' example: - errorCode: EQ-7000401 errorMessage: Unauthorized correlationId: dd270016-e866-4146-9a53-84e5ea65ec06 "400": description: Bad request content: application/json: schema: $ref: '#/components/schemas/Errors' example: - errorCode: EQ-7000400 errorMessage: "Account has following failed rules: [SCX_ACCOUNT_NO_MAIN_ADDRESS]" correlationId: dd270016-e866-4146-9a53-84e5ea65ec06 "403": description: Forbidden content: application/json: schema: $ref: '#/components/schemas/Errors' example: - errorCode: EQ-7000403 errorMessage: Forbidden correlationId: dd270016-e866-4146-9a53-84e5ea65ec06 "404": description: Not found content: application/json: schema: $ref: '#/components/schemas/Errors' example: - errorCode: EQ-7000404 errorMessage: Not Found correlationId: dd270016-e866-4146-9a53-84e5ea65ec06 "500": description: Internal server error content: application/json: schema: $ref: '#/components/schemas/Errors' components: securitySchemes: BearerAuth: type: http scheme: bearer bearerFormat: JWT schemas: ContractTerm: type: string description: Contract term length. example: TERM_24_MONTHS enum: - TERM_24_MONTHS - TERM_36_MONTHS - TERM_48_MONTHS - TERM_60_MONTHS OrderCreateRequest: required: - accountNumber - ibxCode - contractTerm - orderItem type: object properties: accountNumber: $ref: '#/components/schemas/AccountNumber' customerReference: maxLength: 100 type: string description: Supplementary identifier for your discretionary use. For example, your internal identifier. example: My Reference endCustomerName: type: string description: End customer name. Applicable and required if a reseller billing account is used. example: Michael Scott ibxCode: $ref: '#/components/schemas/IbxCode' contractTerm: $ref: '#/components/schemas/ContractTerm' orderItem: $ref: '#/components/schemas/OrderItem' purchaseOrderNumber: $ref: '#/components/schemas/PurchaseOrderNumber' technicalContact: $ref: '#/components/schemas/ContactDetails' OrderItem: required: - drawCapacity - fabricPort - numberOfCabinets - cabinetDimensions - pdus type: object properties: drawCapacity: $ref: '#/components/schemas/Rating' fabricPort: type: boolean description: Indicates if a single, primary Fabric port should be included and delivered to one of the ordered cabinets. example: true numberOfCabinets: minimum: 1 maximum: 2147483647 type: integer description: The number of ordered cabinets. example: 1 cabinetDimensions: $ref: '#/components/schemas/Dimensions' pdus: type: boolean description: Indicates if an Equinix-recommended set of two PDUs, for single-phase circuit, per cabinet should be installed. example: true description: Order details. OrderCreateResponse: required: - orderNumber type: object properties: orderNumber: $ref: '#/components/schemas/OrderNumber' OrderNumber: minLength: 1 type: string description: Order Number example: 1-126546546546 Rating: type: number description: Maximum, combined power draw of all cabinets in your order, measured in kVA. Applicable values, in 0.5 increments, depend on the IBX data center. format: double example: 5 ErrorAdditionalInfo: properties: property: type: string description: Property at which the error occurs. Can be empty. example: $.info reason: type: string description: Fallback error message in plain English. example: must not be blank ValidationErrorAdditionalInfo: required: - reason - validationRuleTag properties: property: type: string description: Property at which the validation violation occurs. Can be empty when validation happens at the object top level. example: $.info reason: type: string description: Fallback error message in plain English. example: Account does not exist validationRuleTag: type: string description: Violated validation rule tag. example: AccountExists validationRoot: type: string description: Name of the object at which the validation violation occurs. Can be empty when validation happens inline at the request params. example: AccountExists validationParameters: type: object additionalProperties: type: string description: A map containing additional violation parameters, these can be used to render localized error messages. The list of available parameters is different for each validationRuleTag. Errors: type: array items: $ref: '#/components/schemas/Error' ValidationErrors: type: array items: $ref: '#/components/schemas/ValidationError' Error: required: - errorCode - errorMessage properties: errorCode: maxLength: 10 minLength: 10 pattern: "^EQ-70[0-9]{5}$" type: string description: Application error code. Format :EQ- example: EQ-7000500 errorMessage: type: string description: Application error message example: Internal Server Error correlationId: type: string description: Correlation ID without any sensitive or meaningful information. example: dd270016-e866-4146-9a53-84e5ea65ec06 details: type: string description: More information on errors. example: Could not connect to database help: type: string description: Help message or URL to a help page for the corresponding errorCode. example: Please check system logs. additionalInfo: $ref: '#/components/schemas/ErrorAdditionalInfoList' description: Error responses are included with 4xx and 5xx HTTP responses from the API service. Either "error" or "errors" will be set. ValidationError: required: - errorCode - errorMessage properties: errorCode: maxLength: 10 minLength: 10 type: string description: Application error code. Format :EQ- example: EQ-7000422 errorMessage: type: string description: Application error message example: Unprocessable Entity correlationId: type: string description: Correlation ID without any sensitive or meaningful information. example: dd270016-e866-4146-9a53-84e5ea65ec06 details: type: string description: More information on errors. example: The submitted payload does not meet validation criteria help: type: string description: Help message or URL to a help page for the corresponding errorCode. example: Please fix submitted payload according to additionalInfo additionalInfo: $ref: '#/components/schemas/ValidationErrorAdditionalInfoList' description: Error responses are included with 4xx and 5xx HTTP responses from the API service. Either "error" or "errors" will be set. ErrorAdditionalInfoList: type: array description: Contains application specific information for this error. The object inside this array can have any number of application specific properties. items: $ref: '#/components/schemas/ErrorAdditionalInfo' ValidationErrorAdditionalInfoList: minItems: 1 type: array description: Contains application specific information for this error. The object inside this array can have any number of application specific properties. items: $ref: '#/components/schemas/ValidationErrorAdditionalInfo' AccountNumber: minLength: 1 type: string description: Identifier of a billing account, with permission to order colocation products. example: "132028" IbxCode: pattern: "^[A-Z]{2}[0-9]+x?$" type: string description: IBX data center identifier. example: CH1 ContactAvailability: type: string description: When is the best time to call. example: WORK_HOURS enum: - WORK_HOURS - ANYTIME - CUSTOMER_BUSINESS_HOURS - NOT_AVAILABLE ContactDetails: required: - email - firstName - lastName type: object properties: firstName: maxLength: 50 type: string description: First name. example: John lastName: maxLength: 50 type: string description: Last name. example: Smith email: maxLength: 100 type: string description: Email address. example: john@smith.com phone: $ref: '#/components/schemas/Phone' description: Contact person details for technical inquiries. Phone: required: - number - availability type: object properties: number: maxLength: 40 type: string description: A phone number in full international format. example: "4915126449706" availability: $ref: '#/components/schemas/ContactAvailability' description: Phone number details. PurchaseOrderNumber: minLength: 1 type: string description: Purchase order number. Optional, unless the billing account requires it. example: 8-132028 ProductsAvailabilities: type: array description: A list of ibxs with information about product availabilities items: $ref: "#/components/schemas/ProductsAvailability" ProductsAvailability: required: - ibx - maximumNumberOfCabinetsToOrder - minimumDrawCapacityPerCabinet - maximumDrawCapacityPerCabinet - cabinetDimensions - acCircuitConfiguration type: object description: | Information about availability of products in one ibx. Missing pdu configuration means that we don't offer pdu there. Missing fabric port speed means that fabric port is not available there. properties: ibx: $ref: "#/components/schemas/IbxCode" maximumNumberOfCabinetsToOrder: type: integer description: Maximum number of cabinets that can be ordered in one order in this ibx. example: 2 minimumDrawCapacityPerCabinet: type: number description: The minimum power draw capacity per ordered cabinet. format: double example: 5 maximumDrawCapacityPerCabinet: type: number description: The maximum power draw capacity per ordered cabinet. format: double example: 5 cabinetDimensions: $ref: '#/components/schemas/Dimensions' acCircuitConfiguration: $ref: '#/components/schemas/AcCircuitConfig' pduConfiguration: $ref: '#/components/schemas/PduConfig' fabricPortSpeed: $ref: '#/components/schemas/FabricPortSpeed' Dimensions: type: object required: - width - depth - height properties: width: $ref: '#/components/schemas/Dimension' depth: $ref: '#/components/schemas/Dimension' height: $ref: '#/components/schemas/Dimension' Dimension: required: - unit - value type: object properties: value: type: integer description: Dimension Value example: 482 unit: type: string description: Unit of measure of the product example: MILLIMETER enum: - MILLIMETER - CENTIMETER - METER AcCircuitConfig: type: object required: - phase - receptacle - soldAmperage - voltage properties: voltage: $ref: '#/components/schemas/Voltage' soldAmperage: $ref: '#/components/schemas/Amperage' phase: $ref: '#/components/schemas/Phase' receptacle: type: string description: Receptacle type example: IEC 60309 1P+N+E Voltage: type: integer description: Voltage numerical value example: 220 Amperage: type: number description: Amperage Numerical Value format: double example: 8.9 Phase: type: string description: Circuit phase example: SINGLE enum: - SINGLE PduConfig: type: object required: - model properties: model: type: string description: Model Code example: UU30009L FabricPortSpeed: type: string description: Port speed example: SPEED_1_GBPS enum: - SPEED_1_GBPS - SPEED_10_GBPS